python-3.6.zip added from Github

README.cosmo contains the necessary links.
This commit is contained in:
ahgamut 2021-08-08 09:38:33 +05:30 committed by Justine Tunney
parent 75fc601ff5
commit 0c4c56ff39
4219 changed files with 1968626 additions and 0 deletions

View file

@ -0,0 +1,161 @@
------------------------------------------------------------------------
-- abs.decTest -- decimal absolute value --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- 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 Clamped
absx219 abs 0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped
absx220 abs 0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped
absx230 abs -1.00E-999 -> 1.00E-999
absx231 abs -0.1E-999 -> 1E-1000 Subnormal
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 Clamped
absx239 abs -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped
absx240 abs -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped
-- long operand tests
maxexponent: 999
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

View file

@ -0,0 +1,338 @@
------------------------------------------------------------------------
-- and.decTest -- digitwise logical AND --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minExponent: -999
-- Sanity check (truth table)
andx001 and 0 0 -> 0
andx002 and 0 1 -> 0
andx003 and 1 0 -> 0
andx004 and 1 1 -> 1
andx005 and 1100 1010 -> 1000
andx006 and 1111 10 -> 10
andx007 and 1111 1010 -> 1010
-- and at msd and msd-1
andx010 and 000000000 000000000 -> 0
andx011 and 000000000 100000000 -> 0
andx012 and 100000000 000000000 -> 0
andx013 and 100000000 100000000 -> 100000000
andx014 and 000000000 000000000 -> 0
andx015 and 000000000 010000000 -> 0
andx016 and 010000000 000000000 -> 0
andx017 and 010000000 010000000 -> 10000000
-- Various lengths
-- 123456789 123456789 123456789
andx021 and 111111111 111111111 -> 111111111
andx022 and 111111111111 111111111 -> 111111111
andx023 and 111111111111 11111111 -> 11111111
andx024 and 111111111 11111111 -> 11111111
andx025 and 111111111 1111111 -> 1111111
andx026 and 111111111111 111111 -> 111111
andx027 and 111111111111 11111 -> 11111
andx028 and 111111111111 1111 -> 1111
andx029 and 111111111111 111 -> 111
andx031 and 111111111111 11 -> 11
andx032 and 111111111111 1 -> 1
andx033 and 111111111111 1111111111 -> 111111111
andx034 and 11111111111 11111111111 -> 111111111
andx035 and 1111111111 111111111111 -> 111111111
andx036 and 111111111 1111111111111 -> 111111111
andx040 and 111111111 111111111111 -> 111111111
andx041 and 11111111 111111111111 -> 11111111
andx042 and 11111111 111111111 -> 11111111
andx043 and 1111111 111111111 -> 1111111
andx044 and 111111 111111111 -> 111111
andx045 and 11111 111111111 -> 11111
andx046 and 1111 111111111 -> 1111
andx047 and 111 111111111 -> 111
andx048 and 11 111111111 -> 11
andx049 and 1 111111111 -> 1
andx050 and 1111111111 1 -> 1
andx051 and 111111111 1 -> 1
andx052 and 11111111 1 -> 1
andx053 and 1111111 1 -> 1
andx054 and 111111 1 -> 1
andx055 and 11111 1 -> 1
andx056 and 1111 1 -> 1
andx057 and 111 1 -> 1
andx058 and 11 1 -> 1
andx059 and 1 1 -> 1
andx060 and 1111111111 0 -> 0
andx061 and 111111111 0 -> 0
andx062 and 11111111 0 -> 0
andx063 and 1111111 0 -> 0
andx064 and 111111 0 -> 0
andx065 and 11111 0 -> 0
andx066 and 1111 0 -> 0
andx067 and 111 0 -> 0
andx068 and 11 0 -> 0
andx069 and 1 0 -> 0
andx070 and 1 1111111111 -> 1
andx071 and 1 111111111 -> 1
andx072 and 1 11111111 -> 1
andx073 and 1 1111111 -> 1
andx074 and 1 111111 -> 1
andx075 and 1 11111 -> 1
andx076 and 1 1111 -> 1
andx077 and 1 111 -> 1
andx078 and 1 11 -> 1
andx079 and 1 1 -> 1
andx080 and 0 1111111111 -> 0
andx081 and 0 111111111 -> 0
andx082 and 0 11111111 -> 0
andx083 and 0 1111111 -> 0
andx084 and 0 111111 -> 0
andx085 and 0 11111 -> 0
andx086 and 0 1111 -> 0
andx087 and 0 111 -> 0
andx088 and 0 11 -> 0
andx089 and 0 1 -> 0
andx090 and 011111111 111111111 -> 11111111
andx091 and 101111111 111111111 -> 101111111
andx092 and 110111111 111111111 -> 110111111
andx093 and 111011111 111111111 -> 111011111
andx094 and 111101111 111111111 -> 111101111
andx095 and 111110111 111111111 -> 111110111
andx096 and 111111011 111111111 -> 111111011
andx097 and 111111101 111111111 -> 111111101
andx098 and 111111110 111111111 -> 111111110
andx100 and 111111111 011111111 -> 11111111
andx101 and 111111111 101111111 -> 101111111
andx102 and 111111111 110111111 -> 110111111
andx103 and 111111111 111011111 -> 111011111
andx104 and 111111111 111101111 -> 111101111
andx105 and 111111111 111110111 -> 111110111
andx106 and 111111111 111111011 -> 111111011
andx107 and 111111111 111111101 -> 111111101
andx108 and 111111111 111111110 -> 111111110
-- non-0/1 should not be accepted, nor should signs
andx220 and 111111112 111111111 -> NaN Invalid_operation
andx221 and 333333333 333333333 -> NaN Invalid_operation
andx222 and 555555555 555555555 -> NaN Invalid_operation
andx223 and 777777777 777777777 -> NaN Invalid_operation
andx224 and 999999999 999999999 -> NaN Invalid_operation
andx225 and 222222222 999999999 -> NaN Invalid_operation
andx226 and 444444444 999999999 -> NaN Invalid_operation
andx227 and 666666666 999999999 -> NaN Invalid_operation
andx228 and 888888888 999999999 -> NaN Invalid_operation
andx229 and 999999999 222222222 -> NaN Invalid_operation
andx230 and 999999999 444444444 -> NaN Invalid_operation
andx231 and 999999999 666666666 -> NaN Invalid_operation
andx232 and 999999999 888888888 -> NaN Invalid_operation
-- a few randoms
andx240 and 567468689 -934981942 -> NaN Invalid_operation
andx241 and 567367689 934981942 -> NaN Invalid_operation
andx242 and -631917772 -706014634 -> NaN Invalid_operation
andx243 and -756253257 138579234 -> NaN Invalid_operation
andx244 and 835590149 567435400 -> NaN Invalid_operation
-- test MSD
andx250 and 200000000 100000000 -> NaN Invalid_operation
andx251 and 700000000 100000000 -> NaN Invalid_operation
andx252 and 800000000 100000000 -> NaN Invalid_operation
andx253 and 900000000 100000000 -> NaN Invalid_operation
andx254 and 200000000 000000000 -> NaN Invalid_operation
andx255 and 700000000 000000000 -> NaN Invalid_operation
andx256 and 800000000 000000000 -> NaN Invalid_operation
andx257 and 900000000 000000000 -> NaN Invalid_operation
andx258 and 100000000 200000000 -> NaN Invalid_operation
andx259 and 100000000 700000000 -> NaN Invalid_operation
andx260 and 100000000 800000000 -> NaN Invalid_operation
andx261 and 100000000 900000000 -> NaN Invalid_operation
andx262 and 000000000 200000000 -> NaN Invalid_operation
andx263 and 000000000 700000000 -> NaN Invalid_operation
andx264 and 000000000 800000000 -> NaN Invalid_operation
andx265 and 000000000 900000000 -> NaN Invalid_operation
-- test MSD-1
andx270 and 020000000 100000000 -> NaN Invalid_operation
andx271 and 070100000 100000000 -> NaN Invalid_operation
andx272 and 080010000 100000001 -> NaN Invalid_operation
andx273 and 090001000 100000010 -> NaN Invalid_operation
andx274 and 100000100 020010100 -> NaN Invalid_operation
andx275 and 100000000 070001000 -> NaN Invalid_operation
andx276 and 100000010 080010100 -> NaN Invalid_operation
andx277 and 100000000 090000010 -> NaN Invalid_operation
-- test LSD
andx280 and 001000002 100000000 -> NaN Invalid_operation
andx281 and 000000007 100000000 -> NaN Invalid_operation
andx282 and 000000008 100000000 -> NaN Invalid_operation
andx283 and 000000009 100000000 -> NaN Invalid_operation
andx284 and 100000000 000100002 -> NaN Invalid_operation
andx285 and 100100000 001000007 -> NaN Invalid_operation
andx286 and 100010000 010000008 -> NaN Invalid_operation
andx287 and 100001000 100000009 -> NaN Invalid_operation
-- test Middie
andx288 and 001020000 100000000 -> NaN Invalid_operation
andx289 and 000070001 100000000 -> NaN Invalid_operation
andx290 and 000080000 100010000 -> NaN Invalid_operation
andx291 and 000090000 100001000 -> NaN Invalid_operation
andx292 and 100000010 000020100 -> NaN Invalid_operation
andx293 and 100100000 000070010 -> NaN Invalid_operation
andx294 and 100010100 000080001 -> NaN Invalid_operation
andx295 and 100001000 000090000 -> NaN Invalid_operation
-- signs
andx296 and -100001000 -000000000 -> NaN Invalid_operation
andx297 and -100001000 000010000 -> NaN Invalid_operation
andx298 and 100001000 -000000000 -> NaN Invalid_operation
andx299 and 100001000 000011000 -> 1000
-- Nmax, Nmin, Ntiny
andx331 and 2 9.99999999E+999 -> NaN Invalid_operation
andx332 and 3 1E-999 -> NaN Invalid_operation
andx333 and 4 1.00000000E-999 -> NaN Invalid_operation
andx334 and 5 1E-1007 -> NaN Invalid_operation
andx335 and 6 -1E-1007 -> NaN Invalid_operation
andx336 and 7 -1.00000000E-999 -> NaN Invalid_operation
andx337 and 8 -1E-999 -> NaN Invalid_operation
andx338 and 9 -9.99999999E+999 -> NaN Invalid_operation
andx341 and 9.99999999E+999 -18 -> NaN Invalid_operation
andx342 and 1E-999 01 -> NaN Invalid_operation
andx343 and 1.00000000E-999 -18 -> NaN Invalid_operation
andx344 and 1E-1007 18 -> NaN Invalid_operation
andx345 and -1E-1007 -10 -> NaN Invalid_operation
andx346 and -1.00000000E-999 18 -> NaN Invalid_operation
andx347 and -1E-999 10 -> NaN Invalid_operation
andx348 and -9.99999999E+999 -18 -> NaN Invalid_operation
-- A few other non-integers
andx361 and 1.0 1 -> NaN Invalid_operation
andx362 and 1E+1 1 -> NaN Invalid_operation
andx363 and 0.0 1 -> NaN Invalid_operation
andx364 and 0E+1 1 -> NaN Invalid_operation
andx365 and 9.9 1 -> NaN Invalid_operation
andx366 and 9E+1 1 -> NaN Invalid_operation
andx371 and 0 1.0 -> NaN Invalid_operation
andx372 and 0 1E+1 -> NaN Invalid_operation
andx373 and 0 0.0 -> NaN Invalid_operation
andx374 and 0 0E+1 -> NaN Invalid_operation
andx375 and 0 9.9 -> NaN Invalid_operation
andx376 and 0 9E+1 -> NaN Invalid_operation
-- All Specials are in error
andx780 and -Inf -Inf -> NaN Invalid_operation
andx781 and -Inf -1000 -> NaN Invalid_operation
andx782 and -Inf -1 -> NaN Invalid_operation
andx783 and -Inf -0 -> NaN Invalid_operation
andx784 and -Inf 0 -> NaN Invalid_operation
andx785 and -Inf 1 -> NaN Invalid_operation
andx786 and -Inf 1000 -> NaN Invalid_operation
andx787 and -1000 -Inf -> NaN Invalid_operation
andx788 and -Inf -Inf -> NaN Invalid_operation
andx789 and -1 -Inf -> NaN Invalid_operation
andx790 and -0 -Inf -> NaN Invalid_operation
andx791 and 0 -Inf -> NaN Invalid_operation
andx792 and 1 -Inf -> NaN Invalid_operation
andx793 and 1000 -Inf -> NaN Invalid_operation
andx794 and Inf -Inf -> NaN Invalid_operation
andx800 and Inf -Inf -> NaN Invalid_operation
andx801 and Inf -1000 -> NaN Invalid_operation
andx802 and Inf -1 -> NaN Invalid_operation
andx803 and Inf -0 -> NaN Invalid_operation
andx804 and Inf 0 -> NaN Invalid_operation
andx805 and Inf 1 -> NaN Invalid_operation
andx806 and Inf 1000 -> NaN Invalid_operation
andx807 and Inf Inf -> NaN Invalid_operation
andx808 and -1000 Inf -> NaN Invalid_operation
andx809 and -Inf Inf -> NaN Invalid_operation
andx810 and -1 Inf -> NaN Invalid_operation
andx811 and -0 Inf -> NaN Invalid_operation
andx812 and 0 Inf -> NaN Invalid_operation
andx813 and 1 Inf -> NaN Invalid_operation
andx814 and 1000 Inf -> NaN Invalid_operation
andx815 and Inf Inf -> NaN Invalid_operation
andx821 and NaN -Inf -> NaN Invalid_operation
andx822 and NaN -1000 -> NaN Invalid_operation
andx823 and NaN -1 -> NaN Invalid_operation
andx824 and NaN -0 -> NaN Invalid_operation
andx825 and NaN 0 -> NaN Invalid_operation
andx826 and NaN 1 -> NaN Invalid_operation
andx827 and NaN 1000 -> NaN Invalid_operation
andx828 and NaN Inf -> NaN Invalid_operation
andx829 and NaN NaN -> NaN Invalid_operation
andx830 and -Inf NaN -> NaN Invalid_operation
andx831 and -1000 NaN -> NaN Invalid_operation
andx832 and -1 NaN -> NaN Invalid_operation
andx833 and -0 NaN -> NaN Invalid_operation
andx834 and 0 NaN -> NaN Invalid_operation
andx835 and 1 NaN -> NaN Invalid_operation
andx836 and 1000 NaN -> NaN Invalid_operation
andx837 and Inf NaN -> NaN Invalid_operation
andx841 and sNaN -Inf -> NaN Invalid_operation
andx842 and sNaN -1000 -> NaN Invalid_operation
andx843 and sNaN -1 -> NaN Invalid_operation
andx844 and sNaN -0 -> NaN Invalid_operation
andx845 and sNaN 0 -> NaN Invalid_operation
andx846 and sNaN 1 -> NaN Invalid_operation
andx847 and sNaN 1000 -> NaN Invalid_operation
andx848 and sNaN NaN -> NaN Invalid_operation
andx849 and sNaN sNaN -> NaN Invalid_operation
andx850 and NaN sNaN -> NaN Invalid_operation
andx851 and -Inf sNaN -> NaN Invalid_operation
andx852 and -1000 sNaN -> NaN Invalid_operation
andx853 and -1 sNaN -> NaN Invalid_operation
andx854 and -0 sNaN -> NaN Invalid_operation
andx855 and 0 sNaN -> NaN Invalid_operation
andx856 and 1 sNaN -> NaN Invalid_operation
andx857 and 1000 sNaN -> NaN Invalid_operation
andx858 and Inf sNaN -> NaN Invalid_operation
andx859 and NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
andx861 and NaN1 -Inf -> NaN Invalid_operation
andx862 and +NaN2 -1000 -> NaN Invalid_operation
andx863 and NaN3 1000 -> NaN Invalid_operation
andx864 and NaN4 Inf -> NaN Invalid_operation
andx865 and NaN5 +NaN6 -> NaN Invalid_operation
andx866 and -Inf NaN7 -> NaN Invalid_operation
andx867 and -1000 NaN8 -> NaN Invalid_operation
andx868 and 1000 NaN9 -> NaN Invalid_operation
andx869 and Inf +NaN10 -> NaN Invalid_operation
andx871 and sNaN11 -Inf -> NaN Invalid_operation
andx872 and sNaN12 -1000 -> NaN Invalid_operation
andx873 and sNaN13 1000 -> NaN Invalid_operation
andx874 and sNaN14 NaN17 -> NaN Invalid_operation
andx875 and sNaN15 sNaN18 -> NaN Invalid_operation
andx876 and NaN16 sNaN19 -> NaN Invalid_operation
andx877 and -Inf +sNaN20 -> NaN Invalid_operation
andx878 and -1000 sNaN21 -> NaN Invalid_operation
andx879 and 1000 sNaN22 -> NaN Invalid_operation
andx880 and Inf sNaN23 -> NaN Invalid_operation
andx881 and +NaN25 +sNaN24 -> NaN Invalid_operation
andx882 and -NaN26 NaN28 -> NaN Invalid_operation
andx883 and -sNaN27 sNaN29 -> NaN Invalid_operation
andx884 and 1000 -NaN30 -> NaN Invalid_operation
andx885 and 1000 -sNaN31 -> NaN Invalid_operation

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,211 @@
------------------------------------------------------------------------
-- clamp.decTest -- clamped exponent tests (format-independent) --
-- Copyright (c) IBM Corporation, 2000, 2008. 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.59
-- 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 Clamped
clam097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped
clam098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped
clam099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped
-- Same again, negatives
-- Nmax and similar
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 Clamped
clam197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped
clam198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped
clam199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped
-- zeros
clam401 apply 0E-500 -> 0E-398 Clamped
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
-- subnormals clamped to 0-Etiny
precision: 16
maxExponent: 384
minExponent: -383
clam681 apply 7E-398 -> 7E-398 Subnormal
clam682 apply 0E-398 -> 0E-398
clam683 apply 7E-399 -> 1E-398 Subnormal Underflow Inexact Rounded
clam684 apply 4E-399 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
clam685 apply 7E-400 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
clam686 apply 7E-401 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
clam687 apply 0E-399 -> 0E-398 Clamped
clam688 apply 0E-400 -> 0E-398 Clamped
clam689 apply 0E-401 -> 0E-398 Clamped
-- example from documentation
precision: 7
rounding: half_even
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

@ -0,0 +1,131 @@
------------------------------------------------------------------------
-- class.decTest -- Class operations --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- [New 2006.11.27]
precision: 9
maxExponent: 999
minExponent: -999
extended: 1
clamp: 1
rounding: half_even
clasx001 class 0 -> +Zero
clasx002 class 0.00 -> +Zero
clasx003 class 0E+5 -> +Zero
clasx004 class 1E-1007 -> +Subnormal
clasx005 class 0.1E-999 -> +Subnormal
clasx006 class 0.99999999E-999 -> +Subnormal
clasx007 class 1.00000000E-999 -> +Normal
clasx008 class 1E-999 -> +Normal
clasx009 class 1E-100 -> +Normal
clasx010 class 1E-10 -> +Normal
clasx012 class 1E-1 -> +Normal
clasx013 class 1 -> +Normal
clasx014 class 2.50 -> +Normal
clasx015 class 100.100 -> +Normal
clasx016 class 1E+30 -> +Normal
clasx017 class 1E+999 -> +Normal
clasx018 class 9.99999999E+999 -> +Normal
clasx019 class Inf -> +Infinity
clasx021 class -0 -> -Zero
clasx022 class -0.00 -> -Zero
clasx023 class -0E+5 -> -Zero
clasx024 class -1E-1007 -> -Subnormal
clasx025 class -0.1E-999 -> -Subnormal
clasx026 class -0.99999999E-999 -> -Subnormal
clasx027 class -1.00000000E-999 -> -Normal
clasx028 class -1E-999 -> -Normal
clasx029 class -1E-100 -> -Normal
clasx030 class -1E-10 -> -Normal
clasx032 class -1E-1 -> -Normal
clasx033 class -1 -> -Normal
clasx034 class -2.50 -> -Normal
clasx035 class -100.100 -> -Normal
clasx036 class -1E+30 -> -Normal
clasx037 class -1E+999 -> -Normal
clasx038 class -9.99999999E+999 -> -Normal
clasx039 class -Inf -> -Infinity
clasx041 class NaN -> NaN
clasx042 class -NaN -> NaN
clasx043 class +NaN12345 -> NaN
clasx044 class sNaN -> sNaN
clasx045 class -sNaN -> sNaN
clasx046 class +sNaN12345 -> sNaN
-- decimal64 bounds
precision: 16
maxExponent: 384
minExponent: -383
clamp: 1
rounding: half_even
clasx201 class 0 -> +Zero
clasx202 class 0.00 -> +Zero
clasx203 class 0E+5 -> +Zero
clasx204 class 1E-396 -> +Subnormal
clasx205 class 0.1E-383 -> +Subnormal
clasx206 class 0.999999999999999E-383 -> +Subnormal
clasx207 class 1.000000000000000E-383 -> +Normal
clasx208 class 1E-383 -> +Normal
clasx209 class 1E-100 -> +Normal
clasx210 class 1E-10 -> +Normal
clasx212 class 1E-1 -> +Normal
clasx213 class 1 -> +Normal
clasx214 class 2.50 -> +Normal
clasx215 class 100.100 -> +Normal
clasx216 class 1E+30 -> +Normal
clasx217 class 1E+384 -> +Normal
clasx218 class 9.999999999999999E+384 -> +Normal
clasx219 class Inf -> +Infinity
clasx221 class -0 -> -Zero
clasx222 class -0.00 -> -Zero
clasx223 class -0E+5 -> -Zero
clasx224 class -1E-396 -> -Subnormal
clasx225 class -0.1E-383 -> -Subnormal
clasx226 class -0.999999999999999E-383 -> -Subnormal
clasx227 class -1.000000000000000E-383 -> -Normal
clasx228 class -1E-383 -> -Normal
clasx229 class -1E-100 -> -Normal
clasx230 class -1E-10 -> -Normal
clasx232 class -1E-1 -> -Normal
clasx233 class -1 -> -Normal
clasx234 class -2.50 -> -Normal
clasx235 class -100.100 -> -Normal
clasx236 class -1E+30 -> -Normal
clasx237 class -1E+384 -> -Normal
clasx238 class -9.999999999999999E+384 -> -Normal
clasx239 class -Inf -> -Infinity
clasx241 class NaN -> NaN
clasx242 class -NaN -> NaN
clasx243 class +NaN12345 -> NaN
clasx244 class sNaN -> sNaN
clasx245 class -sNaN -> sNaN
clasx246 class +sNaN12345 -> sNaN

View file

@ -0,0 +1,758 @@
------------------------------------------------------------------------
-- compare.decTest -- decimal comparison that allows quiet NaNs --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necessary).
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
comx095 compare 9.99999999E+999999999 9.99999999E+999999999 -> 0
comx096 compare -9.99999999E+999999999 9.99999999E+999999999 -> -1
comx097 compare 9.99999999E+999999999 -9.99999999E+999999999 -> 1
comx098 compare -9.99999999E+999999999 -9.99999999E+999999999 -> 0
-- some differing length/exponent cases
comx100 compare 7.0 7.0 -> 0
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
-- misalignment traps for little-endian
comx451 compare 1.0 0.1 -> 1
comx452 compare 0.1 1.0 -> -1
comx453 compare 10.0 0.1 -> 1
comx454 compare 0.1 10.0 -> -1
comx455 compare 100 1.0 -> 1
comx456 compare 1.0 100 -> -1
comx457 compare 1000 10.0 -> 1
comx458 compare 10.0 1000 -> -1
comx459 compare 10000 100.0 -> 1
comx460 compare 100.0 10000 -> -1
comx461 compare 100000 1000.0 -> 1
comx462 compare 1000.0 100000 -> -1
comx463 compare 1000000 10000.0 -> 1
comx464 compare 10000.0 1000000 -> -1
-- testcases that subtract to lots of zeros at boundaries [pgr]
precision: 40
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 a useful coefficient, one side only
comx580 compare 0.000000987654321 1E-15 -> 1
comx581 compare 0.000000987654321 1E-14 -> 1
comx582 compare 0.000000987654321 1E-13 -> 1
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
-- spread zeros
comx910 compare 0E-383 0 -> 0
comx911 compare 0E-383 -0 -> 0
comx912 compare -0E-383 0 -> 0
comx913 compare -0E-383 -0 -> 0
comx914 compare 0E-383 0E+384 -> 0
comx915 compare 0E-383 -0E+384 -> 0
comx916 compare -0E-383 0E+384 -> 0
comx917 compare -0E-383 -0E+384 -> 0
comx918 compare 0 0E+384 -> 0
comx919 compare 0 -0E+384 -> 0
comx920 compare -0 0E+384 -> 0
comx921 compare -0 -0E+384 -> 0
comx930 compare 0E+384 0 -> 0
comx931 compare 0E+384 -0 -> 0
comx932 compare -0E+384 0 -> 0
comx933 compare -0E+384 -0 -> 0
comx934 compare 0E+384 0E-383 -> 0
comx935 compare 0E+384 -0E-383 -> 0
comx936 compare -0E+384 0E-383 -> 0
comx937 compare -0E+384 -0E-383 -> 0
comx938 compare 0 0E-383 -> 0
comx939 compare 0 -0E-383 -> 0
comx940 compare -0 0E-383 -> 0
comx941 compare -0 -0E-383 -> 0
-- Null tests
comx990 compare 10 # -> NaN Invalid_operation
comx991 compare # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,798 @@
------------------------------------------------------------------------
-- comparetotal.decTest -- decimal comparison using total ordering --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necessary).
-- Similarly, comparetotal will have some radically different paths
-- than compare.
extended: 1
precision: 16
rounding: half_up
maxExponent: 384
minExponent: -383
-- sanity checks
cotx001 comparetotal -2 -2 -> 0
cotx002 comparetotal -2 -1 -> -1
cotx003 comparetotal -2 0 -> -1
cotx004 comparetotal -2 1 -> -1
cotx005 comparetotal -2 2 -> -1
cotx006 comparetotal -1 -2 -> 1
cotx007 comparetotal -1 -1 -> 0
cotx008 comparetotal -1 0 -> -1
cotx009 comparetotal -1 1 -> -1
cotx010 comparetotal -1 2 -> -1
cotx011 comparetotal 0 -2 -> 1
cotx012 comparetotal 0 -1 -> 1
cotx013 comparetotal 0 0 -> 0
cotx014 comparetotal 0 1 -> -1
cotx015 comparetotal 0 2 -> -1
cotx016 comparetotal 1 -2 -> 1
cotx017 comparetotal 1 -1 -> 1
cotx018 comparetotal 1 0 -> 1
cotx019 comparetotal 1 1 -> 0
cotx020 comparetotal 1 2 -> -1
cotx021 comparetotal 2 -2 -> 1
cotx022 comparetotal 2 -1 -> 1
cotx023 comparetotal 2 0 -> 1
cotx025 comparetotal 2 1 -> 1
cotx026 comparetotal 2 2 -> 0
cotx031 comparetotal -20 -20 -> 0
cotx032 comparetotal -20 -10 -> -1
cotx033 comparetotal -20 00 -> -1
cotx034 comparetotal -20 10 -> -1
cotx035 comparetotal -20 20 -> -1
cotx036 comparetotal -10 -20 -> 1
cotx037 comparetotal -10 -10 -> 0
cotx038 comparetotal -10 00 -> -1
cotx039 comparetotal -10 10 -> -1
cotx040 comparetotal -10 20 -> -1
cotx041 comparetotal 00 -20 -> 1
cotx042 comparetotal 00 -10 -> 1
cotx043 comparetotal 00 00 -> 0
cotx044 comparetotal 00 10 -> -1
cotx045 comparetotal 00 20 -> -1
cotx046 comparetotal 10 -20 -> 1
cotx047 comparetotal 10 -10 -> 1
cotx048 comparetotal 10 00 -> 1
cotx049 comparetotal 10 10 -> 0
cotx050 comparetotal 10 20 -> -1
cotx051 comparetotal 20 -20 -> 1
cotx052 comparetotal 20 -10 -> 1
cotx053 comparetotal 20 00 -> 1
cotx055 comparetotal 20 10 -> 1
cotx056 comparetotal 20 20 -> 0
cotx061 comparetotal -2.0 -2.0 -> 0
cotx062 comparetotal -2.0 -1.0 -> -1
cotx063 comparetotal -2.0 0.0 -> -1
cotx064 comparetotal -2.0 1.0 -> -1
cotx065 comparetotal -2.0 2.0 -> -1
cotx066 comparetotal -1.0 -2.0 -> 1
cotx067 comparetotal -1.0 -1.0 -> 0
cotx068 comparetotal -1.0 0.0 -> -1
cotx069 comparetotal -1.0 1.0 -> -1
cotx070 comparetotal -1.0 2.0 -> -1
cotx071 comparetotal 0.0 -2.0 -> 1
cotx072 comparetotal 0.0 -1.0 -> 1
cotx073 comparetotal 0.0 0.0 -> 0
cotx074 comparetotal 0.0 1.0 -> -1
cotx075 comparetotal 0.0 2.0 -> -1
cotx076 comparetotal 1.0 -2.0 -> 1
cotx077 comparetotal 1.0 -1.0 -> 1
cotx078 comparetotal 1.0 0.0 -> 1
cotx079 comparetotal 1.0 1.0 -> 0
cotx080 comparetotal 1.0 2.0 -> -1
cotx081 comparetotal 2.0 -2.0 -> 1
cotx082 comparetotal 2.0 -1.0 -> 1
cotx083 comparetotal 2.0 0.0 -> 1
cotx085 comparetotal 2.0 1.0 -> 1
cotx086 comparetotal 2.0 2.0 -> 0
-- now some cases which might overflow if subtract were used
maxexponent: 999999999
minexponent: -999999999
cotx090 comparetotal 9.99999999E+999999999 9.99999999E+999999999 -> 0
cotx091 comparetotal -9.99999999E+999999999 9.99999999E+999999999 -> -1
cotx092 comparetotal 9.99999999E+999999999 -9.99999999E+999999999 -> 1
cotx093 comparetotal -9.99999999E+999999999 -9.99999999E+999999999 -> 0
-- Examples
cotx094 comparetotal 12.73 127.9 -> -1
cotx095 comparetotal -127 12 -> -1
cotx096 comparetotal 12.30 12.3 -> -1
cotx097 comparetotal 12.30 12.30 -> 0
cotx098 comparetotal 12.3 12.300 -> 1
cotx099 comparetotal 12.3 NaN -> -1
-- some differing length/exponent cases
-- in this first group, compare would compare all equal
cotx100 comparetotal 7.0 7.0 -> 0
cotx101 comparetotal 7.0 7 -> -1
cotx102 comparetotal 7 7.0 -> 1
cotx103 comparetotal 7E+0 7.0 -> 1
cotx104 comparetotal 70E-1 7.0 -> 0
cotx105 comparetotal 0.7E+1 7 -> 0
cotx106 comparetotal 70E-1 7 -> -1
cotx107 comparetotal 7.0 7E+0 -> -1
cotx108 comparetotal 7.0 70E-1 -> 0
cotx109 comparetotal 7 0.7E+1 -> 0
cotx110 comparetotal 7 70E-1 -> 1
cotx120 comparetotal 8.0 7.0 -> 1
cotx121 comparetotal 8.0 7 -> 1
cotx122 comparetotal 8 7.0 -> 1
cotx123 comparetotal 8E+0 7.0 -> 1
cotx124 comparetotal 80E-1 7.0 -> 1
cotx125 comparetotal 0.8E+1 7 -> 1
cotx126 comparetotal 80E-1 7 -> 1
cotx127 comparetotal 8.0 7E+0 -> 1
cotx128 comparetotal 8.0 70E-1 -> 1
cotx129 comparetotal 8 0.7E+1 -> 1
cotx130 comparetotal 8 70E-1 -> 1
cotx140 comparetotal 8.0 9.0 -> -1
cotx141 comparetotal 8.0 9 -> -1
cotx142 comparetotal 8 9.0 -> -1
cotx143 comparetotal 8E+0 9.0 -> -1
cotx144 comparetotal 80E-1 9.0 -> -1
cotx145 comparetotal 0.8E+1 9 -> -1
cotx146 comparetotal 80E-1 9 -> -1
cotx147 comparetotal 8.0 9E+0 -> -1
cotx148 comparetotal 8.0 90E-1 -> -1
cotx149 comparetotal 8 0.9E+1 -> -1
cotx150 comparetotal 8 90E-1 -> -1
-- and again, with sign changes -+ ..
cotx200 comparetotal -7.0 7.0 -> -1
cotx201 comparetotal -7.0 7 -> -1
cotx202 comparetotal -7 7.0 -> -1
cotx203 comparetotal -7E+0 7.0 -> -1
cotx204 comparetotal -70E-1 7.0 -> -1
cotx205 comparetotal -0.7E+1 7 -> -1
cotx206 comparetotal -70E-1 7 -> -1
cotx207 comparetotal -7.0 7E+0 -> -1
cotx208 comparetotal -7.0 70E-1 -> -1
cotx209 comparetotal -7 0.7E+1 -> -1
cotx210 comparetotal -7 70E-1 -> -1
cotx220 comparetotal -8.0 7.0 -> -1
cotx221 comparetotal -8.0 7 -> -1
cotx222 comparetotal -8 7.0 -> -1
cotx223 comparetotal -8E+0 7.0 -> -1
cotx224 comparetotal -80E-1 7.0 -> -1
cotx225 comparetotal -0.8E+1 7 -> -1
cotx226 comparetotal -80E-1 7 -> -1
cotx227 comparetotal -8.0 7E+0 -> -1
cotx228 comparetotal -8.0 70E-1 -> -1
cotx229 comparetotal -8 0.7E+1 -> -1
cotx230 comparetotal -8 70E-1 -> -1
cotx240 comparetotal -8.0 9.0 -> -1
cotx241 comparetotal -8.0 9 -> -1
cotx242 comparetotal -8 9.0 -> -1
cotx243 comparetotal -8E+0 9.0 -> -1
cotx244 comparetotal -80E-1 9.0 -> -1
cotx245 comparetotal -0.8E+1 9 -> -1
cotx246 comparetotal -80E-1 9 -> -1
cotx247 comparetotal -8.0 9E+0 -> -1
cotx248 comparetotal -8.0 90E-1 -> -1
cotx249 comparetotal -8 0.9E+1 -> -1
cotx250 comparetotal -8 90E-1 -> -1
-- and again, with sign changes +- ..
cotx300 comparetotal 7.0 -7.0 -> 1
cotx301 comparetotal 7.0 -7 -> 1
cotx302 comparetotal 7 -7.0 -> 1
cotx303 comparetotal 7E+0 -7.0 -> 1
cotx304 comparetotal 70E-1 -7.0 -> 1
cotx305 comparetotal .7E+1 -7 -> 1
cotx306 comparetotal 70E-1 -7 -> 1
cotx307 comparetotal 7.0 -7E+0 -> 1
cotx308 comparetotal 7.0 -70E-1 -> 1
cotx309 comparetotal 7 -.7E+1 -> 1
cotx310 comparetotal 7 -70E-1 -> 1
cotx320 comparetotal 8.0 -7.0 -> 1
cotx321 comparetotal 8.0 -7 -> 1
cotx322 comparetotal 8 -7.0 -> 1
cotx323 comparetotal 8E+0 -7.0 -> 1
cotx324 comparetotal 80E-1 -7.0 -> 1
cotx325 comparetotal .8E+1 -7 -> 1
cotx326 comparetotal 80E-1 -7 -> 1
cotx327 comparetotal 8.0 -7E+0 -> 1
cotx328 comparetotal 8.0 -70E-1 -> 1
cotx329 comparetotal 8 -.7E+1 -> 1
cotx330 comparetotal 8 -70E-1 -> 1
cotx340 comparetotal 8.0 -9.0 -> 1
cotx341 comparetotal 8.0 -9 -> 1
cotx342 comparetotal 8 -9.0 -> 1
cotx343 comparetotal 8E+0 -9.0 -> 1
cotx344 comparetotal 80E-1 -9.0 -> 1
cotx345 comparetotal .8E+1 -9 -> 1
cotx346 comparetotal 80E-1 -9 -> 1
cotx347 comparetotal 8.0 -9E+0 -> 1
cotx348 comparetotal 8.0 -90E-1 -> 1
cotx349 comparetotal 8 -.9E+1 -> 1
cotx350 comparetotal 8 -90E-1 -> 1
-- and again, with sign changes -- ..
cotx400 comparetotal -7.0 -7.0 -> 0
cotx401 comparetotal -7.0 -7 -> 1
cotx402 comparetotal -7 -7.0 -> -1
cotx403 comparetotal -7E+0 -7.0 -> -1
cotx404 comparetotal -70E-1 -7.0 -> 0
cotx405 comparetotal -.7E+1 -7 -> 0
cotx406 comparetotal -70E-1 -7 -> 1
cotx407 comparetotal -7.0 -7E+0 -> 1
cotx408 comparetotal -7.0 -70E-1 -> 0
cotx409 comparetotal -7 -.7E+1 -> 0
cotx410 comparetotal -7 -70E-1 -> -1
cotx420 comparetotal -8.0 -7.0 -> -1
cotx421 comparetotal -8.0 -7 -> -1
cotx422 comparetotal -8 -7.0 -> -1
cotx423 comparetotal -8E+0 -7.0 -> -1
cotx424 comparetotal -80E-1 -7.0 -> -1
cotx425 comparetotal -.8E+1 -7 -> -1
cotx426 comparetotal -80E-1 -7 -> -1
cotx427 comparetotal -8.0 -7E+0 -> -1
cotx428 comparetotal -8.0 -70E-1 -> -1
cotx429 comparetotal -8 -.7E+1 -> -1
cotx430 comparetotal -8 -70E-1 -> -1
cotx440 comparetotal -8.0 -9.0 -> 1
cotx441 comparetotal -8.0 -9 -> 1
cotx442 comparetotal -8 -9.0 -> 1
cotx443 comparetotal -8E+0 -9.0 -> 1
cotx444 comparetotal -80E-1 -9.0 -> 1
cotx445 comparetotal -.8E+1 -9 -> 1
cotx446 comparetotal -80E-1 -9 -> 1
cotx447 comparetotal -8.0 -9E+0 -> 1
cotx448 comparetotal -8.0 -90E-1 -> 1
cotx449 comparetotal -8 -.9E+1 -> 1
cotx450 comparetotal -8 -90E-1 -> 1
-- testcases that subtract to lots of zeros at boundaries [pgr]
precision: 40
cotx470 comparetotal 123.4560000000000000E789 123.456E789 -> -1
cotx471 comparetotal 123.456000000000000E-89 123.456E-89 -> -1
cotx472 comparetotal 123.45600000000000E789 123.456E789 -> -1
cotx473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1
cotx474 comparetotal 123.456000000000E789 123.456E789 -> -1
cotx475 comparetotal 123.45600000000E-89 123.456E-89 -> -1
cotx476 comparetotal 123.4560000000E789 123.456E789 -> -1
cotx477 comparetotal 123.456000000E-89 123.456E-89 -> -1
cotx478 comparetotal 123.45600000E789 123.456E789 -> -1
cotx479 comparetotal 123.4560000E-89 123.456E-89 -> -1
cotx480 comparetotal 123.456000E789 123.456E789 -> -1
cotx481 comparetotal 123.45600E-89 123.456E-89 -> -1
cotx482 comparetotal 123.4560E789 123.456E789 -> -1
cotx483 comparetotal 123.456E-89 123.456E-89 -> 0
cotx484 comparetotal 123.456E-89 123.4560000000000000E-89 -> 1
cotx485 comparetotal 123.456E789 123.456000000000000E789 -> 1
cotx486 comparetotal 123.456E-89 123.45600000000000E-89 -> 1
cotx487 comparetotal 123.456E789 123.4560000000000E789 -> 1
cotx488 comparetotal 123.456E-89 123.456000000000E-89 -> 1
cotx489 comparetotal 123.456E789 123.45600000000E789 -> 1
cotx490 comparetotal 123.456E-89 123.4560000000E-89 -> 1
cotx491 comparetotal 123.456E789 123.456000000E789 -> 1
cotx492 comparetotal 123.456E-89 123.45600000E-89 -> 1
cotx493 comparetotal 123.456E789 123.4560000E789 -> 1
cotx494 comparetotal 123.456E-89 123.456000E-89 -> 1
cotx495 comparetotal 123.456E789 123.45600E789 -> 1
cotx496 comparetotal 123.456E-89 123.4560E-89 -> 1
cotx497 comparetotal 123.456E789 123.456E789 -> 0
-- wide-ranging, around precision; signs equal
precision: 9
cotx500 comparetotal 1 1E-15 -> 1
cotx501 comparetotal 1 1E-14 -> 1
cotx502 comparetotal 1 1E-13 -> 1
cotx503 comparetotal 1 1E-12 -> 1
cotx504 comparetotal 1 1E-11 -> 1
cotx505 comparetotal 1 1E-10 -> 1
cotx506 comparetotal 1 1E-9 -> 1
cotx507 comparetotal 1 1E-8 -> 1
cotx508 comparetotal 1 1E-7 -> 1
cotx509 comparetotal 1 1E-6 -> 1
cotx510 comparetotal 1 1E-5 -> 1
cotx511 comparetotal 1 1E-4 -> 1
cotx512 comparetotal 1 1E-3 -> 1
cotx513 comparetotal 1 1E-2 -> 1
cotx514 comparetotal 1 1E-1 -> 1
cotx515 comparetotal 1 1E-0 -> 0
cotx516 comparetotal 1 1E+1 -> -1
cotx517 comparetotal 1 1E+2 -> -1
cotx518 comparetotal 1 1E+3 -> -1
cotx519 comparetotal 1 1E+4 -> -1
cotx521 comparetotal 1 1E+5 -> -1
cotx522 comparetotal 1 1E+6 -> -1
cotx523 comparetotal 1 1E+7 -> -1
cotx524 comparetotal 1 1E+8 -> -1
cotx525 comparetotal 1 1E+9 -> -1
cotx526 comparetotal 1 1E+10 -> -1
cotx527 comparetotal 1 1E+11 -> -1
cotx528 comparetotal 1 1E+12 -> -1
cotx529 comparetotal 1 1E+13 -> -1
cotx530 comparetotal 1 1E+14 -> -1
cotx531 comparetotal 1 1E+15 -> -1
-- LR swap
cotx540 comparetotal 1E-15 1 -> -1
cotx541 comparetotal 1E-14 1 -> -1
cotx542 comparetotal 1E-13 1 -> -1
cotx543 comparetotal 1E-12 1 -> -1
cotx544 comparetotal 1E-11 1 -> -1
cotx545 comparetotal 1E-10 1 -> -1
cotx546 comparetotal 1E-9 1 -> -1
cotx547 comparetotal 1E-8 1 -> -1
cotx548 comparetotal 1E-7 1 -> -1
cotx549 comparetotal 1E-6 1 -> -1
cotx550 comparetotal 1E-5 1 -> -1
cotx551 comparetotal 1E-4 1 -> -1
cotx552 comparetotal 1E-3 1 -> -1
cotx553 comparetotal 1E-2 1 -> -1
cotx554 comparetotal 1E-1 1 -> -1
cotx555 comparetotal 1E-0 1 -> 0
cotx556 comparetotal 1E+1 1 -> 1
cotx557 comparetotal 1E+2 1 -> 1
cotx558 comparetotal 1E+3 1 -> 1
cotx559 comparetotal 1E+4 1 -> 1
cotx561 comparetotal 1E+5 1 -> 1
cotx562 comparetotal 1E+6 1 -> 1
cotx563 comparetotal 1E+7 1 -> 1
cotx564 comparetotal 1E+8 1 -> 1
cotx565 comparetotal 1E+9 1 -> 1
cotx566 comparetotal 1E+10 1 -> 1
cotx567 comparetotal 1E+11 1 -> 1
cotx568 comparetotal 1E+12 1 -> 1
cotx569 comparetotal 1E+13 1 -> 1
cotx570 comparetotal 1E+14 1 -> 1
cotx571 comparetotal 1E+15 1 -> 1
-- similar with an useful coefficient, one side only
cotx580 comparetotal 0.000000987654321 1E-15 -> 1
cotx581 comparetotal 0.000000987654321 1E-14 -> 1
cotx582 comparetotal 0.000000987654321 1E-13 -> 1
cotx583 comparetotal 0.000000987654321 1E-12 -> 1
cotx584 comparetotal 0.000000987654321 1E-11 -> 1
cotx585 comparetotal 0.000000987654321 1E-10 -> 1
cotx586 comparetotal 0.000000987654321 1E-9 -> 1
cotx587 comparetotal 0.000000987654321 1E-8 -> 1
cotx588 comparetotal 0.000000987654321 1E-7 -> 1
cotx589 comparetotal 0.000000987654321 1E-6 -> -1
cotx590 comparetotal 0.000000987654321 1E-5 -> -1
cotx591 comparetotal 0.000000987654321 1E-4 -> -1
cotx592 comparetotal 0.000000987654321 1E-3 -> -1
cotx593 comparetotal 0.000000987654321 1E-2 -> -1
cotx594 comparetotal 0.000000987654321 1E-1 -> -1
cotx595 comparetotal 0.000000987654321 1E-0 -> -1
cotx596 comparetotal 0.000000987654321 1E+1 -> -1
cotx597 comparetotal 0.000000987654321 1E+2 -> -1
cotx598 comparetotal 0.000000987654321 1E+3 -> -1
cotx599 comparetotal 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
precision: 20
cotx600 comparetotal 12 12.2345 -> -1
cotx601 comparetotal 12.0 12.2345 -> -1
cotx602 comparetotal 12.00 12.2345 -> -1
cotx603 comparetotal 12.000 12.2345 -> -1
cotx604 comparetotal 12.0000 12.2345 -> -1
cotx605 comparetotal 12.00000 12.2345 -> -1
cotx606 comparetotal 12.000000 12.2345 -> -1
cotx607 comparetotal 12.0000000 12.2345 -> -1
cotx608 comparetotal 12.00000000 12.2345 -> -1
cotx609 comparetotal 12.000000000 12.2345 -> -1
cotx610 comparetotal 12.1234 12 -> 1
cotx611 comparetotal 12.1234 12.0 -> 1
cotx612 comparetotal 12.1234 12.00 -> 1
cotx613 comparetotal 12.1234 12.000 -> 1
cotx614 comparetotal 12.1234 12.0000 -> 1
cotx615 comparetotal 12.1234 12.00000 -> 1
cotx616 comparetotal 12.1234 12.000000 -> 1
cotx617 comparetotal 12.1234 12.0000000 -> 1
cotx618 comparetotal 12.1234 12.00000000 -> 1
cotx619 comparetotal 12.1234 12.000000000 -> 1
cotx620 comparetotal -12 -12.2345 -> 1
cotx621 comparetotal -12.0 -12.2345 -> 1
cotx622 comparetotal -12.00 -12.2345 -> 1
cotx623 comparetotal -12.000 -12.2345 -> 1
cotx624 comparetotal -12.0000 -12.2345 -> 1
cotx625 comparetotal -12.00000 -12.2345 -> 1
cotx626 comparetotal -12.000000 -12.2345 -> 1
cotx627 comparetotal -12.0000000 -12.2345 -> 1
cotx628 comparetotal -12.00000000 -12.2345 -> 1
cotx629 comparetotal -12.000000000 -12.2345 -> 1
cotx630 comparetotal -12.1234 -12 -> -1
cotx631 comparetotal -12.1234 -12.0 -> -1
cotx632 comparetotal -12.1234 -12.00 -> -1
cotx633 comparetotal -12.1234 -12.000 -> -1
cotx634 comparetotal -12.1234 -12.0000 -> -1
cotx635 comparetotal -12.1234 -12.00000 -> -1
cotx636 comparetotal -12.1234 -12.000000 -> -1
cotx637 comparetotal -12.1234 -12.0000000 -> -1
cotx638 comparetotal -12.1234 -12.00000000 -> -1
cotx639 comparetotal -12.1234 -12.000000000 -> -1
precision: 9
-- extended zeros
cotx640 comparetotal 0 0 -> 0
cotx641 comparetotal 0 -0 -> 1
cotx642 comparetotal 0 -0.0 -> 1
cotx643 comparetotal 0 0.0 -> 1
cotx644 comparetotal -0 0 -> -1
cotx645 comparetotal -0 -0 -> 0
cotx646 comparetotal -0 -0.0 -> -1
cotx647 comparetotal -0 0.0 -> -1
cotx648 comparetotal 0.0 0 -> -1
cotx649 comparetotal 0.0 -0 -> 1
cotx650 comparetotal 0.0 -0.0 -> 1
cotx651 comparetotal 0.0 0.0 -> 0
cotx652 comparetotal -0.0 0 -> -1
cotx653 comparetotal -0.0 -0 -> 1
cotx654 comparetotal -0.0 -0.0 -> 0
cotx655 comparetotal -0.0 0.0 -> -1
cotx656 comparetotal -0E1 0.0 -> -1
cotx657 comparetotal -0E2 0.0 -> -1
cotx658 comparetotal 0E1 0.0 -> 1
cotx659 comparetotal 0E2 0.0 -> 1
cotx660 comparetotal -0E1 0 -> -1
cotx661 comparetotal -0E2 0 -> -1
cotx662 comparetotal 0E1 0 -> 1
cotx663 comparetotal 0E2 0 -> 1
cotx664 comparetotal -0E1 -0E1 -> 0
cotx665 comparetotal -0E2 -0E1 -> -1
cotx666 comparetotal 0E1 -0E1 -> 1
cotx667 comparetotal 0E2 -0E1 -> 1
cotx668 comparetotal -0E1 -0E2 -> 1
cotx669 comparetotal -0E2 -0E2 -> 0
cotx670 comparetotal 0E1 -0E2 -> 1
cotx671 comparetotal 0E2 -0E2 -> 1
cotx672 comparetotal -0E1 0E1 -> -1
cotx673 comparetotal -0E2 0E1 -> -1
cotx674 comparetotal 0E1 0E1 -> 0
cotx675 comparetotal 0E2 0E1 -> 1
cotx676 comparetotal -0E1 0E2 -> -1
cotx677 comparetotal -0E2 0E2 -> -1
cotx678 comparetotal 0E1 0E2 -> -1
cotx679 comparetotal 0E2 0E2 -> 0
-- trailing zeros; unit-y
precision: 20
cotx680 comparetotal 12 12 -> 0
cotx681 comparetotal 12 12.0 -> 1
cotx682 comparetotal 12 12.00 -> 1
cotx683 comparetotal 12 12.000 -> 1
cotx684 comparetotal 12 12.0000 -> 1
cotx685 comparetotal 12 12.00000 -> 1
cotx686 comparetotal 12 12.000000 -> 1
cotx687 comparetotal 12 12.0000000 -> 1
cotx688 comparetotal 12 12.00000000 -> 1
cotx689 comparetotal 12 12.000000000 -> 1
cotx690 comparetotal 12 12 -> 0
cotx691 comparetotal 12.0 12 -> -1
cotx692 comparetotal 12.00 12 -> -1
cotx693 comparetotal 12.000 12 -> -1
cotx694 comparetotal 12.0000 12 -> -1
cotx695 comparetotal 12.00000 12 -> -1
cotx696 comparetotal 12.000000 12 -> -1
cotx697 comparetotal 12.0000000 12 -> -1
cotx698 comparetotal 12.00000000 12 -> -1
cotx699 comparetotal 12.000000000 12 -> -1
-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
cotx701 comparetotal 12345678000 1 -> 1
cotx702 comparetotal 1 12345678000 -> -1
cotx703 comparetotal 1234567800 1 -> 1
cotx704 comparetotal 1 1234567800 -> -1
cotx705 comparetotal 1234567890 1 -> 1
cotx706 comparetotal 1 1234567890 -> -1
cotx707 comparetotal 1234567891 1 -> 1
cotx708 comparetotal 1 1234567891 -> -1
cotx709 comparetotal 12345678901 1 -> 1
cotx710 comparetotal 1 12345678901 -> -1
cotx711 comparetotal 1234567896 1 -> 1
cotx712 comparetotal 1 1234567896 -> -1
cotx713 comparetotal -1234567891 1 -> -1
cotx714 comparetotal 1 -1234567891 -> 1
cotx715 comparetotal -12345678901 1 -> -1
cotx716 comparetotal 1 -12345678901 -> 1
cotx717 comparetotal -1234567896 1 -> -1
cotx718 comparetotal 1 -1234567896 -> 1
precision: 15
-- same with plenty of precision
cotx721 comparetotal 12345678000 1 -> 1
cotx722 comparetotal 1 12345678000 -> -1
cotx723 comparetotal 1234567800 1 -> 1
cotx724 comparetotal 1 1234567800 -> -1
cotx725 comparetotal 1234567890 1 -> 1
cotx726 comparetotal 1 1234567890 -> -1
cotx727 comparetotal 1234567891 1 -> 1
cotx728 comparetotal 1 1234567891 -> -1
cotx729 comparetotal 12345678901 1 -> 1
cotx730 comparetotal 1 12345678901 -> -1
cotx731 comparetotal 1234567896 1 -> 1
cotx732 comparetotal 1 1234567896 -> -1
-- residue cases
precision: 5
cotx740 comparetotal 1 0.9999999 -> 1
cotx741 comparetotal 1 0.999999 -> 1
cotx742 comparetotal 1 0.99999 -> 1
cotx743 comparetotal 1 1.0000 -> 1
cotx744 comparetotal 1 1.00001 -> -1
cotx745 comparetotal 1 1.000001 -> -1
cotx746 comparetotal 1 1.0000001 -> -1
cotx750 comparetotal 0.9999999 1 -> -1
cotx751 comparetotal 0.999999 1 -> -1
cotx752 comparetotal 0.99999 1 -> -1
cotx753 comparetotal 1.0000 1 -> -1
cotx754 comparetotal 1.00001 1 -> 1
cotx755 comparetotal 1.000001 1 -> 1
cotx756 comparetotal 1.0000001 1 -> 1
-- a selection of longies
cotx760 comparetotal -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1
cotx761 comparetotal -36852134.84194296250843579428931 -36852134.84194296250843579428931 -> 0
cotx762 comparetotal -36852134.94194296250843579428931 -36852134.84194296250843579428931 -> -1
cotx763 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
-- precisions above or below the difference should have no effect
precision: 11
cotx764 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 10
cotx765 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 9
cotx766 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 8
cotx767 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 7
cotx768 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 6
cotx769 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 5
cotx770 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 4
cotx771 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 3
cotx772 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 2
cotx773 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 1
cotx774 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
-- Specials
precision: 9
cotx780 comparetotal Inf -Inf -> 1
cotx781 comparetotal Inf -1000 -> 1
cotx782 comparetotal Inf -1 -> 1
cotx783 comparetotal Inf -0 -> 1
cotx784 comparetotal Inf 0 -> 1
cotx785 comparetotal Inf 1 -> 1
cotx786 comparetotal Inf 1000 -> 1
cotx787 comparetotal Inf Inf -> 0
cotx788 comparetotal -1000 Inf -> -1
cotx789 comparetotal -Inf Inf -> -1
cotx790 comparetotal -1 Inf -> -1
cotx791 comparetotal -0 Inf -> -1
cotx792 comparetotal 0 Inf -> -1
cotx793 comparetotal 1 Inf -> -1
cotx794 comparetotal 1000 Inf -> -1
cotx795 comparetotal Inf Inf -> 0
cotx800 comparetotal -Inf -Inf -> 0
cotx801 comparetotal -Inf -1000 -> -1
cotx802 comparetotal -Inf -1 -> -1
cotx803 comparetotal -Inf -0 -> -1
cotx804 comparetotal -Inf 0 -> -1
cotx805 comparetotal -Inf 1 -> -1
cotx806 comparetotal -Inf 1000 -> -1
cotx807 comparetotal -Inf Inf -> -1
cotx808 comparetotal -Inf -Inf -> 0
cotx809 comparetotal -1000 -Inf -> 1
cotx810 comparetotal -1 -Inf -> 1
cotx811 comparetotal -0 -Inf -> 1
cotx812 comparetotal 0 -Inf -> 1
cotx813 comparetotal 1 -Inf -> 1
cotx814 comparetotal 1000 -Inf -> 1
cotx815 comparetotal Inf -Inf -> 1
cotx821 comparetotal NaN -Inf -> 1
cotx822 comparetotal NaN -1000 -> 1
cotx823 comparetotal NaN -1 -> 1
cotx824 comparetotal NaN -0 -> 1
cotx825 comparetotal NaN 0 -> 1
cotx826 comparetotal NaN 1 -> 1
cotx827 comparetotal NaN 1000 -> 1
cotx828 comparetotal NaN Inf -> 1
cotx829 comparetotal NaN NaN -> 0
cotx830 comparetotal -Inf NaN -> -1
cotx831 comparetotal -1000 NaN -> -1
cotx832 comparetotal -1 NaN -> -1
cotx833 comparetotal -0 NaN -> -1
cotx834 comparetotal 0 NaN -> -1
cotx835 comparetotal 1 NaN -> -1
cotx836 comparetotal 1000 NaN -> -1
cotx837 comparetotal Inf NaN -> -1
cotx838 comparetotal -NaN -NaN -> 0
cotx839 comparetotal +NaN -NaN -> 1
cotx840 comparetotal -NaN +NaN -> -1
cotx841 comparetotal sNaN -sNaN -> 1
cotx842 comparetotal sNaN -NaN -> 1
cotx843 comparetotal sNaN -Inf -> 1
cotx844 comparetotal sNaN -1000 -> 1
cotx845 comparetotal sNaN -1 -> 1
cotx846 comparetotal sNaN -0 -> 1
cotx847 comparetotal sNaN 0 -> 1
cotx848 comparetotal sNaN 1 -> 1
cotx849 comparetotal sNaN 1000 -> 1
cotx850 comparetotal sNaN NaN -> -1
cotx851 comparetotal sNaN sNaN -> 0
cotx852 comparetotal -sNaN sNaN -> -1
cotx853 comparetotal -NaN sNaN -> -1
cotx854 comparetotal -Inf sNaN -> -1
cotx855 comparetotal -1000 sNaN -> -1
cotx856 comparetotal -1 sNaN -> -1
cotx857 comparetotal -0 sNaN -> -1
cotx858 comparetotal 0 sNaN -> -1
cotx859 comparetotal 1 sNaN -> -1
cotx860 comparetotal 1000 sNaN -> -1
cotx861 comparetotal Inf sNaN -> -1
cotx862 comparetotal NaN sNaN -> 1
cotx863 comparetotal sNaN sNaN -> 0
cotx871 comparetotal -sNaN -sNaN -> 0
cotx872 comparetotal -sNaN -NaN -> 1
cotx873 comparetotal -sNaN -Inf -> -1
cotx874 comparetotal -sNaN -1000 -> -1
cotx875 comparetotal -sNaN -1 -> -1
cotx876 comparetotal -sNaN -0 -> -1
cotx877 comparetotal -sNaN 0 -> -1
cotx878 comparetotal -sNaN 1 -> -1
cotx879 comparetotal -sNaN 1000 -> -1
cotx880 comparetotal -sNaN NaN -> -1
cotx881 comparetotal -sNaN sNaN -> -1
cotx882 comparetotal -sNaN -sNaN -> 0
cotx883 comparetotal -NaN -sNaN -> -1
cotx884 comparetotal -Inf -sNaN -> 1
cotx885 comparetotal -1000 -sNaN -> 1
cotx886 comparetotal -1 -sNaN -> 1
cotx887 comparetotal -0 -sNaN -> 1
cotx888 comparetotal 0 -sNaN -> 1
cotx889 comparetotal 1 -sNaN -> 1
cotx890 comparetotal 1000 -sNaN -> 1
cotx891 comparetotal Inf -sNaN -> 1
cotx892 comparetotal NaN -sNaN -> 1
cotx893 comparetotal sNaN -sNaN -> 1
-- NaNs with payload
cotx960 comparetotal NaN9 -Inf -> 1
cotx961 comparetotal NaN8 999 -> 1
cotx962 comparetotal NaN77 Inf -> 1
cotx963 comparetotal -NaN67 NaN5 -> -1
cotx964 comparetotal -Inf -NaN4 -> 1
cotx965 comparetotal -999 -NaN33 -> 1
cotx966 comparetotal Inf NaN2 -> -1
cotx970 comparetotal -NaN41 -NaN42 -> 1
cotx971 comparetotal +NaN41 -NaN42 -> 1
cotx972 comparetotal -NaN41 +NaN42 -> -1
cotx973 comparetotal +NaN41 +NaN42 -> -1
cotx974 comparetotal -NaN42 -NaN01 -> -1
cotx975 comparetotal +NaN42 -NaN01 -> 1
cotx976 comparetotal -NaN42 +NaN01 -> -1
cotx977 comparetotal +NaN42 +NaN01 -> 1
cotx980 comparetotal -sNaN771 -sNaN772 -> 1
cotx981 comparetotal +sNaN771 -sNaN772 -> 1
cotx982 comparetotal -sNaN771 +sNaN772 -> -1
cotx983 comparetotal +sNaN771 +sNaN772 -> -1
cotx984 comparetotal -sNaN772 -sNaN771 -> -1
cotx985 comparetotal +sNaN772 -sNaN771 -> 1
cotx986 comparetotal -sNaN772 +sNaN771 -> -1
cotx987 comparetotal +sNaN772 +sNaN771 -> 1
cotx991 comparetotal -sNaN99 -Inf -> -1
cotx992 comparetotal sNaN98 -11 -> 1
cotx993 comparetotal sNaN97 NaN -> -1
cotx994 comparetotal sNaN16 sNaN94 -> -1
cotx995 comparetotal NaN85 sNaN83 -> 1
cotx996 comparetotal -Inf sNaN92 -> -1
cotx997 comparetotal 088 sNaN81 -> -1
cotx998 comparetotal Inf sNaN90 -> -1
cotx999 comparetotal NaN -sNaN89 -> 1
-- overflow and underflow tests .. subnormal results now allowed
maxExponent: 999999999
minexponent: -999999999
cotx1080 comparetotal +1.23456789012345E-0 9E+999999999 -> -1
cotx1081 comparetotal 9E+999999999 +1.23456789012345E-0 -> 1
cotx1082 comparetotal +0.100 9E-999999999 -> 1
cotx1083 comparetotal 9E-999999999 +0.100 -> -1
cotx1085 comparetotal -1.23456789012345E-0 9E+999999999 -> -1
cotx1086 comparetotal 9E+999999999 -1.23456789012345E-0 -> 1
cotx1087 comparetotal -0.100 9E-999999999 -> -1
cotx1088 comparetotal 9E-999999999 -0.100 -> 1
cotx1089 comparetotal 1e-599999999 1e-400000001 -> -1
cotx1090 comparetotal 1e-599999999 1e-400000000 -> -1
cotx1091 comparetotal 1e-600000000 1e-400000000 -> -1
cotx1092 comparetotal 9e-999999998 0.01 -> -1
cotx1093 comparetotal 9e-999999998 0.1 -> -1
cotx1094 comparetotal 0.01 9e-999999998 -> 1
cotx1095 comparetotal 1e599999999 1e400000001 -> 1
cotx1096 comparetotal 1e599999999 1e400000000 -> 1
cotx1097 comparetotal 1e600000000 1e400000000 -> 1
cotx1098 comparetotal 9e999999998 100 -> 1
cotx1099 comparetotal 9e999999998 10 -> 1
cotx1100 comparetotal 100 9e999999998 -> -1
-- signs
cotx1101 comparetotal 1e+777777777 1e+411111111 -> 1
cotx1102 comparetotal 1e+777777777 -1e+411111111 -> 1
cotx1103 comparetotal -1e+777777777 1e+411111111 -> -1
cotx1104 comparetotal -1e+777777777 -1e+411111111 -> -1
cotx1105 comparetotal 1e-777777777 1e-411111111 -> -1
cotx1106 comparetotal 1e-777777777 -1e-411111111 -> 1
cotx1107 comparetotal -1e-777777777 1e-411111111 -> -1
cotx1108 comparetotal -1e-777777777 -1e-411111111 -> 1
-- spread zeros
cotx1110 comparetotal 0E-383 0 -> -1
cotx1111 comparetotal 0E-383 -0 -> 1
cotx1112 comparetotal -0E-383 0 -> -1
cotx1113 comparetotal -0E-383 -0 -> 1
cotx1114 comparetotal 0E-383 0E+384 -> -1
cotx1115 comparetotal 0E-383 -0E+384 -> 1
cotx1116 comparetotal -0E-383 0E+384 -> -1
cotx1117 comparetotal -0E-383 -0E+384 -> 1
cotx1118 comparetotal 0 0E+384 -> -1
cotx1119 comparetotal 0 -0E+384 -> 1
cotx1120 comparetotal -0 0E+384 -> -1
cotx1121 comparetotal -0 -0E+384 -> 1
cotx1130 comparetotal 0E+384 0 -> 1
cotx1131 comparetotal 0E+384 -0 -> 1
cotx1132 comparetotal -0E+384 0 -> -1
cotx1133 comparetotal -0E+384 -0 -> -1
cotx1134 comparetotal 0E+384 0E-383 -> 1
cotx1135 comparetotal 0E+384 -0E-383 -> 1
cotx1136 comparetotal -0E+384 0E-383 -> -1
cotx1137 comparetotal -0E+384 -0E-383 -> -1
cotx1138 comparetotal 0 0E-383 -> 1
cotx1139 comparetotal 0 -0E-383 -> 1
cotx1140 comparetotal -0 0E-383 -> -1
cotx1141 comparetotal -0 -0E-383 -> -1
-- Null tests
cotx9990 comparetotal 10 # -> NaN Invalid_operation
cotx9991 comparetotal # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,790 @@
------------------------------------------------------------------------
-- comparetotmag.decTest -- decimal comparison, abs. total ordering --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that it cannot be assumed that add/subtract tests cover paths
-- for this operation adequately, here, because the code might be
-- quite different (comparison cannot overflow or underflow, so
-- actual subtractions are not necessary). Similarly, comparetotal
-- will have some radically different paths than compare.
extended: 1
precision: 16
rounding: half_up
maxExponent: 384
minExponent: -383
-- sanity checks
ctmx001 comparetotmag -2 -2 -> 0
ctmx002 comparetotmag -2 -1 -> 1
ctmx003 comparetotmag -2 0 -> 1
ctmx004 comparetotmag -2 1 -> 1
ctmx005 comparetotmag -2 2 -> 0
ctmx006 comparetotmag -1 -2 -> -1
ctmx007 comparetotmag -1 -1 -> 0
ctmx008 comparetotmag -1 0 -> 1
ctmx009 comparetotmag -1 1 -> 0
ctmx010 comparetotmag -1 2 -> -1
ctmx011 comparetotmag 0 -2 -> -1
ctmx012 comparetotmag 0 -1 -> -1
ctmx013 comparetotmag 0 0 -> 0
ctmx014 comparetotmag 0 1 -> -1
ctmx015 comparetotmag 0 2 -> -1
ctmx016 comparetotmag 1 -2 -> -1
ctmx017 comparetotmag 1 -1 -> 0
ctmx018 comparetotmag 1 0 -> 1
ctmx019 comparetotmag 1 1 -> 0
ctmx020 comparetotmag 1 2 -> -1
ctmx021 comparetotmag 2 -2 -> 0
ctmx022 comparetotmag 2 -1 -> 1
ctmx023 comparetotmag 2 0 -> 1
ctmx025 comparetotmag 2 1 -> 1
ctmx026 comparetotmag 2 2 -> 0
ctmx031 comparetotmag -20 -20 -> 0
ctmx032 comparetotmag -20 -10 -> 1
ctmx033 comparetotmag -20 00 -> 1
ctmx034 comparetotmag -20 10 -> 1
ctmx035 comparetotmag -20 20 -> 0
ctmx036 comparetotmag -10 -20 -> -1
ctmx037 comparetotmag -10 -10 -> 0
ctmx038 comparetotmag -10 00 -> 1
ctmx039 comparetotmag -10 10 -> 0
ctmx040 comparetotmag -10 20 -> -1
ctmx041 comparetotmag 00 -20 -> -1
ctmx042 comparetotmag 00 -10 -> -1
ctmx043 comparetotmag 00 00 -> 0
ctmx044 comparetotmag 00 10 -> -1
ctmx045 comparetotmag 00 20 -> -1
ctmx046 comparetotmag 10 -20 -> -1
ctmx047 comparetotmag 10 -10 -> 0
ctmx048 comparetotmag 10 00 -> 1
ctmx049 comparetotmag 10 10 -> 0
ctmx050 comparetotmag 10 20 -> -1
ctmx051 comparetotmag 20 -20 -> 0
ctmx052 comparetotmag 20 -10 -> 1
ctmx053 comparetotmag 20 00 -> 1
ctmx055 comparetotmag 20 10 -> 1
ctmx056 comparetotmag 20 20 -> 0
ctmx061 comparetotmag -2.0 -2.0 -> 0
ctmx062 comparetotmag -2.0 -1.0 -> 1
ctmx063 comparetotmag -2.0 0.0 -> 1
ctmx064 comparetotmag -2.0 1.0 -> 1
ctmx065 comparetotmag -2.0 2.0 -> 0
ctmx066 comparetotmag -1.0 -2.0 -> -1
ctmx067 comparetotmag -1.0 -1.0 -> 0
ctmx068 comparetotmag -1.0 0.0 -> 1
ctmx069 comparetotmag -1.0 1.0 -> 0
ctmx070 comparetotmag -1.0 2.0 -> -1
ctmx071 comparetotmag 0.0 -2.0 -> -1
ctmx072 comparetotmag 0.0 -1.0 -> -1
ctmx073 comparetotmag 0.0 0.0 -> 0
ctmx074 comparetotmag 0.0 1.0 -> -1
ctmx075 comparetotmag 0.0 2.0 -> -1
ctmx076 comparetotmag 1.0 -2.0 -> -1
ctmx077 comparetotmag 1.0 -1.0 -> 0
ctmx078 comparetotmag 1.0 0.0 -> 1
ctmx079 comparetotmag 1.0 1.0 -> 0
ctmx080 comparetotmag 1.0 2.0 -> -1
ctmx081 comparetotmag 2.0 -2.0 -> 0
ctmx082 comparetotmag 2.0 -1.0 -> 1
ctmx083 comparetotmag 2.0 0.0 -> 1
ctmx085 comparetotmag 2.0 1.0 -> 1
ctmx086 comparetotmag 2.0 2.0 -> 0
-- now some cases which might overflow if subtract were used
maxexponent: 999999999
minexponent: -999999999
ctmx090 comparetotmag 9.99999999E+999999999 9.99999999E+999999999 -> 0
ctmx091 comparetotmag -9.99999999E+999999999 9.99999999E+999999999 -> 0
ctmx092 comparetotmag 9.99999999E+999999999 -9.99999999E+999999999 -> 0
ctmx093 comparetotmag -9.99999999E+999999999 -9.99999999E+999999999 -> 0
-- some differing length/exponent cases
-- in this first group, compare would compare all equal
ctmx100 comparetotmag 7.0 7.0 -> 0
ctmx101 comparetotmag 7.0 7 -> -1
ctmx102 comparetotmag 7 7.0 -> 1
ctmx103 comparetotmag 7E+0 7.0 -> 1
ctmx104 comparetotmag 70E-1 7.0 -> 0
ctmx105 comparetotmag 0.7E+1 7 -> 0
ctmx106 comparetotmag 70E-1 7 -> -1
ctmx107 comparetotmag 7.0 7E+0 -> -1
ctmx108 comparetotmag 7.0 70E-1 -> 0
ctmx109 comparetotmag 7 0.7E+1 -> 0
ctmx110 comparetotmag 7 70E-1 -> 1
ctmx120 comparetotmag 8.0 7.0 -> 1
ctmx121 comparetotmag 8.0 7 -> 1
ctmx122 comparetotmag 8 7.0 -> 1
ctmx123 comparetotmag 8E+0 7.0 -> 1
ctmx124 comparetotmag 80E-1 7.0 -> 1
ctmx125 comparetotmag 0.8E+1 7 -> 1
ctmx126 comparetotmag 80E-1 7 -> 1
ctmx127 comparetotmag 8.0 7E+0 -> 1
ctmx128 comparetotmag 8.0 70E-1 -> 1
ctmx129 comparetotmag 8 0.7E+1 -> 1
ctmx130 comparetotmag 8 70E-1 -> 1
ctmx140 comparetotmag 8.0 9.0 -> -1
ctmx141 comparetotmag 8.0 9 -> -1
ctmx142 comparetotmag 8 9.0 -> -1
ctmx143 comparetotmag 8E+0 9.0 -> -1
ctmx144 comparetotmag 80E-1 9.0 -> -1
ctmx145 comparetotmag 0.8E+1 9 -> -1
ctmx146 comparetotmag 80E-1 9 -> -1
ctmx147 comparetotmag 8.0 9E+0 -> -1
ctmx148 comparetotmag 8.0 90E-1 -> -1
ctmx149 comparetotmag 8 0.9E+1 -> -1
ctmx150 comparetotmag 8 90E-1 -> -1
-- and again, with sign changes -+ ..
ctmx200 comparetotmag -7.0 7.0 -> 0
ctmx201 comparetotmag -7.0 7 -> -1
ctmx202 comparetotmag -7 7.0 -> 1
ctmx203 comparetotmag -7E+0 7.0 -> 1
ctmx204 comparetotmag -70E-1 7.0 -> 0
ctmx205 comparetotmag -0.7E+1 7 -> 0
ctmx206 comparetotmag -70E-1 7 -> -1
ctmx207 comparetotmag -7.0 7E+0 -> -1
ctmx208 comparetotmag -7.0 70E-1 -> 0
ctmx209 comparetotmag -7 0.7E+1 -> 0
ctmx210 comparetotmag -7 70E-1 -> 1
ctmx220 comparetotmag -8.0 7.0 -> 1
ctmx221 comparetotmag -8.0 7 -> 1
ctmx222 comparetotmag -8 7.0 -> 1
ctmx223 comparetotmag -8E+0 7.0 -> 1
ctmx224 comparetotmag -80E-1 7.0 -> 1
ctmx225 comparetotmag -0.8E+1 7 -> 1
ctmx226 comparetotmag -80E-1 7 -> 1
ctmx227 comparetotmag -8.0 7E+0 -> 1
ctmx228 comparetotmag -8.0 70E-1 -> 1
ctmx229 comparetotmag -8 0.7E+1 -> 1
ctmx230 comparetotmag -8 70E-1 -> 1
ctmx240 comparetotmag -8.0 9.0 -> -1
ctmx241 comparetotmag -8.0 9 -> -1
ctmx242 comparetotmag -8 9.0 -> -1
ctmx243 comparetotmag -8E+0 9.0 -> -1
ctmx244 comparetotmag -80E-1 9.0 -> -1
ctmx245 comparetotmag -0.8E+1 9 -> -1
ctmx246 comparetotmag -80E-1 9 -> -1
ctmx247 comparetotmag -8.0 9E+0 -> -1
ctmx248 comparetotmag -8.0 90E-1 -> -1
ctmx249 comparetotmag -8 0.9E+1 -> -1
ctmx250 comparetotmag -8 90E-1 -> -1
-- and again, with sign changes +- ..
ctmx300 comparetotmag 7.0 -7.0 -> 0
ctmx301 comparetotmag 7.0 -7 -> -1
ctmx302 comparetotmag 7 -7.0 -> 1
ctmx303 comparetotmag 7E+0 -7.0 -> 1
ctmx304 comparetotmag 70E-1 -7.0 -> 0
ctmx305 comparetotmag .7E+1 -7 -> 0
ctmx306 comparetotmag 70E-1 -7 -> -1
ctmx307 comparetotmag 7.0 -7E+0 -> -1
ctmx308 comparetotmag 7.0 -70E-1 -> 0
ctmx309 comparetotmag 7 -.7E+1 -> 0
ctmx310 comparetotmag 7 -70E-1 -> 1
ctmx320 comparetotmag 8.0 -7.0 -> 1
ctmx321 comparetotmag 8.0 -7 -> 1
ctmx322 comparetotmag 8 -7.0 -> 1
ctmx323 comparetotmag 8E+0 -7.0 -> 1
ctmx324 comparetotmag 80E-1 -7.0 -> 1
ctmx325 comparetotmag .8E+1 -7 -> 1
ctmx326 comparetotmag 80E-1 -7 -> 1
ctmx327 comparetotmag 8.0 -7E+0 -> 1
ctmx328 comparetotmag 8.0 -70E-1 -> 1
ctmx329 comparetotmag 8 -.7E+1 -> 1
ctmx330 comparetotmag 8 -70E-1 -> 1
ctmx340 comparetotmag 8.0 -9.0 -> -1
ctmx341 comparetotmag 8.0 -9 -> -1
ctmx342 comparetotmag 8 -9.0 -> -1
ctmx343 comparetotmag 8E+0 -9.0 -> -1
ctmx344 comparetotmag 80E-1 -9.0 -> -1
ctmx345 comparetotmag .8E+1 -9 -> -1
ctmx346 comparetotmag 80E-1 -9 -> -1
ctmx347 comparetotmag 8.0 -9E+0 -> -1
ctmx348 comparetotmag 8.0 -90E-1 -> -1
ctmx349 comparetotmag 8 -.9E+1 -> -1
ctmx350 comparetotmag 8 -90E-1 -> -1
-- and again, with sign changes -- ..
ctmx400 comparetotmag -7.0 -7.0 -> 0
ctmx401 comparetotmag -7.0 -7 -> -1
ctmx402 comparetotmag -7 -7.0 -> 1
ctmx403 comparetotmag -7E+0 -7.0 -> 1
ctmx404 comparetotmag -70E-1 -7.0 -> 0
ctmx405 comparetotmag -.7E+1 -7 -> 0
ctmx406 comparetotmag -70E-1 -7 -> -1
ctmx407 comparetotmag -7.0 -7E+0 -> -1
ctmx408 comparetotmag -7.0 -70E-1 -> 0
ctmx409 comparetotmag -7 -.7E+1 -> 0
ctmx410 comparetotmag -7 -70E-1 -> 1
ctmx420 comparetotmag -8.0 -7.0 -> 1
ctmx421 comparetotmag -8.0 -7 -> 1
ctmx422 comparetotmag -8 -7.0 -> 1
ctmx423 comparetotmag -8E+0 -7.0 -> 1
ctmx424 comparetotmag -80E-1 -7.0 -> 1
ctmx425 comparetotmag -.8E+1 -7 -> 1
ctmx426 comparetotmag -80E-1 -7 -> 1
ctmx427 comparetotmag -8.0 -7E+0 -> 1
ctmx428 comparetotmag -8.0 -70E-1 -> 1
ctmx429 comparetotmag -8 -.7E+1 -> 1
ctmx430 comparetotmag -8 -70E-1 -> 1
ctmx440 comparetotmag -8.0 -9.0 -> -1
ctmx441 comparetotmag -8.0 -9 -> -1
ctmx442 comparetotmag -8 -9.0 -> -1
ctmx443 comparetotmag -8E+0 -9.0 -> -1
ctmx444 comparetotmag -80E-1 -9.0 -> -1
ctmx445 comparetotmag -.8E+1 -9 -> -1
ctmx446 comparetotmag -80E-1 -9 -> -1
ctmx447 comparetotmag -8.0 -9E+0 -> -1
ctmx448 comparetotmag -8.0 -90E-1 -> -1
ctmx449 comparetotmag -8 -.9E+1 -> -1
ctmx450 comparetotmag -8 -90E-1 -> -1
-- testcases that subtract to lots of zeros at boundaries [pgr]
precision: 40
ctmx470 comparetotmag 123.4560000000000000E789 123.456E789 -> -1
ctmx471 comparetotmag 123.456000000000000E-89 123.456E-89 -> -1
ctmx472 comparetotmag 123.45600000000000E789 123.456E789 -> -1
ctmx473 comparetotmag 123.4560000000000E-89 123.456E-89 -> -1
ctmx474 comparetotmag 123.456000000000E789 123.456E789 -> -1
ctmx475 comparetotmag 123.45600000000E-89 123.456E-89 -> -1
ctmx476 comparetotmag 123.4560000000E789 123.456E789 -> -1
ctmx477 comparetotmag 123.456000000E-89 123.456E-89 -> -1
ctmx478 comparetotmag 123.45600000E789 123.456E789 -> -1
ctmx479 comparetotmag 123.4560000E-89 123.456E-89 -> -1
ctmx480 comparetotmag 123.456000E789 123.456E789 -> -1
ctmx481 comparetotmag 123.45600E-89 123.456E-89 -> -1
ctmx482 comparetotmag 123.4560E789 123.456E789 -> -1
ctmx483 comparetotmag 123.456E-89 123.456E-89 -> 0
ctmx484 comparetotmag 123.456E-89 123.4560000000000000E-89 -> 1
ctmx485 comparetotmag 123.456E789 123.456000000000000E789 -> 1
ctmx486 comparetotmag 123.456E-89 123.45600000000000E-89 -> 1
ctmx487 comparetotmag 123.456E789 123.4560000000000E789 -> 1
ctmx488 comparetotmag 123.456E-89 123.456000000000E-89 -> 1
ctmx489 comparetotmag 123.456E789 123.45600000000E789 -> 1
ctmx490 comparetotmag 123.456E-89 123.4560000000E-89 -> 1
ctmx491 comparetotmag 123.456E789 123.456000000E789 -> 1
ctmx492 comparetotmag 123.456E-89 123.45600000E-89 -> 1
ctmx493 comparetotmag 123.456E789 123.4560000E789 -> 1
ctmx494 comparetotmag 123.456E-89 123.456000E-89 -> 1
ctmx495 comparetotmag 123.456E789 123.45600E789 -> 1
ctmx496 comparetotmag 123.456E-89 123.4560E-89 -> 1
ctmx497 comparetotmag 123.456E789 123.456E789 -> 0
-- wide-ranging, around precision; signs equal
precision: 9
ctmx500 comparetotmag 1 1E-15 -> 1
ctmx501 comparetotmag 1 1E-14 -> 1
ctmx502 comparetotmag 1 1E-13 -> 1
ctmx503 comparetotmag 1 1E-12 -> 1
ctmx504 comparetotmag 1 1E-11 -> 1
ctmx505 comparetotmag 1 1E-10 -> 1
ctmx506 comparetotmag 1 1E-9 -> 1
ctmx507 comparetotmag 1 1E-8 -> 1
ctmx508 comparetotmag 1 1E-7 -> 1
ctmx509 comparetotmag 1 1E-6 -> 1
ctmx510 comparetotmag 1 1E-5 -> 1
ctmx511 comparetotmag 1 1E-4 -> 1
ctmx512 comparetotmag 1 1E-3 -> 1
ctmx513 comparetotmag 1 1E-2 -> 1
ctmx514 comparetotmag 1 1E-1 -> 1
ctmx515 comparetotmag 1 1E-0 -> 0
ctmx516 comparetotmag 1 1E+1 -> -1
ctmx517 comparetotmag 1 1E+2 -> -1
ctmx518 comparetotmag 1 1E+3 -> -1
ctmx519 comparetotmag 1 1E+4 -> -1
ctmx521 comparetotmag 1 1E+5 -> -1
ctmx522 comparetotmag 1 1E+6 -> -1
ctmx523 comparetotmag 1 1E+7 -> -1
ctmx524 comparetotmag 1 1E+8 -> -1
ctmx525 comparetotmag 1 1E+9 -> -1
ctmx526 comparetotmag 1 1E+10 -> -1
ctmx527 comparetotmag 1 1E+11 -> -1
ctmx528 comparetotmag 1 1E+12 -> -1
ctmx529 comparetotmag 1 1E+13 -> -1
ctmx530 comparetotmag 1 1E+14 -> -1
ctmx531 comparetotmag 1 1E+15 -> -1
-- LR swap
ctmx540 comparetotmag 1E-15 1 -> -1
ctmx541 comparetotmag 1E-14 1 -> -1
ctmx542 comparetotmag 1E-13 1 -> -1
ctmx543 comparetotmag 1E-12 1 -> -1
ctmx544 comparetotmag 1E-11 1 -> -1
ctmx545 comparetotmag 1E-10 1 -> -1
ctmx546 comparetotmag 1E-9 1 -> -1
ctmx547 comparetotmag 1E-8 1 -> -1
ctmx548 comparetotmag 1E-7 1 -> -1
ctmx549 comparetotmag 1E-6 1 -> -1
ctmx550 comparetotmag 1E-5 1 -> -1
ctmx551 comparetotmag 1E-4 1 -> -1
ctmx552 comparetotmag 1E-3 1 -> -1
ctmx553 comparetotmag 1E-2 1 -> -1
ctmx554 comparetotmag 1E-1 1 -> -1
ctmx555 comparetotmag 1E-0 1 -> 0
ctmx556 comparetotmag 1E+1 1 -> 1
ctmx557 comparetotmag 1E+2 1 -> 1
ctmx558 comparetotmag 1E+3 1 -> 1
ctmx559 comparetotmag 1E+4 1 -> 1
ctmx561 comparetotmag 1E+5 1 -> 1
ctmx562 comparetotmag 1E+6 1 -> 1
ctmx563 comparetotmag 1E+7 1 -> 1
ctmx564 comparetotmag 1E+8 1 -> 1
ctmx565 comparetotmag 1E+9 1 -> 1
ctmx566 comparetotmag 1E+10 1 -> 1
ctmx567 comparetotmag 1E+11 1 -> 1
ctmx568 comparetotmag 1E+12 1 -> 1
ctmx569 comparetotmag 1E+13 1 -> 1
ctmx570 comparetotmag 1E+14 1 -> 1
ctmx571 comparetotmag 1E+15 1 -> 1
-- similar with an useful coefficient, one side only
ctmx580 comparetotmag 0.000000987654321 1E-15 -> 1
ctmx581 comparetotmag 0.000000987654321 1E-14 -> 1
ctmx582 comparetotmag 0.000000987654321 1E-13 -> 1
ctmx583 comparetotmag 0.000000987654321 1E-12 -> 1
ctmx584 comparetotmag 0.000000987654321 1E-11 -> 1
ctmx585 comparetotmag 0.000000987654321 1E-10 -> 1
ctmx586 comparetotmag 0.000000987654321 1E-9 -> 1
ctmx587 comparetotmag 0.000000987654321 1E-8 -> 1
ctmx588 comparetotmag 0.000000987654321 1E-7 -> 1
ctmx589 comparetotmag 0.000000987654321 1E-6 -> -1
ctmx590 comparetotmag 0.000000987654321 1E-5 -> -1
ctmx591 comparetotmag 0.000000987654321 1E-4 -> -1
ctmx592 comparetotmag 0.000000987654321 1E-3 -> -1
ctmx593 comparetotmag 0.000000987654321 1E-2 -> -1
ctmx594 comparetotmag 0.000000987654321 1E-1 -> -1
ctmx595 comparetotmag 0.000000987654321 1E-0 -> -1
ctmx596 comparetotmag 0.000000987654321 1E+1 -> -1
ctmx597 comparetotmag 0.000000987654321 1E+2 -> -1
ctmx598 comparetotmag 0.000000987654321 1E+3 -> -1
ctmx599 comparetotmag 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
precision: 20
ctmx600 comparetotmag 12 12.2345 -> -1
ctmx601 comparetotmag 12.0 12.2345 -> -1
ctmx602 comparetotmag 12.00 12.2345 -> -1
ctmx603 comparetotmag 12.000 12.2345 -> -1
ctmx604 comparetotmag 12.0000 12.2345 -> -1
ctmx605 comparetotmag 12.00000 12.2345 -> -1
ctmx606 comparetotmag 12.000000 12.2345 -> -1
ctmx607 comparetotmag 12.0000000 12.2345 -> -1
ctmx608 comparetotmag 12.00000000 12.2345 -> -1
ctmx609 comparetotmag 12.000000000 12.2345 -> -1
ctmx610 comparetotmag 12.1234 12 -> 1
ctmx611 comparetotmag 12.1234 12.0 -> 1
ctmx612 comparetotmag 12.1234 12.00 -> 1
ctmx613 comparetotmag 12.1234 12.000 -> 1
ctmx614 comparetotmag 12.1234 12.0000 -> 1
ctmx615 comparetotmag 12.1234 12.00000 -> 1
ctmx616 comparetotmag 12.1234 12.000000 -> 1
ctmx617 comparetotmag 12.1234 12.0000000 -> 1
ctmx618 comparetotmag 12.1234 12.00000000 -> 1
ctmx619 comparetotmag 12.1234 12.000000000 -> 1
ctmx620 comparetotmag -12 -12.2345 -> -1
ctmx621 comparetotmag -12.0 -12.2345 -> -1
ctmx622 comparetotmag -12.00 -12.2345 -> -1
ctmx623 comparetotmag -12.000 -12.2345 -> -1
ctmx624 comparetotmag -12.0000 -12.2345 -> -1
ctmx625 comparetotmag -12.00000 -12.2345 -> -1
ctmx626 comparetotmag -12.000000 -12.2345 -> -1
ctmx627 comparetotmag -12.0000000 -12.2345 -> -1
ctmx628 comparetotmag -12.00000000 -12.2345 -> -1
ctmx629 comparetotmag -12.000000000 -12.2345 -> -1
ctmx630 comparetotmag -12.1234 -12 -> 1
ctmx631 comparetotmag -12.1234 -12.0 -> 1
ctmx632 comparetotmag -12.1234 -12.00 -> 1
ctmx633 comparetotmag -12.1234 -12.000 -> 1
ctmx634 comparetotmag -12.1234 -12.0000 -> 1
ctmx635 comparetotmag -12.1234 -12.00000 -> 1
ctmx636 comparetotmag -12.1234 -12.000000 -> 1
ctmx637 comparetotmag -12.1234 -12.0000000 -> 1
ctmx638 comparetotmag -12.1234 -12.00000000 -> 1
ctmx639 comparetotmag -12.1234 -12.000000000 -> 1
precision: 9
-- extended zeros
ctmx640 comparetotmag 0 0 -> 0
ctmx641 comparetotmag 0 -0 -> 0
ctmx642 comparetotmag 0 -0.0 -> 1
ctmx643 comparetotmag 0 0.0 -> 1
ctmx644 comparetotmag -0 0 -> 0
ctmx645 comparetotmag -0 -0 -> 0
ctmx646 comparetotmag -0 -0.0 -> 1
ctmx647 comparetotmag -0 0.0 -> 1
ctmx648 comparetotmag 0.0 0 -> -1
ctmx649 comparetotmag 0.0 -0 -> -1
ctmx650 comparetotmag 0.0 -0.0 -> 0
ctmx651 comparetotmag 0.0 0.0 -> 0
ctmx652 comparetotmag -0.0 0 -> -1
ctmx653 comparetotmag -0.0 -0 -> -1
ctmx654 comparetotmag -0.0 -0.0 -> 0
ctmx655 comparetotmag -0.0 0.0 -> 0
ctmx656 comparetotmag -0E1 0.0 -> 1
ctmx657 comparetotmag -0E2 0.0 -> 1
ctmx658 comparetotmag 0E1 0.0 -> 1
ctmx659 comparetotmag 0E2 0.0 -> 1
ctmx660 comparetotmag -0E1 0 -> 1
ctmx661 comparetotmag -0E2 0 -> 1
ctmx662 comparetotmag 0E1 0 -> 1
ctmx663 comparetotmag 0E2 0 -> 1
ctmx664 comparetotmag -0E1 -0E1 -> 0
ctmx665 comparetotmag -0E2 -0E1 -> 1
ctmx666 comparetotmag 0E1 -0E1 -> 0
ctmx667 comparetotmag 0E2 -0E1 -> 1
ctmx668 comparetotmag -0E1 -0E2 -> -1
ctmx669 comparetotmag -0E2 -0E2 -> 0
ctmx670 comparetotmag 0E1 -0E2 -> -1
ctmx671 comparetotmag 0E2 -0E2 -> 0
ctmx672 comparetotmag -0E1 0E1 -> 0
ctmx673 comparetotmag -0E2 0E1 -> 1
ctmx674 comparetotmag 0E1 0E1 -> 0
ctmx675 comparetotmag 0E2 0E1 -> 1
ctmx676 comparetotmag -0E1 0E2 -> -1
ctmx677 comparetotmag -0E2 0E2 -> 0
ctmx678 comparetotmag 0E1 0E2 -> -1
ctmx679 comparetotmag 0E2 0E2 -> 0
-- trailing zeros; unit-y
precision: 20
ctmx680 comparetotmag 12 12 -> 0
ctmx681 comparetotmag 12 12.0 -> 1
ctmx682 comparetotmag 12 12.00 -> 1
ctmx683 comparetotmag 12 12.000 -> 1
ctmx684 comparetotmag 12 12.0000 -> 1
ctmx685 comparetotmag 12 12.00000 -> 1
ctmx686 comparetotmag 12 12.000000 -> 1
ctmx687 comparetotmag 12 12.0000000 -> 1
ctmx688 comparetotmag 12 12.00000000 -> 1
ctmx689 comparetotmag 12 12.000000000 -> 1
ctmx690 comparetotmag 12 12 -> 0
ctmx691 comparetotmag 12.0 12 -> -1
ctmx692 comparetotmag 12.00 12 -> -1
ctmx693 comparetotmag 12.000 12 -> -1
ctmx694 comparetotmag 12.0000 12 -> -1
ctmx695 comparetotmag 12.00000 12 -> -1
ctmx696 comparetotmag 12.000000 12 -> -1
ctmx697 comparetotmag 12.0000000 12 -> -1
ctmx698 comparetotmag 12.00000000 12 -> -1
ctmx699 comparetotmag 12.000000000 12 -> -1
-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
ctmx701 comparetotmag 12345678000 1 -> 1
ctmx702 comparetotmag 1 12345678000 -> -1
ctmx703 comparetotmag 1234567800 1 -> 1
ctmx704 comparetotmag 1 1234567800 -> -1
ctmx705 comparetotmag 1234567890 1 -> 1
ctmx706 comparetotmag 1 1234567890 -> -1
ctmx707 comparetotmag 1234567891 1 -> 1
ctmx708 comparetotmag 1 1234567891 -> -1
ctmx709 comparetotmag 12345678901 1 -> 1
ctmx710 comparetotmag 1 12345678901 -> -1
ctmx711 comparetotmag 1234567896 1 -> 1
ctmx712 comparetotmag 1 1234567896 -> -1
ctmx713 comparetotmag -1234567891 1 -> 1
ctmx714 comparetotmag 1 -1234567891 -> -1
ctmx715 comparetotmag -12345678901 1 -> 1
ctmx716 comparetotmag 1 -12345678901 -> -1
ctmx717 comparetotmag -1234567896 1 -> 1
ctmx718 comparetotmag 1 -1234567896 -> -1
precision: 15
-- same with plenty of precision
ctmx721 comparetotmag 12345678000 1 -> 1
ctmx722 comparetotmag 1 12345678000 -> -1
ctmx723 comparetotmag 1234567800 1 -> 1
ctmx724 comparetotmag 1 1234567800 -> -1
ctmx725 comparetotmag 1234567890 1 -> 1
ctmx726 comparetotmag 1 1234567890 -> -1
ctmx727 comparetotmag 1234567891 1 -> 1
ctmx728 comparetotmag 1 1234567891 -> -1
ctmx729 comparetotmag 12345678901 1 -> 1
ctmx730 comparetotmag 1 12345678901 -> -1
ctmx731 comparetotmag 1234567896 1 -> 1
ctmx732 comparetotmag 1 1234567896 -> -1
-- residue cases
precision: 5
ctmx740 comparetotmag 1 0.9999999 -> 1
ctmx741 comparetotmag 1 0.999999 -> 1
ctmx742 comparetotmag 1 0.99999 -> 1
ctmx743 comparetotmag 1 1.0000 -> 1
ctmx744 comparetotmag 1 1.00001 -> -1
ctmx745 comparetotmag 1 1.000001 -> -1
ctmx746 comparetotmag 1 1.0000001 -> -1
ctmx750 comparetotmag 0.9999999 1 -> -1
ctmx751 comparetotmag 0.999999 1 -> -1
ctmx752 comparetotmag 0.99999 1 -> -1
ctmx753 comparetotmag 1.0000 1 -> -1
ctmx754 comparetotmag 1.00001 1 -> 1
ctmx755 comparetotmag 1.000001 1 -> 1
ctmx756 comparetotmag 1.0000001 1 -> 1
-- a selection of longies
ctmx760 comparetotmag -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> 1
ctmx761 comparetotmag -36852134.84194296250843579428931 -36852134.84194296250843579428931 -> 0
ctmx762 comparetotmag -36852134.94194296250843579428931 -36852134.84194296250843579428931 -> 1
ctmx763 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
-- precisions above or below the difference should have no effect
precision: 11
ctmx764 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
precision: 10
ctmx765 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
precision: 9
ctmx766 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
precision: 8
ctmx767 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
precision: 7
ctmx768 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
precision: 6
ctmx769 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
precision: 5
ctmx770 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
precision: 4
ctmx771 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
precision: 3
ctmx772 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
precision: 2
ctmx773 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
precision: 1
ctmx774 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> -1
-- Specials
precision: 9
ctmx780 comparetotmag Inf -Inf -> 0
ctmx781 comparetotmag Inf -1000 -> 1
ctmx782 comparetotmag Inf -1 -> 1
ctmx783 comparetotmag Inf -0 -> 1
ctmx784 comparetotmag Inf 0 -> 1
ctmx785 comparetotmag Inf 1 -> 1
ctmx786 comparetotmag Inf 1000 -> 1
ctmx787 comparetotmag Inf Inf -> 0
ctmx788 comparetotmag -1000 Inf -> -1
ctmx789 comparetotmag -Inf Inf -> 0
ctmx790 comparetotmag -1 Inf -> -1
ctmx791 comparetotmag -0 Inf -> -1
ctmx792 comparetotmag 0 Inf -> -1
ctmx793 comparetotmag 1 Inf -> -1
ctmx794 comparetotmag 1000 Inf -> -1
ctmx795 comparetotmag Inf Inf -> 0
ctmx800 comparetotmag -Inf -Inf -> 0
ctmx801 comparetotmag -Inf -1000 -> 1
ctmx802 comparetotmag -Inf -1 -> 1
ctmx803 comparetotmag -Inf -0 -> 1
ctmx804 comparetotmag -Inf 0 -> 1
ctmx805 comparetotmag -Inf 1 -> 1
ctmx806 comparetotmag -Inf 1000 -> 1
ctmx807 comparetotmag -Inf Inf -> 0
ctmx808 comparetotmag -Inf -Inf -> 0
ctmx809 comparetotmag -1000 -Inf -> -1
ctmx810 comparetotmag -1 -Inf -> -1
ctmx811 comparetotmag -0 -Inf -> -1
ctmx812 comparetotmag 0 -Inf -> -1
ctmx813 comparetotmag 1 -Inf -> -1
ctmx814 comparetotmag 1000 -Inf -> -1
ctmx815 comparetotmag Inf -Inf -> 0
ctmx821 comparetotmag NaN -Inf -> 1
ctmx822 comparetotmag NaN -1000 -> 1
ctmx823 comparetotmag NaN -1 -> 1
ctmx824 comparetotmag NaN -0 -> 1
ctmx825 comparetotmag NaN 0 -> 1
ctmx826 comparetotmag NaN 1 -> 1
ctmx827 comparetotmag NaN 1000 -> 1
ctmx828 comparetotmag NaN Inf -> 1
ctmx829 comparetotmag NaN NaN -> 0
ctmx830 comparetotmag -Inf NaN -> -1
ctmx831 comparetotmag -1000 NaN -> -1
ctmx832 comparetotmag -1 NaN -> -1
ctmx833 comparetotmag -0 NaN -> -1
ctmx834 comparetotmag 0 NaN -> -1
ctmx835 comparetotmag 1 NaN -> -1
ctmx836 comparetotmag 1000 NaN -> -1
ctmx837 comparetotmag Inf NaN -> -1
ctmx838 comparetotmag -NaN -NaN -> 0
ctmx839 comparetotmag +NaN -NaN -> 0
ctmx840 comparetotmag -NaN +NaN -> 0
ctmx841 comparetotmag sNaN -sNaN -> 0
ctmx842 comparetotmag sNaN -NaN -> -1
ctmx843 comparetotmag sNaN -Inf -> 1
ctmx844 comparetotmag sNaN -1000 -> 1
ctmx845 comparetotmag sNaN -1 -> 1
ctmx846 comparetotmag sNaN -0 -> 1
ctmx847 comparetotmag sNaN 0 -> 1
ctmx848 comparetotmag sNaN 1 -> 1
ctmx849 comparetotmag sNaN 1000 -> 1
ctmx850 comparetotmag sNaN NaN -> -1
ctmx851 comparetotmag sNaN sNaN -> 0
ctmx852 comparetotmag -sNaN sNaN -> 0
ctmx853 comparetotmag -NaN sNaN -> 1
ctmx854 comparetotmag -Inf sNaN -> -1
ctmx855 comparetotmag -1000 sNaN -> -1
ctmx856 comparetotmag -1 sNaN -> -1
ctmx857 comparetotmag -0 sNaN -> -1
ctmx858 comparetotmag 0 sNaN -> -1
ctmx859 comparetotmag 1 sNaN -> -1
ctmx860 comparetotmag 1000 sNaN -> -1
ctmx861 comparetotmag Inf sNaN -> -1
ctmx862 comparetotmag NaN sNaN -> 1
ctmx863 comparetotmag sNaN sNaN -> 0
ctmx871 comparetotmag -sNaN -sNaN -> 0
ctmx872 comparetotmag -sNaN -NaN -> -1
ctmx873 comparetotmag -sNaN -Inf -> 1
ctmx874 comparetotmag -sNaN -1000 -> 1
ctmx875 comparetotmag -sNaN -1 -> 1
ctmx876 comparetotmag -sNaN -0 -> 1
ctmx877 comparetotmag -sNaN 0 -> 1
ctmx878 comparetotmag -sNaN 1 -> 1
ctmx879 comparetotmag -sNaN 1000 -> 1
ctmx880 comparetotmag -sNaN NaN -> -1
ctmx881 comparetotmag -sNaN sNaN -> 0
ctmx882 comparetotmag -sNaN -sNaN -> 0
ctmx883 comparetotmag -NaN -sNaN -> 1
ctmx884 comparetotmag -Inf -sNaN -> -1
ctmx885 comparetotmag -1000 -sNaN -> -1
ctmx886 comparetotmag -1 -sNaN -> -1
ctmx887 comparetotmag -0 -sNaN -> -1
ctmx888 comparetotmag 0 -sNaN -> -1
ctmx889 comparetotmag 1 -sNaN -> -1
ctmx890 comparetotmag 1000 -sNaN -> -1
ctmx891 comparetotmag Inf -sNaN -> -1
ctmx892 comparetotmag NaN -sNaN -> 1
ctmx893 comparetotmag sNaN -sNaN -> 0
-- NaNs with payload
ctmx960 comparetotmag NaN9 -Inf -> 1
ctmx961 comparetotmag NaN8 999 -> 1
ctmx962 comparetotmag NaN77 Inf -> 1
ctmx963 comparetotmag -NaN67 NaN5 -> 1
ctmx964 comparetotmag -Inf -NaN4 -> -1
ctmx965 comparetotmag -999 -NaN33 -> -1
ctmx966 comparetotmag Inf NaN2 -> -1
ctmx970 comparetotmag -NaN41 -NaN42 -> -1
ctmx971 comparetotmag +NaN41 -NaN42 -> -1
ctmx972 comparetotmag -NaN41 +NaN42 -> -1
ctmx973 comparetotmag +NaN41 +NaN42 -> -1
ctmx974 comparetotmag -NaN42 -NaN01 -> 1
ctmx975 comparetotmag +NaN42 -NaN01 -> 1
ctmx976 comparetotmag -NaN42 +NaN01 -> 1
ctmx977 comparetotmag +NaN42 +NaN01 -> 1
ctmx980 comparetotmag -sNaN771 -sNaN772 -> -1
ctmx981 comparetotmag +sNaN771 -sNaN772 -> -1
ctmx982 comparetotmag -sNaN771 +sNaN772 -> -1
ctmx983 comparetotmag +sNaN771 +sNaN772 -> -1
ctmx984 comparetotmag -sNaN772 -sNaN771 -> 1
ctmx985 comparetotmag +sNaN772 -sNaN771 -> 1
ctmx986 comparetotmag -sNaN772 +sNaN771 -> 1
ctmx987 comparetotmag +sNaN772 +sNaN771 -> 1
ctmx991 comparetotmag -sNaN99 -Inf -> 1
ctmx992 comparetotmag sNaN98 -11 -> 1
ctmx993 comparetotmag sNaN97 NaN -> -1
ctmx994 comparetotmag sNaN16 sNaN94 -> -1
ctmx995 comparetotmag NaN85 sNaN83 -> 1
ctmx996 comparetotmag -Inf sNaN92 -> -1
ctmx997 comparetotmag 088 sNaN81 -> -1
ctmx998 comparetotmag Inf sNaN90 -> -1
ctmx999 comparetotmag NaN -sNaN89 -> 1
-- overflow and underflow tests .. subnormal results now allowed
maxExponent: 999999999
minexponent: -999999999
ctmx1080 comparetotmag +1.23456789012345E-0 9E+999999999 -> -1
ctmx1081 comparetotmag 9E+999999999 +1.23456789012345E-0 -> 1
ctmx1082 comparetotmag +0.100 9E-999999999 -> 1
ctmx1083 comparetotmag 9E-999999999 +0.100 -> -1
ctmx1085 comparetotmag -1.23456789012345E-0 9E+999999999 -> -1
ctmx1086 comparetotmag 9E+999999999 -1.23456789012345E-0 -> 1
ctmx1087 comparetotmag -0.100 9E-999999999 -> 1
ctmx1088 comparetotmag 9E-999999999 -0.100 -> -1
ctmx1089 comparetotmag 1e-599999999 1e-400000001 -> -1
ctmx1090 comparetotmag 1e-599999999 1e-400000000 -> -1
ctmx1091 comparetotmag 1e-600000000 1e-400000000 -> -1
ctmx1092 comparetotmag 9e-999999998 0.01 -> -1
ctmx1093 comparetotmag 9e-999999998 0.1 -> -1
ctmx1094 comparetotmag 0.01 9e-999999998 -> 1
ctmx1095 comparetotmag 1e599999999 1e400000001 -> 1
ctmx1096 comparetotmag 1e599999999 1e400000000 -> 1
ctmx1097 comparetotmag 1e600000000 1e400000000 -> 1
ctmx1098 comparetotmag 9e999999998 100 -> 1
ctmx1099 comparetotmag 9e999999998 10 -> 1
ctmx1100 comparetotmag 100 9e999999998 -> -1
-- signs
ctmx1101 comparetotmag 1e+777777777 1e+411111111 -> 1
ctmx1102 comparetotmag 1e+777777777 -1e+411111111 -> 1
ctmx1103 comparetotmag -1e+777777777 1e+411111111 -> 1
ctmx1104 comparetotmag -1e+777777777 -1e+411111111 -> 1
ctmx1105 comparetotmag 1e-777777777 1e-411111111 -> -1
ctmx1106 comparetotmag 1e-777777777 -1e-411111111 -> -1
ctmx1107 comparetotmag -1e-777777777 1e-411111111 -> -1
ctmx1108 comparetotmag -1e-777777777 -1e-411111111 -> -1
-- spread zeros
ctmx1110 comparetotmag 0E-383 0 -> -1
ctmx1111 comparetotmag 0E-383 -0 -> -1
ctmx1112 comparetotmag -0E-383 0 -> -1
ctmx1113 comparetotmag -0E-383 -0 -> -1
ctmx1114 comparetotmag 0E-383 0E+384 -> -1
ctmx1115 comparetotmag 0E-383 -0E+384 -> -1
ctmx1116 comparetotmag -0E-383 0E+384 -> -1
ctmx1117 comparetotmag -0E-383 -0E+384 -> -1
ctmx1118 comparetotmag 0 0E+384 -> -1
ctmx1119 comparetotmag 0 -0E+384 -> -1
ctmx1120 comparetotmag -0 0E+384 -> -1
ctmx1121 comparetotmag -0 -0E+384 -> -1
ctmx1130 comparetotmag 0E+384 0 -> 1
ctmx1131 comparetotmag 0E+384 -0 -> 1
ctmx1132 comparetotmag -0E+384 0 -> 1
ctmx1133 comparetotmag -0E+384 -0 -> 1
ctmx1134 comparetotmag 0E+384 0E-383 -> 1
ctmx1135 comparetotmag 0E+384 -0E-383 -> 1
ctmx1136 comparetotmag -0E+384 0E-383 -> 1
ctmx1137 comparetotmag -0E+384 -0E-383 -> 1
ctmx1138 comparetotmag 0 0E-383 -> 1
ctmx1139 comparetotmag 0 -0E-383 -> 1
ctmx1140 comparetotmag -0 0E-383 -> 1
ctmx1141 comparetotmag -0 -0E-383 -> 1
-- Null tests
ctmx9990 comparetotmag 10 # -> NaN Invalid_operation
ctmx9991 comparetotmag # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,86 @@
------------------------------------------------------------------------
-- copy.decTest -- quiet copy --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minExponent: -999
-- Sanity check
cpyx001 copy +7.50 -> 7.50
-- Infinities
cpyx011 copy Infinity -> Infinity
cpyx012 copy -Infinity -> -Infinity
-- NaNs, 0 payload
cpyx021 copy NaN -> NaN
cpyx022 copy -NaN -> -NaN
cpyx023 copy sNaN -> sNaN
cpyx024 copy -sNaN -> -sNaN
-- NaNs, non-0 payload
cpyx031 copy NaN10 -> NaN10
cpyx032 copy -NaN10 -> -NaN10
cpyx033 copy sNaN10 -> sNaN10
cpyx034 copy -sNaN10 -> -sNaN10
cpyx035 copy NaN7 -> NaN7
cpyx036 copy -NaN7 -> -NaN7
cpyx037 copy sNaN101 -> sNaN101
cpyx038 copy -sNaN101 -> -sNaN101
-- finites
cpyx101 copy 7 -> 7
cpyx102 copy -7 -> -7
cpyx103 copy 75 -> 75
cpyx104 copy -75 -> -75
cpyx105 copy 7.50 -> 7.50
cpyx106 copy -7.50 -> -7.50
cpyx107 copy 7.500 -> 7.500
cpyx108 copy -7.500 -> -7.500
-- zeros
cpyx111 copy 0 -> 0
cpyx112 copy -0 -> -0
cpyx113 copy 0E+4 -> 0E+4
cpyx114 copy -0E+4 -> -0E+4
cpyx115 copy 0.0000 -> 0.0000
cpyx116 copy -0.0000 -> -0.0000
cpyx117 copy 0E-141 -> 0E-141
cpyx118 copy -0E-141 -> -0E-141
-- full coefficients, alternating bits
cpyx121 copy 268268268 -> 268268268
cpyx122 copy -268268268 -> -268268268
cpyx123 copy 134134134 -> 134134134
cpyx124 copy -134134134 -> -134134134
-- Nmax, Nmin, Ntiny
cpyx131 copy 9.99999999E+999 -> 9.99999999E+999
cpyx132 copy 1E-999 -> 1E-999
cpyx133 copy 1.00000000E-999 -> 1.00000000E-999
cpyx134 copy 1E-1007 -> 1E-1007
cpyx135 copy -1E-1007 -> -1E-1007
cpyx136 copy -1.00000000E-999 -> -1.00000000E-999
cpyx137 copy -1E-999 -> -1E-999
cpyx138 copy -9.99999999E+999 -> -9.99999999E+999

View file

@ -0,0 +1,86 @@
------------------------------------------------------------------------
-- copyAbs.decTest -- quiet copy and set sign to zero --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minExponent: -999
-- Sanity check
cpax001 copyabs +7.50 -> 7.50
-- Infinities
cpax011 copyabs Infinity -> Infinity
cpax012 copyabs -Infinity -> Infinity
-- NaNs, 0 payload
cpax021 copyabs NaN -> NaN
cpax022 copyabs -NaN -> NaN
cpax023 copyabs sNaN -> sNaN
cpax024 copyabs -sNaN -> sNaN
-- NaNs, non-0 payload
cpax031 copyabs NaN10 -> NaN10
cpax032 copyabs -NaN15 -> NaN15
cpax033 copyabs sNaN15 -> sNaN15
cpax034 copyabs -sNaN10 -> sNaN10
cpax035 copyabs NaN7 -> NaN7
cpax036 copyabs -NaN7 -> NaN7
cpax037 copyabs sNaN101 -> sNaN101
cpax038 copyabs -sNaN101 -> sNaN101
-- finites
cpax101 copyabs 7 -> 7
cpax102 copyabs -7 -> 7
cpax103 copyabs 75 -> 75
cpax104 copyabs -75 -> 75
cpax105 copyabs 7.10 -> 7.10
cpax106 copyabs -7.10 -> 7.10
cpax107 copyabs 7.500 -> 7.500
cpax108 copyabs -7.500 -> 7.500
-- zeros
cpax111 copyabs 0 -> 0
cpax112 copyabs -0 -> 0
cpax113 copyabs 0E+6 -> 0E+6
cpax114 copyabs -0E+6 -> 0E+6
cpax115 copyabs 0.0000 -> 0.0000
cpax116 copyabs -0.0000 -> 0.0000
cpax117 copyabs 0E-141 -> 0E-141
cpax118 copyabs -0E-141 -> 0E-141
-- full coefficients, alternating bits
cpax121 copyabs 268268268 -> 268268268
cpax122 copyabs -268268268 -> 268268268
cpax123 copyabs 134134134 -> 134134134
cpax124 copyabs -134134134 -> 134134134
-- Nmax, Nmin, Ntiny
cpax131 copyabs 9.99999999E+999 -> 9.99999999E+999
cpax132 copyabs 1E-999 -> 1E-999
cpax133 copyabs 1.00000000E-999 -> 1.00000000E-999
cpax134 copyabs 1E-1007 -> 1E-1007
cpax135 copyabs -1E-1007 -> 1E-1007
cpax136 copyabs -1.00000000E-999 -> 1.00000000E-999
cpax137 copyabs -1E-999 -> 1E-999
cpax199 copyabs -9.99999999E+999 -> 9.99999999E+999

View file

@ -0,0 +1,86 @@
------------------------------------------------------------------------
-- copyNegate.decTest -- quiet copy and negate --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minExponent: -999
-- Sanity check
cpnx001 copynegate +7.50 -> -7.50
-- Infinities
cpnx011 copynegate Infinity -> -Infinity
cpnx012 copynegate -Infinity -> Infinity
-- NaNs, 0 payload
cpnx021 copynegate NaN -> -NaN
cpnx022 copynegate -NaN -> NaN
cpnx023 copynegate sNaN -> -sNaN
cpnx024 copynegate -sNaN -> sNaN
-- NaNs, non-0 payload
cpnx031 copynegate NaN13 -> -NaN13
cpnx032 copynegate -NaN13 -> NaN13
cpnx033 copynegate sNaN13 -> -sNaN13
cpnx034 copynegate -sNaN13 -> sNaN13
cpnx035 copynegate NaN70 -> -NaN70
cpnx036 copynegate -NaN70 -> NaN70
cpnx037 copynegate sNaN101 -> -sNaN101
cpnx038 copynegate -sNaN101 -> sNaN101
-- finites
cpnx101 copynegate 7 -> -7
cpnx102 copynegate -7 -> 7
cpnx103 copynegate 75 -> -75
cpnx104 copynegate -75 -> 75
cpnx105 copynegate 7.50 -> -7.50
cpnx106 copynegate -7.50 -> 7.50
cpnx107 copynegate 7.500 -> -7.500
cpnx108 copynegate -7.500 -> 7.500
-- zeros
cpnx111 copynegate 0 -> -0
cpnx112 copynegate -0 -> 0
cpnx113 copynegate 0E+4 -> -0E+4
cpnx114 copynegate -0E+4 -> 0E+4
cpnx115 copynegate 0.0000 -> -0.0000
cpnx116 copynegate -0.0000 -> 0.0000
cpnx117 copynegate 0E-141 -> -0E-141
cpnx118 copynegate -0E-141 -> 0E-141
-- full coefficients, alternating bits
cpnx121 copynegate 268268268 -> -268268268
cpnx122 copynegate -268268268 -> 268268268
cpnx123 copynegate 134134134 -> -134134134
cpnx124 copynegate -134134134 -> 134134134
-- Nmax, Nmin, Ntiny
cpnx131 copynegate 9.99999999E+999 -> -9.99999999E+999
cpnx132 copynegate 1E-999 -> -1E-999
cpnx133 copynegate 1.00000000E-999 -> -1.00000000E-999
cpnx134 copynegate 1E-1007 -> -1E-1007
cpnx135 copynegate -1E-1007 -> 1E-1007
cpnx136 copynegate -1.00000000E-999 -> 1.00000000E-999
cpnx137 copynegate -1E-999 -> 1E-999
cpnx138 copynegate -9.99999999E+999 -> 9.99999999E+999

View file

@ -0,0 +1,177 @@
------------------------------------------------------------------------
-- copysign.decTest -- quiet copy with sign from rhs --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minExponent: -999
-- Sanity check, and examples from decArith
cpsx001 copysign +7.50 11 -> 7.50
cpsx002 copysign '1.50' '7.33' -> 1.50
cpsx003 copysign '-1.50' '7.33' -> 1.50
cpsx004 copysign '1.50' '-7.33' -> -1.50
cpsx005 copysign '-1.50' '-7.33' -> -1.50
-- Infinities
cpsx011 copysign Infinity 11 -> Infinity
cpsx012 copysign -Infinity 11 -> Infinity
-- NaNs, 0 payload
cpsx021 copysign NaN 11 -> NaN
cpsx022 copysign -NaN 11 -> NaN
cpsx023 copysign sNaN 11 -> sNaN
cpsx024 copysign -sNaN 11 -> sNaN
-- NaNs, non-0 payload
cpsx031 copysign NaN10 11 -> NaN10
cpsx032 copysign -NaN10 11 -> NaN10
cpsx033 copysign sNaN10 11 -> sNaN10
cpsx034 copysign -sNaN10 11 -> sNaN10
cpsx035 copysign NaN7 11 -> NaN7
cpsx036 copysign -NaN7 11 -> NaN7
cpsx037 copysign sNaN101 11 -> sNaN101
cpsx038 copysign -sNaN101 11 -> sNaN101
-- finites
cpsx101 copysign 7 11 -> 7
cpsx102 copysign -7 11 -> 7
cpsx103 copysign 75 11 -> 75
cpsx104 copysign -75 11 -> 75
cpsx105 copysign 7.50 11 -> 7.50
cpsx106 copysign -7.50 11 -> 7.50
cpsx107 copysign 7.500 11 -> 7.500
cpsx108 copysign -7.500 11 -> 7.500
-- zeros
cpsx111 copysign 0 11 -> 0
cpsx112 copysign -0 11 -> 0
cpsx113 copysign 0E+4 11 -> 0E+4
cpsx114 copysign -0E+4 11 -> 0E+4
cpsx115 copysign 0.0000 11 -> 0.0000
cpsx116 copysign -0.0000 11 -> 0.0000
cpsx117 copysign 0E-141 11 -> 0E-141
cpsx118 copysign -0E-141 11 -> 0E-141
-- full coefficients, alternating bits
cpsx121 copysign 268268268 11 -> 268268268
cpsx122 copysign -268268268 11 -> 268268268
cpsx123 copysign 134134134 11 -> 134134134
cpsx124 copysign -134134134 11 -> 134134134
-- Nmax, Nmin, Ntiny
cpsx131 copysign 9.99999999E+999 11 -> 9.99999999E+999
cpsx132 copysign 1E-999 11 -> 1E-999
cpsx133 copysign 1.00000000E-999 11 -> 1.00000000E-999
cpsx134 copysign 1E-1007 11 -> 1E-1007
cpsx135 copysign -1E-1007 11 -> 1E-1007
cpsx136 copysign -1.00000000E-999 11 -> 1.00000000E-999
cpsx137 copysign -1E-999 11 -> 1E-999
cpsx138 copysign -9.99999999E+999 11 -> 9.99999999E+999
-- repeat with negative RHS
-- Infinities
cpsx211 copysign Infinity -34 -> -Infinity
cpsx212 copysign -Infinity -34 -> -Infinity
-- NaNs, 0 payload
cpsx221 copysign NaN -34 -> -NaN
cpsx222 copysign -NaN -34 -> -NaN
cpsx223 copysign sNaN -34 -> -sNaN
cpsx224 copysign -sNaN -34 -> -sNaN
-- NaNs, non-0 payload
cpsx231 copysign NaN10 -34 -> -NaN10
cpsx232 copysign -NaN10 -34 -> -NaN10
cpsx233 copysign sNaN10 -34 -> -sNaN10
cpsx234 copysign -sNaN10 -34 -> -sNaN10
cpsx235 copysign NaN7 -34 -> -NaN7
cpsx236 copysign -NaN7 -34 -> -NaN7
cpsx237 copysign sNaN101 -34 -> -sNaN101
cpsx238 copysign -sNaN101 -34 -> -sNaN101
-- finites
cpsx301 copysign 7 -34 -> -7
cpsx302 copysign -7 -34 -> -7
cpsx303 copysign 75 -34 -> -75
cpsx304 copysign -75 -34 -> -75
cpsx305 copysign 7.50 -34 -> -7.50
cpsx306 copysign -7.50 -34 -> -7.50
cpsx307 copysign 7.500 -34 -> -7.500
cpsx308 copysign -7.500 -34 -> -7.500
-- zeros
cpsx311 copysign 0 -34 -> -0
cpsx312 copysign -0 -34 -> -0
cpsx313 copysign 0E+4 -34 -> -0E+4
cpsx314 copysign -0E+4 -34 -> -0E+4
cpsx315 copysign 0.0000 -34 -> -0.0000
cpsx316 copysign -0.0000 -34 -> -0.0000
cpsx317 copysign 0E-141 -34 -> -0E-141
cpsx318 copysign -0E-141 -34 -> -0E-141
-- full coefficients, alternating bits
cpsx321 copysign 268268268 -18 -> -268268268
cpsx322 copysign -268268268 -18 -> -268268268
cpsx323 copysign 134134134 -18 -> -134134134
cpsx324 copysign -134134134 -18 -> -134134134
-- Nmax, Nmin, Ntiny
cpsx331 copysign 9.99999999E+999 -18 -> -9.99999999E+999
cpsx332 copysign 1E-999 -18 -> -1E-999
cpsx333 copysign 1.00000000E-999 -18 -> -1.00000000E-999
cpsx334 copysign 1E-1007 -18 -> -1E-1007
cpsx335 copysign -1E-1007 -18 -> -1E-1007
cpsx336 copysign -1.00000000E-999 -18 -> -1.00000000E-999
cpsx337 copysign -1E-999 -18 -> -1E-999
cpsx338 copysign -9.99999999E+999 -18 -> -9.99999999E+999
-- Other kinds of RHS
cpsx401 copysign 701 -34 -> -701
cpsx402 copysign -720 -34 -> -720
cpsx403 copysign 701 -0 -> -701
cpsx404 copysign -720 -0 -> -720
cpsx405 copysign 701 +0 -> 701
cpsx406 copysign -720 +0 -> 720
cpsx407 copysign 701 +34 -> 701
cpsx408 copysign -720 +34 -> 720
cpsx413 copysign 701 -Inf -> -701
cpsx414 copysign -720 -Inf -> -720
cpsx415 copysign 701 +Inf -> 701
cpsx416 copysign -720 +Inf -> 720
cpsx420 copysign 701 -NaN -> -701
cpsx421 copysign -720 -NaN -> -720
cpsx422 copysign 701 +NaN -> 701
cpsx423 copysign -720 +NaN -> 720
cpsx425 copysign -720 +NaN8 -> 720
cpsx426 copysign 701 -sNaN -> -701
cpsx427 copysign -720 -sNaN -> -720
cpsx428 copysign 701 +sNaN -> 701
cpsx429 copysign -720 +sNaN -> 720
cpsx430 copysign -720 +sNaN3 -> 720

View file

@ -0,0 +1,126 @@
------------------------------------------------------------------------
-- ddAbs.decTest -- decDouble absolute value, heeding sNaN --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
ddabs001 abs '1' -> '1'
ddabs002 abs '-1' -> '1'
ddabs003 abs '1.00' -> '1.00'
ddabs004 abs '-1.00' -> '1.00'
ddabs005 abs '0' -> '0'
ddabs006 abs '0.00' -> '0.00'
ddabs007 abs '00.0' -> '0.0'
ddabs008 abs '00.00' -> '0.00'
ddabs009 abs '00' -> '0'
ddabs010 abs '-2' -> '2'
ddabs011 abs '2' -> '2'
ddabs012 abs '-2.00' -> '2.00'
ddabs013 abs '2.00' -> '2.00'
ddabs014 abs '-0' -> '0'
ddabs015 abs '-0.00' -> '0.00'
ddabs016 abs '-00.0' -> '0.0'
ddabs017 abs '-00.00' -> '0.00'
ddabs018 abs '-00' -> '0'
ddabs020 abs '-2000000' -> '2000000'
ddabs021 abs '2000000' -> '2000000'
ddabs030 abs '+0.1' -> '0.1'
ddabs031 abs '-0.1' -> '0.1'
ddabs032 abs '+0.01' -> '0.01'
ddabs033 abs '-0.01' -> '0.01'
ddabs034 abs '+0.001' -> '0.001'
ddabs035 abs '-0.001' -> '0.001'
ddabs036 abs '+0.000001' -> '0.000001'
ddabs037 abs '-0.000001' -> '0.000001'
ddabs038 abs '+0.000000000001' -> '1E-12'
ddabs039 abs '-0.000000000001' -> '1E-12'
-- examples from decArith
ddabs040 abs '2.1' -> '2.1'
ddabs041 abs '-100' -> '100'
ddabs042 abs '101.5' -> '101.5'
ddabs043 abs '-101.5' -> '101.5'
-- more fixed, potential LHS swaps/overlays if done by subtract 0
ddabs060 abs '-56267E-10' -> '0.0000056267'
ddabs061 abs '-56267E-5' -> '0.56267'
ddabs062 abs '-56267E-2' -> '562.67'
ddabs063 abs '-56267E-1' -> '5626.7'
ddabs065 abs '-56267E-0' -> '56267'
-- subnormals and underflow
-- long operand tests
ddabs321 abs 1234567890123456 -> 1234567890123456
ddabs322 abs 12345678000 -> 12345678000
ddabs323 abs 1234567800 -> 1234567800
ddabs324 abs 1234567890 -> 1234567890
ddabs325 abs 1234567891 -> 1234567891
ddabs326 abs 12345678901 -> 12345678901
ddabs327 abs 1234567896 -> 1234567896
-- zeros
ddabs111 abs 0 -> 0
ddabs112 abs -0 -> 0
ddabs113 abs 0E+6 -> 0E+6
ddabs114 abs -0E+6 -> 0E+6
ddabs115 abs 0.0000 -> 0.0000
ddabs116 abs -0.0000 -> 0.0000
ddabs117 abs 0E-141 -> 0E-141
ddabs118 abs -0E-141 -> 0E-141
-- full coefficients, alternating bits
ddabs121 abs 2682682682682682 -> 2682682682682682
ddabs122 abs -2682682682682682 -> 2682682682682682
ddabs123 abs 1341341341341341 -> 1341341341341341
ddabs124 abs -1341341341341341 -> 1341341341341341
-- Nmax, Nmin, Ntiny
ddabs131 abs 9.999999999999999E+384 -> 9.999999999999999E+384
ddabs132 abs 1E-383 -> 1E-383
ddabs133 abs 1.000000000000000E-383 -> 1.000000000000000E-383
ddabs134 abs 1E-398 -> 1E-398 Subnormal
ddabs135 abs -1E-398 -> 1E-398 Subnormal
ddabs136 abs -1.000000000000000E-383 -> 1.000000000000000E-383
ddabs137 abs -1E-383 -> 1E-383
ddabs138 abs -9.999999999999999E+384 -> 9.999999999999999E+384
-- specials
ddabs520 abs 'Inf' -> 'Infinity'
ddabs521 abs '-Inf' -> 'Infinity'
ddabs522 abs NaN -> NaN
ddabs523 abs sNaN -> NaN Invalid_operation
ddabs524 abs NaN22 -> NaN22
ddabs525 abs sNaN33 -> NaN33 Invalid_operation
ddabs526 abs -NaN22 -> -NaN22
ddabs527 abs -sNaN33 -> -NaN33 Invalid_operation
-- Null tests
ddabs900 abs # -> NaN Invalid_operation

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,347 @@
------------------------------------------------------------------------
-- ddAnd.decTest -- digitwise logical AND for decDoubles --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check (truth table)
ddand001 and 0 0 -> 0
ddand002 and 0 1 -> 0
ddand003 and 1 0 -> 0
ddand004 and 1 1 -> 1
ddand005 and 1100 1010 -> 1000
-- and at msd and msd-1
-- 1234567890123456 1234567890123456 1234567890123456
ddand006 and 0000000000000000 0000000000000000 -> 0
ddand007 and 0000000000000000 1000000000000000 -> 0
ddand008 and 1000000000000000 0000000000000000 -> 0
ddand009 and 1000000000000000 1000000000000000 -> 1000000000000000
ddand010 and 0000000000000000 0000000000000000 -> 0
ddand011 and 0000000000000000 0100000000000000 -> 0
ddand012 and 0100000000000000 0000000000000000 -> 0
ddand013 and 0100000000000000 0100000000000000 -> 100000000000000
-- Various lengths
-- 1234567890123456 1234567890123456 1234567890123456
ddand021 and 1111111111111111 1111111111111111 -> 1111111111111111
ddand024 and 1111111111111111 111111111111111 -> 111111111111111
ddand025 and 1111111111111111 11111111111111 -> 11111111111111
ddand026 and 1111111111111111 1111111111111 -> 1111111111111
ddand027 and 1111111111111111 111111111111 -> 111111111111
ddand028 and 1111111111111111 11111111111 -> 11111111111
ddand029 and 1111111111111111 1111111111 -> 1111111111
ddand030 and 1111111111111111 111111111 -> 111111111
ddand031 and 1111111111111111 11111111 -> 11111111
ddand032 and 1111111111111111 1111111 -> 1111111
ddand033 and 1111111111111111 111111 -> 111111
ddand034 and 1111111111111111 11111 -> 11111
ddand035 and 1111111111111111 1111 -> 1111
ddand036 and 1111111111111111 111 -> 111
ddand037 and 1111111111111111 11 -> 11
ddand038 and 1111111111111111 1 -> 1
ddand039 and 1111111111111111 0 -> 0
ddand040 and 1111111111111111 1111111111111111 -> 1111111111111111
ddand041 and 111111111111111 1111111111111111 -> 111111111111111
ddand042 and 111111111111111 1111111111111111 -> 111111111111111
ddand043 and 11111111111111 1111111111111111 -> 11111111111111
ddand044 and 1111111111111 1111111111111111 -> 1111111111111
ddand045 and 111111111111 1111111111111111 -> 111111111111
ddand046 and 11111111111 1111111111111111 -> 11111111111
ddand047 and 1111111111 1111111111111111 -> 1111111111
ddand048 and 111111111 1111111111111111 -> 111111111
ddand049 and 11111111 1111111111111111 -> 11111111
ddand050 and 1111111 1111111111111111 -> 1111111
ddand051 and 111111 1111111111111111 -> 111111
ddand052 and 11111 1111111111111111 -> 11111
ddand053 and 1111 1111111111111111 -> 1111
ddand054 and 111 1111111111111111 -> 111
ddand055 and 11 1111111111111111 -> 11
ddand056 and 1 1111111111111111 -> 1
ddand057 and 0 1111111111111111 -> 0
ddand150 and 1111111111 1 -> 1
ddand151 and 111111111 1 -> 1
ddand152 and 11111111 1 -> 1
ddand153 and 1111111 1 -> 1
ddand154 and 111111 1 -> 1
ddand155 and 11111 1 -> 1
ddand156 and 1111 1 -> 1
ddand157 and 111 1 -> 1
ddand158 and 11 1 -> 1
ddand159 and 1 1 -> 1
ddand160 and 1111111111 0 -> 0
ddand161 and 111111111 0 -> 0
ddand162 and 11111111 0 -> 0
ddand163 and 1111111 0 -> 0
ddand164 and 111111 0 -> 0
ddand165 and 11111 0 -> 0
ddand166 and 1111 0 -> 0
ddand167 and 111 0 -> 0
ddand168 and 11 0 -> 0
ddand169 and 1 0 -> 0
ddand170 and 1 1111111111 -> 1
ddand171 and 1 111111111 -> 1
ddand172 and 1 11111111 -> 1
ddand173 and 1 1111111 -> 1
ddand174 and 1 111111 -> 1
ddand175 and 1 11111 -> 1
ddand176 and 1 1111 -> 1
ddand177 and 1 111 -> 1
ddand178 and 1 11 -> 1
ddand179 and 1 1 -> 1
ddand180 and 0 1111111111 -> 0
ddand181 and 0 111111111 -> 0
ddand182 and 0 11111111 -> 0
ddand183 and 0 1111111 -> 0
ddand184 and 0 111111 -> 0
ddand185 and 0 11111 -> 0
ddand186 and 0 1111 -> 0
ddand187 and 0 111 -> 0
ddand188 and 0 11 -> 0
ddand189 and 0 1 -> 0
ddand090 and 011111111 111111111 -> 11111111
ddand091 and 101111111 111111111 -> 101111111
ddand092 and 110111111 111111111 -> 110111111
ddand093 and 111011111 111111111 -> 111011111
ddand094 and 111101111 111111111 -> 111101111
ddand095 and 111110111 111111111 -> 111110111
ddand096 and 111111011 111111111 -> 111111011
ddand097 and 111111101 111111111 -> 111111101
ddand098 and 111111110 111111111 -> 111111110
ddand100 and 111111111 011111111 -> 11111111
ddand101 and 111111111 101111111 -> 101111111
ddand102 and 111111111 110111111 -> 110111111
ddand103 and 111111111 111011111 -> 111011111
ddand104 and 111111111 111101111 -> 111101111
ddand105 and 111111111 111110111 -> 111110111
ddand106 and 111111111 111111011 -> 111111011
ddand107 and 111111111 111111101 -> 111111101
ddand108 and 111111111 111111110 -> 111111110
-- non-0/1 should not be accepted, nor should signs
ddand220 and 111111112 111111111 -> NaN Invalid_operation
ddand221 and 333333333 333333333 -> NaN Invalid_operation
ddand222 and 555555555 555555555 -> NaN Invalid_operation
ddand223 and 777777777 777777777 -> NaN Invalid_operation
ddand224 and 999999999 999999999 -> NaN Invalid_operation
ddand225 and 222222222 999999999 -> NaN Invalid_operation
ddand226 and 444444444 999999999 -> NaN Invalid_operation
ddand227 and 666666666 999999999 -> NaN Invalid_operation
ddand228 and 888888888 999999999 -> NaN Invalid_operation
ddand229 and 999999999 222222222 -> NaN Invalid_operation
ddand230 and 999999999 444444444 -> NaN Invalid_operation
ddand231 and 999999999 666666666 -> NaN Invalid_operation
ddand232 and 999999999 888888888 -> NaN Invalid_operation
-- a few randoms
ddand240 and 567468689 -934981942 -> NaN Invalid_operation
ddand241 and 567367689 934981942 -> NaN Invalid_operation
ddand242 and -631917772 -706014634 -> NaN Invalid_operation
ddand243 and -756253257 138579234 -> NaN Invalid_operation
ddand244 and 835590149 567435400 -> NaN Invalid_operation
-- test MSD
ddand250 and 2000000000000000 1000000000000000 -> NaN Invalid_operation
ddand251 and 7000000000000000 1000000000000000 -> NaN Invalid_operation
ddand252 and 8000000000000000 1000000000000000 -> NaN Invalid_operation
ddand253 and 9000000000000000 1000000000000000 -> NaN Invalid_operation
ddand254 and 2000000000000000 0000000000000000 -> NaN Invalid_operation
ddand255 and 7000000000000000 0000000000000000 -> NaN Invalid_operation
ddand256 and 8000000000000000 0000000000000000 -> NaN Invalid_operation
ddand257 and 9000000000000000 0000000000000000 -> NaN Invalid_operation
ddand258 and 1000000000000000 2000000000000000 -> NaN Invalid_operation
ddand259 and 1000000000000000 7000000000000000 -> NaN Invalid_operation
ddand260 and 1000000000000000 8000000000000000 -> NaN Invalid_operation
ddand261 and 1000000000000000 9000000000000000 -> NaN Invalid_operation
ddand262 and 0000000000000000 2000000000000000 -> NaN Invalid_operation
ddand263 and 0000000000000000 7000000000000000 -> NaN Invalid_operation
ddand264 and 0000000000000000 8000000000000000 -> NaN Invalid_operation
ddand265 and 0000000000000000 9000000000000000 -> NaN Invalid_operation
-- test MSD-1
ddand270 and 0200001000000000 1000100000000010 -> NaN Invalid_operation
ddand271 and 0700000100000000 1000010000000100 -> NaN Invalid_operation
ddand272 and 0800000010000000 1000001000001000 -> NaN Invalid_operation
ddand273 and 0900000001000000 1000000100010000 -> NaN Invalid_operation
ddand274 and 1000000000100000 0200000010100000 -> NaN Invalid_operation
ddand275 and 1000000000010000 0700000001000000 -> NaN Invalid_operation
ddand276 and 1000000000001000 0800000010100000 -> NaN Invalid_operation
ddand277 and 1000000000000100 0900000000010000 -> NaN Invalid_operation
-- test LSD
ddand280 and 0010000000000002 1000000100000001 -> NaN Invalid_operation
ddand281 and 0001000000000007 1000001000000011 -> NaN Invalid_operation
ddand282 and 0000100000000008 1000010000000001 -> NaN Invalid_operation
ddand283 and 0000010000000009 1000100000000001 -> NaN Invalid_operation
ddand284 and 1000001000000000 0001000000000002 -> NaN Invalid_operation
ddand285 and 1000000100000000 0010000000000007 -> NaN Invalid_operation
ddand286 and 1000000010000000 0100000000000008 -> NaN Invalid_operation
ddand287 and 1000000001000000 1000000000000009 -> NaN Invalid_operation
-- test Middie
ddand288 and 0010000020000000 1000001000000000 -> NaN Invalid_operation
ddand289 and 0001000070000001 1000000100000000 -> NaN Invalid_operation
ddand290 and 0000100080000010 1000000010000000 -> NaN Invalid_operation
ddand291 and 0000010090000100 1000000001000000 -> NaN Invalid_operation
ddand292 and 1000001000001000 0000000020100000 -> NaN Invalid_operation
ddand293 and 1000000100010000 0000000070010000 -> NaN Invalid_operation
ddand294 and 1000000010100000 0000000080001000 -> NaN Invalid_operation
ddand295 and 1000000001000000 0000000090000100 -> NaN Invalid_operation
-- signs
ddand296 and -1000000001000000 -0000010000000100 -> NaN Invalid_operation
ddand297 and -1000000001000000 0000000010000100 -> NaN Invalid_operation
ddand298 and 1000000001000000 -0000001000000100 -> NaN Invalid_operation
ddand299 and 1000000001000000 0000000011000100 -> 1000000
-- Nmax, Nmin, Ntiny-like
ddand331 and 2 9.99999999E+199 -> NaN Invalid_operation
ddand332 and 3 1E-199 -> NaN Invalid_operation
ddand333 and 4 1.00000000E-199 -> NaN Invalid_operation
ddand334 and 5 1E-100 -> NaN Invalid_operation
ddand335 and 6 -1E-100 -> NaN Invalid_operation
ddand336 and 7 -1.00000000E-199 -> NaN Invalid_operation
ddand337 and 8 -1E-199 -> NaN Invalid_operation
ddand338 and 9 -9.99999999E+199 -> NaN Invalid_operation
ddand341 and 9.99999999E+199 -18 -> NaN Invalid_operation
ddand342 and 1E-199 01 -> NaN Invalid_operation
ddand343 and 1.00000000E-199 -18 -> NaN Invalid_operation
ddand344 and 1E-100 18 -> NaN Invalid_operation
ddand345 and -1E-100 -10 -> NaN Invalid_operation
ddand346 and -1.00000000E-199 18 -> NaN Invalid_operation
ddand347 and -1E-199 10 -> NaN Invalid_operation
ddand348 and -9.99999999E+199 -18 -> NaN Invalid_operation
-- A few other non-integers
ddand361 and 1.0 1 -> NaN Invalid_operation
ddand362 and 1E+1 1 -> NaN Invalid_operation
ddand363 and 0.0 1 -> NaN Invalid_operation
ddand364 and 0E+1 1 -> NaN Invalid_operation
ddand365 and 9.9 1 -> NaN Invalid_operation
ddand366 and 9E+1 1 -> NaN Invalid_operation
ddand371 and 0 1.0 -> NaN Invalid_operation
ddand372 and 0 1E+1 -> NaN Invalid_operation
ddand373 and 0 0.0 -> NaN Invalid_operation
ddand374 and 0 0E+1 -> NaN Invalid_operation
ddand375 and 0 9.9 -> NaN Invalid_operation
ddand376 and 0 9E+1 -> NaN Invalid_operation
-- All Specials are in error
ddand780 and -Inf -Inf -> NaN Invalid_operation
ddand781 and -Inf -1000 -> NaN Invalid_operation
ddand782 and -Inf -1 -> NaN Invalid_operation
ddand783 and -Inf -0 -> NaN Invalid_operation
ddand784 and -Inf 0 -> NaN Invalid_operation
ddand785 and -Inf 1 -> NaN Invalid_operation
ddand786 and -Inf 1000 -> NaN Invalid_operation
ddand787 and -1000 -Inf -> NaN Invalid_operation
ddand788 and -Inf -Inf -> NaN Invalid_operation
ddand789 and -1 -Inf -> NaN Invalid_operation
ddand790 and -0 -Inf -> NaN Invalid_operation
ddand791 and 0 -Inf -> NaN Invalid_operation
ddand792 and 1 -Inf -> NaN Invalid_operation
ddand793 and 1000 -Inf -> NaN Invalid_operation
ddand794 and Inf -Inf -> NaN Invalid_operation
ddand800 and Inf -Inf -> NaN Invalid_operation
ddand801 and Inf -1000 -> NaN Invalid_operation
ddand802 and Inf -1 -> NaN Invalid_operation
ddand803 and Inf -0 -> NaN Invalid_operation
ddand804 and Inf 0 -> NaN Invalid_operation
ddand805 and Inf 1 -> NaN Invalid_operation
ddand806 and Inf 1000 -> NaN Invalid_operation
ddand807 and Inf Inf -> NaN Invalid_operation
ddand808 and -1000 Inf -> NaN Invalid_operation
ddand809 and -Inf Inf -> NaN Invalid_operation
ddand810 and -1 Inf -> NaN Invalid_operation
ddand811 and -0 Inf -> NaN Invalid_operation
ddand812 and 0 Inf -> NaN Invalid_operation
ddand813 and 1 Inf -> NaN Invalid_operation
ddand814 and 1000 Inf -> NaN Invalid_operation
ddand815 and Inf Inf -> NaN Invalid_operation
ddand821 and NaN -Inf -> NaN Invalid_operation
ddand822 and NaN -1000 -> NaN Invalid_operation
ddand823 and NaN -1 -> NaN Invalid_operation
ddand824 and NaN -0 -> NaN Invalid_operation
ddand825 and NaN 0 -> NaN Invalid_operation
ddand826 and NaN 1 -> NaN Invalid_operation
ddand827 and NaN 1000 -> NaN Invalid_operation
ddand828 and NaN Inf -> NaN Invalid_operation
ddand829 and NaN NaN -> NaN Invalid_operation
ddand830 and -Inf NaN -> NaN Invalid_operation
ddand831 and -1000 NaN -> NaN Invalid_operation
ddand832 and -1 NaN -> NaN Invalid_operation
ddand833 and -0 NaN -> NaN Invalid_operation
ddand834 and 0 NaN -> NaN Invalid_operation
ddand835 and 1 NaN -> NaN Invalid_operation
ddand836 and 1000 NaN -> NaN Invalid_operation
ddand837 and Inf NaN -> NaN Invalid_operation
ddand841 and sNaN -Inf -> NaN Invalid_operation
ddand842 and sNaN -1000 -> NaN Invalid_operation
ddand843 and sNaN -1 -> NaN Invalid_operation
ddand844 and sNaN -0 -> NaN Invalid_operation
ddand845 and sNaN 0 -> NaN Invalid_operation
ddand846 and sNaN 1 -> NaN Invalid_operation
ddand847 and sNaN 1000 -> NaN Invalid_operation
ddand848 and sNaN NaN -> NaN Invalid_operation
ddand849 and sNaN sNaN -> NaN Invalid_operation
ddand850 and NaN sNaN -> NaN Invalid_operation
ddand851 and -Inf sNaN -> NaN Invalid_operation
ddand852 and -1000 sNaN -> NaN Invalid_operation
ddand853 and -1 sNaN -> NaN Invalid_operation
ddand854 and -0 sNaN -> NaN Invalid_operation
ddand855 and 0 sNaN -> NaN Invalid_operation
ddand856 and 1 sNaN -> NaN Invalid_operation
ddand857 and 1000 sNaN -> NaN Invalid_operation
ddand858 and Inf sNaN -> NaN Invalid_operation
ddand859 and NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddand861 and NaN1 -Inf -> NaN Invalid_operation
ddand862 and +NaN2 -1000 -> NaN Invalid_operation
ddand863 and NaN3 1000 -> NaN Invalid_operation
ddand864 and NaN4 Inf -> NaN Invalid_operation
ddand865 and NaN5 +NaN6 -> NaN Invalid_operation
ddand866 and -Inf NaN7 -> NaN Invalid_operation
ddand867 and -1000 NaN8 -> NaN Invalid_operation
ddand868 and 1000 NaN9 -> NaN Invalid_operation
ddand869 and Inf +NaN10 -> NaN Invalid_operation
ddand871 and sNaN11 -Inf -> NaN Invalid_operation
ddand872 and sNaN12 -1000 -> NaN Invalid_operation
ddand873 and sNaN13 1000 -> NaN Invalid_operation
ddand874 and sNaN14 NaN17 -> NaN Invalid_operation
ddand875 and sNaN15 sNaN18 -> NaN Invalid_operation
ddand876 and NaN16 sNaN19 -> NaN Invalid_operation
ddand877 and -Inf +sNaN20 -> NaN Invalid_operation
ddand878 and -1000 sNaN21 -> NaN Invalid_operation
ddand879 and 1000 sNaN22 -> NaN Invalid_operation
ddand880 and Inf sNaN23 -> NaN Invalid_operation
ddand881 and +NaN25 +sNaN24 -> NaN Invalid_operation
ddand882 and -NaN26 NaN28 -> NaN Invalid_operation
ddand883 and -sNaN27 sNaN29 -> NaN Invalid_operation
ddand884 and 1000 -NaN30 -> NaN Invalid_operation
ddand885 and 1000 -sNaN31 -> NaN Invalid_operation

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,357 @@
------------------------------------------------------------------------
-- ddCanonical.decTest -- test decDouble canonical results --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- This file tests that copy operations leave uncanonical operands
-- unchanged, and vice versa
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Uncanonical declets are: abc, where:
-- a=1,2,3
-- b=6,7,e,f
-- c=e,f
-- assert some standard (canonical) values; this tests that FromString
-- produces canonical results (many more in decimalNN)
ddcan001 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff
ddcan002 apply 0 -> #2238000000000000
ddcan003 apply 1 -> #2238000000000001
ddcan004 apply -1 -> #a238000000000001
ddcan005 apply Infinity -> #7800000000000000
ddcan006 apply -Infinity -> #f800000000000000
ddcan007 apply -NaN -> #fc00000000000000
ddcan008 apply -sNaN -> #fe00000000000000
ddcan009 apply NaN999999999999999 -> #7c00ff3fcff3fcff
ddcan010 apply sNaN999999999999999 -> #7e00ff3fcff3fcff
decan011 apply 9999999999999999 -> #6e38ff3fcff3fcff
ddcan012 apply 7.50 -> #22300000000003d0
ddcan013 apply 9.99 -> #22300000000000ff
-- Base tests for canonical encodings (individual operator
-- propagation is tested later)
-- Finites: declets in coefficient
ddcan021 canonical #77fcff3fcff3fcff -> #77fcff3fcff3fcff
ddcan022 canonical #77fcff3fcff3fcff -> #77fcff3fcff3fcff
ddcan023 canonical #77ffff3fcff3fcff -> #77fcff3fcff3fcff
ddcan024 canonical #77ffff3fcff3fcff -> #77fcff3fcff3fcff
ddcan025 canonical #77fcffffcff3fcff -> #77fcff3fcff3fcff
ddcan026 canonical #77fcffffcff3fcff -> #77fcff3fcff3fcff
ddcan027 canonical #77fcff3ffff3fcff -> #77fcff3fcff3fcff
ddcan028 canonical #77fcff3ffff3fcff -> #77fcff3fcff3fcff
ddcan030 canonical #77fcff3fcffffcff -> #77fcff3fcff3fcff
ddcan031 canonical #77fcff3fcffffcff -> #77fcff3fcff3fcff
ddcan032 canonical #77fcff3fcff3ffff -> #77fcff3fcff3fcff
ddcan033 canonical #77fcff3fcff3ffff -> #77fcff3fcff3fcff
ddcan035 canonical #77fcff3fdff3fcff -> #77fcff3fcff3fcff
ddcan036 canonical #77fcff3feff3fcff -> #77fcff3fcff3fcff
-- NaN: declets in payload
ddcan100 canonical NaN999999999999999 -> #7c00ff3fcff3fcff
ddcan101 canonical #7c00ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan102 canonical #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan103 canonical #7c00ffffcff3fcff -> #7c00ff3fcff3fcff
ddcan104 canonical #7c00ff3ffff3fcff -> #7c00ff3fcff3fcff
ddcan105 canonical #7c00ff3fcffffcff -> #7c00ff3fcff3fcff
ddcan106 canonical #7c00ff3fcff3ffff -> #7c00ff3fcff3fcff
ddcan107 canonical #7c00ff3fcff3ffff -> #7c00ff3fcff3fcff
-- NaN: exponent continuation bits [excluding sNaN selector]
ddcan110 canonical #7c00ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan112 canonical #7d00ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan113 canonical #7c80ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan114 canonical #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan115 canonical #7c20ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan116 canonical #7c10ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan117 canonical #7c08ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan118 canonical #7c04ff3fcff3fcff -> #7c00ff3fcff3fcff
-- sNaN: declets in payload
ddcan120 canonical sNaN999999999999999 -> #7e00ff3fcff3fcff
ddcan121 canonical #7e00ff3fcff3fcff -> #7e00ff3fcff3fcff
ddcan122 canonical #7e03ff3fcff3fcff -> #7e00ff3fcff3fcff
ddcan123 canonical #7e00ffffcff3fcff -> #7e00ff3fcff3fcff
ddcan124 canonical #7e00ff3ffff3fcff -> #7e00ff3fcff3fcff
ddcan125 canonical #7e00ff3fcffffcff -> #7e00ff3fcff3fcff
ddcan126 canonical #7e00ff3fcff3ffff -> #7e00ff3fcff3fcff
ddcan127 canonical #7e00ff3fcff3ffff -> #7e00ff3fcff3fcff
-- sNaN: exponent continuation bits [excluding sNaN selector]
ddcan130 canonical #7e00ff3fcff3fcff -> #7e00ff3fcff3fcff
ddcan132 canonical #7f00ff3fcff3fcff -> #7e00ff3fcff3fcff
ddcan133 canonical #7e80ff3fcff3fcff -> #7e00ff3fcff3fcff
ddcan134 canonical #7e40ff3fcff3fcff -> #7e00ff3fcff3fcff
ddcan135 canonical #7e20ff3fcff3fcff -> #7e00ff3fcff3fcff
ddcan136 canonical #7e10ff3fcff3fcff -> #7e00ff3fcff3fcff
ddcan137 canonical #7e08ff3fcff3fcff -> #7e00ff3fcff3fcff
ddcan138 canonical #7e04ff3fcff3fcff -> #7e00ff3fcff3fcff
-- Inf: exponent continuation bits
ddcan140 canonical #7800000000000000 -> #7800000000000000
ddcan141 canonical #7900000000000000 -> #7800000000000000
ddcan142 canonical #7a00000000000000 -> #7800000000000000
ddcan143 canonical #7880000000000000 -> #7800000000000000
ddcan144 canonical #7840000000000000 -> #7800000000000000
ddcan145 canonical #7820000000000000 -> #7800000000000000
ddcan146 canonical #7810000000000000 -> #7800000000000000
ddcan147 canonical #7808000000000000 -> #7800000000000000
ddcan148 canonical #7804000000000000 -> #7800000000000000
-- Inf: coefficient continuation bits (first, last, and a few others)
ddcan150 canonical #7800000000000000 -> #7800000000000000
ddcan151 canonical #7802000000000000 -> #7800000000000000
ddcan152 canonical #7800000000000001 -> #7800000000000000
ddcan153 canonical #7801000000000000 -> #7800000000000000
ddcan154 canonical #7800200000000000 -> #7800000000000000
ddcan155 canonical #7800080000000000 -> #7800000000000000
ddcan156 canonical #7800002000000000 -> #7800000000000000
ddcan157 canonical #7800000400000000 -> #7800000000000000
ddcan158 canonical #7800000040000000 -> #7800000000000000
ddcan159 canonical #7800000008000000 -> #7800000000000000
ddcan160 canonical #7800000000400000 -> #7800000000000000
ddcan161 canonical #7800000000020000 -> #7800000000000000
ddcan162 canonical #7800000000008000 -> #7800000000000000
ddcan163 canonical #7800000000000200 -> #7800000000000000
ddcan164 canonical #7800000000000040 -> #7800000000000000
ddcan165 canonical #7800000000000008 -> #7800000000000000
-- Now the operators -- trying to check paths that might fail to
-- canonicalize propagated operands
----- Add:
-- Finites: neutral 0
ddcan202 add 0E+384 #77ffff3fcff3fcff -> #77fcff3fcff3fcff
ddcan203 add #77fcffffcff3fcff 0E+384 -> #77fcff3fcff3fcff
-- tiny zero
ddcan204 add 0E-398 #77ffff3fcff3fcff -> #77fcff3fcff3fcff Rounded
ddcan205 add #77fcffffcff3fcff 0E-398 -> #77fcff3fcff3fcff Rounded
-- tiny non zero
ddcan206 add -1E-398 #77ffff3fcff3fcff -> #77fcff3fcff3fcff Inexact Rounded
ddcan207 add #77ffff3fcff3fcff -1E-398 -> #77fcff3fcff3fcff Inexact Rounded
-- NaN: declets in payload
ddcan211 add 0 #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan212 add #7c03ff3fcff3fcff 0 -> #7c00ff3fcff3fcff
-- NaN: exponent continuation bits [excluding sNaN selector]
ddcan213 add 0 #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan214 add #7c40ff3fcff3fcff 0 -> #7c00ff3fcff3fcff
-- sNaN: declets in payload
ddcan215 add 0 #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
ddcan216 add #7e00ffffcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation
-- sNaN: exponent continuation bits [excluding sNaN selector]
ddcan217 add 0 #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
ddcan218 add #7e80ff3fcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation
-- Inf: exponent continuation bits
ddcan220 add 0 #7880000000000000 -> #7800000000000000
ddcan221 add #7880000000000000 0 -> #7800000000000000
-- Inf: coefficient continuation bits
ddcan222 add 0 #7802000000000000 -> #7800000000000000
ddcan223 add #7802000000000000 0 -> #7800000000000000
ddcan224 add 0 #7800000000000001 -> #7800000000000000
ddcan225 add #7800000000000001 0 -> #7800000000000000
ddcan226 add 0 #7800002000000000 -> #7800000000000000
ddcan227 add #7800002000000000 0 -> #7800000000000000
----- Class: [does not return encoded]
----- Compare:
ddcan231 compare -Inf 1 -> #a238000000000001
ddcan232 compare -Inf -Inf -> #2238000000000000
ddcan233 compare 1 -Inf -> #2238000000000001
ddcan234 compare #7c00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff
ddcan235 compare #7e00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff Invalid_operation
----- CompareSig:
ddcan241 comparesig -Inf 1 -> #a238000000000001
ddcan242 comparesig -Inf -Inf -> #2238000000000000
ddcan243 comparesig 1 -Inf -> #2238000000000001
ddcan244 comparesig #7c00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff Invalid_operation
ddcan245 comparesig #7e00ff3ffff3fcff -1000 -> #7c00ff3fcff3fcff Invalid_operation
----- Copy: [does not usually canonicalize]
-- finites
ddcan250 copy #77ffff3fcff3fcff -> #77ffff3fcff3fcff
ddcan251 copy #77fcff3fdff3fcff -> #77fcff3fdff3fcff
-- NaNs
ddcan252 copy #7c03ff3fcff3fcff -> #7c03ff3fcff3fcff
ddcan253 copy #7c00ff3fcff3ffff -> #7c00ff3fcff3ffff
ddcan254 copy #7d00ff3fcff3fcff -> #7d00ff3fcff3fcff
ddcan255 copy #7c04ff3fcff3fcff -> #7c04ff3fcff3fcff
-- sNaN
ddcan256 copy #7e00ff3fcffffcff -> #7e00ff3fcffffcff
ddcan257 copy #7e40ff3fcff3fcff -> #7e40ff3fcff3fcff
-- Inf
ddcan258 copy #7a00000000000000 -> #7a00000000000000
ddcan259 copy #7800200000000000 -> #7800200000000000
----- CopyAbs: [does not usually canonicalize]
-- finites
ddcan260 copyabs #f7ffff3fcff3fcff -> #77ffff3fcff3fcff
ddcan261 copyabs #f7fcff3fdff3fcff -> #77fcff3fdff3fcff
-- NaNs
ddcan262 copyabs #fc03ff3fcff3fcff -> #7c03ff3fcff3fcff
ddcan263 copyabs #fc00ff3fcff3ffff -> #7c00ff3fcff3ffff
ddcan264 copyabs #fd00ff3fcff3fcff -> #7d00ff3fcff3fcff
ddcan265 copyabs #fc04ff3fcff3fcff -> #7c04ff3fcff3fcff
-- sNaN
ddcan266 copyabs #fe00ff3fcffffcff -> #7e00ff3fcffffcff
ddcan267 copyabs #fe40ff3fcff3fcff -> #7e40ff3fcff3fcff
-- Inf
ddcan268 copyabs #fa00000000000000 -> #7a00000000000000
ddcan269 copyabs #f800200000000000 -> #7800200000000000
----- CopyNegate: [does not usually canonicalize]
-- finites
ddcan270 copynegate #77ffff3fcff3fcff -> #f7ffff3fcff3fcff
ddcan271 copynegate #77fcff3fdff3fcff -> #f7fcff3fdff3fcff
-- NaNs
ddcan272 copynegate #7c03ff3fcff3fcff -> #fc03ff3fcff3fcff
ddcan273 copynegate #7c00ff3fcff3ffff -> #fc00ff3fcff3ffff
ddcan274 copynegate #7d00ff3fcff3fcff -> #fd00ff3fcff3fcff
ddcan275 copynegate #7c04ff3fcff3fcff -> #fc04ff3fcff3fcff
-- sNaN
ddcan276 copynegate #7e00ff3fcffffcff -> #fe00ff3fcffffcff
ddcan277 copynegate #7e40ff3fcff3fcff -> #fe40ff3fcff3fcff
-- Inf
ddcan278 copynegate #7a00000000000000 -> #fa00000000000000
ddcan279 copynegate #7800200000000000 -> #f800200000000000
----- CopySign: [does not usually canonicalize]
-- finites
ddcan280 copysign #77ffff3fcff3fcff -1 -> #f7ffff3fcff3fcff
ddcan281 copysign #77fcff3fdff3fcff 1 -> #77fcff3fdff3fcff
-- NaNs
ddcan282 copysign #7c03ff3fcff3fcff -1 -> #fc03ff3fcff3fcff
ddcan283 copysign #7c00ff3fcff3ffff 1 -> #7c00ff3fcff3ffff
ddcan284 copysign #7d00ff3fcff3fcff -1 -> #fd00ff3fcff3fcff
ddcan285 copysign #7c04ff3fcff3fcff 1 -> #7c04ff3fcff3fcff
-- sNaN
ddcan286 copysign #7e00ff3fcffffcff -1 -> #fe00ff3fcffffcff
ddcan287 copysign #7e40ff3fcff3fcff 1 -> #7e40ff3fcff3fcff
-- Inf
ddcan288 copysign #7a00000000000000 -1 -> #fa00000000000000
ddcan289 copysign #7800200000000000 1 -> #7800200000000000
----- Multiply:
-- Finites: neutral 0
ddcan302 multiply 1 #77ffff3fcff3fcff -> #77fcff3fcff3fcff
ddcan303 multiply #77fcffffcff3fcff 1 -> #77fcff3fcff3fcff
-- negative
ddcan306 multiply -1 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff
ddcan307 multiply #77fcffffcff3fcff -1 -> #f7fcff3fcff3fcff
-- NaN: declets in payload
ddcan311 multiply 1 #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan312 multiply #7c03ff3fcff3fcff 1 -> #7c00ff3fcff3fcff
-- NaN: exponent continuation bits [excluding sNaN selector]
ddcan313 multiply 1 #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan314 multiply #7c40ff3fcff3fcff 1 -> #7c00ff3fcff3fcff
-- sNaN: declets in payload
ddcan315 multiply 1 #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
ddcan316 multiply #7e00ffffcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation
-- sNaN: exponent continuation bits [excluding sNaN selector]
ddcan317 multiply 1 #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
ddcan318 multiply #7e80ff3fcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation
-- Inf: exponent continuation bits
ddcan320 multiply 1 #7880000000000000 -> #7800000000000000
ddcan321 multiply #7880000000000000 1 -> #7800000000000000
-- Inf: coefficient continuation bits
ddcan322 multiply 1 #7802000000000000 -> #7800000000000000
ddcan323 multiply #7802000000000000 1 -> #7800000000000000
ddcan324 multiply 1 #7800000000000001 -> #7800000000000000
ddcan325 multiply #7800000000000001 1 -> #7800000000000000
ddcan326 multiply 1 #7800002000000000 -> #7800000000000000
ddcan327 multiply #7800002000000000 1 -> #7800000000000000
----- Quantize:
ddcan401 quantize #6e38ff3ffff3fcff 1 -> #6e38ff3fcff3fcff
ddcan402 quantize #6e38ff3fcff3fdff 0 -> #6e38ff3fcff3fcff
ddcan403 quantize #7880000000000000 Inf -> #7800000000000000
ddcan404 quantize #7802000000000000 -Inf -> #7800000000000000
ddcan410 quantize #7c03ff3fcff3fcff 1 -> #7c00ff3fcff3fcff
ddcan411 quantize #7c03ff3fcff3fcff 1 -> #7c00ff3fcff3fcff
ddcan412 quantize #7c40ff3fcff3fcff 1 -> #7c00ff3fcff3fcff
ddcan413 quantize #7c40ff3fcff3fcff 1 -> #7c00ff3fcff3fcff
ddcan414 quantize #7e00ffffcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation
ddcan415 quantize #7e00ffffcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation
ddcan416 quantize #7e80ff3fcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation
ddcan417 quantize #7e80ff3fcff3fcff 1 -> #7c00ff3fcff3fcff Invalid_operation
----- Subtract:
-- Finites: neutral 0
ddcan502 subtract 0E+384 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff
ddcan503 subtract #77fcffffcff3fcff 0E+384 -> #77fcff3fcff3fcff
-- tiny zero
ddcan504 subtract 0E-398 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff Rounded
ddcan505 subtract #77fcffffcff3fcff 0E-398 -> #77fcff3fcff3fcff Rounded
-- tiny non zero
ddcan506 subtract -1E-398 #77ffff3fcff3fcff -> #f7fcff3fcff3fcff Inexact Rounded
ddcan507 subtract #77ffff3fcff3fcff -1E-398 -> #77fcff3fcff3fcff Inexact Rounded
-- NaN: declets in payload
ddcan511 subtract 0 #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan512 subtract #7c03ff3fcff3fcff 0 -> #7c00ff3fcff3fcff
-- NaN: exponent continuation bits [excluding sNaN selector]
ddcan513 subtract 0 #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan514 subtract #7c40ff3fcff3fcff 0 -> #7c00ff3fcff3fcff
-- sNaN: declets in payload
ddcan515 subtract 0 #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
ddcan516 subtract #7e00ffffcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation
-- sNaN: exponent continuation bits [excluding sNaN selector]
ddcan517 subtract 0 #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
ddcan518 subtract #7e80ff3fcff3fcff 0 -> #7c00ff3fcff3fcff Invalid_operation
-- Inf: exponent continuation bits
ddcan520 subtract 0 #7880000000000000 -> #f800000000000000
ddcan521 subtract #7880000000000000 0 -> #7800000000000000
-- Inf: coefficient continuation bits
ddcan522 subtract 0 #7802000000000000 -> #f800000000000000
ddcan523 subtract #7802000000000000 0 -> #7800000000000000
ddcan524 subtract 0 #7800000000000001 -> #f800000000000000
ddcan525 subtract #7800000000000001 0 -> #7800000000000000
ddcan526 subtract 0 #7800002000000000 -> #f800000000000000
ddcan527 subtract #7800002000000000 0 -> #7800000000000000
----- ToIntegral:
ddcan601 tointegralx #6e38ff3ffff3fcff -> #6e38ff3fcff3fcff
ddcan602 tointegralx #6e38ff3fcff3fdff -> #6e38ff3fcff3fcff
ddcan603 tointegralx #7880000000000000 -> #7800000000000000
ddcan604 tointegralx #7802000000000000 -> #7800000000000000
ddcan610 tointegralx #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan611 tointegralx #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan612 tointegralx #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan613 tointegralx #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff
ddcan614 tointegralx #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
ddcan615 tointegralx #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
ddcan616 tointegralx #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
ddcan617 tointegralx #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
-- uncanonical 3999, 39.99, 3.99, 0.399, and negatives
ddcan618 tointegralx #2238000000000fff -> #2238000000000cff
ddcan619 tointegralx #2230000000000fff -> #2238000000000040 Inexact Rounded
ddcan620 tointegralx #222c000000000fff -> #2238000000000004 Inexact Rounded
ddcan621 tointegralx #2228000000000fff -> #2238000000000000 Inexact Rounded
ddcan622 tointegralx #a238000000000fff -> #a238000000000cff
ddcan623 tointegralx #a230000000000fff -> #a238000000000040 Inexact Rounded
ddcan624 tointegralx #a22c000000000fff -> #a238000000000004 Inexact Rounded
ddcan625 tointegralx #a228000000000fff -> #a238000000000000 Inexact Rounded

View file

@ -0,0 +1,76 @@
------------------------------------------------------------------------
-- ddClass.decTest -- decDouble Class operations --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- [New 2006.11.27]
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
ddcla001 class 0 -> +Zero
ddcla002 class 0.00 -> +Zero
ddcla003 class 0E+5 -> +Zero
ddcla004 class 1E-396 -> +Subnormal
ddcla005 class 0.1E-383 -> +Subnormal
ddcla006 class 0.999999999999999E-383 -> +Subnormal
ddcla007 class 1.000000000000000E-383 -> +Normal
ddcla008 class 1E-383 -> +Normal
ddcla009 class 1E-100 -> +Normal
ddcla010 class 1E-10 -> +Normal
ddcla012 class 1E-1 -> +Normal
ddcla013 class 1 -> +Normal
ddcla014 class 2.50 -> +Normal
ddcla015 class 100.100 -> +Normal
ddcla016 class 1E+30 -> +Normal
ddcla017 class 1E+384 -> +Normal
ddcla018 class 9.999999999999999E+384 -> +Normal
ddcla019 class Inf -> +Infinity
ddcla021 class -0 -> -Zero
ddcla022 class -0.00 -> -Zero
ddcla023 class -0E+5 -> -Zero
ddcla024 class -1E-396 -> -Subnormal
ddcla025 class -0.1E-383 -> -Subnormal
ddcla026 class -0.999999999999999E-383 -> -Subnormal
ddcla027 class -1.000000000000000E-383 -> -Normal
ddcla028 class -1E-383 -> -Normal
ddcla029 class -1E-100 -> -Normal
ddcla030 class -1E-10 -> -Normal
ddcla032 class -1E-1 -> -Normal
ddcla033 class -1 -> -Normal
ddcla034 class -2.50 -> -Normal
ddcla035 class -100.100 -> -Normal
ddcla036 class -1E+30 -> -Normal
ddcla037 class -1E+384 -> -Normal
ddcla038 class -9.999999999999999E+384 -> -Normal
ddcla039 class -Inf -> -Infinity
ddcla041 class NaN -> NaN
ddcla042 class -NaN -> NaN
ddcla043 class +NaN12345 -> NaN
ddcla044 class sNaN -> sNaN
ddcla045 class -sNaN -> sNaN
ddcla046 class +sNaN12345 -> sNaN

View file

@ -0,0 +1,744 @@
------------------------------------------------------------------------
-- ddCompare.decTest -- decDouble comparison that allows quiet NaNs --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necessary).
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
ddcom001 compare -2 -2 -> 0
ddcom002 compare -2 -1 -> -1
ddcom003 compare -2 0 -> -1
ddcom004 compare -2 1 -> -1
ddcom005 compare -2 2 -> -1
ddcom006 compare -1 -2 -> 1
ddcom007 compare -1 -1 -> 0
ddcom008 compare -1 0 -> -1
ddcom009 compare -1 1 -> -1
ddcom010 compare -1 2 -> -1
ddcom011 compare 0 -2 -> 1
ddcom012 compare 0 -1 -> 1
ddcom013 compare 0 0 -> 0
ddcom014 compare 0 1 -> -1
ddcom015 compare 0 2 -> -1
ddcom016 compare 1 -2 -> 1
ddcom017 compare 1 -1 -> 1
ddcom018 compare 1 0 -> 1
ddcom019 compare 1 1 -> 0
ddcom020 compare 1 2 -> -1
ddcom021 compare 2 -2 -> 1
ddcom022 compare 2 -1 -> 1
ddcom023 compare 2 0 -> 1
ddcom025 compare 2 1 -> 1
ddcom026 compare 2 2 -> 0
ddcom031 compare -20 -20 -> 0
ddcom032 compare -20 -10 -> -1
ddcom033 compare -20 00 -> -1
ddcom034 compare -20 10 -> -1
ddcom035 compare -20 20 -> -1
ddcom036 compare -10 -20 -> 1
ddcom037 compare -10 -10 -> 0
ddcom038 compare -10 00 -> -1
ddcom039 compare -10 10 -> -1
ddcom040 compare -10 20 -> -1
ddcom041 compare 00 -20 -> 1
ddcom042 compare 00 -10 -> 1
ddcom043 compare 00 00 -> 0
ddcom044 compare 00 10 -> -1
ddcom045 compare 00 20 -> -1
ddcom046 compare 10 -20 -> 1
ddcom047 compare 10 -10 -> 1
ddcom048 compare 10 00 -> 1
ddcom049 compare 10 10 -> 0
ddcom050 compare 10 20 -> -1
ddcom051 compare 20 -20 -> 1
ddcom052 compare 20 -10 -> 1
ddcom053 compare 20 00 -> 1
ddcom055 compare 20 10 -> 1
ddcom056 compare 20 20 -> 0
ddcom061 compare -2.0 -2.0 -> 0
ddcom062 compare -2.0 -1.0 -> -1
ddcom063 compare -2.0 0.0 -> -1
ddcom064 compare -2.0 1.0 -> -1
ddcom065 compare -2.0 2.0 -> -1
ddcom066 compare -1.0 -2.0 -> 1
ddcom067 compare -1.0 -1.0 -> 0
ddcom068 compare -1.0 0.0 -> -1
ddcom069 compare -1.0 1.0 -> -1
ddcom070 compare -1.0 2.0 -> -1
ddcom071 compare 0.0 -2.0 -> 1
ddcom072 compare 0.0 -1.0 -> 1
ddcom073 compare 0.0 0.0 -> 0
ddcom074 compare 0.0 1.0 -> -1
ddcom075 compare 0.0 2.0 -> -1
ddcom076 compare 1.0 -2.0 -> 1
ddcom077 compare 1.0 -1.0 -> 1
ddcom078 compare 1.0 0.0 -> 1
ddcom079 compare 1.0 1.0 -> 0
ddcom080 compare 1.0 2.0 -> -1
ddcom081 compare 2.0 -2.0 -> 1
ddcom082 compare 2.0 -1.0 -> 1
ddcom083 compare 2.0 0.0 -> 1
ddcom085 compare 2.0 1.0 -> 1
ddcom086 compare 2.0 2.0 -> 0
ddcom087 compare 1.0 0.1 -> 1
ddcom088 compare 0.1 1.0 -> -1
-- now some cases which might overflow if subtract were used
ddcom095 compare 9.999999999999999E+384 9.999999999999999E+384 -> 0
ddcom096 compare -9.999999999999999E+384 9.999999999999999E+384 -> -1
ddcom097 compare 9.999999999999999E+384 -9.999999999999999E+384 -> 1
ddcom098 compare -9.999999999999999E+384 -9.999999999999999E+384 -> 0
-- some differing length/exponent cases
ddcom100 compare 7.0 7.0 -> 0
ddcom101 compare 7.0 7 -> 0
ddcom102 compare 7 7.0 -> 0
ddcom103 compare 7E+0 7.0 -> 0
ddcom104 compare 70E-1 7.0 -> 0
ddcom105 compare 0.7E+1 7 -> 0
ddcom106 compare 70E-1 7 -> 0
ddcom107 compare 7.0 7E+0 -> 0
ddcom108 compare 7.0 70E-1 -> 0
ddcom109 compare 7 0.7E+1 -> 0
ddcom110 compare 7 70E-1 -> 0
ddcom120 compare 8.0 7.0 -> 1
ddcom121 compare 8.0 7 -> 1
ddcom122 compare 8 7.0 -> 1
ddcom123 compare 8E+0 7.0 -> 1
ddcom124 compare 80E-1 7.0 -> 1
ddcom125 compare 0.8E+1 7 -> 1
ddcom126 compare 80E-1 7 -> 1
ddcom127 compare 8.0 7E+0 -> 1
ddcom128 compare 8.0 70E-1 -> 1
ddcom129 compare 8 0.7E+1 -> 1
ddcom130 compare 8 70E-1 -> 1
ddcom140 compare 8.0 9.0 -> -1
ddcom141 compare 8.0 9 -> -1
ddcom142 compare 8 9.0 -> -1
ddcom143 compare 8E+0 9.0 -> -1
ddcom144 compare 80E-1 9.0 -> -1
ddcom145 compare 0.8E+1 9 -> -1
ddcom146 compare 80E-1 9 -> -1
ddcom147 compare 8.0 9E+0 -> -1
ddcom148 compare 8.0 90E-1 -> -1
ddcom149 compare 8 0.9E+1 -> -1
ddcom150 compare 8 90E-1 -> -1
-- and again, with sign changes -+ ..
ddcom200 compare -7.0 7.0 -> -1
ddcom201 compare -7.0 7 -> -1
ddcom202 compare -7 7.0 -> -1
ddcom203 compare -7E+0 7.0 -> -1
ddcom204 compare -70E-1 7.0 -> -1
ddcom205 compare -0.7E+1 7 -> -1
ddcom206 compare -70E-1 7 -> -1
ddcom207 compare -7.0 7E+0 -> -1
ddcom208 compare -7.0 70E-1 -> -1
ddcom209 compare -7 0.7E+1 -> -1
ddcom210 compare -7 70E-1 -> -1
ddcom220 compare -8.0 7.0 -> -1
ddcom221 compare -8.0 7 -> -1
ddcom222 compare -8 7.0 -> -1
ddcom223 compare -8E+0 7.0 -> -1
ddcom224 compare -80E-1 7.0 -> -1
ddcom225 compare -0.8E+1 7 -> -1
ddcom226 compare -80E-1 7 -> -1
ddcom227 compare -8.0 7E+0 -> -1
ddcom228 compare -8.0 70E-1 -> -1
ddcom229 compare -8 0.7E+1 -> -1
ddcom230 compare -8 70E-1 -> -1
ddcom240 compare -8.0 9.0 -> -1
ddcom241 compare -8.0 9 -> -1
ddcom242 compare -8 9.0 -> -1
ddcom243 compare -8E+0 9.0 -> -1
ddcom244 compare -80E-1 9.0 -> -1
ddcom245 compare -0.8E+1 9 -> -1
ddcom246 compare -80E-1 9 -> -1
ddcom247 compare -8.0 9E+0 -> -1
ddcom248 compare -8.0 90E-1 -> -1
ddcom249 compare -8 0.9E+1 -> -1
ddcom250 compare -8 90E-1 -> -1
-- and again, with sign changes +- ..
ddcom300 compare 7.0 -7.0 -> 1
ddcom301 compare 7.0 -7 -> 1
ddcom302 compare 7 -7.0 -> 1
ddcom303 compare 7E+0 -7.0 -> 1
ddcom304 compare 70E-1 -7.0 -> 1
ddcom305 compare .7E+1 -7 -> 1
ddcom306 compare 70E-1 -7 -> 1
ddcom307 compare 7.0 -7E+0 -> 1
ddcom308 compare 7.0 -70E-1 -> 1
ddcom309 compare 7 -.7E+1 -> 1
ddcom310 compare 7 -70E-1 -> 1
ddcom320 compare 8.0 -7.0 -> 1
ddcom321 compare 8.0 -7 -> 1
ddcom322 compare 8 -7.0 -> 1
ddcom323 compare 8E+0 -7.0 -> 1
ddcom324 compare 80E-1 -7.0 -> 1
ddcom325 compare .8E+1 -7 -> 1
ddcom326 compare 80E-1 -7 -> 1
ddcom327 compare 8.0 -7E+0 -> 1
ddcom328 compare 8.0 -70E-1 -> 1
ddcom329 compare 8 -.7E+1 -> 1
ddcom330 compare 8 -70E-1 -> 1
ddcom340 compare 8.0 -9.0 -> 1
ddcom341 compare 8.0 -9 -> 1
ddcom342 compare 8 -9.0 -> 1
ddcom343 compare 8E+0 -9.0 -> 1
ddcom344 compare 80E-1 -9.0 -> 1
ddcom345 compare .8E+1 -9 -> 1
ddcom346 compare 80E-1 -9 -> 1
ddcom347 compare 8.0 -9E+0 -> 1
ddcom348 compare 8.0 -90E-1 -> 1
ddcom349 compare 8 -.9E+1 -> 1
ddcom350 compare 8 -90E-1 -> 1
-- and again, with sign changes -- ..
ddcom400 compare -7.0 -7.0 -> 0
ddcom401 compare -7.0 -7 -> 0
ddcom402 compare -7 -7.0 -> 0
ddcom403 compare -7E+0 -7.0 -> 0
ddcom404 compare -70E-1 -7.0 -> 0
ddcom405 compare -.7E+1 -7 -> 0
ddcom406 compare -70E-1 -7 -> 0
ddcom407 compare -7.0 -7E+0 -> 0
ddcom408 compare -7.0 -70E-1 -> 0
ddcom409 compare -7 -.7E+1 -> 0
ddcom410 compare -7 -70E-1 -> 0
ddcom420 compare -8.0 -7.0 -> -1
ddcom421 compare -8.0 -7 -> -1
ddcom422 compare -8 -7.0 -> -1
ddcom423 compare -8E+0 -7.0 -> -1
ddcom424 compare -80E-1 -7.0 -> -1
ddcom425 compare -.8E+1 -7 -> -1
ddcom426 compare -80E-1 -7 -> -1
ddcom427 compare -8.0 -7E+0 -> -1
ddcom428 compare -8.0 -70E-1 -> -1
ddcom429 compare -8 -.7E+1 -> -1
ddcom430 compare -8 -70E-1 -> -1
ddcom440 compare -8.0 -9.0 -> 1
ddcom441 compare -8.0 -9 -> 1
ddcom442 compare -8 -9.0 -> 1
ddcom443 compare -8E+0 -9.0 -> 1
ddcom444 compare -80E-1 -9.0 -> 1
ddcom445 compare -.8E+1 -9 -> 1
ddcom446 compare -80E-1 -9 -> 1
ddcom447 compare -8.0 -9E+0 -> 1
ddcom448 compare -8.0 -90E-1 -> 1
ddcom449 compare -8 -.9E+1 -> 1
ddcom450 compare -8 -90E-1 -> 1
-- misalignment traps for little-endian
ddcom451 compare 1.0 0.1 -> 1
ddcom452 compare 0.1 1.0 -> -1
ddcom453 compare 10.0 0.1 -> 1
ddcom454 compare 0.1 10.0 -> -1
ddcom455 compare 100 1.0 -> 1
ddcom456 compare 1.0 100 -> -1
ddcom457 compare 1000 10.0 -> 1
ddcom458 compare 10.0 1000 -> -1
ddcom459 compare 10000 100.0 -> 1
ddcom460 compare 100.0 10000 -> -1
ddcom461 compare 100000 1000.0 -> 1
ddcom462 compare 1000.0 100000 -> -1
ddcom463 compare 1000000 10000.0 -> 1
ddcom464 compare 10000.0 1000000 -> -1
-- testcases that subtract to lots of zeros at boundaries [pgr]
ddcom473 compare 123.4560000000000E-89 123.456E-89 -> 0
ddcom474 compare 123.456000000000E+89 123.456E+89 -> 0
ddcom475 compare 123.45600000000E-89 123.456E-89 -> 0
ddcom476 compare 123.4560000000E+89 123.456E+89 -> 0
ddcom477 compare 123.456000000E-89 123.456E-89 -> 0
ddcom478 compare 123.45600000E+89 123.456E+89 -> 0
ddcom479 compare 123.4560000E-89 123.456E-89 -> 0
ddcom480 compare 123.456000E+89 123.456E+89 -> 0
ddcom481 compare 123.45600E-89 123.456E-89 -> 0
ddcom482 compare 123.4560E+89 123.456E+89 -> 0
ddcom483 compare 123.456E-89 123.456E-89 -> 0
ddcom487 compare 123.456E+89 123.4560000000000E+89 -> 0
ddcom488 compare 123.456E-89 123.456000000000E-89 -> 0
ddcom489 compare 123.456E+89 123.45600000000E+89 -> 0
ddcom490 compare 123.456E-89 123.4560000000E-89 -> 0
ddcom491 compare 123.456E+89 123.456000000E+89 -> 0
ddcom492 compare 123.456E-89 123.45600000E-89 -> 0
ddcom493 compare 123.456E+89 123.4560000E+89 -> 0
ddcom494 compare 123.456E-89 123.456000E-89 -> 0
ddcom495 compare 123.456E+89 123.45600E+89 -> 0
ddcom496 compare 123.456E-89 123.4560E-89 -> 0
ddcom497 compare 123.456E+89 123.456E+89 -> 0
-- wide-ranging, around precision; signs equal
ddcom500 compare 1 1E-15 -> 1
ddcom501 compare 1 1E-14 -> 1
ddcom502 compare 1 1E-13 -> 1
ddcom503 compare 1 1E-12 -> 1
ddcom504 compare 1 1E-11 -> 1
ddcom505 compare 1 1E-10 -> 1
ddcom506 compare 1 1E-9 -> 1
ddcom507 compare 1 1E-8 -> 1
ddcom508 compare 1 1E-7 -> 1
ddcom509 compare 1 1E-6 -> 1
ddcom510 compare 1 1E-5 -> 1
ddcom511 compare 1 1E-4 -> 1
ddcom512 compare 1 1E-3 -> 1
ddcom513 compare 1 1E-2 -> 1
ddcom514 compare 1 1E-1 -> 1
ddcom515 compare 1 1E-0 -> 0
ddcom516 compare 1 1E+1 -> -1
ddcom517 compare 1 1E+2 -> -1
ddcom518 compare 1 1E+3 -> -1
ddcom519 compare 1 1E+4 -> -1
ddcom521 compare 1 1E+5 -> -1
ddcom522 compare 1 1E+6 -> -1
ddcom523 compare 1 1E+7 -> -1
ddcom524 compare 1 1E+8 -> -1
ddcom525 compare 1 1E+9 -> -1
ddcom526 compare 1 1E+10 -> -1
ddcom527 compare 1 1E+11 -> -1
ddcom528 compare 1 1E+12 -> -1
ddcom529 compare 1 1E+13 -> -1
ddcom530 compare 1 1E+14 -> -1
ddcom531 compare 1 1E+15 -> -1
-- LR swap
ddcom540 compare 1E-15 1 -> -1
ddcom541 compare 1E-14 1 -> -1
ddcom542 compare 1E-13 1 -> -1
ddcom543 compare 1E-12 1 -> -1
ddcom544 compare 1E-11 1 -> -1
ddcom545 compare 1E-10 1 -> -1
ddcom546 compare 1E-9 1 -> -1
ddcom547 compare 1E-8 1 -> -1
ddcom548 compare 1E-7 1 -> -1
ddcom549 compare 1E-6 1 -> -1
ddcom550 compare 1E-5 1 -> -1
ddcom551 compare 1E-4 1 -> -1
ddcom552 compare 1E-3 1 -> -1
ddcom553 compare 1E-2 1 -> -1
ddcom554 compare 1E-1 1 -> -1
ddcom555 compare 1E-0 1 -> 0
ddcom556 compare 1E+1 1 -> 1
ddcom557 compare 1E+2 1 -> 1
ddcom558 compare 1E+3 1 -> 1
ddcom559 compare 1E+4 1 -> 1
ddcom561 compare 1E+5 1 -> 1
ddcom562 compare 1E+6 1 -> 1
ddcom563 compare 1E+7 1 -> 1
ddcom564 compare 1E+8 1 -> 1
ddcom565 compare 1E+9 1 -> 1
ddcom566 compare 1E+10 1 -> 1
ddcom567 compare 1E+11 1 -> 1
ddcom568 compare 1E+12 1 -> 1
ddcom569 compare 1E+13 1 -> 1
ddcom570 compare 1E+14 1 -> 1
ddcom571 compare 1E+15 1 -> 1
-- similar with a useful coefficient, one side only
ddcom580 compare 0.000000987654321 1E-15 -> 1
ddcom581 compare 0.000000987654321 1E-14 -> 1
ddcom582 compare 0.000000987654321 1E-13 -> 1
ddcom583 compare 0.000000987654321 1E-12 -> 1
ddcom584 compare 0.000000987654321 1E-11 -> 1
ddcom585 compare 0.000000987654321 1E-10 -> 1
ddcom586 compare 0.000000987654321 1E-9 -> 1
ddcom587 compare 0.000000987654321 1E-8 -> 1
ddcom588 compare 0.000000987654321 1E-7 -> 1
ddcom589 compare 0.000000987654321 1E-6 -> -1
ddcom590 compare 0.000000987654321 1E-5 -> -1
ddcom591 compare 0.000000987654321 1E-4 -> -1
ddcom592 compare 0.000000987654321 1E-3 -> -1
ddcom593 compare 0.000000987654321 1E-2 -> -1
ddcom594 compare 0.000000987654321 1E-1 -> -1
ddcom595 compare 0.000000987654321 1E-0 -> -1
ddcom596 compare 0.000000987654321 1E+1 -> -1
ddcom597 compare 0.000000987654321 1E+2 -> -1
ddcom598 compare 0.000000987654321 1E+3 -> -1
ddcom599 compare 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
ddcom600 compare 12 12.2345 -> -1
ddcom601 compare 12.0 12.2345 -> -1
ddcom602 compare 12.00 12.2345 -> -1
ddcom603 compare 12.000 12.2345 -> -1
ddcom604 compare 12.0000 12.2345 -> -1
ddcom605 compare 12.00000 12.2345 -> -1
ddcom606 compare 12.000000 12.2345 -> -1
ddcom607 compare 12.0000000 12.2345 -> -1
ddcom608 compare 12.00000000 12.2345 -> -1
ddcom609 compare 12.000000000 12.2345 -> -1
ddcom610 compare 12.1234 12 -> 1
ddcom611 compare 12.1234 12.0 -> 1
ddcom612 compare 12.1234 12.00 -> 1
ddcom613 compare 12.1234 12.000 -> 1
ddcom614 compare 12.1234 12.0000 -> 1
ddcom615 compare 12.1234 12.00000 -> 1
ddcom616 compare 12.1234 12.000000 -> 1
ddcom617 compare 12.1234 12.0000000 -> 1
ddcom618 compare 12.1234 12.00000000 -> 1
ddcom619 compare 12.1234 12.000000000 -> 1
ddcom620 compare -12 -12.2345 -> 1
ddcom621 compare -12.0 -12.2345 -> 1
ddcom622 compare -12.00 -12.2345 -> 1
ddcom623 compare -12.000 -12.2345 -> 1
ddcom624 compare -12.0000 -12.2345 -> 1
ddcom625 compare -12.00000 -12.2345 -> 1
ddcom626 compare -12.000000 -12.2345 -> 1
ddcom627 compare -12.0000000 -12.2345 -> 1
ddcom628 compare -12.00000000 -12.2345 -> 1
ddcom629 compare -12.000000000 -12.2345 -> 1
ddcom630 compare -12.1234 -12 -> -1
ddcom631 compare -12.1234 -12.0 -> -1
ddcom632 compare -12.1234 -12.00 -> -1
ddcom633 compare -12.1234 -12.000 -> -1
ddcom634 compare -12.1234 -12.0000 -> -1
ddcom635 compare -12.1234 -12.00000 -> -1
ddcom636 compare -12.1234 -12.000000 -> -1
ddcom637 compare -12.1234 -12.0000000 -> -1
ddcom638 compare -12.1234 -12.00000000 -> -1
ddcom639 compare -12.1234 -12.000000000 -> -1
-- extended zeros
ddcom640 compare 0 0 -> 0
ddcom641 compare 0 -0 -> 0
ddcom642 compare 0 -0.0 -> 0
ddcom643 compare 0 0.0 -> 0
ddcom644 compare -0 0 -> 0
ddcom645 compare -0 -0 -> 0
ddcom646 compare -0 -0.0 -> 0
ddcom647 compare -0 0.0 -> 0
ddcom648 compare 0.0 0 -> 0
ddcom649 compare 0.0 -0 -> 0
ddcom650 compare 0.0 -0.0 -> 0
ddcom651 compare 0.0 0.0 -> 0
ddcom652 compare -0.0 0 -> 0
ddcom653 compare -0.0 -0 -> 0
ddcom654 compare -0.0 -0.0 -> 0
ddcom655 compare -0.0 0.0 -> 0
ddcom656 compare -0E1 0.0 -> 0
ddcom657 compare -0E2 0.0 -> 0
ddcom658 compare 0E1 0.0 -> 0
ddcom659 compare 0E2 0.0 -> 0
ddcom660 compare -0E1 0 -> 0
ddcom661 compare -0E2 0 -> 0
ddcom662 compare 0E1 0 -> 0
ddcom663 compare 0E2 0 -> 0
ddcom664 compare -0E1 -0E1 -> 0
ddcom665 compare -0E2 -0E1 -> 0
ddcom666 compare 0E1 -0E1 -> 0
ddcom667 compare 0E2 -0E1 -> 0
ddcom668 compare -0E1 -0E2 -> 0
ddcom669 compare -0E2 -0E2 -> 0
ddcom670 compare 0E1 -0E2 -> 0
ddcom671 compare 0E2 -0E2 -> 0
ddcom672 compare -0E1 0E1 -> 0
ddcom673 compare -0E2 0E1 -> 0
ddcom674 compare 0E1 0E1 -> 0
ddcom675 compare 0E2 0E1 -> 0
ddcom676 compare -0E1 0E2 -> 0
ddcom677 compare -0E2 0E2 -> 0
ddcom678 compare 0E1 0E2 -> 0
ddcom679 compare 0E2 0E2 -> 0
-- trailing zeros; unit-y
ddcom680 compare 12 12 -> 0
ddcom681 compare 12 12.0 -> 0
ddcom682 compare 12 12.00 -> 0
ddcom683 compare 12 12.000 -> 0
ddcom684 compare 12 12.0000 -> 0
ddcom685 compare 12 12.00000 -> 0
ddcom686 compare 12 12.000000 -> 0
ddcom687 compare 12 12.0000000 -> 0
ddcom688 compare 12 12.00000000 -> 0
ddcom689 compare 12 12.000000000 -> 0
ddcom690 compare 12 12 -> 0
ddcom691 compare 12.0 12 -> 0
ddcom692 compare 12.00 12 -> 0
ddcom693 compare 12.000 12 -> 0
ddcom694 compare 12.0000 12 -> 0
ddcom695 compare 12.00000 12 -> 0
ddcom696 compare 12.000000 12 -> 0
ddcom697 compare 12.0000000 12 -> 0
ddcom698 compare 12.00000000 12 -> 0
ddcom699 compare 12.000000000 12 -> 0
-- first, second, & last digit
ddcom700 compare 1234567890123456 1234567890123455 -> 1
ddcom701 compare 1234567890123456 1234567890123456 -> 0
ddcom702 compare 1234567890123456 1234567890123457 -> -1
ddcom703 compare 1234567890123456 0234567890123456 -> 1
ddcom704 compare 1234567890123456 1234567890123456 -> 0
ddcom705 compare 1234567890123456 2234567890123456 -> -1
ddcom706 compare 1134567890123456 1034567890123456 -> 1
ddcom707 compare 1134567890123456 1134567890123456 -> 0
ddcom708 compare 1134567890123456 1234567890123456 -> -1
-- miscellaneous
ddcom721 compare 12345678000 1 -> 1
ddcom722 compare 1 12345678000 -> -1
ddcom723 compare 1234567800 1 -> 1
ddcom724 compare 1 1234567800 -> -1
ddcom725 compare 1234567890 1 -> 1
ddcom726 compare 1 1234567890 -> -1
ddcom727 compare 1234567891 1 -> 1
ddcom728 compare 1 1234567891 -> -1
ddcom729 compare 12345678901 1 -> 1
ddcom730 compare 1 12345678901 -> -1
ddcom731 compare 1234567896 1 -> 1
ddcom732 compare 1 1234567896 -> -1
-- residue cases at lower precision
ddcom740 compare 1 0.9999999 -> 1
ddcom741 compare 1 0.999999 -> 1
ddcom742 compare 1 0.99999 -> 1
ddcom743 compare 1 1.0000 -> 0
ddcom744 compare 1 1.00001 -> -1
ddcom745 compare 1 1.000001 -> -1
ddcom746 compare 1 1.0000001 -> -1
ddcom750 compare 0.9999999 1 -> -1
ddcom751 compare 0.999999 1 -> -1
ddcom752 compare 0.99999 1 -> -1
ddcom753 compare 1.0000 1 -> 0
ddcom754 compare 1.00001 1 -> 1
ddcom755 compare 1.000001 1 -> 1
ddcom756 compare 1.0000001 1 -> 1
-- Specials
ddcom780 compare Inf -Inf -> 1
ddcom781 compare Inf -1000 -> 1
ddcom782 compare Inf -1 -> 1
ddcom783 compare Inf -0 -> 1
ddcom784 compare Inf 0 -> 1
ddcom785 compare Inf 1 -> 1
ddcom786 compare Inf 1000 -> 1
ddcom787 compare Inf Inf -> 0
ddcom788 compare -1000 Inf -> -1
ddcom789 compare -Inf Inf -> -1
ddcom790 compare -1 Inf -> -1
ddcom791 compare -0 Inf -> -1
ddcom792 compare 0 Inf -> -1
ddcom793 compare 1 Inf -> -1
ddcom794 compare 1000 Inf -> -1
ddcom795 compare Inf Inf -> 0
ddcom800 compare -Inf -Inf -> 0
ddcom801 compare -Inf -1000 -> -1
ddcom802 compare -Inf -1 -> -1
ddcom803 compare -Inf -0 -> -1
ddcom804 compare -Inf 0 -> -1
ddcom805 compare -Inf 1 -> -1
ddcom806 compare -Inf 1000 -> -1
ddcom807 compare -Inf Inf -> -1
ddcom808 compare -Inf -Inf -> 0
ddcom809 compare -1000 -Inf -> 1
ddcom810 compare -1 -Inf -> 1
ddcom811 compare -0 -Inf -> 1
ddcom812 compare 0 -Inf -> 1
ddcom813 compare 1 -Inf -> 1
ddcom814 compare 1000 -Inf -> 1
ddcom815 compare Inf -Inf -> 1
ddcom821 compare NaN -Inf -> NaN
ddcom822 compare NaN -1000 -> NaN
ddcom823 compare NaN -1 -> NaN
ddcom824 compare NaN -0 -> NaN
ddcom825 compare NaN 0 -> NaN
ddcom826 compare NaN 1 -> NaN
ddcom827 compare NaN 1000 -> NaN
ddcom828 compare NaN Inf -> NaN
ddcom829 compare NaN NaN -> NaN
ddcom830 compare -Inf NaN -> NaN
ddcom831 compare -1000 NaN -> NaN
ddcom832 compare -1 NaN -> NaN
ddcom833 compare -0 NaN -> NaN
ddcom834 compare 0 NaN -> NaN
ddcom835 compare 1 NaN -> NaN
ddcom836 compare 1000 NaN -> NaN
ddcom837 compare Inf NaN -> NaN
ddcom838 compare -NaN -NaN -> -NaN
ddcom839 compare +NaN -NaN -> NaN
ddcom840 compare -NaN +NaN -> -NaN
ddcom841 compare sNaN -Inf -> NaN Invalid_operation
ddcom842 compare sNaN -1000 -> NaN Invalid_operation
ddcom843 compare sNaN -1 -> NaN Invalid_operation
ddcom844 compare sNaN -0 -> NaN Invalid_operation
ddcom845 compare sNaN 0 -> NaN Invalid_operation
ddcom846 compare sNaN 1 -> NaN Invalid_operation
ddcom847 compare sNaN 1000 -> NaN Invalid_operation
ddcom848 compare sNaN NaN -> NaN Invalid_operation
ddcom849 compare sNaN sNaN -> NaN Invalid_operation
ddcom850 compare NaN sNaN -> NaN Invalid_operation
ddcom851 compare -Inf sNaN -> NaN Invalid_operation
ddcom852 compare -1000 sNaN -> NaN Invalid_operation
ddcom853 compare -1 sNaN -> NaN Invalid_operation
ddcom854 compare -0 sNaN -> NaN Invalid_operation
ddcom855 compare 0 sNaN -> NaN Invalid_operation
ddcom856 compare 1 sNaN -> NaN Invalid_operation
ddcom857 compare 1000 sNaN -> NaN Invalid_operation
ddcom858 compare Inf sNaN -> NaN Invalid_operation
ddcom859 compare NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddcom860 compare NaN9 -Inf -> NaN9
ddcom861 compare NaN8 999 -> NaN8
ddcom862 compare NaN77 Inf -> NaN77
ddcom863 compare -NaN67 NaN5 -> -NaN67
ddcom864 compare -Inf -NaN4 -> -NaN4
ddcom865 compare -999 -NaN33 -> -NaN33
ddcom866 compare Inf NaN2 -> NaN2
ddcom867 compare -NaN41 -NaN42 -> -NaN41
ddcom868 compare +NaN41 -NaN42 -> NaN41
ddcom869 compare -NaN41 +NaN42 -> -NaN41
ddcom870 compare +NaN41 +NaN42 -> NaN41
ddcom871 compare -sNaN99 -Inf -> -NaN99 Invalid_operation
ddcom872 compare sNaN98 -11 -> NaN98 Invalid_operation
ddcom873 compare sNaN97 NaN -> NaN97 Invalid_operation
ddcom874 compare sNaN16 sNaN94 -> NaN16 Invalid_operation
ddcom875 compare NaN85 sNaN83 -> NaN83 Invalid_operation
ddcom876 compare -Inf sNaN92 -> NaN92 Invalid_operation
ddcom877 compare 088 sNaN81 -> NaN81 Invalid_operation
ddcom878 compare Inf sNaN90 -> NaN90 Invalid_operation
ddcom879 compare NaN -sNaN89 -> -NaN89 Invalid_operation
-- wide range
ddcom880 compare +1.23456789012345E-0 9E+384 -> -1
ddcom881 compare 9E+384 +1.23456789012345E-0 -> 1
ddcom882 compare +0.100 9E-383 -> 1
ddcom883 compare 9E-383 +0.100 -> -1
ddcom885 compare -1.23456789012345E-0 9E+384 -> -1
ddcom886 compare 9E+384 -1.23456789012345E-0 -> 1
ddcom887 compare -0.100 9E-383 -> -1
ddcom888 compare 9E-383 -0.100 -> 1
-- spread zeros
ddcom900 compare 0E-383 0 -> 0
ddcom901 compare 0E-383 -0 -> 0
ddcom902 compare -0E-383 0 -> 0
ddcom903 compare -0E-383 -0 -> 0
ddcom904 compare 0E-383 0E+384 -> 0
ddcom905 compare 0E-383 -0E+384 -> 0
ddcom906 compare -0E-383 0E+384 -> 0
ddcom907 compare -0E-383 -0E+384 -> 0
ddcom908 compare 0 0E+384 -> 0
ddcom909 compare 0 -0E+384 -> 0
ddcom910 compare -0 0E+384 -> 0
ddcom911 compare -0 -0E+384 -> 0
ddcom930 compare 0E+384 0 -> 0
ddcom931 compare 0E+384 -0 -> 0
ddcom932 compare -0E+384 0 -> 0
ddcom933 compare -0E+384 -0 -> 0
ddcom934 compare 0E+384 0E-383 -> 0
ddcom935 compare 0E+384 -0E-383 -> 0
ddcom936 compare -0E+384 0E-383 -> 0
ddcom937 compare -0E+384 -0E-383 -> 0
ddcom938 compare 0 0E-383 -> 0
ddcom939 compare 0 -0E-383 -> 0
ddcom940 compare -0 0E-383 -> 0
ddcom941 compare -0 -0E-383 -> 0
-- signs
ddcom961 compare 1e+77 1e+11 -> 1
ddcom962 compare 1e+77 -1e+11 -> 1
ddcom963 compare -1e+77 1e+11 -> -1
ddcom964 compare -1e+77 -1e+11 -> -1
ddcom965 compare 1e-77 1e-11 -> -1
ddcom966 compare 1e-77 -1e-11 -> 1
ddcom967 compare -1e-77 1e-11 -> -1
ddcom968 compare -1e-77 -1e-11 -> 1
-- full alignment range, both ways
ddcomp1001 compare 1 1.000000000000000 -> 0
ddcomp1002 compare 1 1.00000000000000 -> 0
ddcomp1003 compare 1 1.0000000000000 -> 0
ddcomp1004 compare 1 1.000000000000 -> 0
ddcomp1005 compare 1 1.00000000000 -> 0
ddcomp1006 compare 1 1.0000000000 -> 0
ddcomp1007 compare 1 1.000000000 -> 0
ddcomp1008 compare 1 1.00000000 -> 0
ddcomp1009 compare 1 1.0000000 -> 0
ddcomp1010 compare 1 1.000000 -> 0
ddcomp1011 compare 1 1.00000 -> 0
ddcomp1012 compare 1 1.0000 -> 0
ddcomp1013 compare 1 1.000 -> 0
ddcomp1014 compare 1 1.00 -> 0
ddcomp1015 compare 1 1.0 -> 0
ddcomp1021 compare 1.000000000000000 1 -> 0
ddcomp1022 compare 1.00000000000000 1 -> 0
ddcomp1023 compare 1.0000000000000 1 -> 0
ddcomp1024 compare 1.000000000000 1 -> 0
ddcomp1025 compare 1.00000000000 1 -> 0
ddcomp1026 compare 1.0000000000 1 -> 0
ddcomp1027 compare 1.000000000 1 -> 0
ddcomp1028 compare 1.00000000 1 -> 0
ddcomp1029 compare 1.0000000 1 -> 0
ddcomp1030 compare 1.000000 1 -> 0
ddcomp1031 compare 1.00000 1 -> 0
ddcomp1032 compare 1.0000 1 -> 0
ddcomp1033 compare 1.000 1 -> 0
ddcomp1034 compare 1.00 1 -> 0
ddcomp1035 compare 1.0 1 -> 0
-- check MSD always detected non-zero
ddcomp1040 compare 0 0.000000000000000 -> 0
ddcomp1041 compare 0 1.000000000000000 -> -1
ddcomp1042 compare 0 2.000000000000000 -> -1
ddcomp1043 compare 0 3.000000000000000 -> -1
ddcomp1044 compare 0 4.000000000000000 -> -1
ddcomp1045 compare 0 5.000000000000000 -> -1
ddcomp1046 compare 0 6.000000000000000 -> -1
ddcomp1047 compare 0 7.000000000000000 -> -1
ddcomp1048 compare 0 8.000000000000000 -> -1
ddcomp1049 compare 0 9.000000000000000 -> -1
ddcomp1050 compare 0.000000000000000 0 -> 0
ddcomp1051 compare 1.000000000000000 0 -> 1
ddcomp1052 compare 2.000000000000000 0 -> 1
ddcomp1053 compare 3.000000000000000 0 -> 1
ddcomp1054 compare 4.000000000000000 0 -> 1
ddcomp1055 compare 5.000000000000000 0 -> 1
ddcomp1056 compare 6.000000000000000 0 -> 1
ddcomp1057 compare 7.000000000000000 0 -> 1
ddcomp1058 compare 8.000000000000000 0 -> 1
ddcomp1059 compare 9.000000000000000 0 -> 1
-- Null tests
ddcom9990 compare 10 # -> NaN Invalid_operation
ddcom9991 compare # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,647 @@
------------------------------------------------------------------------
-- ddCompareSig.decTest -- decDouble comparison; all NaNs signal --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necessary).
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
ddcms001 comparesig -2 -2 -> 0
ddcms002 comparesig -2 -1 -> -1
ddcms003 comparesig -2 0 -> -1
ddcms004 comparesig -2 1 -> -1
ddcms005 comparesig -2 2 -> -1
ddcms006 comparesig -1 -2 -> 1
ddcms007 comparesig -1 -1 -> 0
ddcms008 comparesig -1 0 -> -1
ddcms009 comparesig -1 1 -> -1
ddcms010 comparesig -1 2 -> -1
ddcms011 comparesig 0 -2 -> 1
ddcms012 comparesig 0 -1 -> 1
ddcms013 comparesig 0 0 -> 0
ddcms014 comparesig 0 1 -> -1
ddcms015 comparesig 0 2 -> -1
ddcms016 comparesig 1 -2 -> 1
ddcms017 comparesig 1 -1 -> 1
ddcms018 comparesig 1 0 -> 1
ddcms019 comparesig 1 1 -> 0
ddcms020 comparesig 1 2 -> -1
ddcms021 comparesig 2 -2 -> 1
ddcms022 comparesig 2 -1 -> 1
ddcms023 comparesig 2 0 -> 1
ddcms025 comparesig 2 1 -> 1
ddcms026 comparesig 2 2 -> 0
ddcms031 comparesig -20 -20 -> 0
ddcms032 comparesig -20 -10 -> -1
ddcms033 comparesig -20 00 -> -1
ddcms034 comparesig -20 10 -> -1
ddcms035 comparesig -20 20 -> -1
ddcms036 comparesig -10 -20 -> 1
ddcms037 comparesig -10 -10 -> 0
ddcms038 comparesig -10 00 -> -1
ddcms039 comparesig -10 10 -> -1
ddcms040 comparesig -10 20 -> -1
ddcms041 comparesig 00 -20 -> 1
ddcms042 comparesig 00 -10 -> 1
ddcms043 comparesig 00 00 -> 0
ddcms044 comparesig 00 10 -> -1
ddcms045 comparesig 00 20 -> -1
ddcms046 comparesig 10 -20 -> 1
ddcms047 comparesig 10 -10 -> 1
ddcms048 comparesig 10 00 -> 1
ddcms049 comparesig 10 10 -> 0
ddcms050 comparesig 10 20 -> -1
ddcms051 comparesig 20 -20 -> 1
ddcms052 comparesig 20 -10 -> 1
ddcms053 comparesig 20 00 -> 1
ddcms055 comparesig 20 10 -> 1
ddcms056 comparesig 20 20 -> 0
ddcms061 comparesig -2.0 -2.0 -> 0
ddcms062 comparesig -2.0 -1.0 -> -1
ddcms063 comparesig -2.0 0.0 -> -1
ddcms064 comparesig -2.0 1.0 -> -1
ddcms065 comparesig -2.0 2.0 -> -1
ddcms066 comparesig -1.0 -2.0 -> 1
ddcms067 comparesig -1.0 -1.0 -> 0
ddcms068 comparesig -1.0 0.0 -> -1
ddcms069 comparesig -1.0 1.0 -> -1
ddcms070 comparesig -1.0 2.0 -> -1
ddcms071 comparesig 0.0 -2.0 -> 1
ddcms072 comparesig 0.0 -1.0 -> 1
ddcms073 comparesig 0.0 0.0 -> 0
ddcms074 comparesig 0.0 1.0 -> -1
ddcms075 comparesig 0.0 2.0 -> -1
ddcms076 comparesig 1.0 -2.0 -> 1
ddcms077 comparesig 1.0 -1.0 -> 1
ddcms078 comparesig 1.0 0.0 -> 1
ddcms079 comparesig 1.0 1.0 -> 0
ddcms080 comparesig 1.0 2.0 -> -1
ddcms081 comparesig 2.0 -2.0 -> 1
ddcms082 comparesig 2.0 -1.0 -> 1
ddcms083 comparesig 2.0 0.0 -> 1
ddcms085 comparesig 2.0 1.0 -> 1
ddcms086 comparesig 2.0 2.0 -> 0
-- now some cases which might overflow if subtract were used
ddcms090 comparesig 9.999999999999999E+384 9.999999999999999E+384 -> 0
ddcms091 comparesig -9.999999999999999E+384 9.999999999999999E+384 -> -1
ddcms092 comparesig 9.999999999999999E+384 -9.999999999999999E+384 -> 1
ddcms093 comparesig -9.999999999999999E+384 -9.999999999999999E+384 -> 0
-- some differing length/exponent cases
ddcms100 comparesig 7.0 7.0 -> 0
ddcms101 comparesig 7.0 7 -> 0
ddcms102 comparesig 7 7.0 -> 0
ddcms103 comparesig 7E+0 7.0 -> 0
ddcms104 comparesig 70E-1 7.0 -> 0
ddcms105 comparesig 0.7E+1 7 -> 0
ddcms106 comparesig 70E-1 7 -> 0
ddcms107 comparesig 7.0 7E+0 -> 0
ddcms108 comparesig 7.0 70E-1 -> 0
ddcms109 comparesig 7 0.7E+1 -> 0
ddcms110 comparesig 7 70E-1 -> 0
ddcms120 comparesig 8.0 7.0 -> 1
ddcms121 comparesig 8.0 7 -> 1
ddcms122 comparesig 8 7.0 -> 1
ddcms123 comparesig 8E+0 7.0 -> 1
ddcms124 comparesig 80E-1 7.0 -> 1
ddcms125 comparesig 0.8E+1 7 -> 1
ddcms126 comparesig 80E-1 7 -> 1
ddcms127 comparesig 8.0 7E+0 -> 1
ddcms128 comparesig 8.0 70E-1 -> 1
ddcms129 comparesig 8 0.7E+1 -> 1
ddcms130 comparesig 8 70E-1 -> 1
ddcms140 comparesig 8.0 9.0 -> -1
ddcms141 comparesig 8.0 9 -> -1
ddcms142 comparesig 8 9.0 -> -1
ddcms143 comparesig 8E+0 9.0 -> -1
ddcms144 comparesig 80E-1 9.0 -> -1
ddcms145 comparesig 0.8E+1 9 -> -1
ddcms146 comparesig 80E-1 9 -> -1
ddcms147 comparesig 8.0 9E+0 -> -1
ddcms148 comparesig 8.0 90E-1 -> -1
ddcms149 comparesig 8 0.9E+1 -> -1
ddcms150 comparesig 8 90E-1 -> -1
-- and again, with sign changes -+ ..
ddcms200 comparesig -7.0 7.0 -> -1
ddcms201 comparesig -7.0 7 -> -1
ddcms202 comparesig -7 7.0 -> -1
ddcms203 comparesig -7E+0 7.0 -> -1
ddcms204 comparesig -70E-1 7.0 -> -1
ddcms205 comparesig -0.7E+1 7 -> -1
ddcms206 comparesig -70E-1 7 -> -1
ddcms207 comparesig -7.0 7E+0 -> -1
ddcms208 comparesig -7.0 70E-1 -> -1
ddcms209 comparesig -7 0.7E+1 -> -1
ddcms210 comparesig -7 70E-1 -> -1
ddcms220 comparesig -8.0 7.0 -> -1
ddcms221 comparesig -8.0 7 -> -1
ddcms222 comparesig -8 7.0 -> -1
ddcms223 comparesig -8E+0 7.0 -> -1
ddcms224 comparesig -80E-1 7.0 -> -1
ddcms225 comparesig -0.8E+1 7 -> -1
ddcms226 comparesig -80E-1 7 -> -1
ddcms227 comparesig -8.0 7E+0 -> -1
ddcms228 comparesig -8.0 70E-1 -> -1
ddcms229 comparesig -8 0.7E+1 -> -1
ddcms230 comparesig -8 70E-1 -> -1
ddcms240 comparesig -8.0 9.0 -> -1
ddcms241 comparesig -8.0 9 -> -1
ddcms242 comparesig -8 9.0 -> -1
ddcms243 comparesig -8E+0 9.0 -> -1
ddcms244 comparesig -80E-1 9.0 -> -1
ddcms245 comparesig -0.8E+1 9 -> -1
ddcms246 comparesig -80E-1 9 -> -1
ddcms247 comparesig -8.0 9E+0 -> -1
ddcms248 comparesig -8.0 90E-1 -> -1
ddcms249 comparesig -8 0.9E+1 -> -1
ddcms250 comparesig -8 90E-1 -> -1
-- and again, with sign changes +- ..
ddcms300 comparesig 7.0 -7.0 -> 1
ddcms301 comparesig 7.0 -7 -> 1
ddcms302 comparesig 7 -7.0 -> 1
ddcms303 comparesig 7E+0 -7.0 -> 1
ddcms304 comparesig 70E-1 -7.0 -> 1
ddcms305 comparesig .7E+1 -7 -> 1
ddcms306 comparesig 70E-1 -7 -> 1
ddcms307 comparesig 7.0 -7E+0 -> 1
ddcms308 comparesig 7.0 -70E-1 -> 1
ddcms309 comparesig 7 -.7E+1 -> 1
ddcms310 comparesig 7 -70E-1 -> 1
ddcms320 comparesig 8.0 -7.0 -> 1
ddcms321 comparesig 8.0 -7 -> 1
ddcms322 comparesig 8 -7.0 -> 1
ddcms323 comparesig 8E+0 -7.0 -> 1
ddcms324 comparesig 80E-1 -7.0 -> 1
ddcms325 comparesig .8E+1 -7 -> 1
ddcms326 comparesig 80E-1 -7 -> 1
ddcms327 comparesig 8.0 -7E+0 -> 1
ddcms328 comparesig 8.0 -70E-1 -> 1
ddcms329 comparesig 8 -.7E+1 -> 1
ddcms330 comparesig 8 -70E-1 -> 1
ddcms340 comparesig 8.0 -9.0 -> 1
ddcms341 comparesig 8.0 -9 -> 1
ddcms342 comparesig 8 -9.0 -> 1
ddcms343 comparesig 8E+0 -9.0 -> 1
ddcms344 comparesig 80E-1 -9.0 -> 1
ddcms345 comparesig .8E+1 -9 -> 1
ddcms346 comparesig 80E-1 -9 -> 1
ddcms347 comparesig 8.0 -9E+0 -> 1
ddcms348 comparesig 8.0 -90E-1 -> 1
ddcms349 comparesig 8 -.9E+1 -> 1
ddcms350 comparesig 8 -90E-1 -> 1
-- and again, with sign changes -- ..
ddcms400 comparesig -7.0 -7.0 -> 0
ddcms401 comparesig -7.0 -7 -> 0
ddcms402 comparesig -7 -7.0 -> 0
ddcms403 comparesig -7E+0 -7.0 -> 0
ddcms404 comparesig -70E-1 -7.0 -> 0
ddcms405 comparesig -.7E+1 -7 -> 0
ddcms406 comparesig -70E-1 -7 -> 0
ddcms407 comparesig -7.0 -7E+0 -> 0
ddcms408 comparesig -7.0 -70E-1 -> 0
ddcms409 comparesig -7 -.7E+1 -> 0
ddcms410 comparesig -7 -70E-1 -> 0
ddcms420 comparesig -8.0 -7.0 -> -1
ddcms421 comparesig -8.0 -7 -> -1
ddcms422 comparesig -8 -7.0 -> -1
ddcms423 comparesig -8E+0 -7.0 -> -1
ddcms424 comparesig -80E-1 -7.0 -> -1
ddcms425 comparesig -.8E+1 -7 -> -1
ddcms426 comparesig -80E-1 -7 -> -1
ddcms427 comparesig -8.0 -7E+0 -> -1
ddcms428 comparesig -8.0 -70E-1 -> -1
ddcms429 comparesig -8 -.7E+1 -> -1
ddcms430 comparesig -8 -70E-1 -> -1
ddcms440 comparesig -8.0 -9.0 -> 1
ddcms441 comparesig -8.0 -9 -> 1
ddcms442 comparesig -8 -9.0 -> 1
ddcms443 comparesig -8E+0 -9.0 -> 1
ddcms444 comparesig -80E-1 -9.0 -> 1
ddcms445 comparesig -.8E+1 -9 -> 1
ddcms446 comparesig -80E-1 -9 -> 1
ddcms447 comparesig -8.0 -9E+0 -> 1
ddcms448 comparesig -8.0 -90E-1 -> 1
ddcms449 comparesig -8 -.9E+1 -> 1
ddcms450 comparesig -8 -90E-1 -> 1
-- testcases that subtract to lots of zeros at boundaries [pgr]
ddcms473 comparesig 123.4560000000000E-89 123.456E-89 -> 0
ddcms474 comparesig 123.456000000000E+89 123.456E+89 -> 0
ddcms475 comparesig 123.45600000000E-89 123.456E-89 -> 0
ddcms476 comparesig 123.4560000000E+89 123.456E+89 -> 0
ddcms477 comparesig 123.456000000E-89 123.456E-89 -> 0
ddcms478 comparesig 123.45600000E+89 123.456E+89 -> 0
ddcms479 comparesig 123.4560000E-89 123.456E-89 -> 0
ddcms480 comparesig 123.456000E+89 123.456E+89 -> 0
ddcms481 comparesig 123.45600E-89 123.456E-89 -> 0
ddcms482 comparesig 123.4560E+89 123.456E+89 -> 0
ddcms483 comparesig 123.456E-89 123.456E-89 -> 0
ddcms487 comparesig 123.456E+89 123.4560000000000E+89 -> 0
ddcms488 comparesig 123.456E-89 123.456000000000E-89 -> 0
ddcms489 comparesig 123.456E+89 123.45600000000E+89 -> 0
ddcms490 comparesig 123.456E-89 123.4560000000E-89 -> 0
ddcms491 comparesig 123.456E+89 123.456000000E+89 -> 0
ddcms492 comparesig 123.456E-89 123.45600000E-89 -> 0
ddcms493 comparesig 123.456E+89 123.4560000E+89 -> 0
ddcms494 comparesig 123.456E-89 123.456000E-89 -> 0
ddcms495 comparesig 123.456E+89 123.45600E+89 -> 0
ddcms496 comparesig 123.456E-89 123.4560E-89 -> 0
ddcms497 comparesig 123.456E+89 123.456E+89 -> 0
-- wide-ranging, around precision; signs equal
ddcms500 comparesig 1 1E-15 -> 1
ddcms501 comparesig 1 1E-14 -> 1
ddcms502 comparesig 1 1E-13 -> 1
ddcms503 comparesig 1 1E-12 -> 1
ddcms504 comparesig 1 1E-11 -> 1
ddcms505 comparesig 1 1E-10 -> 1
ddcms506 comparesig 1 1E-9 -> 1
ddcms507 comparesig 1 1E-8 -> 1
ddcms508 comparesig 1 1E-7 -> 1
ddcms509 comparesig 1 1E-6 -> 1
ddcms510 comparesig 1 1E-5 -> 1
ddcms511 comparesig 1 1E-4 -> 1
ddcms512 comparesig 1 1E-3 -> 1
ddcms513 comparesig 1 1E-2 -> 1
ddcms514 comparesig 1 1E-1 -> 1
ddcms515 comparesig 1 1E-0 -> 0
ddcms516 comparesig 1 1E+1 -> -1
ddcms517 comparesig 1 1E+2 -> -1
ddcms518 comparesig 1 1E+3 -> -1
ddcms519 comparesig 1 1E+4 -> -1
ddcms521 comparesig 1 1E+5 -> -1
ddcms522 comparesig 1 1E+6 -> -1
ddcms523 comparesig 1 1E+7 -> -1
ddcms524 comparesig 1 1E+8 -> -1
ddcms525 comparesig 1 1E+9 -> -1
ddcms526 comparesig 1 1E+10 -> -1
ddcms527 comparesig 1 1E+11 -> -1
ddcms528 comparesig 1 1E+12 -> -1
ddcms529 comparesig 1 1E+13 -> -1
ddcms530 comparesig 1 1E+14 -> -1
ddcms531 comparesig 1 1E+15 -> -1
-- LR swap
ddcms540 comparesig 1E-15 1 -> -1
ddcms541 comparesig 1E-14 1 -> -1
ddcms542 comparesig 1E-13 1 -> -1
ddcms543 comparesig 1E-12 1 -> -1
ddcms544 comparesig 1E-11 1 -> -1
ddcms545 comparesig 1E-10 1 -> -1
ddcms546 comparesig 1E-9 1 -> -1
ddcms547 comparesig 1E-8 1 -> -1
ddcms548 comparesig 1E-7 1 -> -1
ddcms549 comparesig 1E-6 1 -> -1
ddcms550 comparesig 1E-5 1 -> -1
ddcms551 comparesig 1E-4 1 -> -1
ddcms552 comparesig 1E-3 1 -> -1
ddcms553 comparesig 1E-2 1 -> -1
ddcms554 comparesig 1E-1 1 -> -1
ddcms555 comparesig 1E-0 1 -> 0
ddcms556 comparesig 1E+1 1 -> 1
ddcms557 comparesig 1E+2 1 -> 1
ddcms558 comparesig 1E+3 1 -> 1
ddcms559 comparesig 1E+4 1 -> 1
ddcms561 comparesig 1E+5 1 -> 1
ddcms562 comparesig 1E+6 1 -> 1
ddcms563 comparesig 1E+7 1 -> 1
ddcms564 comparesig 1E+8 1 -> 1
ddcms565 comparesig 1E+9 1 -> 1
ddcms566 comparesig 1E+10 1 -> 1
ddcms567 comparesig 1E+11 1 -> 1
ddcms568 comparesig 1E+12 1 -> 1
ddcms569 comparesig 1E+13 1 -> 1
ddcms570 comparesig 1E+14 1 -> 1
ddcms571 comparesig 1E+15 1 -> 1
-- similar with a useful coefficient, one side only
ddcms580 comparesig 0.000000987654321 1E-15 -> 1
ddcms581 comparesig 0.000000987654321 1E-14 -> 1
ddcms582 comparesig 0.000000987654321 1E-13 -> 1
ddcms583 comparesig 0.000000987654321 1E-12 -> 1
ddcms584 comparesig 0.000000987654321 1E-11 -> 1
ddcms585 comparesig 0.000000987654321 1E-10 -> 1
ddcms586 comparesig 0.000000987654321 1E-9 -> 1
ddcms587 comparesig 0.000000987654321 1E-8 -> 1
ddcms588 comparesig 0.000000987654321 1E-7 -> 1
ddcms589 comparesig 0.000000987654321 1E-6 -> -1
ddcms590 comparesig 0.000000987654321 1E-5 -> -1
ddcms591 comparesig 0.000000987654321 1E-4 -> -1
ddcms592 comparesig 0.000000987654321 1E-3 -> -1
ddcms593 comparesig 0.000000987654321 1E-2 -> -1
ddcms594 comparesig 0.000000987654321 1E-1 -> -1
ddcms595 comparesig 0.000000987654321 1E-0 -> -1
ddcms596 comparesig 0.000000987654321 1E+1 -> -1
ddcms597 comparesig 0.000000987654321 1E+2 -> -1
ddcms598 comparesig 0.000000987654321 1E+3 -> -1
ddcms599 comparesig 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
ddcms600 comparesig 12 12.2345 -> -1
ddcms601 comparesig 12.0 12.2345 -> -1
ddcms602 comparesig 12.00 12.2345 -> -1
ddcms603 comparesig 12.000 12.2345 -> -1
ddcms604 comparesig 12.0000 12.2345 -> -1
ddcms605 comparesig 12.00000 12.2345 -> -1
ddcms606 comparesig 12.000000 12.2345 -> -1
ddcms607 comparesig 12.0000000 12.2345 -> -1
ddcms608 comparesig 12.00000000 12.2345 -> -1
ddcms609 comparesig 12.000000000 12.2345 -> -1
ddcms610 comparesig 12.1234 12 -> 1
ddcms611 comparesig 12.1234 12.0 -> 1
ddcms612 comparesig 12.1234 12.00 -> 1
ddcms613 comparesig 12.1234 12.000 -> 1
ddcms614 comparesig 12.1234 12.0000 -> 1
ddcms615 comparesig 12.1234 12.00000 -> 1
ddcms616 comparesig 12.1234 12.000000 -> 1
ddcms617 comparesig 12.1234 12.0000000 -> 1
ddcms618 comparesig 12.1234 12.00000000 -> 1
ddcms619 comparesig 12.1234 12.000000000 -> 1
ddcms620 comparesig -12 -12.2345 -> 1
ddcms621 comparesig -12.0 -12.2345 -> 1
ddcms622 comparesig -12.00 -12.2345 -> 1
ddcms623 comparesig -12.000 -12.2345 -> 1
ddcms624 comparesig -12.0000 -12.2345 -> 1
ddcms625 comparesig -12.00000 -12.2345 -> 1
ddcms626 comparesig -12.000000 -12.2345 -> 1
ddcms627 comparesig -12.0000000 -12.2345 -> 1
ddcms628 comparesig -12.00000000 -12.2345 -> 1
ddcms629 comparesig -12.000000000 -12.2345 -> 1
ddcms630 comparesig -12.1234 -12 -> -1
ddcms631 comparesig -12.1234 -12.0 -> -1
ddcms632 comparesig -12.1234 -12.00 -> -1
ddcms633 comparesig -12.1234 -12.000 -> -1
ddcms634 comparesig -12.1234 -12.0000 -> -1
ddcms635 comparesig -12.1234 -12.00000 -> -1
ddcms636 comparesig -12.1234 -12.000000 -> -1
ddcms637 comparesig -12.1234 -12.0000000 -> -1
ddcms638 comparesig -12.1234 -12.00000000 -> -1
ddcms639 comparesig -12.1234 -12.000000000 -> -1
-- extended zeros
ddcms640 comparesig 0 0 -> 0
ddcms641 comparesig 0 -0 -> 0
ddcms642 comparesig 0 -0.0 -> 0
ddcms643 comparesig 0 0.0 -> 0
ddcms644 comparesig -0 0 -> 0
ddcms645 comparesig -0 -0 -> 0
ddcms646 comparesig -0 -0.0 -> 0
ddcms647 comparesig -0 0.0 -> 0
ddcms648 comparesig 0.0 0 -> 0
ddcms649 comparesig 0.0 -0 -> 0
ddcms650 comparesig 0.0 -0.0 -> 0
ddcms651 comparesig 0.0 0.0 -> 0
ddcms652 comparesig -0.0 0 -> 0
ddcms653 comparesig -0.0 -0 -> 0
ddcms654 comparesig -0.0 -0.0 -> 0
ddcms655 comparesig -0.0 0.0 -> 0
ddcms656 comparesig -0E1 0.0 -> 0
ddcms657 comparesig -0E2 0.0 -> 0
ddcms658 comparesig 0E1 0.0 -> 0
ddcms659 comparesig 0E2 0.0 -> 0
ddcms660 comparesig -0E1 0 -> 0
ddcms661 comparesig -0E2 0 -> 0
ddcms662 comparesig 0E1 0 -> 0
ddcms663 comparesig 0E2 0 -> 0
ddcms664 comparesig -0E1 -0E1 -> 0
ddcms665 comparesig -0E2 -0E1 -> 0
ddcms666 comparesig 0E1 -0E1 -> 0
ddcms667 comparesig 0E2 -0E1 -> 0
ddcms668 comparesig -0E1 -0E2 -> 0
ddcms669 comparesig -0E2 -0E2 -> 0
ddcms670 comparesig 0E1 -0E2 -> 0
ddcms671 comparesig 0E2 -0E2 -> 0
ddcms672 comparesig -0E1 0E1 -> 0
ddcms673 comparesig -0E2 0E1 -> 0
ddcms674 comparesig 0E1 0E1 -> 0
ddcms675 comparesig 0E2 0E1 -> 0
ddcms676 comparesig -0E1 0E2 -> 0
ddcms677 comparesig -0E2 0E2 -> 0
ddcms678 comparesig 0E1 0E2 -> 0
ddcms679 comparesig 0E2 0E2 -> 0
-- trailing zeros; unit-y
ddcms680 comparesig 12 12 -> 0
ddcms681 comparesig 12 12.0 -> 0
ddcms682 comparesig 12 12.00 -> 0
ddcms683 comparesig 12 12.000 -> 0
ddcms684 comparesig 12 12.0000 -> 0
ddcms685 comparesig 12 12.00000 -> 0
ddcms686 comparesig 12 12.000000 -> 0
ddcms687 comparesig 12 12.0000000 -> 0
ddcms688 comparesig 12 12.00000000 -> 0
ddcms689 comparesig 12 12.000000000 -> 0
ddcms690 comparesig 12 12 -> 0
ddcms691 comparesig 12.0 12 -> 0
ddcms692 comparesig 12.00 12 -> 0
ddcms693 comparesig 12.000 12 -> 0
ddcms694 comparesig 12.0000 12 -> 0
ddcms695 comparesig 12.00000 12 -> 0
ddcms696 comparesig 12.000000 12 -> 0
ddcms697 comparesig 12.0000000 12 -> 0
ddcms698 comparesig 12.00000000 12 -> 0
ddcms699 comparesig 12.000000000 12 -> 0
-- first, second, & last digit
ddcms700 comparesig 1234567890123456 1234567890123455 -> 1
ddcms701 comparesig 1234567890123456 1234567890123456 -> 0
ddcms702 comparesig 1234567890123456 1234567890123457 -> -1
ddcms703 comparesig 1234567890123456 0234567890123456 -> 1
ddcms704 comparesig 1234567890123456 1234567890123456 -> 0
ddcms705 comparesig 1234567890123456 2234567890123456 -> -1
ddcms706 comparesig 1134567890123456 1034567890123456 -> 1
ddcms707 comparesig 1134567890123456 1134567890123456 -> 0
ddcms708 comparesig 1134567890123456 1234567890123456 -> -1
-- miscellaneous
ddcms721 comparesig 12345678000 1 -> 1
ddcms722 comparesig 1 12345678000 -> -1
ddcms723 comparesig 1234567800 1 -> 1
ddcms724 comparesig 1 1234567800 -> -1
ddcms725 comparesig 1234567890 1 -> 1
ddcms726 comparesig 1 1234567890 -> -1
ddcms727 comparesig 1234567891 1 -> 1
ddcms728 comparesig 1 1234567891 -> -1
ddcms729 comparesig 12345678901 1 -> 1
ddcms730 comparesig 1 12345678901 -> -1
ddcms731 comparesig 1234567896 1 -> 1
ddcms732 comparesig 1 1234567896 -> -1
-- residue cases at lower precision
ddcms740 comparesig 1 0.9999999 -> 1
ddcms741 comparesig 1 0.999999 -> 1
ddcms742 comparesig 1 0.99999 -> 1
ddcms743 comparesig 1 1.0000 -> 0
ddcms744 comparesig 1 1.00001 -> -1
ddcms745 comparesig 1 1.000001 -> -1
ddcms746 comparesig 1 1.0000001 -> -1
ddcms750 comparesig 0.9999999 1 -> -1
ddcms751 comparesig 0.999999 1 -> -1
ddcms752 comparesig 0.99999 1 -> -1
ddcms753 comparesig 1.0000 1 -> 0
ddcms754 comparesig 1.00001 1 -> 1
ddcms755 comparesig 1.000001 1 -> 1
ddcms756 comparesig 1.0000001 1 -> 1
-- Specials
ddcms780 comparesig Inf -Inf -> 1
ddcms781 comparesig Inf -1000 -> 1
ddcms782 comparesig Inf -1 -> 1
ddcms783 comparesig Inf -0 -> 1
ddcms784 comparesig Inf 0 -> 1
ddcms785 comparesig Inf 1 -> 1
ddcms786 comparesig Inf 1000 -> 1
ddcms787 comparesig Inf Inf -> 0
ddcms788 comparesig -1000 Inf -> -1
ddcms789 comparesig -Inf Inf -> -1
ddcms790 comparesig -1 Inf -> -1
ddcms791 comparesig -0 Inf -> -1
ddcms792 comparesig 0 Inf -> -1
ddcms793 comparesig 1 Inf -> -1
ddcms794 comparesig 1000 Inf -> -1
ddcms795 comparesig Inf Inf -> 0
ddcms800 comparesig -Inf -Inf -> 0
ddcms801 comparesig -Inf -1000 -> -1
ddcms802 comparesig -Inf -1 -> -1
ddcms803 comparesig -Inf -0 -> -1
ddcms804 comparesig -Inf 0 -> -1
ddcms805 comparesig -Inf 1 -> -1
ddcms806 comparesig -Inf 1000 -> -1
ddcms807 comparesig -Inf Inf -> -1
ddcms808 comparesig -Inf -Inf -> 0
ddcms809 comparesig -1000 -Inf -> 1
ddcms810 comparesig -1 -Inf -> 1
ddcms811 comparesig -0 -Inf -> 1
ddcms812 comparesig 0 -Inf -> 1
ddcms813 comparesig 1 -Inf -> 1
ddcms814 comparesig 1000 -Inf -> 1
ddcms815 comparesig Inf -Inf -> 1
ddcms821 comparesig NaN -Inf -> NaN Invalid_operation
ddcms822 comparesig NaN -1000 -> NaN Invalid_operation
ddcms823 comparesig NaN -1 -> NaN Invalid_operation
ddcms824 comparesig NaN -0 -> NaN Invalid_operation
ddcms825 comparesig NaN 0 -> NaN Invalid_operation
ddcms826 comparesig NaN 1 -> NaN Invalid_operation
ddcms827 comparesig NaN 1000 -> NaN Invalid_operation
ddcms828 comparesig NaN Inf -> NaN Invalid_operation
ddcms829 comparesig NaN NaN -> NaN Invalid_operation
ddcms830 comparesig -Inf NaN -> NaN Invalid_operation
ddcms831 comparesig -1000 NaN -> NaN Invalid_operation
ddcms832 comparesig -1 NaN -> NaN Invalid_operation
ddcms833 comparesig -0 NaN -> NaN Invalid_operation
ddcms834 comparesig 0 NaN -> NaN Invalid_operation
ddcms835 comparesig 1 NaN -> NaN Invalid_operation
ddcms836 comparesig 1000 NaN -> NaN Invalid_operation
ddcms837 comparesig Inf NaN -> NaN Invalid_operation
ddcms838 comparesig -NaN -NaN -> -NaN Invalid_operation
ddcms839 comparesig +NaN -NaN -> NaN Invalid_operation
ddcms840 comparesig -NaN +NaN -> -NaN Invalid_operation
ddcms841 comparesig sNaN -Inf -> NaN Invalid_operation
ddcms842 comparesig sNaN -1000 -> NaN Invalid_operation
ddcms843 comparesig sNaN -1 -> NaN Invalid_operation
ddcms844 comparesig sNaN -0 -> NaN Invalid_operation
ddcms845 comparesig sNaN 0 -> NaN Invalid_operation
ddcms846 comparesig sNaN 1 -> NaN Invalid_operation
ddcms847 comparesig sNaN 1000 -> NaN Invalid_operation
ddcms848 comparesig sNaN NaN -> NaN Invalid_operation
ddcms849 comparesig sNaN sNaN -> NaN Invalid_operation
ddcms850 comparesig NaN sNaN -> NaN Invalid_operation
ddcms851 comparesig -Inf sNaN -> NaN Invalid_operation
ddcms852 comparesig -1000 sNaN -> NaN Invalid_operation
ddcms853 comparesig -1 sNaN -> NaN Invalid_operation
ddcms854 comparesig -0 sNaN -> NaN Invalid_operation
ddcms855 comparesig 0 sNaN -> NaN Invalid_operation
ddcms856 comparesig 1 sNaN -> NaN Invalid_operation
ddcms857 comparesig 1000 sNaN -> NaN Invalid_operation
ddcms858 comparesig Inf sNaN -> NaN Invalid_operation
ddcms859 comparesig NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddcms860 comparesig NaN9 -Inf -> NaN9 Invalid_operation
ddcms861 comparesig NaN8 999 -> NaN8 Invalid_operation
ddcms862 comparesig NaN77 Inf -> NaN77 Invalid_operation
ddcms863 comparesig -NaN67 NaN5 -> -NaN67 Invalid_operation
ddcms864 comparesig -Inf -NaN4 -> -NaN4 Invalid_operation
ddcms865 comparesig -999 -NaN33 -> -NaN33 Invalid_operation
ddcms866 comparesig Inf NaN2 -> NaN2 Invalid_operation
ddcms867 comparesig -NaN41 -NaN42 -> -NaN41 Invalid_operation
ddcms868 comparesig +NaN41 -NaN42 -> NaN41 Invalid_operation
ddcms869 comparesig -NaN41 +NaN42 -> -NaN41 Invalid_operation
ddcms870 comparesig +NaN41 +NaN42 -> NaN41 Invalid_operation
ddcms871 comparesig -sNaN99 -Inf -> -NaN99 Invalid_operation
ddcms872 comparesig sNaN98 -11 -> NaN98 Invalid_operation
ddcms873 comparesig sNaN97 NaN -> NaN97 Invalid_operation
ddcms874 comparesig sNaN16 sNaN94 -> NaN16 Invalid_operation
ddcms875 comparesig NaN85 sNaN83 -> NaN83 Invalid_operation
ddcms876 comparesig -Inf sNaN92 -> NaN92 Invalid_operation
ddcms877 comparesig 088 sNaN81 -> NaN81 Invalid_operation
ddcms878 comparesig Inf sNaN90 -> NaN90 Invalid_operation
ddcms879 comparesig NaN -sNaN89 -> -NaN89 Invalid_operation
-- wide range
ddcms880 comparesig +1.23456789012345E-0 9E+384 -> -1
ddcms881 comparesig 9E+384 +1.23456789012345E-0 -> 1
ddcms882 comparesig +0.100 9E-383 -> 1
ddcms883 comparesig 9E-383 +0.100 -> -1
ddcms885 comparesig -1.23456789012345E-0 9E+384 -> -1
ddcms886 comparesig 9E+384 -1.23456789012345E-0 -> 1
ddcms887 comparesig -0.100 9E-383 -> -1
ddcms888 comparesig 9E-383 -0.100 -> 1
-- signs
ddcms901 comparesig 1e+77 1e+11 -> 1
ddcms902 comparesig 1e+77 -1e+11 -> 1
ddcms903 comparesig -1e+77 1e+11 -> -1
ddcms904 comparesig -1e+77 -1e+11 -> -1
ddcms905 comparesig 1e-77 1e-11 -> -1
ddcms906 comparesig 1e-77 -1e-11 -> 1
ddcms907 comparesig -1e-77 1e-11 -> -1
ddcms908 comparesig -1e-77 -1e-11 -> 1
-- Null tests
ddcms990 comparesig 10 # -> NaN Invalid_operation
ddcms991 comparesig # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,706 @@
------------------------------------------------------------------------
-- ddCompareTotal.decTest -- decDouble comparison using total ordering--
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necessary).
-- Similarly, comparetotal will have some radically different paths
-- than compare.
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
ddcot001 comparetotal -2 -2 -> 0
ddcot002 comparetotal -2 -1 -> -1
ddcot003 comparetotal -2 0 -> -1
ddcot004 comparetotal -2 1 -> -1
ddcot005 comparetotal -2 2 -> -1
ddcot006 comparetotal -1 -2 -> 1
ddcot007 comparetotal -1 -1 -> 0
ddcot008 comparetotal -1 0 -> -1
ddcot009 comparetotal -1 1 -> -1
ddcot010 comparetotal -1 2 -> -1
ddcot011 comparetotal 0 -2 -> 1
ddcot012 comparetotal 0 -1 -> 1
ddcot013 comparetotal 0 0 -> 0
ddcot014 comparetotal 0 1 -> -1
ddcot015 comparetotal 0 2 -> -1
ddcot016 comparetotal 1 -2 -> 1
ddcot017 comparetotal 1 -1 -> 1
ddcot018 comparetotal 1 0 -> 1
ddcot019 comparetotal 1 1 -> 0
ddcot020 comparetotal 1 2 -> -1
ddcot021 comparetotal 2 -2 -> 1
ddcot022 comparetotal 2 -1 -> 1
ddcot023 comparetotal 2 0 -> 1
ddcot025 comparetotal 2 1 -> 1
ddcot026 comparetotal 2 2 -> 0
ddcot031 comparetotal -20 -20 -> 0
ddcot032 comparetotal -20 -10 -> -1
ddcot033 comparetotal -20 00 -> -1
ddcot034 comparetotal -20 10 -> -1
ddcot035 comparetotal -20 20 -> -1
ddcot036 comparetotal -10 -20 -> 1
ddcot037 comparetotal -10 -10 -> 0
ddcot038 comparetotal -10 00 -> -1
ddcot039 comparetotal -10 10 -> -1
ddcot040 comparetotal -10 20 -> -1
ddcot041 comparetotal 00 -20 -> 1
ddcot042 comparetotal 00 -10 -> 1
ddcot043 comparetotal 00 00 -> 0
ddcot044 comparetotal 00 10 -> -1
ddcot045 comparetotal 00 20 -> -1
ddcot046 comparetotal 10 -20 -> 1
ddcot047 comparetotal 10 -10 -> 1
ddcot048 comparetotal 10 00 -> 1
ddcot049 comparetotal 10 10 -> 0
ddcot050 comparetotal 10 20 -> -1
ddcot051 comparetotal 20 -20 -> 1
ddcot052 comparetotal 20 -10 -> 1
ddcot053 comparetotal 20 00 -> 1
ddcot055 comparetotal 20 10 -> 1
ddcot056 comparetotal 20 20 -> 0
ddcot061 comparetotal -2.0 -2.0 -> 0
ddcot062 comparetotal -2.0 -1.0 -> -1
ddcot063 comparetotal -2.0 0.0 -> -1
ddcot064 comparetotal -2.0 1.0 -> -1
ddcot065 comparetotal -2.0 2.0 -> -1
ddcot066 comparetotal -1.0 -2.0 -> 1
ddcot067 comparetotal -1.0 -1.0 -> 0
ddcot068 comparetotal -1.0 0.0 -> -1
ddcot069 comparetotal -1.0 1.0 -> -1
ddcot070 comparetotal -1.0 2.0 -> -1
ddcot071 comparetotal 0.0 -2.0 -> 1
ddcot072 comparetotal 0.0 -1.0 -> 1
ddcot073 comparetotal 0.0 0.0 -> 0
ddcot074 comparetotal 0.0 1.0 -> -1
ddcot075 comparetotal 0.0 2.0 -> -1
ddcot076 comparetotal 1.0 -2.0 -> 1
ddcot077 comparetotal 1.0 -1.0 -> 1
ddcot078 comparetotal 1.0 0.0 -> 1
ddcot079 comparetotal 1.0 1.0 -> 0
ddcot080 comparetotal 1.0 2.0 -> -1
ddcot081 comparetotal 2.0 -2.0 -> 1
ddcot082 comparetotal 2.0 -1.0 -> 1
ddcot083 comparetotal 2.0 0.0 -> 1
ddcot085 comparetotal 2.0 1.0 -> 1
ddcot086 comparetotal 2.0 2.0 -> 0
-- now some cases which might overflow if subtract were used
ddcot090 comparetotal 9.99999999E+384 9.99999999E+384 -> 0
ddcot091 comparetotal -9.99999999E+384 9.99999999E+384 -> -1
ddcot092 comparetotal 9.99999999E+384 -9.99999999E+384 -> 1
ddcot093 comparetotal -9.99999999E+384 -9.99999999E+384 -> 0
-- some differing length/exponent cases
-- in this first group, compare would compare all equal
ddcot100 comparetotal 7.0 7.0 -> 0
ddcot101 comparetotal 7.0 7 -> -1
ddcot102 comparetotal 7 7.0 -> 1
ddcot103 comparetotal 7E+0 7.0 -> 1
ddcot104 comparetotal 70E-1 7.0 -> 0
ddcot105 comparetotal 0.7E+1 7 -> 0
ddcot106 comparetotal 70E-1 7 -> -1
ddcot107 comparetotal 7.0 7E+0 -> -1
ddcot108 comparetotal 7.0 70E-1 -> 0
ddcot109 comparetotal 7 0.7E+1 -> 0
ddcot110 comparetotal 7 70E-1 -> 1
ddcot120 comparetotal 8.0 7.0 -> 1
ddcot121 comparetotal 8.0 7 -> 1
ddcot122 comparetotal 8 7.0 -> 1
ddcot123 comparetotal 8E+0 7.0 -> 1
ddcot124 comparetotal 80E-1 7.0 -> 1
ddcot125 comparetotal 0.8E+1 7 -> 1
ddcot126 comparetotal 80E-1 7 -> 1
ddcot127 comparetotal 8.0 7E+0 -> 1
ddcot128 comparetotal 8.0 70E-1 -> 1
ddcot129 comparetotal 8 0.7E+1 -> 1
ddcot130 comparetotal 8 70E-1 -> 1
ddcot140 comparetotal 8.0 9.0 -> -1
ddcot141 comparetotal 8.0 9 -> -1
ddcot142 comparetotal 8 9.0 -> -1
ddcot143 comparetotal 8E+0 9.0 -> -1
ddcot144 comparetotal 80E-1 9.0 -> -1
ddcot145 comparetotal 0.8E+1 9 -> -1
ddcot146 comparetotal 80E-1 9 -> -1
ddcot147 comparetotal 8.0 9E+0 -> -1
ddcot148 comparetotal 8.0 90E-1 -> -1
ddcot149 comparetotal 8 0.9E+1 -> -1
ddcot150 comparetotal 8 90E-1 -> -1
-- and again, with sign changes -+ ..
ddcot200 comparetotal -7.0 7.0 -> -1
ddcot201 comparetotal -7.0 7 -> -1
ddcot202 comparetotal -7 7.0 -> -1
ddcot203 comparetotal -7E+0 7.0 -> -1
ddcot204 comparetotal -70E-1 7.0 -> -1
ddcot205 comparetotal -0.7E+1 7 -> -1
ddcot206 comparetotal -70E-1 7 -> -1
ddcot207 comparetotal -7.0 7E+0 -> -1
ddcot208 comparetotal -7.0 70E-1 -> -1
ddcot209 comparetotal -7 0.7E+1 -> -1
ddcot210 comparetotal -7 70E-1 -> -1
ddcot220 comparetotal -8.0 7.0 -> -1
ddcot221 comparetotal -8.0 7 -> -1
ddcot222 comparetotal -8 7.0 -> -1
ddcot223 comparetotal -8E+0 7.0 -> -1
ddcot224 comparetotal -80E-1 7.0 -> -1
ddcot225 comparetotal -0.8E+1 7 -> -1
ddcot226 comparetotal -80E-1 7 -> -1
ddcot227 comparetotal -8.0 7E+0 -> -1
ddcot228 comparetotal -8.0 70E-1 -> -1
ddcot229 comparetotal -8 0.7E+1 -> -1
ddcot230 comparetotal -8 70E-1 -> -1
ddcot240 comparetotal -8.0 9.0 -> -1
ddcot241 comparetotal -8.0 9 -> -1
ddcot242 comparetotal -8 9.0 -> -1
ddcot243 comparetotal -8E+0 9.0 -> -1
ddcot244 comparetotal -80E-1 9.0 -> -1
ddcot245 comparetotal -0.8E+1 9 -> -1
ddcot246 comparetotal -80E-1 9 -> -1
ddcot247 comparetotal -8.0 9E+0 -> -1
ddcot248 comparetotal -8.0 90E-1 -> -1
ddcot249 comparetotal -8 0.9E+1 -> -1
ddcot250 comparetotal -8 90E-1 -> -1
-- and again, with sign changes +- ..
ddcot300 comparetotal 7.0 -7.0 -> 1
ddcot301 comparetotal 7.0 -7 -> 1
ddcot302 comparetotal 7 -7.0 -> 1
ddcot303 comparetotal 7E+0 -7.0 -> 1
ddcot304 comparetotal 70E-1 -7.0 -> 1
ddcot305 comparetotal .7E+1 -7 -> 1
ddcot306 comparetotal 70E-1 -7 -> 1
ddcot307 comparetotal 7.0 -7E+0 -> 1
ddcot308 comparetotal 7.0 -70E-1 -> 1
ddcot309 comparetotal 7 -.7E+1 -> 1
ddcot310 comparetotal 7 -70E-1 -> 1
ddcot320 comparetotal 8.0 -7.0 -> 1
ddcot321 comparetotal 8.0 -7 -> 1
ddcot322 comparetotal 8 -7.0 -> 1
ddcot323 comparetotal 8E+0 -7.0 -> 1
ddcot324 comparetotal 80E-1 -7.0 -> 1
ddcot325 comparetotal .8E+1 -7 -> 1
ddcot326 comparetotal 80E-1 -7 -> 1
ddcot327 comparetotal 8.0 -7E+0 -> 1
ddcot328 comparetotal 8.0 -70E-1 -> 1
ddcot329 comparetotal 8 -.7E+1 -> 1
ddcot330 comparetotal 8 -70E-1 -> 1
ddcot340 comparetotal 8.0 -9.0 -> 1
ddcot341 comparetotal 8.0 -9 -> 1
ddcot342 comparetotal 8 -9.0 -> 1
ddcot343 comparetotal 8E+0 -9.0 -> 1
ddcot344 comparetotal 80E-1 -9.0 -> 1
ddcot345 comparetotal .8E+1 -9 -> 1
ddcot346 comparetotal 80E-1 -9 -> 1
ddcot347 comparetotal 8.0 -9E+0 -> 1
ddcot348 comparetotal 8.0 -90E-1 -> 1
ddcot349 comparetotal 8 -.9E+1 -> 1
ddcot350 comparetotal 8 -90E-1 -> 1
-- and again, with sign changes -- ..
ddcot400 comparetotal -7.0 -7.0 -> 0
ddcot401 comparetotal -7.0 -7 -> 1
ddcot402 comparetotal -7 -7.0 -> -1
ddcot403 comparetotal -7E+0 -7.0 -> -1
ddcot404 comparetotal -70E-1 -7.0 -> 0
ddcot405 comparetotal -.7E+1 -7 -> 0
ddcot406 comparetotal -70E-1 -7 -> 1
ddcot407 comparetotal -7.0 -7E+0 -> 1
ddcot408 comparetotal -7.0 -70E-1 -> 0
ddcot409 comparetotal -7 -.7E+1 -> 0
ddcot410 comparetotal -7 -70E-1 -> -1
ddcot420 comparetotal -8.0 -7.0 -> -1
ddcot421 comparetotal -8.0 -7 -> -1
ddcot422 comparetotal -8 -7.0 -> -1
ddcot423 comparetotal -8E+0 -7.0 -> -1
ddcot424 comparetotal -80E-1 -7.0 -> -1
ddcot425 comparetotal -.8E+1 -7 -> -1
ddcot426 comparetotal -80E-1 -7 -> -1
ddcot427 comparetotal -8.0 -7E+0 -> -1
ddcot428 comparetotal -8.0 -70E-1 -> -1
ddcot429 comparetotal -8 -.7E+1 -> -1
ddcot430 comparetotal -8 -70E-1 -> -1
ddcot440 comparetotal -8.0 -9.0 -> 1
ddcot441 comparetotal -8.0 -9 -> 1
ddcot442 comparetotal -8 -9.0 -> 1
ddcot443 comparetotal -8E+0 -9.0 -> 1
ddcot444 comparetotal -80E-1 -9.0 -> 1
ddcot445 comparetotal -.8E+1 -9 -> 1
ddcot446 comparetotal -80E-1 -9 -> 1
ddcot447 comparetotal -8.0 -9E+0 -> 1
ddcot448 comparetotal -8.0 -90E-1 -> 1
ddcot449 comparetotal -8 -.9E+1 -> 1
ddcot450 comparetotal -8 -90E-1 -> 1
-- testcases that subtract to lots of zeros at boundaries [pgr]
ddcot473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1
ddcot474 comparetotal 123.456000000000E+89 123.456E+89 -> -1
ddcot475 comparetotal 123.45600000000E-89 123.456E-89 -> -1
ddcot476 comparetotal 123.4560000000E+89 123.456E+89 -> -1
ddcot477 comparetotal 123.456000000E-89 123.456E-89 -> -1
ddcot478 comparetotal 123.45600000E+89 123.456E+89 -> -1
ddcot479 comparetotal 123.4560000E-89 123.456E-89 -> -1
ddcot480 comparetotal 123.456000E+89 123.456E+89 -> -1
ddcot481 comparetotal 123.45600E-89 123.456E-89 -> -1
ddcot482 comparetotal 123.4560E+89 123.456E+89 -> -1
ddcot483 comparetotal 123.456E-89 123.456E-89 -> 0
ddcot487 comparetotal 123.456E+89 123.4560000000000E+89 -> 1
ddcot488 comparetotal 123.456E-89 123.456000000000E-89 -> 1
ddcot489 comparetotal 123.456E+89 123.45600000000E+89 -> 1
ddcot490 comparetotal 123.456E-89 123.4560000000E-89 -> 1
ddcot491 comparetotal 123.456E+89 123.456000000E+89 -> 1
ddcot492 comparetotal 123.456E-89 123.45600000E-89 -> 1
ddcot493 comparetotal 123.456E+89 123.4560000E+89 -> 1
ddcot494 comparetotal 123.456E-89 123.456000E-89 -> 1
ddcot495 comparetotal 123.456E+89 123.45600E+89 -> 1
ddcot496 comparetotal 123.456E-89 123.4560E-89 -> 1
ddcot497 comparetotal 123.456E+89 123.456E+89 -> 0
-- wide-ranging, around precision; signs equal
ddcot498 comparetotal 1 1E-17 -> 1
ddcot499 comparetotal 1 1E-16 -> 1
ddcot500 comparetotal 1 1E-15 -> 1
ddcot501 comparetotal 1 1E-14 -> 1
ddcot502 comparetotal 1 1E-13 -> 1
ddcot503 comparetotal 1 1E-12 -> 1
ddcot504 comparetotal 1 1E-11 -> 1
ddcot505 comparetotal 1 1E-10 -> 1
ddcot506 comparetotal 1 1E-9 -> 1
ddcot507 comparetotal 1 1E-8 -> 1
ddcot508 comparetotal 1 1E-7 -> 1
ddcot509 comparetotal 1 1E-6 -> 1
ddcot510 comparetotal 1 1E-5 -> 1
ddcot511 comparetotal 1 1E-4 -> 1
ddcot512 comparetotal 1 1E-3 -> 1
ddcot513 comparetotal 1 1E-2 -> 1
ddcot514 comparetotal 1 1E-1 -> 1
ddcot515 comparetotal 1 1E-0 -> 0
ddcot516 comparetotal 1 1E+1 -> -1
ddcot517 comparetotal 1 1E+2 -> -1
ddcot518 comparetotal 1 1E+3 -> -1
ddcot519 comparetotal 1 1E+4 -> -1
ddcot521 comparetotal 1 1E+5 -> -1
ddcot522 comparetotal 1 1E+6 -> -1
ddcot523 comparetotal 1 1E+7 -> -1
ddcot524 comparetotal 1 1E+8 -> -1
ddcot525 comparetotal 1 1E+9 -> -1
ddcot526 comparetotal 1 1E+10 -> -1
ddcot527 comparetotal 1 1E+11 -> -1
ddcot528 comparetotal 1 1E+12 -> -1
ddcot529 comparetotal 1 1E+13 -> -1
ddcot530 comparetotal 1 1E+14 -> -1
ddcot531 comparetotal 1 1E+15 -> -1
ddcot532 comparetotal 1 1E+16 -> -1
ddcot533 comparetotal 1 1E+17 -> -1
-- LR swap
ddcot538 comparetotal 1E-17 1 -> -1
ddcot539 comparetotal 1E-16 1 -> -1
ddcot540 comparetotal 1E-15 1 -> -1
ddcot541 comparetotal 1E-14 1 -> -1
ddcot542 comparetotal 1E-13 1 -> -1
ddcot543 comparetotal 1E-12 1 -> -1
ddcot544 comparetotal 1E-11 1 -> -1
ddcot545 comparetotal 1E-10 1 -> -1
ddcot546 comparetotal 1E-9 1 -> -1
ddcot547 comparetotal 1E-8 1 -> -1
ddcot548 comparetotal 1E-7 1 -> -1
ddcot549 comparetotal 1E-6 1 -> -1
ddcot550 comparetotal 1E-5 1 -> -1
ddcot551 comparetotal 1E-4 1 -> -1
ddcot552 comparetotal 1E-3 1 -> -1
ddcot553 comparetotal 1E-2 1 -> -1
ddcot554 comparetotal 1E-1 1 -> -1
ddcot555 comparetotal 1E-0 1 -> 0
ddcot556 comparetotal 1E+1 1 -> 1
ddcot557 comparetotal 1E+2 1 -> 1
ddcot558 comparetotal 1E+3 1 -> 1
ddcot559 comparetotal 1E+4 1 -> 1
ddcot561 comparetotal 1E+5 1 -> 1
ddcot562 comparetotal 1E+6 1 -> 1
ddcot563 comparetotal 1E+7 1 -> 1
ddcot564 comparetotal 1E+8 1 -> 1
ddcot565 comparetotal 1E+9 1 -> 1
ddcot566 comparetotal 1E+10 1 -> 1
ddcot567 comparetotal 1E+11 1 -> 1
ddcot568 comparetotal 1E+12 1 -> 1
ddcot569 comparetotal 1E+13 1 -> 1
ddcot570 comparetotal 1E+14 1 -> 1
ddcot571 comparetotal 1E+15 1 -> 1
ddcot572 comparetotal 1E+16 1 -> 1
ddcot573 comparetotal 1E+17 1 -> 1
-- similar with a useful coefficient, one side only
ddcot578 comparetotal 0.000000987654321 1E-17 -> 1
ddcot579 comparetotal 0.000000987654321 1E-16 -> 1
ddcot580 comparetotal 0.000000987654321 1E-15 -> 1
ddcot581 comparetotal 0.000000987654321 1E-14 -> 1
ddcot582 comparetotal 0.000000987654321 1E-13 -> 1
ddcot583 comparetotal 0.000000987654321 1E-12 -> 1
ddcot584 comparetotal 0.000000987654321 1E-11 -> 1
ddcot585 comparetotal 0.000000987654321 1E-10 -> 1
ddcot586 comparetotal 0.000000987654321 1E-9 -> 1
ddcot587 comparetotal 0.000000987654321 1E-8 -> 1
ddcot588 comparetotal 0.000000987654321 1E-7 -> 1
ddcot589 comparetotal 0.000000987654321 1E-6 -> -1
ddcot590 comparetotal 0.000000987654321 1E-5 -> -1
ddcot591 comparetotal 0.000000987654321 1E-4 -> -1
ddcot592 comparetotal 0.000000987654321 1E-3 -> -1
ddcot593 comparetotal 0.000000987654321 1E-2 -> -1
ddcot594 comparetotal 0.000000987654321 1E-1 -> -1
ddcot595 comparetotal 0.000000987654321 1E-0 -> -1
ddcot596 comparetotal 0.000000987654321 1E+1 -> -1
ddcot597 comparetotal 0.000000987654321 1E+2 -> -1
ddcot598 comparetotal 0.000000987654321 1E+3 -> -1
ddcot599 comparetotal 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
ddcot600 comparetotal 12 12.2345 -> -1
ddcot601 comparetotal 12.0 12.2345 -> -1
ddcot602 comparetotal 12.00 12.2345 -> -1
ddcot603 comparetotal 12.000 12.2345 -> -1
ddcot604 comparetotal 12.0000 12.2345 -> -1
ddcot605 comparetotal 12.00000 12.2345 -> -1
ddcot606 comparetotal 12.000000 12.2345 -> -1
ddcot607 comparetotal 12.0000000 12.2345 -> -1
ddcot608 comparetotal 12.00000000 12.2345 -> -1
ddcot609 comparetotal 12.000000000 12.2345 -> -1
ddcot610 comparetotal 12.1234 12 -> 1
ddcot611 comparetotal 12.1234 12.0 -> 1
ddcot612 comparetotal 12.1234 12.00 -> 1
ddcot613 comparetotal 12.1234 12.000 -> 1
ddcot614 comparetotal 12.1234 12.0000 -> 1
ddcot615 comparetotal 12.1234 12.00000 -> 1
ddcot616 comparetotal 12.1234 12.000000 -> 1
ddcot617 comparetotal 12.1234 12.0000000 -> 1
ddcot618 comparetotal 12.1234 12.00000000 -> 1
ddcot619 comparetotal 12.1234 12.000000000 -> 1
ddcot620 comparetotal -12 -12.2345 -> 1
ddcot621 comparetotal -12.0 -12.2345 -> 1
ddcot622 comparetotal -12.00 -12.2345 -> 1
ddcot623 comparetotal -12.000 -12.2345 -> 1
ddcot624 comparetotal -12.0000 -12.2345 -> 1
ddcot625 comparetotal -12.00000 -12.2345 -> 1
ddcot626 comparetotal -12.000000 -12.2345 -> 1
ddcot627 comparetotal -12.0000000 -12.2345 -> 1
ddcot628 comparetotal -12.00000000 -12.2345 -> 1
ddcot629 comparetotal -12.000000000 -12.2345 -> 1
ddcot630 comparetotal -12.1234 -12 -> -1
ddcot631 comparetotal -12.1234 -12.0 -> -1
ddcot632 comparetotal -12.1234 -12.00 -> -1
ddcot633 comparetotal -12.1234 -12.000 -> -1
ddcot634 comparetotal -12.1234 -12.0000 -> -1
ddcot635 comparetotal -12.1234 -12.00000 -> -1
ddcot636 comparetotal -12.1234 -12.000000 -> -1
ddcot637 comparetotal -12.1234 -12.0000000 -> -1
ddcot638 comparetotal -12.1234 -12.00000000 -> -1
ddcot639 comparetotal -12.1234 -12.000000000 -> -1
-- extended zeros
ddcot640 comparetotal 0 0 -> 0
ddcot641 comparetotal 0 -0 -> 1
ddcot642 comparetotal 0 -0.0 -> 1
ddcot643 comparetotal 0 0.0 -> 1
ddcot644 comparetotal -0 0 -> -1
ddcot645 comparetotal -0 -0 -> 0
ddcot646 comparetotal -0 -0.0 -> -1
ddcot647 comparetotal -0 0.0 -> -1
ddcot648 comparetotal 0.0 0 -> -1
ddcot649 comparetotal 0.0 -0 -> 1
ddcot650 comparetotal 0.0 -0.0 -> 1
ddcot651 comparetotal 0.0 0.0 -> 0
ddcot652 comparetotal -0.0 0 -> -1
ddcot653 comparetotal -0.0 -0 -> 1
ddcot654 comparetotal -0.0 -0.0 -> 0
ddcot655 comparetotal -0.0 0.0 -> -1
ddcot656 comparetotal -0E1 0.0 -> -1
ddcot657 comparetotal -0E2 0.0 -> -1
ddcot658 comparetotal 0E1 0.0 -> 1
ddcot659 comparetotal 0E2 0.0 -> 1
ddcot660 comparetotal -0E1 0 -> -1
ddcot661 comparetotal -0E2 0 -> -1
ddcot662 comparetotal 0E1 0 -> 1
ddcot663 comparetotal 0E2 0 -> 1
ddcot664 comparetotal -0E1 -0E1 -> 0
ddcot665 comparetotal -0E2 -0E1 -> -1
ddcot666 comparetotal 0E1 -0E1 -> 1
ddcot667 comparetotal 0E2 -0E1 -> 1
ddcot668 comparetotal -0E1 -0E2 -> 1
ddcot669 comparetotal -0E2 -0E2 -> 0
ddcot670 comparetotal 0E1 -0E2 -> 1
ddcot671 comparetotal 0E2 -0E2 -> 1
ddcot672 comparetotal -0E1 0E1 -> -1
ddcot673 comparetotal -0E2 0E1 -> -1
ddcot674 comparetotal 0E1 0E1 -> 0
ddcot675 comparetotal 0E2 0E1 -> 1
ddcot676 comparetotal -0E1 0E2 -> -1
ddcot677 comparetotal -0E2 0E2 -> -1
ddcot678 comparetotal 0E1 0E2 -> -1
ddcot679 comparetotal 0E2 0E2 -> 0
-- trailing zeros; unit-y
ddcot680 comparetotal 12 12 -> 0
ddcot681 comparetotal 12 12.0 -> 1
ddcot682 comparetotal 12 12.00 -> 1
ddcot683 comparetotal 12 12.000 -> 1
ddcot684 comparetotal 12 12.0000 -> 1
ddcot685 comparetotal 12 12.00000 -> 1
ddcot686 comparetotal 12 12.000000 -> 1
ddcot687 comparetotal 12 12.0000000 -> 1
ddcot688 comparetotal 12 12.00000000 -> 1
ddcot689 comparetotal 12 12.000000000 -> 1
ddcot690 comparetotal 12 12 -> 0
ddcot691 comparetotal 12.0 12 -> -1
ddcot692 comparetotal 12.00 12 -> -1
ddcot693 comparetotal 12.000 12 -> -1
ddcot694 comparetotal 12.0000 12 -> -1
ddcot695 comparetotal 12.00000 12 -> -1
ddcot696 comparetotal 12.000000 12 -> -1
ddcot697 comparetotal 12.0000000 12 -> -1
ddcot698 comparetotal 12.00000000 12 -> -1
ddcot699 comparetotal 12.000000000 12 -> -1
-- old long operand checks
ddcot701 comparetotal 12345678000 1 -> 1
ddcot702 comparetotal 1 12345678000 -> -1
ddcot703 comparetotal 1234567800 1 -> 1
ddcot704 comparetotal 1 1234567800 -> -1
ddcot705 comparetotal 1234567890 1 -> 1
ddcot706 comparetotal 1 1234567890 -> -1
ddcot707 comparetotal 1234567891 1 -> 1
ddcot708 comparetotal 1 1234567891 -> -1
ddcot709 comparetotal 12345678901 1 -> 1
ddcot710 comparetotal 1 12345678901 -> -1
ddcot711 comparetotal 1234567896 1 -> 1
ddcot712 comparetotal 1 1234567896 -> -1
ddcot713 comparetotal -1234567891 1 -> -1
ddcot714 comparetotal 1 -1234567891 -> 1
ddcot715 comparetotal -12345678901 1 -> -1
ddcot716 comparetotal 1 -12345678901 -> 1
ddcot717 comparetotal -1234567896 1 -> -1
ddcot718 comparetotal 1 -1234567896 -> 1
-- old residue cases
ddcot740 comparetotal 1 0.9999999 -> 1
ddcot741 comparetotal 1 0.999999 -> 1
ddcot742 comparetotal 1 0.99999 -> 1
ddcot743 comparetotal 1 1.0000 -> 1
ddcot744 comparetotal 1 1.00001 -> -1
ddcot745 comparetotal 1 1.000001 -> -1
ddcot746 comparetotal 1 1.0000001 -> -1
ddcot750 comparetotal 0.9999999 1 -> -1
ddcot751 comparetotal 0.999999 1 -> -1
ddcot752 comparetotal 0.99999 1 -> -1
ddcot753 comparetotal 1.0000 1 -> -1
ddcot754 comparetotal 1.00001 1 -> 1
ddcot755 comparetotal 1.000001 1 -> 1
ddcot756 comparetotal 1.0000001 1 -> 1
-- Specials
ddcot780 comparetotal Inf -Inf -> 1
ddcot781 comparetotal Inf -1000 -> 1
ddcot782 comparetotal Inf -1 -> 1
ddcot783 comparetotal Inf -0 -> 1
ddcot784 comparetotal Inf 0 -> 1
ddcot785 comparetotal Inf 1 -> 1
ddcot786 comparetotal Inf 1000 -> 1
ddcot787 comparetotal Inf Inf -> 0
ddcot788 comparetotal -1000 Inf -> -1
ddcot789 comparetotal -Inf Inf -> -1
ddcot790 comparetotal -1 Inf -> -1
ddcot791 comparetotal -0 Inf -> -1
ddcot792 comparetotal 0 Inf -> -1
ddcot793 comparetotal 1 Inf -> -1
ddcot794 comparetotal 1000 Inf -> -1
ddcot795 comparetotal Inf Inf -> 0
ddcot800 comparetotal -Inf -Inf -> 0
ddcot801 comparetotal -Inf -1000 -> -1
ddcot802 comparetotal -Inf -1 -> -1
ddcot803 comparetotal -Inf -0 -> -1
ddcot804 comparetotal -Inf 0 -> -1
ddcot805 comparetotal -Inf 1 -> -1
ddcot806 comparetotal -Inf 1000 -> -1
ddcot807 comparetotal -Inf Inf -> -1
ddcot808 comparetotal -Inf -Inf -> 0
ddcot809 comparetotal -1000 -Inf -> 1
ddcot810 comparetotal -1 -Inf -> 1
ddcot811 comparetotal -0 -Inf -> 1
ddcot812 comparetotal 0 -Inf -> 1
ddcot813 comparetotal 1 -Inf -> 1
ddcot814 comparetotal 1000 -Inf -> 1
ddcot815 comparetotal Inf -Inf -> 1
ddcot821 comparetotal NaN -Inf -> 1
ddcot822 comparetotal NaN -1000 -> 1
ddcot823 comparetotal NaN -1 -> 1
ddcot824 comparetotal NaN -0 -> 1
ddcot825 comparetotal NaN 0 -> 1
ddcot826 comparetotal NaN 1 -> 1
ddcot827 comparetotal NaN 1000 -> 1
ddcot828 comparetotal NaN Inf -> 1
ddcot829 comparetotal NaN NaN -> 0
ddcot830 comparetotal -Inf NaN -> -1
ddcot831 comparetotal -1000 NaN -> -1
ddcot832 comparetotal -1 NaN -> -1
ddcot833 comparetotal -0 NaN -> -1
ddcot834 comparetotal 0 NaN -> -1
ddcot835 comparetotal 1 NaN -> -1
ddcot836 comparetotal 1000 NaN -> -1
ddcot837 comparetotal Inf NaN -> -1
ddcot838 comparetotal -NaN -NaN -> 0
ddcot839 comparetotal +NaN -NaN -> 1
ddcot840 comparetotal -NaN +NaN -> -1
ddcot841 comparetotal sNaN -sNaN -> 1
ddcot842 comparetotal sNaN -NaN -> 1
ddcot843 comparetotal sNaN -Inf -> 1
ddcot844 comparetotal sNaN -1000 -> 1
ddcot845 comparetotal sNaN -1 -> 1
ddcot846 comparetotal sNaN -0 -> 1
ddcot847 comparetotal sNaN 0 -> 1
ddcot848 comparetotal sNaN 1 -> 1
ddcot849 comparetotal sNaN 1000 -> 1
ddcot850 comparetotal sNaN NaN -> -1
ddcot851 comparetotal sNaN sNaN -> 0
ddcot852 comparetotal -sNaN sNaN -> -1
ddcot853 comparetotal -NaN sNaN -> -1
ddcot854 comparetotal -Inf sNaN -> -1
ddcot855 comparetotal -1000 sNaN -> -1
ddcot856 comparetotal -1 sNaN -> -1
ddcot857 comparetotal -0 sNaN -> -1
ddcot858 comparetotal 0 sNaN -> -1
ddcot859 comparetotal 1 sNaN -> -1
ddcot860 comparetotal 1000 sNaN -> -1
ddcot861 comparetotal Inf sNaN -> -1
ddcot862 comparetotal NaN sNaN -> 1
ddcot863 comparetotal sNaN sNaN -> 0
ddcot871 comparetotal -sNaN -sNaN -> 0
ddcot872 comparetotal -sNaN -NaN -> 1
ddcot873 comparetotal -sNaN -Inf -> -1
ddcot874 comparetotal -sNaN -1000 -> -1
ddcot875 comparetotal -sNaN -1 -> -1
ddcot876 comparetotal -sNaN -0 -> -1
ddcot877 comparetotal -sNaN 0 -> -1
ddcot878 comparetotal -sNaN 1 -> -1
ddcot879 comparetotal -sNaN 1000 -> -1
ddcot880 comparetotal -sNaN NaN -> -1
ddcot881 comparetotal -sNaN sNaN -> -1
ddcot882 comparetotal -sNaN -sNaN -> 0
ddcot883 comparetotal -NaN -sNaN -> -1
ddcot884 comparetotal -Inf -sNaN -> 1
ddcot885 comparetotal -1000 -sNaN -> 1
ddcot886 comparetotal -1 -sNaN -> 1
ddcot887 comparetotal -0 -sNaN -> 1
ddcot888 comparetotal 0 -sNaN -> 1
ddcot889 comparetotal 1 -sNaN -> 1
ddcot890 comparetotal 1000 -sNaN -> 1
ddcot891 comparetotal Inf -sNaN -> 1
ddcot892 comparetotal NaN -sNaN -> 1
ddcot893 comparetotal sNaN -sNaN -> 1
-- NaNs with payload
ddcot960 comparetotal NaN9 -Inf -> 1
ddcot961 comparetotal NaN8 999 -> 1
ddcot962 comparetotal NaN77 Inf -> 1
ddcot963 comparetotal -NaN67 NaN5 -> -1
ddcot964 comparetotal -Inf -NaN4 -> 1
ddcot965 comparetotal -999 -NaN33 -> 1
ddcot966 comparetotal Inf NaN2 -> -1
ddcot970 comparetotal -NaN41 -NaN42 -> 1
ddcot971 comparetotal +NaN41 -NaN42 -> 1
ddcot972 comparetotal -NaN41 +NaN42 -> -1
ddcot973 comparetotal +NaN41 +NaN42 -> -1
ddcot974 comparetotal -NaN42 -NaN01 -> -1
ddcot975 comparetotal +NaN42 -NaN01 -> 1
ddcot976 comparetotal -NaN42 +NaN01 -> -1
ddcot977 comparetotal +NaN42 +NaN01 -> 1
ddcot980 comparetotal -sNaN771 -sNaN772 -> 1
ddcot981 comparetotal +sNaN771 -sNaN772 -> 1
ddcot982 comparetotal -sNaN771 +sNaN772 -> -1
ddcot983 comparetotal +sNaN771 +sNaN772 -> -1
ddcot984 comparetotal -sNaN772 -sNaN771 -> -1
ddcot985 comparetotal +sNaN772 -sNaN771 -> 1
ddcot986 comparetotal -sNaN772 +sNaN771 -> -1
ddcot987 comparetotal +sNaN772 +sNaN771 -> 1
ddcot991 comparetotal -sNaN99 -Inf -> -1
ddcot992 comparetotal sNaN98 -11 -> 1
ddcot993 comparetotal sNaN97 NaN -> -1
ddcot994 comparetotal sNaN16 sNaN94 -> -1
ddcot995 comparetotal NaN85 sNaN83 -> 1
ddcot996 comparetotal -Inf sNaN92 -> -1
ddcot997 comparetotal 088 sNaN81 -> -1
ddcot998 comparetotal Inf sNaN90 -> -1
ddcot999 comparetotal NaN -sNaN89 -> 1
-- spread zeros
ddcot1110 comparetotal 0E-383 0 -> -1
ddcot1111 comparetotal 0E-383 -0 -> 1
ddcot1112 comparetotal -0E-383 0 -> -1
ddcot1113 comparetotal -0E-383 -0 -> 1
ddcot1114 comparetotal 0E-383 0E+384 -> -1
ddcot1115 comparetotal 0E-383 -0E+384 -> 1
ddcot1116 comparetotal -0E-383 0E+384 -> -1
ddcot1117 comparetotal -0E-383 -0E+384 -> 1
ddcot1118 comparetotal 0 0E+384 -> -1
ddcot1119 comparetotal 0 -0E+384 -> 1
ddcot1120 comparetotal -0 0E+384 -> -1
ddcot1121 comparetotal -0 -0E+384 -> 1
ddcot1130 comparetotal 0E+384 0 -> 1
ddcot1131 comparetotal 0E+384 -0 -> 1
ddcot1132 comparetotal -0E+384 0 -> -1
ddcot1133 comparetotal -0E+384 -0 -> -1
ddcot1134 comparetotal 0E+384 0E-383 -> 1
ddcot1135 comparetotal 0E+384 -0E-383 -> 1
ddcot1136 comparetotal -0E+384 0E-383 -> -1
ddcot1137 comparetotal -0E+384 -0E-383 -> -1
ddcot1138 comparetotal 0 0E-383 -> 1
ddcot1139 comparetotal 0 -0E-383 -> 1
ddcot1140 comparetotal -0 0E-383 -> -1
ddcot1141 comparetotal -0 -0E-383 -> -1
-- Null tests
ddcot9990 comparetotal 10 # -> NaN Invalid_operation
ddcot9991 comparetotal # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,706 @@
------------------------------------------------------------------------
-- ddCompareTotalMag.decTest -- decDouble comparison; abs. total order--
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necessary).
-- Similarly, comparetotal will have some radically different paths
-- than compare.
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
ddctm001 comparetotmag -2 -2 -> 0
ddctm002 comparetotmag -2 -1 -> 1
ddctm003 comparetotmag -2 0 -> 1
ddctm004 comparetotmag -2 1 -> 1
ddctm005 comparetotmag -2 2 -> 0
ddctm006 comparetotmag -1 -2 -> -1
ddctm007 comparetotmag -1 -1 -> 0
ddctm008 comparetotmag -1 0 -> 1
ddctm009 comparetotmag -1 1 -> 0
ddctm010 comparetotmag -1 2 -> -1
ddctm011 comparetotmag 0 -2 -> -1
ddctm012 comparetotmag 0 -1 -> -1
ddctm013 comparetotmag 0 0 -> 0
ddctm014 comparetotmag 0 1 -> -1
ddctm015 comparetotmag 0 2 -> -1
ddctm016 comparetotmag 1 -2 -> -1
ddctm017 comparetotmag 1 -1 -> 0
ddctm018 comparetotmag 1 0 -> 1
ddctm019 comparetotmag 1 1 -> 0
ddctm020 comparetotmag 1 2 -> -1
ddctm021 comparetotmag 2 -2 -> 0
ddctm022 comparetotmag 2 -1 -> 1
ddctm023 comparetotmag 2 0 -> 1
ddctm025 comparetotmag 2 1 -> 1
ddctm026 comparetotmag 2 2 -> 0
ddctm031 comparetotmag -20 -20 -> 0
ddctm032 comparetotmag -20 -10 -> 1
ddctm033 comparetotmag -20 00 -> 1
ddctm034 comparetotmag -20 10 -> 1
ddctm035 comparetotmag -20 20 -> 0
ddctm036 comparetotmag -10 -20 -> -1
ddctm037 comparetotmag -10 -10 -> 0
ddctm038 comparetotmag -10 00 -> 1
ddctm039 comparetotmag -10 10 -> 0
ddctm040 comparetotmag -10 20 -> -1
ddctm041 comparetotmag 00 -20 -> -1
ddctm042 comparetotmag 00 -10 -> -1
ddctm043 comparetotmag 00 00 -> 0
ddctm044 comparetotmag 00 10 -> -1
ddctm045 comparetotmag 00 20 -> -1
ddctm046 comparetotmag 10 -20 -> -1
ddctm047 comparetotmag 10 -10 -> 0
ddctm048 comparetotmag 10 00 -> 1
ddctm049 comparetotmag 10 10 -> 0
ddctm050 comparetotmag 10 20 -> -1
ddctm051 comparetotmag 20 -20 -> 0
ddctm052 comparetotmag 20 -10 -> 1
ddctm053 comparetotmag 20 00 -> 1
ddctm055 comparetotmag 20 10 -> 1
ddctm056 comparetotmag 20 20 -> 0
ddctm061 comparetotmag -2.0 -2.0 -> 0
ddctm062 comparetotmag -2.0 -1.0 -> 1
ddctm063 comparetotmag -2.0 0.0 -> 1
ddctm064 comparetotmag -2.0 1.0 -> 1
ddctm065 comparetotmag -2.0 2.0 -> 0
ddctm066 comparetotmag -1.0 -2.0 -> -1
ddctm067 comparetotmag -1.0 -1.0 -> 0
ddctm068 comparetotmag -1.0 0.0 -> 1
ddctm069 comparetotmag -1.0 1.0 -> 0
ddctm070 comparetotmag -1.0 2.0 -> -1
ddctm071 comparetotmag 0.0 -2.0 -> -1
ddctm072 comparetotmag 0.0 -1.0 -> -1
ddctm073 comparetotmag 0.0 0.0 -> 0
ddctm074 comparetotmag 0.0 1.0 -> -1
ddctm075 comparetotmag 0.0 2.0 -> -1
ddctm076 comparetotmag 1.0 -2.0 -> -1
ddctm077 comparetotmag 1.0 -1.0 -> 0
ddctm078 comparetotmag 1.0 0.0 -> 1
ddctm079 comparetotmag 1.0 1.0 -> 0
ddctm080 comparetotmag 1.0 2.0 -> -1
ddctm081 comparetotmag 2.0 -2.0 -> 0
ddctm082 comparetotmag 2.0 -1.0 -> 1
ddctm083 comparetotmag 2.0 0.0 -> 1
ddctm085 comparetotmag 2.0 1.0 -> 1
ddctm086 comparetotmag 2.0 2.0 -> 0
-- now some cases which might overflow if subtract were used
ddctm090 comparetotmag 9.99999999E+384 9.99999999E+384 -> 0
ddctm091 comparetotmag -9.99999999E+384 9.99999999E+384 -> 0
ddctm092 comparetotmag 9.99999999E+384 -9.99999999E+384 -> 0
ddctm093 comparetotmag -9.99999999E+384 -9.99999999E+384 -> 0
-- some differing length/exponent cases
-- in this first group, compare would compare all equal
ddctm100 comparetotmag 7.0 7.0 -> 0
ddctm101 comparetotmag 7.0 7 -> -1
ddctm102 comparetotmag 7 7.0 -> 1
ddctm103 comparetotmag 7E+0 7.0 -> 1
ddctm104 comparetotmag 70E-1 7.0 -> 0
ddctm105 comparetotmag 0.7E+1 7 -> 0
ddctm106 comparetotmag 70E-1 7 -> -1
ddctm107 comparetotmag 7.0 7E+0 -> -1
ddctm108 comparetotmag 7.0 70E-1 -> 0
ddctm109 comparetotmag 7 0.7E+1 -> 0
ddctm110 comparetotmag 7 70E-1 -> 1
ddctm120 comparetotmag 8.0 7.0 -> 1
ddctm121 comparetotmag 8.0 7 -> 1
ddctm122 comparetotmag 8 7.0 -> 1
ddctm123 comparetotmag 8E+0 7.0 -> 1
ddctm124 comparetotmag 80E-1 7.0 -> 1
ddctm125 comparetotmag 0.8E+1 7 -> 1
ddctm126 comparetotmag 80E-1 7 -> 1
ddctm127 comparetotmag 8.0 7E+0 -> 1
ddctm128 comparetotmag 8.0 70E-1 -> 1
ddctm129 comparetotmag 8 0.7E+1 -> 1
ddctm130 comparetotmag 8 70E-1 -> 1
ddctm140 comparetotmag 8.0 9.0 -> -1
ddctm141 comparetotmag 8.0 9 -> -1
ddctm142 comparetotmag 8 9.0 -> -1
ddctm143 comparetotmag 8E+0 9.0 -> -1
ddctm144 comparetotmag 80E-1 9.0 -> -1
ddctm145 comparetotmag 0.8E+1 9 -> -1
ddctm146 comparetotmag 80E-1 9 -> -1
ddctm147 comparetotmag 8.0 9E+0 -> -1
ddctm148 comparetotmag 8.0 90E-1 -> -1
ddctm149 comparetotmag 8 0.9E+1 -> -1
ddctm150 comparetotmag 8 90E-1 -> -1
-- and again, with sign changes -+ ..
ddctm200 comparetotmag -7.0 7.0 -> 0
ddctm201 comparetotmag -7.0 7 -> -1
ddctm202 comparetotmag -7 7.0 -> 1
ddctm203 comparetotmag -7E+0 7.0 -> 1
ddctm204 comparetotmag -70E-1 7.0 -> 0
ddctm205 comparetotmag -0.7E+1 7 -> 0
ddctm206 comparetotmag -70E-1 7 -> -1
ddctm207 comparetotmag -7.0 7E+0 -> -1
ddctm208 comparetotmag -7.0 70E-1 -> 0
ddctm209 comparetotmag -7 0.7E+1 -> 0
ddctm210 comparetotmag -7 70E-1 -> 1
ddctm220 comparetotmag -8.0 7.0 -> 1
ddctm221 comparetotmag -8.0 7 -> 1
ddctm222 comparetotmag -8 7.0 -> 1
ddctm223 comparetotmag -8E+0 7.0 -> 1
ddctm224 comparetotmag -80E-1 7.0 -> 1
ddctm225 comparetotmag -0.8E+1 7 -> 1
ddctm226 comparetotmag -80E-1 7 -> 1
ddctm227 comparetotmag -8.0 7E+0 -> 1
ddctm228 comparetotmag -8.0 70E-1 -> 1
ddctm229 comparetotmag -8 0.7E+1 -> 1
ddctm230 comparetotmag -8 70E-1 -> 1
ddctm240 comparetotmag -8.0 9.0 -> -1
ddctm241 comparetotmag -8.0 9 -> -1
ddctm242 comparetotmag -8 9.0 -> -1
ddctm243 comparetotmag -8E+0 9.0 -> -1
ddctm244 comparetotmag -80E-1 9.0 -> -1
ddctm245 comparetotmag -0.8E+1 9 -> -1
ddctm246 comparetotmag -80E-1 9 -> -1
ddctm247 comparetotmag -8.0 9E+0 -> -1
ddctm248 comparetotmag -8.0 90E-1 -> -1
ddctm249 comparetotmag -8 0.9E+1 -> -1
ddctm250 comparetotmag -8 90E-1 -> -1
-- and again, with sign changes +- ..
ddctm300 comparetotmag 7.0 -7.0 -> 0
ddctm301 comparetotmag 7.0 -7 -> -1
ddctm302 comparetotmag 7 -7.0 -> 1
ddctm303 comparetotmag 7E+0 -7.0 -> 1
ddctm304 comparetotmag 70E-1 -7.0 -> 0
ddctm305 comparetotmag .7E+1 -7 -> 0
ddctm306 comparetotmag 70E-1 -7 -> -1
ddctm307 comparetotmag 7.0 -7E+0 -> -1
ddctm308 comparetotmag 7.0 -70E-1 -> 0
ddctm309 comparetotmag 7 -.7E+1 -> 0
ddctm310 comparetotmag 7 -70E-1 -> 1
ddctm320 comparetotmag 8.0 -7.0 -> 1
ddctm321 comparetotmag 8.0 -7 -> 1
ddctm322 comparetotmag 8 -7.0 -> 1
ddctm323 comparetotmag 8E+0 -7.0 -> 1
ddctm324 comparetotmag 80E-1 -7.0 -> 1
ddctm325 comparetotmag .8E+1 -7 -> 1
ddctm326 comparetotmag 80E-1 -7 -> 1
ddctm327 comparetotmag 8.0 -7E+0 -> 1
ddctm328 comparetotmag 8.0 -70E-1 -> 1
ddctm329 comparetotmag 8 -.7E+1 -> 1
ddctm330 comparetotmag 8 -70E-1 -> 1
ddctm340 comparetotmag 8.0 -9.0 -> -1
ddctm341 comparetotmag 8.0 -9 -> -1
ddctm342 comparetotmag 8 -9.0 -> -1
ddctm343 comparetotmag 8E+0 -9.0 -> -1
ddctm344 comparetotmag 80E-1 -9.0 -> -1
ddctm345 comparetotmag .8E+1 -9 -> -1
ddctm346 comparetotmag 80E-1 -9 -> -1
ddctm347 comparetotmag 8.0 -9E+0 -> -1
ddctm348 comparetotmag 8.0 -90E-1 -> -1
ddctm349 comparetotmag 8 -.9E+1 -> -1
ddctm350 comparetotmag 8 -90E-1 -> -1
-- and again, with sign changes -- ..
ddctm400 comparetotmag -7.0 -7.0 -> 0
ddctm401 comparetotmag -7.0 -7 -> -1
ddctm402 comparetotmag -7 -7.0 -> 1
ddctm403 comparetotmag -7E+0 -7.0 -> 1
ddctm404 comparetotmag -70E-1 -7.0 -> 0
ddctm405 comparetotmag -.7E+1 -7 -> 0
ddctm406 comparetotmag -70E-1 -7 -> -1
ddctm407 comparetotmag -7.0 -7E+0 -> -1
ddctm408 comparetotmag -7.0 -70E-1 -> 0
ddctm409 comparetotmag -7 -.7E+1 -> 0
ddctm410 comparetotmag -7 -70E-1 -> 1
ddctm420 comparetotmag -8.0 -7.0 -> 1
ddctm421 comparetotmag -8.0 -7 -> 1
ddctm422 comparetotmag -8 -7.0 -> 1
ddctm423 comparetotmag -8E+0 -7.0 -> 1
ddctm424 comparetotmag -80E-1 -7.0 -> 1
ddctm425 comparetotmag -.8E+1 -7 -> 1
ddctm426 comparetotmag -80E-1 -7 -> 1
ddctm427 comparetotmag -8.0 -7E+0 -> 1
ddctm428 comparetotmag -8.0 -70E-1 -> 1
ddctm429 comparetotmag -8 -.7E+1 -> 1
ddctm430 comparetotmag -8 -70E-1 -> 1
ddctm440 comparetotmag -8.0 -9.0 -> -1
ddctm441 comparetotmag -8.0 -9 -> -1
ddctm442 comparetotmag -8 -9.0 -> -1
ddctm443 comparetotmag -8E+0 -9.0 -> -1
ddctm444 comparetotmag -80E-1 -9.0 -> -1
ddctm445 comparetotmag -.8E+1 -9 -> -1
ddctm446 comparetotmag -80E-1 -9 -> -1
ddctm447 comparetotmag -8.0 -9E+0 -> -1
ddctm448 comparetotmag -8.0 -90E-1 -> -1
ddctm449 comparetotmag -8 -.9E+1 -> -1
ddctm450 comparetotmag -8 -90E-1 -> -1
-- testcases that subtract to lots of zeros at boundaries [pgr]
ddctm473 comparetotmag 123.4560000000000E-89 123.456E-89 -> -1
ddctm474 comparetotmag 123.456000000000E+89 123.456E+89 -> -1
ddctm475 comparetotmag 123.45600000000E-89 123.456E-89 -> -1
ddctm476 comparetotmag 123.4560000000E+89 123.456E+89 -> -1
ddctm477 comparetotmag 123.456000000E-89 123.456E-89 -> -1
ddctm478 comparetotmag 123.45600000E+89 123.456E+89 -> -1
ddctm479 comparetotmag 123.4560000E-89 123.456E-89 -> -1
ddctm480 comparetotmag 123.456000E+89 123.456E+89 -> -1
ddctm481 comparetotmag 123.45600E-89 123.456E-89 -> -1
ddctm482 comparetotmag 123.4560E+89 123.456E+89 -> -1
ddctm483 comparetotmag 123.456E-89 123.456E-89 -> 0
ddctm487 comparetotmag 123.456E+89 123.4560000000000E+89 -> 1
ddctm488 comparetotmag 123.456E-89 123.456000000000E-89 -> 1
ddctm489 comparetotmag 123.456E+89 123.45600000000E+89 -> 1
ddctm490 comparetotmag 123.456E-89 123.4560000000E-89 -> 1
ddctm491 comparetotmag 123.456E+89 123.456000000E+89 -> 1
ddctm492 comparetotmag 123.456E-89 123.45600000E-89 -> 1
ddctm493 comparetotmag 123.456E+89 123.4560000E+89 -> 1
ddctm494 comparetotmag 123.456E-89 123.456000E-89 -> 1
ddctm495 comparetotmag 123.456E+89 123.45600E+89 -> 1
ddctm496 comparetotmag 123.456E-89 123.4560E-89 -> 1
ddctm497 comparetotmag 123.456E+89 123.456E+89 -> 0
-- wide-ranging, around precision; signs equal
ddctm498 comparetotmag 1 1E-17 -> 1
ddctm499 comparetotmag 1 1E-16 -> 1
ddctm500 comparetotmag 1 1E-15 -> 1
ddctm501 comparetotmag 1 1E-14 -> 1
ddctm502 comparetotmag 1 1E-13 -> 1
ddctm503 comparetotmag 1 1E-12 -> 1
ddctm504 comparetotmag 1 1E-11 -> 1
ddctm505 comparetotmag 1 1E-10 -> 1
ddctm506 comparetotmag 1 1E-9 -> 1
ddctm507 comparetotmag 1 1E-8 -> 1
ddctm508 comparetotmag 1 1E-7 -> 1
ddctm509 comparetotmag 1 1E-6 -> 1
ddctm510 comparetotmag 1 1E-5 -> 1
ddctm511 comparetotmag 1 1E-4 -> 1
ddctm512 comparetotmag 1 1E-3 -> 1
ddctm513 comparetotmag 1 1E-2 -> 1
ddctm514 comparetotmag 1 1E-1 -> 1
ddctm515 comparetotmag 1 1E-0 -> 0
ddctm516 comparetotmag 1 1E+1 -> -1
ddctm517 comparetotmag 1 1E+2 -> -1
ddctm518 comparetotmag 1 1E+3 -> -1
ddctm519 comparetotmag 1 1E+4 -> -1
ddctm521 comparetotmag 1 1E+5 -> -1
ddctm522 comparetotmag 1 1E+6 -> -1
ddctm523 comparetotmag 1 1E+7 -> -1
ddctm524 comparetotmag 1 1E+8 -> -1
ddctm525 comparetotmag 1 1E+9 -> -1
ddctm526 comparetotmag 1 1E+10 -> -1
ddctm527 comparetotmag 1 1E+11 -> -1
ddctm528 comparetotmag 1 1E+12 -> -1
ddctm529 comparetotmag 1 1E+13 -> -1
ddctm530 comparetotmag 1 1E+14 -> -1
ddctm531 comparetotmag 1 1E+15 -> -1
ddctm532 comparetotmag 1 1E+16 -> -1
ddctm533 comparetotmag 1 1E+17 -> -1
-- LR swap
ddctm538 comparetotmag 1E-17 1 -> -1
ddctm539 comparetotmag 1E-16 1 -> -1
ddctm540 comparetotmag 1E-15 1 -> -1
ddctm541 comparetotmag 1E-14 1 -> -1
ddctm542 comparetotmag 1E-13 1 -> -1
ddctm543 comparetotmag 1E-12 1 -> -1
ddctm544 comparetotmag 1E-11 1 -> -1
ddctm545 comparetotmag 1E-10 1 -> -1
ddctm546 comparetotmag 1E-9 1 -> -1
ddctm547 comparetotmag 1E-8 1 -> -1
ddctm548 comparetotmag 1E-7 1 -> -1
ddctm549 comparetotmag 1E-6 1 -> -1
ddctm550 comparetotmag 1E-5 1 -> -1
ddctm551 comparetotmag 1E-4 1 -> -1
ddctm552 comparetotmag 1E-3 1 -> -1
ddctm553 comparetotmag 1E-2 1 -> -1
ddctm554 comparetotmag 1E-1 1 -> -1
ddctm555 comparetotmag 1E-0 1 -> 0
ddctm556 comparetotmag 1E+1 1 -> 1
ddctm557 comparetotmag 1E+2 1 -> 1
ddctm558 comparetotmag 1E+3 1 -> 1
ddctm559 comparetotmag 1E+4 1 -> 1
ddctm561 comparetotmag 1E+5 1 -> 1
ddctm562 comparetotmag 1E+6 1 -> 1
ddctm563 comparetotmag 1E+7 1 -> 1
ddctm564 comparetotmag 1E+8 1 -> 1
ddctm565 comparetotmag 1E+9 1 -> 1
ddctm566 comparetotmag 1E+10 1 -> 1
ddctm567 comparetotmag 1E+11 1 -> 1
ddctm568 comparetotmag 1E+12 1 -> 1
ddctm569 comparetotmag 1E+13 1 -> 1
ddctm570 comparetotmag 1E+14 1 -> 1
ddctm571 comparetotmag 1E+15 1 -> 1
ddctm572 comparetotmag 1E+16 1 -> 1
ddctm573 comparetotmag 1E+17 1 -> 1
-- similar with a useful coefficient, one side only
ddctm578 comparetotmag 0.000000987654321 1E-17 -> 1
ddctm579 comparetotmag 0.000000987654321 1E-16 -> 1
ddctm580 comparetotmag 0.000000987654321 1E-15 -> 1
ddctm581 comparetotmag 0.000000987654321 1E-14 -> 1
ddctm582 comparetotmag 0.000000987654321 1E-13 -> 1
ddctm583 comparetotmag 0.000000987654321 1E-12 -> 1
ddctm584 comparetotmag 0.000000987654321 1E-11 -> 1
ddctm585 comparetotmag 0.000000987654321 1E-10 -> 1
ddctm586 comparetotmag 0.000000987654321 1E-9 -> 1
ddctm587 comparetotmag 0.000000987654321 1E-8 -> 1
ddctm588 comparetotmag 0.000000987654321 1E-7 -> 1
ddctm589 comparetotmag 0.000000987654321 1E-6 -> -1
ddctm590 comparetotmag 0.000000987654321 1E-5 -> -1
ddctm591 comparetotmag 0.000000987654321 1E-4 -> -1
ddctm592 comparetotmag 0.000000987654321 1E-3 -> -1
ddctm593 comparetotmag 0.000000987654321 1E-2 -> -1
ddctm594 comparetotmag 0.000000987654321 1E-1 -> -1
ddctm595 comparetotmag 0.000000987654321 1E-0 -> -1
ddctm596 comparetotmag 0.000000987654321 1E+1 -> -1
ddctm597 comparetotmag 0.000000987654321 1E+2 -> -1
ddctm598 comparetotmag 0.000000987654321 1E+3 -> -1
ddctm599 comparetotmag 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
ddctm600 comparetotmag 12 12.2345 -> -1
ddctm601 comparetotmag 12.0 12.2345 -> -1
ddctm602 comparetotmag 12.00 12.2345 -> -1
ddctm603 comparetotmag 12.000 12.2345 -> -1
ddctm604 comparetotmag 12.0000 12.2345 -> -1
ddctm605 comparetotmag 12.00000 12.2345 -> -1
ddctm606 comparetotmag 12.000000 12.2345 -> -1
ddctm607 comparetotmag 12.0000000 12.2345 -> -1
ddctm608 comparetotmag 12.00000000 12.2345 -> -1
ddctm609 comparetotmag 12.000000000 12.2345 -> -1
ddctm610 comparetotmag 12.1234 12 -> 1
ddctm611 comparetotmag 12.1234 12.0 -> 1
ddctm612 comparetotmag 12.1234 12.00 -> 1
ddctm613 comparetotmag 12.1234 12.000 -> 1
ddctm614 comparetotmag 12.1234 12.0000 -> 1
ddctm615 comparetotmag 12.1234 12.00000 -> 1
ddctm616 comparetotmag 12.1234 12.000000 -> 1
ddctm617 comparetotmag 12.1234 12.0000000 -> 1
ddctm618 comparetotmag 12.1234 12.00000000 -> 1
ddctm619 comparetotmag 12.1234 12.000000000 -> 1
ddctm620 comparetotmag -12 -12.2345 -> -1
ddctm621 comparetotmag -12.0 -12.2345 -> -1
ddctm622 comparetotmag -12.00 -12.2345 -> -1
ddctm623 comparetotmag -12.000 -12.2345 -> -1
ddctm624 comparetotmag -12.0000 -12.2345 -> -1
ddctm625 comparetotmag -12.00000 -12.2345 -> -1
ddctm626 comparetotmag -12.000000 -12.2345 -> -1
ddctm627 comparetotmag -12.0000000 -12.2345 -> -1
ddctm628 comparetotmag -12.00000000 -12.2345 -> -1
ddctm629 comparetotmag -12.000000000 -12.2345 -> -1
ddctm630 comparetotmag -12.1234 -12 -> 1
ddctm631 comparetotmag -12.1234 -12.0 -> 1
ddctm632 comparetotmag -12.1234 -12.00 -> 1
ddctm633 comparetotmag -12.1234 -12.000 -> 1
ddctm634 comparetotmag -12.1234 -12.0000 -> 1
ddctm635 comparetotmag -12.1234 -12.00000 -> 1
ddctm636 comparetotmag -12.1234 -12.000000 -> 1
ddctm637 comparetotmag -12.1234 -12.0000000 -> 1
ddctm638 comparetotmag -12.1234 -12.00000000 -> 1
ddctm639 comparetotmag -12.1234 -12.000000000 -> 1
-- extended zeros
ddctm640 comparetotmag 0 0 -> 0
ddctm641 comparetotmag 0 -0 -> 0
ddctm642 comparetotmag 0 -0.0 -> 1
ddctm643 comparetotmag 0 0.0 -> 1
ddctm644 comparetotmag -0 0 -> 0
ddctm645 comparetotmag -0 -0 -> 0
ddctm646 comparetotmag -0 -0.0 -> 1
ddctm647 comparetotmag -0 0.0 -> 1
ddctm648 comparetotmag 0.0 0 -> -1
ddctm649 comparetotmag 0.0 -0 -> -1
ddctm650 comparetotmag 0.0 -0.0 -> 0
ddctm651 comparetotmag 0.0 0.0 -> 0
ddctm652 comparetotmag -0.0 0 -> -1
ddctm653 comparetotmag -0.0 -0 -> -1
ddctm654 comparetotmag -0.0 -0.0 -> 0
ddctm655 comparetotmag -0.0 0.0 -> 0
ddctm656 comparetotmag -0E1 0.0 -> 1
ddctm657 comparetotmag -0E2 0.0 -> 1
ddctm658 comparetotmag 0E1 0.0 -> 1
ddctm659 comparetotmag 0E2 0.0 -> 1
ddctm660 comparetotmag -0E1 0 -> 1
ddctm661 comparetotmag -0E2 0 -> 1
ddctm662 comparetotmag 0E1 0 -> 1
ddctm663 comparetotmag 0E2 0 -> 1
ddctm664 comparetotmag -0E1 -0E1 -> 0
ddctm665 comparetotmag -0E2 -0E1 -> 1
ddctm666 comparetotmag 0E1 -0E1 -> 0
ddctm667 comparetotmag 0E2 -0E1 -> 1
ddctm668 comparetotmag -0E1 -0E2 -> -1
ddctm669 comparetotmag -0E2 -0E2 -> 0
ddctm670 comparetotmag 0E1 -0E2 -> -1
ddctm671 comparetotmag 0E2 -0E2 -> 0
ddctm672 comparetotmag -0E1 0E1 -> 0
ddctm673 comparetotmag -0E2 0E1 -> 1
ddctm674 comparetotmag 0E1 0E1 -> 0
ddctm675 comparetotmag 0E2 0E1 -> 1
ddctm676 comparetotmag -0E1 0E2 -> -1
ddctm677 comparetotmag -0E2 0E2 -> 0
ddctm678 comparetotmag 0E1 0E2 -> -1
ddctm679 comparetotmag 0E2 0E2 -> 0
-- trailing zeros; unit-y
ddctm680 comparetotmag 12 12 -> 0
ddctm681 comparetotmag 12 12.0 -> 1
ddctm682 comparetotmag 12 12.00 -> 1
ddctm683 comparetotmag 12 12.000 -> 1
ddctm684 comparetotmag 12 12.0000 -> 1
ddctm685 comparetotmag 12 12.00000 -> 1
ddctm686 comparetotmag 12 12.000000 -> 1
ddctm687 comparetotmag 12 12.0000000 -> 1
ddctm688 comparetotmag 12 12.00000000 -> 1
ddctm689 comparetotmag 12 12.000000000 -> 1
ddctm690 comparetotmag 12 12 -> 0
ddctm691 comparetotmag 12.0 12 -> -1
ddctm692 comparetotmag 12.00 12 -> -1
ddctm693 comparetotmag 12.000 12 -> -1
ddctm694 comparetotmag 12.0000 12 -> -1
ddctm695 comparetotmag 12.00000 12 -> -1
ddctm696 comparetotmag 12.000000 12 -> -1
ddctm697 comparetotmag 12.0000000 12 -> -1
ddctm698 comparetotmag 12.00000000 12 -> -1
ddctm699 comparetotmag 12.000000000 12 -> -1
-- old long operand checks
ddctm701 comparetotmag 12345678000 1 -> 1
ddctm702 comparetotmag 1 12345678000 -> -1
ddctm703 comparetotmag 1234567800 1 -> 1
ddctm704 comparetotmag 1 1234567800 -> -1
ddctm705 comparetotmag 1234567890 1 -> 1
ddctm706 comparetotmag 1 1234567890 -> -1
ddctm707 comparetotmag 1234567891 1 -> 1
ddctm708 comparetotmag 1 1234567891 -> -1
ddctm709 comparetotmag 12345678901 1 -> 1
ddctm710 comparetotmag 1 12345678901 -> -1
ddctm711 comparetotmag 1234567896 1 -> 1
ddctm712 comparetotmag 1 1234567896 -> -1
ddctm713 comparetotmag -1234567891 1 -> 1
ddctm714 comparetotmag 1 -1234567891 -> -1
ddctm715 comparetotmag -12345678901 1 -> 1
ddctm716 comparetotmag 1 -12345678901 -> -1
ddctm717 comparetotmag -1234567896 1 -> 1
ddctm718 comparetotmag 1 -1234567896 -> -1
-- old residue cases
ddctm740 comparetotmag 1 0.9999999 -> 1
ddctm741 comparetotmag 1 0.999999 -> 1
ddctm742 comparetotmag 1 0.99999 -> 1
ddctm743 comparetotmag 1 1.0000 -> 1
ddctm744 comparetotmag 1 1.00001 -> -1
ddctm745 comparetotmag 1 1.000001 -> -1
ddctm746 comparetotmag 1 1.0000001 -> -1
ddctm750 comparetotmag 0.9999999 1 -> -1
ddctm751 comparetotmag 0.999999 1 -> -1
ddctm752 comparetotmag 0.99999 1 -> -1
ddctm753 comparetotmag 1.0000 1 -> -1
ddctm754 comparetotmag 1.00001 1 -> 1
ddctm755 comparetotmag 1.000001 1 -> 1
ddctm756 comparetotmag 1.0000001 1 -> 1
-- Specials
ddctm780 comparetotmag Inf -Inf -> 0
ddctm781 comparetotmag Inf -1000 -> 1
ddctm782 comparetotmag Inf -1 -> 1
ddctm783 comparetotmag Inf -0 -> 1
ddctm784 comparetotmag Inf 0 -> 1
ddctm785 comparetotmag Inf 1 -> 1
ddctm786 comparetotmag Inf 1000 -> 1
ddctm787 comparetotmag Inf Inf -> 0
ddctm788 comparetotmag -1000 Inf -> -1
ddctm789 comparetotmag -Inf Inf -> 0
ddctm790 comparetotmag -1 Inf -> -1
ddctm791 comparetotmag -0 Inf -> -1
ddctm792 comparetotmag 0 Inf -> -1
ddctm793 comparetotmag 1 Inf -> -1
ddctm794 comparetotmag 1000 Inf -> -1
ddctm795 comparetotmag Inf Inf -> 0
ddctm800 comparetotmag -Inf -Inf -> 0
ddctm801 comparetotmag -Inf -1000 -> 1
ddctm802 comparetotmag -Inf -1 -> 1
ddctm803 comparetotmag -Inf -0 -> 1
ddctm804 comparetotmag -Inf 0 -> 1
ddctm805 comparetotmag -Inf 1 -> 1
ddctm806 comparetotmag -Inf 1000 -> 1
ddctm807 comparetotmag -Inf Inf -> 0
ddctm808 comparetotmag -Inf -Inf -> 0
ddctm809 comparetotmag -1000 -Inf -> -1
ddctm810 comparetotmag -1 -Inf -> -1
ddctm811 comparetotmag -0 -Inf -> -1
ddctm812 comparetotmag 0 -Inf -> -1
ddctm813 comparetotmag 1 -Inf -> -1
ddctm814 comparetotmag 1000 -Inf -> -1
ddctm815 comparetotmag Inf -Inf -> 0
ddctm821 comparetotmag NaN -Inf -> 1
ddctm822 comparetotmag NaN -1000 -> 1
ddctm823 comparetotmag NaN -1 -> 1
ddctm824 comparetotmag NaN -0 -> 1
ddctm825 comparetotmag NaN 0 -> 1
ddctm826 comparetotmag NaN 1 -> 1
ddctm827 comparetotmag NaN 1000 -> 1
ddctm828 comparetotmag NaN Inf -> 1
ddctm829 comparetotmag NaN NaN -> 0
ddctm830 comparetotmag -Inf NaN -> -1
ddctm831 comparetotmag -1000 NaN -> -1
ddctm832 comparetotmag -1 NaN -> -1
ddctm833 comparetotmag -0 NaN -> -1
ddctm834 comparetotmag 0 NaN -> -1
ddctm835 comparetotmag 1 NaN -> -1
ddctm836 comparetotmag 1000 NaN -> -1
ddctm837 comparetotmag Inf NaN -> -1
ddctm838 comparetotmag -NaN -NaN -> 0
ddctm839 comparetotmag +NaN -NaN -> 0
ddctm840 comparetotmag -NaN +NaN -> 0
ddctm841 comparetotmag sNaN -sNaN -> 0
ddctm842 comparetotmag sNaN -NaN -> -1
ddctm843 comparetotmag sNaN -Inf -> 1
ddctm844 comparetotmag sNaN -1000 -> 1
ddctm845 comparetotmag sNaN -1 -> 1
ddctm846 comparetotmag sNaN -0 -> 1
ddctm847 comparetotmag sNaN 0 -> 1
ddctm848 comparetotmag sNaN 1 -> 1
ddctm849 comparetotmag sNaN 1000 -> 1
ddctm850 comparetotmag sNaN NaN -> -1
ddctm851 comparetotmag sNaN sNaN -> 0
ddctm852 comparetotmag -sNaN sNaN -> 0
ddctm853 comparetotmag -NaN sNaN -> 1
ddctm854 comparetotmag -Inf sNaN -> -1
ddctm855 comparetotmag -1000 sNaN -> -1
ddctm856 comparetotmag -1 sNaN -> -1
ddctm857 comparetotmag -0 sNaN -> -1
ddctm858 comparetotmag 0 sNaN -> -1
ddctm859 comparetotmag 1 sNaN -> -1
ddctm860 comparetotmag 1000 sNaN -> -1
ddctm861 comparetotmag Inf sNaN -> -1
ddctm862 comparetotmag NaN sNaN -> 1
ddctm863 comparetotmag sNaN sNaN -> 0
ddctm871 comparetotmag -sNaN -sNaN -> 0
ddctm872 comparetotmag -sNaN -NaN -> -1
ddctm873 comparetotmag -sNaN -Inf -> 1
ddctm874 comparetotmag -sNaN -1000 -> 1
ddctm875 comparetotmag -sNaN -1 -> 1
ddctm876 comparetotmag -sNaN -0 -> 1
ddctm877 comparetotmag -sNaN 0 -> 1
ddctm878 comparetotmag -sNaN 1 -> 1
ddctm879 comparetotmag -sNaN 1000 -> 1
ddctm880 comparetotmag -sNaN NaN -> -1
ddctm881 comparetotmag -sNaN sNaN -> 0
ddctm882 comparetotmag -sNaN -sNaN -> 0
ddctm883 comparetotmag -NaN -sNaN -> 1
ddctm884 comparetotmag -Inf -sNaN -> -1
ddctm885 comparetotmag -1000 -sNaN -> -1
ddctm886 comparetotmag -1 -sNaN -> -1
ddctm887 comparetotmag -0 -sNaN -> -1
ddctm888 comparetotmag 0 -sNaN -> -1
ddctm889 comparetotmag 1 -sNaN -> -1
ddctm890 comparetotmag 1000 -sNaN -> -1
ddctm891 comparetotmag Inf -sNaN -> -1
ddctm892 comparetotmag NaN -sNaN -> 1
ddctm893 comparetotmag sNaN -sNaN -> 0
-- NaNs with payload
ddctm960 comparetotmag NaN9 -Inf -> 1
ddctm961 comparetotmag NaN8 999 -> 1
ddctm962 comparetotmag NaN77 Inf -> 1
ddctm963 comparetotmag -NaN67 NaN5 -> 1
ddctm964 comparetotmag -Inf -NaN4 -> -1
ddctm965 comparetotmag -999 -NaN33 -> -1
ddctm966 comparetotmag Inf NaN2 -> -1
ddctm970 comparetotmag -NaN41 -NaN42 -> -1
ddctm971 comparetotmag +NaN41 -NaN42 -> -1
ddctm972 comparetotmag -NaN41 +NaN42 -> -1
ddctm973 comparetotmag +NaN41 +NaN42 -> -1
ddctm974 comparetotmag -NaN42 -NaN01 -> 1
ddctm975 comparetotmag +NaN42 -NaN01 -> 1
ddctm976 comparetotmag -NaN42 +NaN01 -> 1
ddctm977 comparetotmag +NaN42 +NaN01 -> 1
ddctm980 comparetotmag -sNaN771 -sNaN772 -> -1
ddctm981 comparetotmag +sNaN771 -sNaN772 -> -1
ddctm982 comparetotmag -sNaN771 +sNaN772 -> -1
ddctm983 comparetotmag +sNaN771 +sNaN772 -> -1
ddctm984 comparetotmag -sNaN772 -sNaN771 -> 1
ddctm985 comparetotmag +sNaN772 -sNaN771 -> 1
ddctm986 comparetotmag -sNaN772 +sNaN771 -> 1
ddctm987 comparetotmag +sNaN772 +sNaN771 -> 1
ddctm991 comparetotmag -sNaN99 -Inf -> 1
ddctm992 comparetotmag sNaN98 -11 -> 1
ddctm993 comparetotmag sNaN97 NaN -> -1
ddctm994 comparetotmag sNaN16 sNaN94 -> -1
ddctm995 comparetotmag NaN85 sNaN83 -> 1
ddctm996 comparetotmag -Inf sNaN92 -> -1
ddctm997 comparetotmag 088 sNaN81 -> -1
ddctm998 comparetotmag Inf sNaN90 -> -1
ddctm999 comparetotmag NaN -sNaN89 -> 1
-- spread zeros
ddctm1110 comparetotmag 0E-383 0 -> -1
ddctm1111 comparetotmag 0E-383 -0 -> -1
ddctm1112 comparetotmag -0E-383 0 -> -1
ddctm1113 comparetotmag -0E-383 -0 -> -1
ddctm1114 comparetotmag 0E-383 0E+384 -> -1
ddctm1115 comparetotmag 0E-383 -0E+384 -> -1
ddctm1116 comparetotmag -0E-383 0E+384 -> -1
ddctm1117 comparetotmag -0E-383 -0E+384 -> -1
ddctm1118 comparetotmag 0 0E+384 -> -1
ddctm1119 comparetotmag 0 -0E+384 -> -1
ddctm1120 comparetotmag -0 0E+384 -> -1
ddctm1121 comparetotmag -0 -0E+384 -> -1
ddctm1130 comparetotmag 0E+384 0 -> 1
ddctm1131 comparetotmag 0E+384 -0 -> 1
ddctm1132 comparetotmag -0E+384 0 -> 1
ddctm1133 comparetotmag -0E+384 -0 -> 1
ddctm1134 comparetotmag 0E+384 0E-383 -> 1
ddctm1135 comparetotmag 0E+384 -0E-383 -> 1
ddctm1136 comparetotmag -0E+384 0E-383 -> 1
ddctm1137 comparetotmag -0E+384 -0E-383 -> 1
ddctm1138 comparetotmag 0 0E-383 -> 1
ddctm1139 comparetotmag 0 -0E-383 -> 1
ddctm1140 comparetotmag -0 0E-383 -> 1
ddctm1141 comparetotmag -0 -0E-383 -> 1
-- Null tests
ddctm9990 comparetotmag 10 # -> NaN Invalid_operation
ddctm9991 comparetotmag # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,88 @@
------------------------------------------------------------------------
-- ddCopy.decTest -- quiet decDouble copy --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check
ddcpy001 copy +7.50 -> 7.50
-- Infinities
ddcpy011 copy Infinity -> Infinity
ddcpy012 copy -Infinity -> -Infinity
-- NaNs, 0 payload
ddcpy021 copy NaN -> NaN
ddcpy022 copy -NaN -> -NaN
ddcpy023 copy sNaN -> sNaN
ddcpy024 copy -sNaN -> -sNaN
-- NaNs, non-0 payload
ddcpy031 copy NaN10 -> NaN10
ddcpy032 copy -NaN10 -> -NaN10
ddcpy033 copy sNaN10 -> sNaN10
ddcpy034 copy -sNaN10 -> -sNaN10
ddcpy035 copy NaN7 -> NaN7
ddcpy036 copy -NaN7 -> -NaN7
ddcpy037 copy sNaN101 -> sNaN101
ddcpy038 copy -sNaN101 -> -sNaN101
-- finites
ddcpy101 copy 7 -> 7
ddcpy102 copy -7 -> -7
ddcpy103 copy 75 -> 75
ddcpy104 copy -75 -> -75
ddcpy105 copy 7.50 -> 7.50
ddcpy106 copy -7.50 -> -7.50
ddcpy107 copy 7.500 -> 7.500
ddcpy108 copy -7.500 -> -7.500
-- zeros
ddcpy111 copy 0 -> 0
ddcpy112 copy -0 -> -0
ddcpy113 copy 0E+4 -> 0E+4
ddcpy114 copy -0E+4 -> -0E+4
ddcpy115 copy 0.0000 -> 0.0000
ddcpy116 copy -0.0000 -> -0.0000
ddcpy117 copy 0E-141 -> 0E-141
ddcpy118 copy -0E-141 -> -0E-141
-- full coefficients, alternating bits
ddcpy121 copy 2682682682682682 -> 2682682682682682
ddcpy122 copy -2682682682682682 -> -2682682682682682
ddcpy123 copy 1341341341341341 -> 1341341341341341
ddcpy124 copy -1341341341341341 -> -1341341341341341
-- Nmax, Nmin, Ntiny
ddcpy131 copy 9.999999999999999E+384 -> 9.999999999999999E+384
ddcpy132 copy 1E-383 -> 1E-383
ddcpy133 copy 1.000000000000000E-383 -> 1.000000000000000E-383
ddcpy134 copy 1E-398 -> 1E-398
ddcpy135 copy -1E-398 -> -1E-398
ddcpy136 copy -1.000000000000000E-383 -> -1.000000000000000E-383
ddcpy137 copy -1E-383 -> -1E-383
ddcpy138 copy -9.999999999999999E+384 -> -9.999999999999999E+384

View file

@ -0,0 +1,88 @@
------------------------------------------------------------------------
-- ddCopyAbs.decTest -- quiet decDouble copy and set sign to zero --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check
ddcpa001 copyabs +7.50 -> 7.50
-- Infinities
ddcpa011 copyabs Infinity -> Infinity
ddcpa012 copyabs -Infinity -> Infinity
-- NaNs, 0 payload
ddcpa021 copyabs NaN -> NaN
ddcpa022 copyabs -NaN -> NaN
ddcpa023 copyabs sNaN -> sNaN
ddcpa024 copyabs -sNaN -> sNaN
-- NaNs, non-0 payload
ddcpa031 copyabs NaN10 -> NaN10
ddcpa032 copyabs -NaN15 -> NaN15
ddcpa033 copyabs sNaN15 -> sNaN15
ddcpa034 copyabs -sNaN10 -> sNaN10
ddcpa035 copyabs NaN7 -> NaN7
ddcpa036 copyabs -NaN7 -> NaN7
ddcpa037 copyabs sNaN101 -> sNaN101
ddcpa038 copyabs -sNaN101 -> sNaN101
-- finites
ddcpa101 copyabs 7 -> 7
ddcpa102 copyabs -7 -> 7
ddcpa103 copyabs 75 -> 75
ddcpa104 copyabs -75 -> 75
ddcpa105 copyabs 7.10 -> 7.10
ddcpa106 copyabs -7.10 -> 7.10
ddcpa107 copyabs 7.500 -> 7.500
ddcpa108 copyabs -7.500 -> 7.500
-- zeros
ddcpa111 copyabs 0 -> 0
ddcpa112 copyabs -0 -> 0
ddcpa113 copyabs 0E+6 -> 0E+6
ddcpa114 copyabs -0E+6 -> 0E+6
ddcpa115 copyabs 0.0000 -> 0.0000
ddcpa116 copyabs -0.0000 -> 0.0000
ddcpa117 copyabs 0E-141 -> 0E-141
ddcpa118 copyabs -0E-141 -> 0E-141
-- full coefficients, alternating bits
ddcpa121 copyabs 2682682682682682 -> 2682682682682682
ddcpa122 copyabs -2682682682682682 -> 2682682682682682
ddcpa123 copyabs 1341341341341341 -> 1341341341341341
ddcpa124 copyabs -1341341341341341 -> 1341341341341341
-- Nmax, Nmin, Ntiny
ddcpa131 copyabs 9.999999999999999E+384 -> 9.999999999999999E+384
ddcpa132 copyabs 1E-383 -> 1E-383
ddcpa133 copyabs 1.000000000000000E-383 -> 1.000000000000000E-383
ddcpa134 copyabs 1E-398 -> 1E-398
ddcpa135 copyabs -1E-398 -> 1E-398
ddcpa136 copyabs -1.000000000000000E-383 -> 1.000000000000000E-383
ddcpa137 copyabs -1E-383 -> 1E-383
ddcpa138 copyabs -9.999999999999999E+384 -> 9.999999999999999E+384

View file

@ -0,0 +1,88 @@
------------------------------------------------------------------------
-- ddCopyNegate.decTest -- quiet decDouble copy and negate --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check
ddcpn001 copynegate +7.50 -> -7.50
-- Infinities
ddcpn011 copynegate Infinity -> -Infinity
ddcpn012 copynegate -Infinity -> Infinity
-- NaNs, 0 payload
ddcpn021 copynegate NaN -> -NaN
ddcpn022 copynegate -NaN -> NaN
ddcpn023 copynegate sNaN -> -sNaN
ddcpn024 copynegate -sNaN -> sNaN
-- NaNs, non-0 payload
ddcpn031 copynegate NaN13 -> -NaN13
ddcpn032 copynegate -NaN13 -> NaN13
ddcpn033 copynegate sNaN13 -> -sNaN13
ddcpn034 copynegate -sNaN13 -> sNaN13
ddcpn035 copynegate NaN70 -> -NaN70
ddcpn036 copynegate -NaN70 -> NaN70
ddcpn037 copynegate sNaN101 -> -sNaN101
ddcpn038 copynegate -sNaN101 -> sNaN101
-- finites
ddcpn101 copynegate 7 -> -7
ddcpn102 copynegate -7 -> 7
ddcpn103 copynegate 75 -> -75
ddcpn104 copynegate -75 -> 75
ddcpn105 copynegate 7.50 -> -7.50
ddcpn106 copynegate -7.50 -> 7.50
ddcpn107 copynegate 7.500 -> -7.500
ddcpn108 copynegate -7.500 -> 7.500
-- zeros
ddcpn111 copynegate 0 -> -0
ddcpn112 copynegate -0 -> 0
ddcpn113 copynegate 0E+4 -> -0E+4
ddcpn114 copynegate -0E+4 -> 0E+4
ddcpn115 copynegate 0.0000 -> -0.0000
ddcpn116 copynegate -0.0000 -> 0.0000
ddcpn117 copynegate 0E-141 -> -0E-141
ddcpn118 copynegate -0E-141 -> 0E-141
-- full coefficients, alternating bits
ddcpn121 copynegate 2682682682682682 -> -2682682682682682
ddcpn122 copynegate -2682682682682682 -> 2682682682682682
ddcpn123 copynegate 1341341341341341 -> -1341341341341341
ddcpn124 copynegate -1341341341341341 -> 1341341341341341
-- Nmax, Nmin, Ntiny
ddcpn131 copynegate 9.999999999999999E+384 -> -9.999999999999999E+384
ddcpn132 copynegate 1E-383 -> -1E-383
ddcpn133 copynegate 1.000000000000000E-383 -> -1.000000000000000E-383
ddcpn134 copynegate 1E-398 -> -1E-398
ddcpn135 copynegate -1E-398 -> 1E-398
ddcpn136 copynegate -1.000000000000000E-383 -> 1.000000000000000E-383
ddcpn137 copynegate -1E-383 -> 1E-383
ddcpn138 copynegate -9.999999999999999E+384 -> 9.999999999999999E+384

View file

@ -0,0 +1,175 @@
------------------------------------------------------------------------
-- ddCopySign.decTest -- quiet decDouble copy with sign from rhs --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check
ddcps001 copysign +7.50 11 -> 7.50
-- Infinities
ddcps011 copysign Infinity 11 -> Infinity
ddcps012 copysign -Infinity 11 -> Infinity
-- NaNs, 0 payload
ddcps021 copysign NaN 11 -> NaN
ddcps022 copysign -NaN 11 -> NaN
ddcps023 copysign sNaN 11 -> sNaN
ddcps024 copysign -sNaN 11 -> sNaN
-- NaNs, non-0 payload
ddcps031 copysign NaN10 11 -> NaN10
ddcps032 copysign -NaN10 11 -> NaN10
ddcps033 copysign sNaN10 11 -> sNaN10
ddcps034 copysign -sNaN10 11 -> sNaN10
ddcps035 copysign NaN7 11 -> NaN7
ddcps036 copysign -NaN7 11 -> NaN7
ddcps037 copysign sNaN101 11 -> sNaN101
ddcps038 copysign -sNaN101 11 -> sNaN101
-- finites
ddcps101 copysign 7 11 -> 7
ddcps102 copysign -7 11 -> 7
ddcps103 copysign 75 11 -> 75
ddcps104 copysign -75 11 -> 75
ddcps105 copysign 7.50 11 -> 7.50
ddcps106 copysign -7.50 11 -> 7.50
ddcps107 copysign 7.500 11 -> 7.500
ddcps108 copysign -7.500 11 -> 7.500
-- zeros
ddcps111 copysign 0 11 -> 0
ddcps112 copysign -0 11 -> 0
ddcps113 copysign 0E+4 11 -> 0E+4
ddcps114 copysign -0E+4 11 -> 0E+4
ddcps115 copysign 0.0000 11 -> 0.0000
ddcps116 copysign -0.0000 11 -> 0.0000
ddcps117 copysign 0E-141 11 -> 0E-141
ddcps118 copysign -0E-141 11 -> 0E-141
-- full coefficients, alternating bits
ddcps121 copysign 2682682682682682 11 -> 2682682682682682
ddcps122 copysign -2682682682682682 11 -> 2682682682682682
ddcps123 copysign 1341341341341341 11 -> 1341341341341341
ddcps124 copysign -1341341341341341 11 -> 1341341341341341
-- Nmax, Nmin, Ntiny
ddcps131 copysign 9.999999999999999E+384 11 -> 9.999999999999999E+384
ddcps132 copysign 1E-383 11 -> 1E-383
ddcps133 copysign 1.000000000000000E-383 11 -> 1.000000000000000E-383
ddcps134 copysign 1E-398 11 -> 1E-398
ddcps135 copysign -1E-398 11 -> 1E-398
ddcps136 copysign -1.000000000000000E-383 11 -> 1.000000000000000E-383
ddcps137 copysign -1E-383 11 -> 1E-383
ddcps138 copysign -9.999999999999999E+384 11 -> 9.999999999999999E+384
-- repeat with negative RHS
-- Infinities
ddcps211 copysign Infinity -34 -> -Infinity
ddcps212 copysign -Infinity -34 -> -Infinity
-- NaNs, 0 payload
ddcps221 copysign NaN -34 -> -NaN
ddcps222 copysign -NaN -34 -> -NaN
ddcps223 copysign sNaN -34 -> -sNaN
ddcps224 copysign -sNaN -34 -> -sNaN
-- NaNs, non-0 payload
ddcps231 copysign NaN10 -34 -> -NaN10
ddcps232 copysign -NaN10 -34 -> -NaN10
ddcps233 copysign sNaN10 -34 -> -sNaN10
ddcps234 copysign -sNaN10 -34 -> -sNaN10
ddcps235 copysign NaN7 -34 -> -NaN7
ddcps236 copysign -NaN7 -34 -> -NaN7
ddcps237 copysign sNaN101 -34 -> -sNaN101
ddcps238 copysign -sNaN101 -34 -> -sNaN101
-- finites
ddcps301 copysign 7 -34 -> -7
ddcps302 copysign -7 -34 -> -7
ddcps303 copysign 75 -34 -> -75
ddcps304 copysign -75 -34 -> -75
ddcps305 copysign 7.50 -34 -> -7.50
ddcps306 copysign -7.50 -34 -> -7.50
ddcps307 copysign 7.500 -34 -> -7.500
ddcps308 copysign -7.500 -34 -> -7.500
-- zeros
ddcps311 copysign 0 -34 -> -0
ddcps312 copysign -0 -34 -> -0
ddcps313 copysign 0E+4 -34 -> -0E+4
ddcps314 copysign -0E+4 -34 -> -0E+4
ddcps315 copysign 0.0000 -34 -> -0.0000
ddcps316 copysign -0.0000 -34 -> -0.0000
ddcps317 copysign 0E-141 -34 -> -0E-141
ddcps318 copysign -0E-141 -34 -> -0E-141
-- full coefficients, alternating bits
ddcps321 copysign 2682682682682682 -34 -> -2682682682682682
ddcps322 copysign -2682682682682682 -34 -> -2682682682682682
ddcps323 copysign 1341341341341341 -34 -> -1341341341341341
ddcps324 copysign -1341341341341341 -34 -> -1341341341341341
-- Nmax, Nmin, Ntiny
ddcps331 copysign 9.999999999999999E+384 -34 -> -9.999999999999999E+384
ddcps332 copysign 1E-383 -34 -> -1E-383
ddcps333 copysign 1.000000000000000E-383 -34 -> -1.000000000000000E-383
ddcps334 copysign 1E-398 -34 -> -1E-398
ddcps335 copysign -1E-398 -34 -> -1E-398
ddcps336 copysign -1.000000000000000E-383 -34 -> -1.000000000000000E-383
ddcps337 copysign -1E-383 -34 -> -1E-383
ddcps338 copysign -9.999999999999999E+384 -34 -> -9.999999999999999E+384
-- Other kinds of RHS
ddcps401 copysign 701 -34 -> -701
ddcps402 copysign -720 -34 -> -720
ddcps403 copysign 701 -0 -> -701
ddcps404 copysign -720 -0 -> -720
ddcps405 copysign 701 +0 -> 701
ddcps406 copysign -720 +0 -> 720
ddcps407 copysign 701 +34 -> 701
ddcps408 copysign -720 +34 -> 720
ddcps413 copysign 701 -Inf -> -701
ddcps414 copysign -720 -Inf -> -720
ddcps415 copysign 701 +Inf -> 701
ddcps416 copysign -720 +Inf -> 720
ddcps420 copysign 701 -NaN -> -701
ddcps421 copysign -720 -NaN -> -720
ddcps422 copysign 701 +NaN -> 701
ddcps423 copysign -720 +NaN -> 720
ddcps425 copysign -720 +NaN8 -> 720
ddcps426 copysign 701 -sNaN -> -701
ddcps427 copysign -720 -sNaN -> -720
ddcps428 copysign 701 +sNaN -> 701
ddcps429 copysign -720 +sNaN -> 720
ddcps430 copysign -720 +sNaN3 -> 720

View file

@ -0,0 +1,863 @@
------------------------------------------------------------------------
-- ddDivide.decTest -- decDouble division --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
dddiv001 divide 1 1 -> 1
dddiv002 divide 2 1 -> 2
dddiv003 divide 1 2 -> 0.5
dddiv004 divide 2 2 -> 1
dddiv005 divide 0 1 -> 0
dddiv006 divide 0 2 -> 0
dddiv007 divide 1 3 -> 0.3333333333333333 Inexact Rounded
dddiv008 divide 2 3 -> 0.6666666666666667 Inexact Rounded
dddiv009 divide 3 3 -> 1
dddiv010 divide 2.4 1 -> 2.4
dddiv011 divide 2.4 -1 -> -2.4
dddiv012 divide -2.4 1 -> -2.4
dddiv013 divide -2.4 -1 -> 2.4
dddiv014 divide 2.40 1 -> 2.40
dddiv015 divide 2.400 1 -> 2.400
dddiv016 divide 2.4 2 -> 1.2
dddiv017 divide 2.400 2 -> 1.200
dddiv018 divide 2. 2 -> 1
dddiv019 divide 20 20 -> 1
dddiv020 divide 187 187 -> 1
dddiv021 divide 5 2 -> 2.5
dddiv022 divide 50 20 -> 2.5
dddiv023 divide 500 200 -> 2.5
dddiv024 divide 50.0 20.0 -> 2.5
dddiv025 divide 5.00 2.00 -> 2.5
dddiv026 divide 5 2.0 -> 2.5
dddiv027 divide 5 2.000 -> 2.5
dddiv028 divide 5 0.20 -> 25
dddiv029 divide 5 0.200 -> 25
dddiv030 divide 10 1 -> 10
dddiv031 divide 100 1 -> 100
dddiv032 divide 1000 1 -> 1000
dddiv033 divide 1000 100 -> 10
dddiv035 divide 1 2 -> 0.5
dddiv036 divide 1 4 -> 0.25
dddiv037 divide 1 8 -> 0.125
dddiv038 divide 1 16 -> 0.0625
dddiv039 divide 1 32 -> 0.03125
dddiv040 divide 1 64 -> 0.015625
dddiv041 divide 1 -2 -> -0.5
dddiv042 divide 1 -4 -> -0.25
dddiv043 divide 1 -8 -> -0.125
dddiv044 divide 1 -16 -> -0.0625
dddiv045 divide 1 -32 -> -0.03125
dddiv046 divide 1 -64 -> -0.015625
dddiv047 divide -1 2 -> -0.5
dddiv048 divide -1 4 -> -0.25
dddiv049 divide -1 8 -> -0.125
dddiv050 divide -1 16 -> -0.0625
dddiv051 divide -1 32 -> -0.03125
dddiv052 divide -1 64 -> -0.015625
dddiv053 divide -1 -2 -> 0.5
dddiv054 divide -1 -4 -> 0.25
dddiv055 divide -1 -8 -> 0.125
dddiv056 divide -1 -16 -> 0.0625
dddiv057 divide -1 -32 -> 0.03125
dddiv058 divide -1 -64 -> 0.015625
-- bcdTime
dddiv060 divide 1 7 -> 0.1428571428571429 Inexact Rounded
dddiv061 divide 1.2345678 1.9876543 -> 0.6211179680490717 Inexact Rounded
-- 1234567890123456
dddiv071 divide 9999999999999999 1 -> 9999999999999999
dddiv072 divide 999999999999999 1 -> 999999999999999
dddiv073 divide 99999999999999 1 -> 99999999999999
dddiv074 divide 9999999999999 1 -> 9999999999999
dddiv075 divide 999999999999 1 -> 999999999999
dddiv076 divide 99999999999 1 -> 99999999999
dddiv077 divide 9999999999 1 -> 9999999999
dddiv078 divide 999999999 1 -> 999999999
dddiv079 divide 99999999 1 -> 99999999
dddiv080 divide 9999999 1 -> 9999999
dddiv081 divide 999999 1 -> 999999
dddiv082 divide 99999 1 -> 99999
dddiv083 divide 9999 1 -> 9999
dddiv084 divide 999 1 -> 999
dddiv085 divide 99 1 -> 99
dddiv086 divide 9 1 -> 9
dddiv090 divide 0. 1 -> 0
dddiv091 divide .0 1 -> 0.0
dddiv092 divide 0.00 1 -> 0.00
dddiv093 divide 0.00E+9 1 -> 0E+7
dddiv094 divide 0.0000E-50 1 -> 0E-54
dddiv095 divide 1 1E-8 -> 1E+8
dddiv096 divide 1 1E-9 -> 1E+9
dddiv097 divide 1 1E-10 -> 1E+10
dddiv098 divide 1 1E-11 -> 1E+11
dddiv099 divide 1 1E-12 -> 1E+12
dddiv100 divide 1 1 -> 1
dddiv101 divide 1 2 -> 0.5
dddiv102 divide 1 3 -> 0.3333333333333333 Inexact Rounded
dddiv103 divide 1 4 -> 0.25
dddiv104 divide 1 5 -> 0.2
dddiv105 divide 1 6 -> 0.1666666666666667 Inexact Rounded
dddiv106 divide 1 7 -> 0.1428571428571429 Inexact Rounded
dddiv107 divide 1 8 -> 0.125
dddiv108 divide 1 9 -> 0.1111111111111111 Inexact Rounded
dddiv109 divide 1 10 -> 0.1
dddiv110 divide 1 1 -> 1
dddiv111 divide 2 1 -> 2
dddiv112 divide 3 1 -> 3
dddiv113 divide 4 1 -> 4
dddiv114 divide 5 1 -> 5
dddiv115 divide 6 1 -> 6
dddiv116 divide 7 1 -> 7
dddiv117 divide 8 1 -> 8
dddiv118 divide 9 1 -> 9
dddiv119 divide 10 1 -> 10
dddiv120 divide 3E+1 0.001 -> 3E+4
dddiv121 divide 2.200 2 -> 1.100
dddiv130 divide 12345 4.999 -> 2469.493898779756 Inexact Rounded
dddiv131 divide 12345 4.99 -> 2473.947895791583 Inexact Rounded
dddiv132 divide 12345 4.9 -> 2519.387755102041 Inexact Rounded
dddiv133 divide 12345 5 -> 2469
dddiv134 divide 12345 5.1 -> 2420.588235294118 Inexact Rounded
dddiv135 divide 12345 5.01 -> 2464.071856287425 Inexact Rounded
dddiv136 divide 12345 5.001 -> 2468.506298740252 Inexact Rounded
-- test possibly imprecise results
dddiv220 divide 391 597 -> 0.6549413735343384 Inexact Rounded
dddiv221 divide 391 -597 -> -0.6549413735343384 Inexact Rounded
dddiv222 divide -391 597 -> -0.6549413735343384 Inexact Rounded
dddiv223 divide -391 -597 -> 0.6549413735343384 Inexact Rounded
-- test some cases that are close to exponent overflow, some with coefficient padding
dddiv270 divide 1 1e384 -> 1E-384 Subnormal
dddiv271 divide 1 0.9e384 -> 1.11111111111111E-384 Rounded Inexact Subnormal Underflow
dddiv272 divide 1 0.99e384 -> 1.01010101010101E-384 Rounded Inexact Subnormal Underflow
dddiv273 divide 1 0.9999999999999999e384 -> 1.00000000000000E-384 Rounded Inexact Subnormal Underflow
dddiv274 divide 9e384 1 -> 9.000000000000000E+384 Clamped
dddiv275 divide 9.9e384 1 -> 9.900000000000000E+384 Clamped
dddiv276 divide 9.99e384 1 -> 9.990000000000000E+384 Clamped
dddiv277 divide 9.9999999999999e384 1 -> 9.999999999999900E+384 Clamped
dddiv278 divide 9.99999999999999e384 1 -> 9.999999999999990E+384 Clamped
dddiv279 divide 9.999999999999999e384 1 -> 9.999999999999999E+384
dddiv285 divide 9.9e384 1.1 -> 9.000000000000000E+384 Clamped
dddiv286 divide 9.99e384 1.1 -> 9.081818181818182E+384 Inexact Rounded
dddiv287 divide 9.9999999999999e384 1.1 -> 9.090909090909000E+384 Clamped
dddiv288 divide 9.99999999999999e384 1.1 -> 9.090909090909082E+384 Inexact Rounded
dddiv289 divide 9.999999999999999e384 1.1 -> 9.090909090909090E+384 Clamped
-- Divide into 0 tests
dddiv301 divide 0 7 -> 0
dddiv302 divide 0 7E-5 -> 0E+5
dddiv303 divide 0 7E-1 -> 0E+1
dddiv304 divide 0 7E+1 -> 0.0
dddiv305 divide 0 7E+5 -> 0.00000
dddiv306 divide 0 7E+6 -> 0.000000
dddiv307 divide 0 7E+7 -> 0E-7
dddiv308 divide 0 70E-5 -> 0E+5
dddiv309 divide 0 70E-1 -> 0E+1
dddiv310 divide 0 70E+0 -> 0
dddiv311 divide 0 70E+1 -> 0.0
dddiv312 divide 0 70E+5 -> 0.00000
dddiv313 divide 0 70E+6 -> 0.000000
dddiv314 divide 0 70E+7 -> 0E-7
dddiv315 divide 0 700E-5 -> 0E+5
dddiv316 divide 0 700E-1 -> 0E+1
dddiv317 divide 0 700E+0 -> 0
dddiv318 divide 0 700E+1 -> 0.0
dddiv319 divide 0 700E+5 -> 0.00000
dddiv320 divide 0 700E+6 -> 0.000000
dddiv321 divide 0 700E+7 -> 0E-7
dddiv322 divide 0 700E+77 -> 0E-77
dddiv331 divide 0E-3 7E-5 -> 0E+2
dddiv332 divide 0E-3 7E-1 -> 0.00
dddiv333 divide 0E-3 7E+1 -> 0.0000
dddiv334 divide 0E-3 7E+5 -> 0E-8
dddiv335 divide 0E-1 7E-5 -> 0E+4
dddiv336 divide 0E-1 7E-1 -> 0
dddiv337 divide 0E-1 7E+1 -> 0.00
dddiv338 divide 0E-1 7E+5 -> 0.000000
dddiv339 divide 0E+1 7E-5 -> 0E+6
dddiv340 divide 0E+1 7E-1 -> 0E+2
dddiv341 divide 0E+1 7E+1 -> 0
dddiv342 divide 0E+1 7E+5 -> 0.0000
dddiv343 divide 0E+3 7E-5 -> 0E+8
dddiv344 divide 0E+3 7E-1 -> 0E+4
dddiv345 divide 0E+3 7E+1 -> 0E+2
dddiv346 divide 0E+3 7E+5 -> 0.00
-- These were 'input rounding'
dddiv441 divide 12345678000 1 -> 12345678000
dddiv442 divide 1 12345678000 -> 8.100000664200054E-11 Inexact Rounded
dddiv443 divide 1234567800 1 -> 1234567800
dddiv444 divide 1 1234567800 -> 8.100000664200054E-10 Inexact Rounded
dddiv445 divide 1234567890 1 -> 1234567890
dddiv446 divide 1 1234567890 -> 8.100000073710001E-10 Inexact Rounded
dddiv447 divide 1234567891 1 -> 1234567891
dddiv448 divide 1 1234567891 -> 8.100000067149001E-10 Inexact Rounded
dddiv449 divide 12345678901 1 -> 12345678901
dddiv450 divide 1 12345678901 -> 8.100000073053901E-11 Inexact Rounded
dddiv451 divide 1234567896 1 -> 1234567896
dddiv452 divide 1 1234567896 -> 8.100000034344000E-10 Inexact Rounded
-- high-lows
dddiv453 divide 1e+1 1 -> 1E+1
dddiv454 divide 1e+1 1.0 -> 1E+1
dddiv455 divide 1e+1 1.00 -> 1E+1
dddiv456 divide 1e+2 2 -> 5E+1
dddiv457 divide 1e+2 2.0 -> 5E+1
dddiv458 divide 1e+2 2.00 -> 5E+1
-- some from IEEE discussions
dddiv460 divide 3e0 2e0 -> 1.5
dddiv461 divide 30e-1 2e0 -> 1.5
dddiv462 divide 300e-2 2e0 -> 1.50
dddiv464 divide 3000e-3 2e0 -> 1.500
dddiv465 divide 3e0 20e-1 -> 1.5
dddiv466 divide 30e-1 20e-1 -> 1.5
dddiv467 divide 300e-2 20e-1 -> 1.5
dddiv468 divide 3000e-3 20e-1 -> 1.50
dddiv469 divide 3e0 200e-2 -> 1.5
dddiv470 divide 30e-1 200e-2 -> 1.5
dddiv471 divide 300e-2 200e-2 -> 1.5
dddiv472 divide 3000e-3 200e-2 -> 1.5
dddiv473 divide 3e0 2000e-3 -> 1.5
dddiv474 divide 30e-1 2000e-3 -> 1.5
dddiv475 divide 300e-2 2000e-3 -> 1.5
dddiv476 divide 3000e-3 2000e-3 -> 1.5
-- some reciprocals
dddiv480 divide 1 1.0E+33 -> 1E-33
dddiv481 divide 1 10E+33 -> 1E-34
dddiv482 divide 1 1.0E-33 -> 1E+33
dddiv483 divide 1 10E-33 -> 1E+32
-- RMS discussion table
dddiv484 divide 0e5 1e3 -> 0E+2
dddiv485 divide 0e5 2e3 -> 0E+2
dddiv486 divide 0e5 10e2 -> 0E+3
dddiv487 divide 0e5 20e2 -> 0E+3
dddiv488 divide 0e5 100e1 -> 0E+4
dddiv489 divide 0e5 200e1 -> 0E+4
dddiv491 divide 1e5 1e3 -> 1E+2
dddiv492 divide 1e5 2e3 -> 5E+1
dddiv493 divide 1e5 10e2 -> 1E+2
dddiv494 divide 1e5 20e2 -> 5E+1
dddiv495 divide 1e5 100e1 -> 1E+2
dddiv496 divide 1e5 200e1 -> 5E+1
-- tryzeros cases
rounding: half_up
dddiv497 divide 0E+380 1000E-13 -> 0E+369 Clamped
dddiv498 divide 0E-390 1000E+13 -> 0E-398 Clamped
rounding: half_up
-- focus on trailing zeros issues
dddiv500 divide 1 9.9 -> 0.1010101010101010 Inexact Rounded
dddiv501 divide 1 9.09 -> 0.1100110011001100 Inexact Rounded
dddiv502 divide 1 9.009 -> 0.1110001110001110 Inexact Rounded
dddiv511 divide 1 2 -> 0.5
dddiv512 divide 1.0 2 -> 0.5
dddiv513 divide 1.00 2 -> 0.50
dddiv514 divide 1.000 2 -> 0.500
dddiv515 divide 1.0000 2 -> 0.5000
dddiv516 divide 1.00000 2 -> 0.50000
dddiv517 divide 1.000000 2 -> 0.500000
dddiv518 divide 1.0000000 2 -> 0.5000000
dddiv519 divide 1.00 2.00 -> 0.5
dddiv521 divide 2 1 -> 2
dddiv522 divide 2 1.0 -> 2
dddiv523 divide 2 1.00 -> 2
dddiv524 divide 2 1.000 -> 2
dddiv525 divide 2 1.0000 -> 2
dddiv526 divide 2 1.00000 -> 2
dddiv527 divide 2 1.000000 -> 2
dddiv528 divide 2 1.0000000 -> 2
dddiv529 divide 2.00 1.00 -> 2
dddiv530 divide 2.40 2 -> 1.20
dddiv531 divide 2.40 4 -> 0.60
dddiv532 divide 2.40 10 -> 0.24
dddiv533 divide 2.40 2.0 -> 1.2
dddiv534 divide 2.40 4.0 -> 0.6
dddiv535 divide 2.40 10.0 -> 0.24
dddiv536 divide 2.40 2.00 -> 1.2
dddiv537 divide 2.40 4.00 -> 0.6
dddiv538 divide 2.40 10.00 -> 0.24
dddiv539 divide 0.9 0.1 -> 9
dddiv540 divide 0.9 0.01 -> 9E+1
dddiv541 divide 0.9 0.001 -> 9E+2
dddiv542 divide 5 2 -> 2.5
dddiv543 divide 5 2.0 -> 2.5
dddiv544 divide 5 2.00 -> 2.5
dddiv545 divide 5 20 -> 0.25
dddiv546 divide 5 20.0 -> 0.25
dddiv547 divide 2.400 2 -> 1.200
dddiv548 divide 2.400 2.0 -> 1.20
dddiv549 divide 2.400 2.400 -> 1
dddiv550 divide 240 1 -> 240
dddiv551 divide 240 10 -> 24
dddiv552 divide 240 100 -> 2.4
dddiv553 divide 240 1000 -> 0.24
dddiv554 divide 2400 1 -> 2400
dddiv555 divide 2400 10 -> 240
dddiv556 divide 2400 100 -> 24
dddiv557 divide 2400 1000 -> 2.4
-- +ve exponent
dddiv600 divide 2.4E+9 2 -> 1.2E+9
dddiv601 divide 2.40E+9 2 -> 1.20E+9
dddiv602 divide 2.400E+9 2 -> 1.200E+9
dddiv603 divide 2.4000E+9 2 -> 1.2000E+9
dddiv604 divide 24E+8 2 -> 1.2E+9
dddiv605 divide 240E+7 2 -> 1.20E+9
dddiv606 divide 2400E+6 2 -> 1.200E+9
dddiv607 divide 24000E+5 2 -> 1.2000E+9
-- more zeros, etc.
dddiv731 divide 5.00 1E-3 -> 5.00E+3
dddiv732 divide 00.00 0.000 -> NaN Division_undefined
dddiv733 divide 00.00 0E-3 -> NaN Division_undefined
dddiv734 divide 0 -0 -> NaN Division_undefined
dddiv735 divide -0 0 -> NaN Division_undefined
dddiv736 divide -0 -0 -> NaN Division_undefined
dddiv741 divide 0 -1 -> -0
dddiv742 divide -0 -1 -> 0
dddiv743 divide 0 1 -> 0
dddiv744 divide -0 1 -> -0
dddiv745 divide -1 0 -> -Infinity Division_by_zero
dddiv746 divide -1 -0 -> Infinity Division_by_zero
dddiv747 divide 1 0 -> Infinity Division_by_zero
dddiv748 divide 1 -0 -> -Infinity Division_by_zero
dddiv751 divide 0.0 -1 -> -0.0
dddiv752 divide -0.0 -1 -> 0.0
dddiv753 divide 0.0 1 -> 0.0
dddiv754 divide -0.0 1 -> -0.0
dddiv755 divide -1.0 0 -> -Infinity Division_by_zero
dddiv756 divide -1.0 -0 -> Infinity Division_by_zero
dddiv757 divide 1.0 0 -> Infinity Division_by_zero
dddiv758 divide 1.0 -0 -> -Infinity Division_by_zero
dddiv761 divide 0 -1.0 -> -0E+1
dddiv762 divide -0 -1.0 -> 0E+1
dddiv763 divide 0 1.0 -> 0E+1
dddiv764 divide -0 1.0 -> -0E+1
dddiv765 divide -1 0.0 -> -Infinity Division_by_zero
dddiv766 divide -1 -0.0 -> Infinity Division_by_zero
dddiv767 divide 1 0.0 -> Infinity Division_by_zero
dddiv768 divide 1 -0.0 -> -Infinity Division_by_zero
dddiv771 divide 0.0 -1.0 -> -0
dddiv772 divide -0.0 -1.0 -> 0
dddiv773 divide 0.0 1.0 -> 0
dddiv774 divide -0.0 1.0 -> -0
dddiv775 divide -1.0 0.0 -> -Infinity Division_by_zero
dddiv776 divide -1.0 -0.0 -> Infinity Division_by_zero
dddiv777 divide 1.0 0.0 -> Infinity Division_by_zero
dddiv778 divide 1.0 -0.0 -> -Infinity Division_by_zero
-- Specials
dddiv780 divide Inf -Inf -> NaN Invalid_operation
dddiv781 divide Inf -1000 -> -Infinity
dddiv782 divide Inf -1 -> -Infinity
dddiv783 divide Inf -0 -> -Infinity
dddiv784 divide Inf 0 -> Infinity
dddiv785 divide Inf 1 -> Infinity
dddiv786 divide Inf 1000 -> Infinity
dddiv787 divide Inf Inf -> NaN Invalid_operation
dddiv788 divide -1000 Inf -> -0E-398 Clamped
dddiv789 divide -Inf Inf -> NaN Invalid_operation
dddiv790 divide -1 Inf -> -0E-398 Clamped
dddiv791 divide -0 Inf -> -0E-398 Clamped
dddiv792 divide 0 Inf -> 0E-398 Clamped
dddiv793 divide 1 Inf -> 0E-398 Clamped
dddiv794 divide 1000 Inf -> 0E-398 Clamped
dddiv795 divide Inf Inf -> NaN Invalid_operation
dddiv800 divide -Inf -Inf -> NaN Invalid_operation
dddiv801 divide -Inf -1000 -> Infinity
dddiv802 divide -Inf -1 -> Infinity
dddiv803 divide -Inf -0 -> Infinity
dddiv804 divide -Inf 0 -> -Infinity
dddiv805 divide -Inf 1 -> -Infinity
dddiv806 divide -Inf 1000 -> -Infinity
dddiv807 divide -Inf Inf -> NaN Invalid_operation
dddiv808 divide -1000 Inf -> -0E-398 Clamped
dddiv809 divide -Inf -Inf -> NaN Invalid_operation
dddiv810 divide -1 -Inf -> 0E-398 Clamped
dddiv811 divide -0 -Inf -> 0E-398 Clamped
dddiv812 divide 0 -Inf -> -0E-398 Clamped
dddiv813 divide 1 -Inf -> -0E-398 Clamped
dddiv814 divide 1000 -Inf -> -0E-398 Clamped
dddiv815 divide Inf -Inf -> NaN Invalid_operation
dddiv821 divide NaN -Inf -> NaN
dddiv822 divide NaN -1000 -> NaN
dddiv823 divide NaN -1 -> NaN
dddiv824 divide NaN -0 -> NaN
dddiv825 divide NaN 0 -> NaN
dddiv826 divide NaN 1 -> NaN
dddiv827 divide NaN 1000 -> NaN
dddiv828 divide NaN Inf -> NaN
dddiv829 divide NaN NaN -> NaN
dddiv830 divide -Inf NaN -> NaN
dddiv831 divide -1000 NaN -> NaN
dddiv832 divide -1 NaN -> NaN
dddiv833 divide -0 NaN -> NaN
dddiv834 divide 0 NaN -> NaN
dddiv835 divide 1 NaN -> NaN
dddiv836 divide 1000 NaN -> NaN
dddiv837 divide Inf NaN -> NaN
dddiv841 divide sNaN -Inf -> NaN Invalid_operation
dddiv842 divide sNaN -1000 -> NaN Invalid_operation
dddiv843 divide sNaN -1 -> NaN Invalid_operation
dddiv844 divide sNaN -0 -> NaN Invalid_operation
dddiv845 divide sNaN 0 -> NaN Invalid_operation
dddiv846 divide sNaN 1 -> NaN Invalid_operation
dddiv847 divide sNaN 1000 -> NaN Invalid_operation
dddiv848 divide sNaN NaN -> NaN Invalid_operation
dddiv849 divide sNaN sNaN -> NaN Invalid_operation
dddiv850 divide NaN sNaN -> NaN Invalid_operation
dddiv851 divide -Inf sNaN -> NaN Invalid_operation
dddiv852 divide -1000 sNaN -> NaN Invalid_operation
dddiv853 divide -1 sNaN -> NaN Invalid_operation
dddiv854 divide -0 sNaN -> NaN Invalid_operation
dddiv855 divide 0 sNaN -> NaN Invalid_operation
dddiv856 divide 1 sNaN -> NaN Invalid_operation
dddiv857 divide 1000 sNaN -> NaN Invalid_operation
dddiv858 divide Inf sNaN -> NaN Invalid_operation
dddiv859 divide NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dddiv861 divide NaN9 -Inf -> NaN9
dddiv862 divide NaN8 1000 -> NaN8
dddiv863 divide NaN7 Inf -> NaN7
dddiv864 divide NaN6 NaN5 -> NaN6
dddiv865 divide -Inf NaN4 -> NaN4
dddiv866 divide -1000 NaN3 -> NaN3
dddiv867 divide Inf NaN2 -> NaN2
dddiv871 divide sNaN99 -Inf -> NaN99 Invalid_operation
dddiv872 divide sNaN98 -1 -> NaN98 Invalid_operation
dddiv873 divide sNaN97 NaN -> NaN97 Invalid_operation
dddiv874 divide sNaN96 sNaN94 -> NaN96 Invalid_operation
dddiv875 divide NaN95 sNaN93 -> NaN93 Invalid_operation
dddiv876 divide -Inf sNaN92 -> NaN92 Invalid_operation
dddiv877 divide 0 sNaN91 -> NaN91 Invalid_operation
dddiv878 divide Inf sNaN90 -> NaN90 Invalid_operation
dddiv879 divide NaN sNaN89 -> NaN89 Invalid_operation
dddiv881 divide -NaN9 -Inf -> -NaN9
dddiv882 divide -NaN8 1000 -> -NaN8
dddiv883 divide -NaN7 Inf -> -NaN7
dddiv884 divide -NaN6 -NaN5 -> -NaN6
dddiv885 divide -Inf -NaN4 -> -NaN4
dddiv886 divide -1000 -NaN3 -> -NaN3
dddiv887 divide Inf -NaN2 -> -NaN2
dddiv891 divide -sNaN99 -Inf -> -NaN99 Invalid_operation
dddiv892 divide -sNaN98 -1 -> -NaN98 Invalid_operation
dddiv893 divide -sNaN97 NaN -> -NaN97 Invalid_operation
dddiv894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation
dddiv895 divide -NaN95 -sNaN93 -> -NaN93 Invalid_operation
dddiv896 divide -Inf -sNaN92 -> -NaN92 Invalid_operation
dddiv897 divide 0 -sNaN91 -> -NaN91 Invalid_operation
dddiv898 divide Inf -sNaN90 -> -NaN90 Invalid_operation
dddiv899 divide -NaN -sNaN89 -> -NaN89 Invalid_operation
-- Various flavours of divide by 0
dddiv901 divide 0 0 -> NaN Division_undefined
dddiv902 divide 0.0E5 0 -> NaN Division_undefined
dddiv903 divide 0.000 0 -> NaN Division_undefined
dddiv904 divide 0.0001 0 -> Infinity Division_by_zero
dddiv905 divide 0.01 0 -> Infinity Division_by_zero
dddiv906 divide 0.1 0 -> Infinity Division_by_zero
dddiv907 divide 1 0 -> Infinity Division_by_zero
dddiv908 divide 1 0.0 -> Infinity Division_by_zero
dddiv909 divide 10 0.0 -> Infinity Division_by_zero
dddiv910 divide 1E+100 0.0 -> Infinity Division_by_zero
dddiv911 divide 1E+100 0 -> Infinity Division_by_zero
dddiv921 divide -0.0001 0 -> -Infinity Division_by_zero
dddiv922 divide -0.01 0 -> -Infinity Division_by_zero
dddiv923 divide -0.1 0 -> -Infinity Division_by_zero
dddiv924 divide -1 0 -> -Infinity Division_by_zero
dddiv925 divide -1 0.0 -> -Infinity Division_by_zero
dddiv926 divide -10 0.0 -> -Infinity Division_by_zero
dddiv927 divide -1E+100 0.0 -> -Infinity Division_by_zero
dddiv928 divide -1E+100 0 -> -Infinity Division_by_zero
dddiv931 divide 0.0001 -0 -> -Infinity Division_by_zero
dddiv932 divide 0.01 -0 -> -Infinity Division_by_zero
dddiv933 divide 0.1 -0 -> -Infinity Division_by_zero
dddiv934 divide 1 -0 -> -Infinity Division_by_zero
dddiv935 divide 1 -0.0 -> -Infinity Division_by_zero
dddiv936 divide 10 -0.0 -> -Infinity Division_by_zero
dddiv937 divide 1E+100 -0.0 -> -Infinity Division_by_zero
dddiv938 divide 1E+100 -0 -> -Infinity Division_by_zero
dddiv941 divide -0.0001 -0 -> Infinity Division_by_zero
dddiv942 divide -0.01 -0 -> Infinity Division_by_zero
dddiv943 divide -0.1 -0 -> Infinity Division_by_zero
dddiv944 divide -1 -0 -> Infinity Division_by_zero
dddiv945 divide -1 -0.0 -> Infinity Division_by_zero
dddiv946 divide -10 -0.0 -> Infinity Division_by_zero
dddiv947 divide -1E+100 -0.0 -> Infinity Division_by_zero
dddiv948 divide -1E+100 -0 -> Infinity Division_by_zero
-- Examples from SQL proposal (Krishna Kulkarni)
dddiv1021 divide 1E0 1E0 -> 1
dddiv1022 divide 1E0 2E0 -> 0.5
dddiv1023 divide 1E0 3E0 -> 0.3333333333333333 Inexact Rounded
dddiv1024 divide 100E-2 1000E-3 -> 1
dddiv1025 divide 24E-1 2E0 -> 1.2
dddiv1026 divide 2400E-3 2E0 -> 1.200
dddiv1027 divide 5E0 2E0 -> 2.5
dddiv1028 divide 5E0 20E-1 -> 2.5
dddiv1029 divide 5E0 2000E-3 -> 2.5
dddiv1030 divide 5E0 2E-1 -> 25
dddiv1031 divide 5E0 20E-2 -> 25
dddiv1032 divide 480E-2 3E0 -> 1.60
dddiv1033 divide 47E-1 2E0 -> 2.35
-- ECMAScript bad examples
rounding: half_down
dddiv1040 divide 5 9 -> 0.5555555555555556 Inexact Rounded
rounding: half_even
dddiv1041 divide 6 11 -> 0.5454545454545455 Inexact Rounded
-- overflow and underflow tests .. note subnormal results
-- signs
dddiv1051 divide 1e+277 1e-311 -> Infinity Overflow Inexact Rounded
dddiv1052 divide 1e+277 -1e-311 -> -Infinity Overflow Inexact Rounded
dddiv1053 divide -1e+277 1e-311 -> -Infinity Overflow Inexact Rounded
dddiv1054 divide -1e+277 -1e-311 -> Infinity Overflow Inexact Rounded
dddiv1055 divide 1e-277 1e+311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1056 divide 1e-277 -1e+311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1057 divide -1e-277 1e+311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1058 divide -1e-277 -1e+311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
dddiv1060 divide 1e-291 1e+101 -> 1E-392 Subnormal
dddiv1061 divide 1e-291 1e+102 -> 1E-393 Subnormal
dddiv1062 divide 1e-291 1e+103 -> 1E-394 Subnormal
dddiv1063 divide 1e-291 1e+104 -> 1E-395 Subnormal
dddiv1064 divide 1e-291 1e+105 -> 1E-396 Subnormal
dddiv1065 divide 1e-291 1e+106 -> 1E-397 Subnormal
dddiv1066 divide 1e-291 1e+107 -> 1E-398 Subnormal
dddiv1067 divide 1e-291 1e+108 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1068 divide 1e-291 1e+109 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1069 divide 1e-291 1e+110 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-- [no equivalent of 'subnormal' for overflow]
dddiv1070 divide 1e+60 1e-321 -> 1.000000000000E+381 Clamped
dddiv1071 divide 1e+60 1e-322 -> 1.0000000000000E+382 Clamped
dddiv1072 divide 1e+60 1e-323 -> 1.00000000000000E+383 Clamped
dddiv1073 divide 1e+60 1e-324 -> 1.000000000000000E+384 Clamped
dddiv1074 divide 1e+60 1e-325 -> Infinity Overflow Inexact Rounded
dddiv1075 divide 1e+60 1e-326 -> Infinity Overflow Inexact Rounded
dddiv1076 divide 1e+60 1e-327 -> Infinity Overflow Inexact Rounded
dddiv1077 divide 1e+60 1e-328 -> Infinity Overflow Inexact Rounded
dddiv1078 divide 1e+60 1e-329 -> Infinity Overflow Inexact Rounded
dddiv1079 divide 1e+60 1e-330 -> Infinity Overflow Inexact Rounded
dddiv1101 divide 1.0000E-394 1 -> 1.0000E-394 Subnormal
dddiv1102 divide 1.000E-394 1e+1 -> 1.000E-395 Subnormal
dddiv1103 divide 1.00E-394 1e+2 -> 1.00E-396 Subnormal
dddiv1104 divide 1.0E-394 1e+3 -> 1.0E-397 Subnormal
dddiv1105 divide 1.0E-394 1e+4 -> 1E-398 Subnormal Rounded
dddiv1106 divide 1.3E-394 1e+4 -> 1E-398 Underflow Subnormal Inexact Rounded
dddiv1107 divide 1.5E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded
dddiv1108 divide 1.7E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded
dddiv1109 divide 2.3E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded
dddiv1110 divide 2.5E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded
dddiv1111 divide 2.7E-394 1e+4 -> 3E-398 Underflow Subnormal Inexact Rounded
dddiv1112 divide 1.49E-394 1e+4 -> 1E-398 Underflow Subnormal Inexact Rounded
dddiv1113 divide 1.50E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded
dddiv1114 divide 1.51E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded
dddiv1115 divide 2.49E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded
dddiv1116 divide 2.50E-394 1e+4 -> 2E-398 Underflow Subnormal Inexact Rounded
dddiv1117 divide 2.51E-394 1e+4 -> 3E-398 Underflow Subnormal Inexact Rounded
dddiv1118 divide 1E-394 1e+4 -> 1E-398 Subnormal
dddiv1119 divide 3E-394 1e+5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1120 divide 5E-394 1e+5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1121 divide 7E-394 1e+5 -> 1E-398 Underflow Subnormal Inexact Rounded
dddiv1122 divide 9E-394 1e+5 -> 1E-398 Underflow Subnormal Inexact Rounded
dddiv1123 divide 9.9E-394 1e+5 -> 1E-398 Underflow Subnormal Inexact Rounded
dddiv1124 divide 1E-394 -1e+4 -> -1E-398 Subnormal
dddiv1125 divide 3E-394 -1e+5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1126 divide -5E-394 1e+5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1127 divide 7E-394 -1e+5 -> -1E-398 Underflow Subnormal Inexact Rounded
dddiv1128 divide -9E-394 1e+5 -> -1E-398 Underflow Subnormal Inexact Rounded
dddiv1129 divide 9.9E-394 -1e+5 -> -1E-398 Underflow Subnormal Inexact Rounded
dddiv1130 divide 3.0E-394 -1e+5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1131 divide 1.0E-199 1e+200 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
dddiv1132 divide 1.0E-199 1e+199 -> 1E-398 Subnormal Rounded
dddiv1133 divide 1.0E-199 1e+198 -> 1.0E-397 Subnormal
dddiv1134 divide 2.0E-199 2e+198 -> 1.0E-397 Subnormal
dddiv1135 divide 4.0E-199 4e+198 -> 1.0E-397 Subnormal
dddiv1136 divide 10.0E-199 10e+198 -> 1.0E-397 Subnormal
dddiv1137 divide 30.0E-199 30e+198 -> 1.0E-397 Subnormal
-- randoms
dddiv2010 divide -3.303226714900711E-35 8.796578842713183E+73 -> -3.755126594058783E-109 Inexact Rounded
dddiv2011 divide 933153327821073.6 68782181090246.25 -> 13.56678885475763 Inexact Rounded
dddiv2012 divide 5.04752436057906E-72 -8.179481771238642E+64 -> -6.170958627632835E-137 Inexact Rounded
dddiv2013 divide -3707613309582318 3394911196503.048 -> -1092.109070010836 Inexact Rounded
dddiv2014 divide 99689.0555190461 -4.735208553891464 -> -21052.72753765411 Inexact Rounded
dddiv2015 divide -1447915775613329 269750797.8184875 -> -5367605.164925653 Inexact Rounded
dddiv2016 divide -9.394881304225258E-19 -830585.0252671636 -> 1.131116143251358E-24 Inexact Rounded
dddiv2017 divide -1.056283432738934 88.58754555124013 -> -0.01192361100159352 Inexact Rounded
dddiv2018 divide 5763220933343.081 689089567025052.1 -> 0.008363529516524456 Inexact Rounded
dddiv2019 divide 873819.122103216 9.740612494523300E-49 -> 8.970884763093948E+53 Inexact Rounded
dddiv2020 divide 8022914.838533576 6178.566801742713 -> 1298.507420243583 Inexact Rounded
dddiv2021 divide 203982.7605650363 -2158.283639053435 -> -94.51156320422168 Inexact Rounded
dddiv2022 divide 803.6310547013030 7101143795399.238 -> 1.131692411611166E-10 Inexact Rounded
dddiv2023 divide 9.251697842123399E-82 -1.342350220606119E-7 -> -6.892163982321936E-75 Inexact Rounded
dddiv2024 divide -1.980600645637992E-53 -5.474262753214457E+77 -> 3.618022617703168E-131 Inexact Rounded
dddiv2025 divide -210.0322996351690 -8.580951835872843E+80 -> 2.447657365434971E-79 Inexact Rounded
dddiv2026 divide -1.821980314020370E+85 -3.018915267138165 -> 6.035215144503042E+84 Inexact Rounded
dddiv2027 divide -772264503601.1047 5.158258271408988E-86 -> -1.497141986630614E+97 Inexact Rounded
dddiv2028 divide -767.0532415847106 2.700027228028939E-59 -> -2.840909282772941E+61 Inexact Rounded
dddiv2029 divide 496724.8548250093 7.32700588163100E+66 -> 6.779370220929013E-62 Inexact Rounded
dddiv2030 divide -304232651447703.9 -108.9730808657440 -> 2791814721862.565 Inexact Rounded
dddiv2031 divide -7.233817192699405E+42 -5711302004.149411 -> 1.266579352211430E+33 Inexact Rounded
dddiv2032 divide -9.999221444912745E+96 4010569406446197 -> -2.493217404202250E+81 Inexact Rounded
dddiv2033 divide -1837272.061937622 8.356322838066762 -> -219866.0939196882 Inexact Rounded
dddiv2034 divide 2168.517555606529 209.1910258615061 -> 10.36620737756784 Inexact Rounded
dddiv2035 divide -1.884389790576371E+88 2.95181953870583E+20 -> -6.383824505079828E+67 Inexact Rounded
dddiv2036 divide 732263.6037438196 961222.3634446889 -> 0.7618045850698269 Inexact Rounded
dddiv2037 divide -813461419.0348336 5.376293753809143E+84 -> -1.513052404285927E-76 Inexact Rounded
dddiv2038 divide -45562133508108.50 -9.776843494690107E+51 -> 4.660208945029519E-39 Inexact Rounded
dddiv2039 divide -6.489393172441016E+80 -9101965.097852113 -> 7.129661674897421E+73 Inexact Rounded
dddiv2040 divide 3.694576237117349E+93 6683512.012622003 -> 5.527896456443912E+86 Inexact Rounded
dddiv2041 divide -2.252877726403272E+19 -7451913256.181367 -> 3023220546.125531 Inexact Rounded
dddiv2042 divide 518303.1989111842 50.01587020474133 -> 10362.77479107123 Inexact Rounded
dddiv2043 divide 2.902087881880103E+24 33.32400992305702 -> 8.708699488989578E+22 Inexact Rounded
dddiv2044 divide 549619.4559510557 1660824845196338 -> 3.309316196351104E-10 Inexact Rounded
dddiv2045 divide -6775670774684043 8292152023.077262 -> -817118.4941891062 Inexact Rounded
dddiv2046 divide -77.50923921524079 -5.636882655425815E+74 -> 1.375037302588405E-73 Inexact Rounded
dddiv2047 divide -2.984889459605149E-10 -88106156784122.99 -> 3.387833005721384E-24 Inexact Rounded
dddiv2048 divide 0.949517293997085 44767115.96450998 -> 2.121015110175589E-8 Inexact Rounded
dddiv2049 divide -2760937211.084521 -1087015876975408 -> 0.000002539923537057024 Inexact Rounded
dddiv2050 divide 28438351.85030536 -4.209397904088624E-47 -> -6.755919135770688E+53 Inexact Rounded
dddiv2051 divide -85562731.6820956 -7.166045442530185E+45 -> 1.194002080621542E-38 Inexact Rounded
dddiv2052 divide 2533802852165.25 7154.119606235955 -> 354173957.3317501 Inexact Rounded
dddiv2053 divide -8858831346851.474 97.59734208801716 -> -90769186509.83577 Inexact Rounded
dddiv2054 divide 176783629801387.5 840073263.3109817 -> 210438.3480848206 Inexact Rounded
dddiv2055 divide -493506471796175.6 79733894790822.03 -> -6.189418854940746 Inexact Rounded
dddiv2056 divide 790.1682542103445 829.9449370367435 -> 0.9520731062371214 Inexact Rounded
dddiv2057 divide -8920459838.583164 -4767.889187899214 -> 1870945.294035581 Inexact Rounded
dddiv2058 divide 53536687164422.1 53137.5007032689 -> 1007512330.385698 Inexact Rounded
dddiv2059 divide 4.051532311146561E-74 -2.343089768972261E+94 -> -1.729140882606332E-168 Inexact Rounded
dddiv2060 divide -14847758778636.88 3.062543516383807E-43 -> -4.848178874587497E+55 Inexact Rounded
-- Division probably has pre-rounding, so need to test rounding
-- explicitly rather than assume included through other tests;
-- tests include simple rounding and also the tricky cases of sticky
-- bits following two zeros
--
-- 1/99999 gives 0.0000100001000010000100001000010000100001
-- 1234567890123456
--
-- 1/999999 gives 0.000001000001000001000001000001000001000001
-- 1234567890123456
rounding: ceiling
dddiv3001 divide 1 3 -> 0.3333333333333334 Inexact Rounded
dddiv3002 divide 2 3 -> 0.6666666666666667 Inexact Rounded
dddiv3003 divide 1 99999 -> 0.00001000010000100002 Inexact Rounded
dddiv3004 divide 1 999999 -> 0.000001000001000001001 Inexact Rounded
rounding: floor
dddiv3011 divide 1 3 -> 0.3333333333333333 Inexact Rounded
dddiv3012 divide 2 3 -> 0.6666666666666666 Inexact Rounded
dddiv3013 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded
dddiv3014 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded
rounding: up
dddiv3021 divide 1 3 -> 0.3333333333333334 Inexact Rounded
dddiv3022 divide 2 3 -> 0.6666666666666667 Inexact Rounded
dddiv3023 divide 1 99999 -> 0.00001000010000100002 Inexact Rounded
dddiv3024 divide 1 999999 -> 0.000001000001000001001 Inexact Rounded
rounding: down
dddiv3031 divide 1 3 -> 0.3333333333333333 Inexact Rounded
dddiv3032 divide 2 3 -> 0.6666666666666666 Inexact Rounded
dddiv3033 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded
dddiv3034 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded
rounding: half_up
dddiv3041 divide 1 3 -> 0.3333333333333333 Inexact Rounded
dddiv3042 divide 2 3 -> 0.6666666666666667 Inexact Rounded
dddiv3043 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded
dddiv3044 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded
rounding: half_down
dddiv3051 divide 1 3 -> 0.3333333333333333 Inexact Rounded
dddiv3052 divide 2 3 -> 0.6666666666666667 Inexact Rounded
dddiv3053 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded
dddiv3054 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded
rounding: half_even
dddiv3061 divide 1 3 -> 0.3333333333333333 Inexact Rounded
dddiv3062 divide 2 3 -> 0.6666666666666667 Inexact Rounded
dddiv3063 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded
dddiv3064 divide 1 999999 -> 0.000001000001000001000 Inexact Rounded
rounding: 05up
dddiv3071 divide 1 3 -> 0.3333333333333333 Inexact Rounded
dddiv3072 divide 2 3 -> 0.6666666666666666 Inexact Rounded
dddiv3073 divide 1 99999 -> 0.00001000010000100001 Inexact Rounded
dddiv3074 divide 1 999999 -> 0.000001000001000001001 Inexact Rounded
-- random divide tests with result near 1
rounding: half_even
dddiv4001 divide 3195385192916917 3195385192946695 -> 0.9999999999906809 Inexact Rounded
dddiv4002 divide 1393723067526993 1393723067519475 -> 1.000000000005394 Inexact Rounded
dddiv4003 divide 759985543702302 759985543674015 -> 1.000000000037220 Inexact Rounded
dddiv4004 divide 9579158456027302 9579158456036864 -> 0.9999999999990018 Inexact Rounded
dddiv4005 divide 7079398299143569 7079398299156904 -> 0.9999999999981164 Inexact Rounded
dddiv4006 divide 6636169255366598 6636169255336386 -> 1.000000000004553 Inexact Rounded
dddiv4007 divide 6964813971340090 6964813971321554 -> 1.000000000002661 Inexact Rounded
dddiv4008 divide 4182275225480784 4182275225454009 -> 1.000000000006402 Inexact Rounded
dddiv4009 divide 9228325124938029 9228325124918730 -> 1.000000000002091 Inexact Rounded
dddiv4010 divide 3428346338630192 3428346338609843 -> 1.000000000005936 Inexact Rounded
dddiv4011 divide 2143511550722893 2143511550751754 -> 0.9999999999865356 Inexact Rounded
dddiv4012 divide 1672732924396785 1672732924401811 -> 0.9999999999969953 Inexact Rounded
dddiv4013 divide 4190714611948216 4190714611948664 -> 0.9999999999998931 Inexact Rounded
dddiv4014 divide 3942254800848877 3942254800814556 -> 1.000000000008706 Inexact Rounded
dddiv4015 divide 2854459826952334 2854459826960762 -> 0.9999999999970474 Inexact Rounded
dddiv4016 divide 2853258953664731 2853258953684471 -> 0.9999999999930816 Inexact Rounded
dddiv4017 divide 9453512638125978 9453512638146425 -> 0.9999999999978371 Inexact Rounded
dddiv4018 divide 339476633940369 339476633912887 -> 1.000000000080954 Inexact Rounded
dddiv4019 divide 4542181492688467 4542181492697735 -> 0.9999999999979596 Inexact Rounded
dddiv4020 divide 7312600192399197 7312600192395424 -> 1.000000000000516 Inexact Rounded
dddiv4021 divide 1811674985570111 1811674985603935 -> 0.9999999999813300 Inexact Rounded
dddiv4022 divide 1706462639003481 1706462639017740 -> 0.9999999999916441 Inexact Rounded
dddiv4023 divide 6697052654940368 6697052654934110 -> 1.000000000000934 Inexact Rounded
dddiv4024 divide 5015283664277539 5015283664310719 -> 0.9999999999933842 Inexact Rounded
dddiv4025 divide 2359501561537464 2359501561502464 -> 1.000000000014834 Inexact Rounded
dddiv4026 divide 2669850227909157 2669850227901548 -> 1.000000000002850 Inexact Rounded
dddiv4027 divide 9329725546974648 9329725547002445 -> 0.9999999999970206 Inexact Rounded
dddiv4028 divide 3228562867071248 3228562867106206 -> 0.9999999999891723 Inexact Rounded
dddiv4029 divide 4862226644921175 4862226644909380 -> 1.000000000002426 Inexact Rounded
dddiv4030 divide 1022267997054529 1022267997071329 -> 0.9999999999835660 Inexact Rounded
dddiv4031 divide 1048777482023719 1048777482000948 -> 1.000000000021712 Inexact Rounded
dddiv4032 divide 9980113777337098 9980113777330539 -> 1.000000000000657 Inexact Rounded
dddiv4033 divide 7506839167963908 7506839167942901 -> 1.000000000002798 Inexact Rounded
dddiv4034 divide 231119751977860 231119751962453 -> 1.000000000066662 Inexact Rounded
dddiv4035 divide 4034903664762962 4034903664795526 -> 0.9999999999919294 Inexact Rounded
dddiv4036 divide 5700122152274696 5700122152251386 -> 1.000000000004089 Inexact Rounded
dddiv4037 divide 6869599590293110 6869599590293495 -> 0.9999999999999440 Inexact Rounded
dddiv4038 divide 5576281960092797 5576281960105579 -> 0.9999999999977078 Inexact Rounded
dddiv4039 divide 2304844888381318 2304844888353073 -> 1.000000000012255 Inexact Rounded
dddiv4040 divide 3265933651656452 3265933651682779 -> 0.9999999999919389 Inexact Rounded
dddiv4041 divide 5235714985079914 5235714985066131 -> 1.000000000002632 Inexact Rounded
dddiv4042 divide 5578481572827551 5578481572822945 -> 1.000000000000826 Inexact Rounded
dddiv4043 divide 4909616081396134 4909616081373076 -> 1.000000000004696 Inexact Rounded
dddiv4044 divide 636447224349537 636447224338757 -> 1.000000000016938 Inexact Rounded
dddiv4045 divide 1539373428396640 1539373428364727 -> 1.000000000020731 Inexact Rounded
dddiv4046 divide 2028786707377893 2028786707378866 -> 0.9999999999995204 Inexact Rounded
dddiv4047 divide 137643260486222 137643260487419 -> 0.9999999999913036 Inexact Rounded
dddiv4048 divide 247451519746765 247451519752267 -> 0.9999999999777653 Inexact Rounded
dddiv4049 divide 7877858475022054 7877858474999794 -> 1.000000000002826 Inexact Rounded
dddiv4050 divide 7333242694766258 7333242694744628 -> 1.000000000002950 Inexact Rounded
dddiv4051 divide 124051503698592 124051503699397 -> 0.9999999999935108 Inexact Rounded
dddiv4052 divide 8944737432385188 8944737432406860 -> 0.9999999999975771 Inexact Rounded
dddiv4053 divide 9883948923406874 9883948923424843 -> 0.9999999999981820 Inexact Rounded
dddiv4054 divide 6829178741654284 6829178741671973 -> 0.9999999999974098 Inexact Rounded
dddiv4055 divide 7342752479768122 7342752479793385 -> 0.9999999999965595 Inexact Rounded
dddiv4056 divide 8066426579008783 8066426578977563 -> 1.000000000003870 Inexact Rounded
dddiv4057 divide 8992775071383295 8992775071352712 -> 1.000000000003401 Inexact Rounded
dddiv4058 divide 5485011755545641 5485011755543611 -> 1.000000000000370 Inexact Rounded
dddiv4059 divide 5779983054353918 5779983054365300 -> 0.9999999999980308 Inexact Rounded
dddiv4060 divide 9502265102713774 9502265102735208 -> 0.9999999999977443 Inexact Rounded
dddiv4061 divide 2109558399130981 2109558399116281 -> 1.000000000006968 Inexact Rounded
dddiv4062 divide 5296182636350471 5296182636351521 -> 0.9999999999998017 Inexact Rounded
dddiv4063 divide 1440019225591883 1440019225601844 -> 0.9999999999930827 Inexact Rounded
dddiv4064 divide 8182110791881341 8182110791847174 -> 1.000000000004176 Inexact Rounded
dddiv4065 divide 489098235512060 489098235534516 -> 0.9999999999540869 Inexact Rounded
dddiv4066 divide 6475687084782038 6475687084756089 -> 1.000000000004007 Inexact Rounded
dddiv4067 divide 8094348555736948 8094348555759236 -> 0.9999999999972465 Inexact Rounded
dddiv4068 divide 1982766816291543 1982766816309463 -> 0.9999999999909621 Inexact Rounded
dddiv4069 divide 9277314300113251 9277314300084467 -> 1.000000000003103 Inexact Rounded
dddiv4070 divide 4335532959318934 4335532959293167 -> 1.000000000005943 Inexact Rounded
dddiv4071 divide 7767113032981348 7767113032968132 -> 1.000000000001702 Inexact Rounded
dddiv4072 divide 1578548053342868 1578548053370448 -> 0.9999999999825282 Inexact Rounded
dddiv4073 divide 3790420686666898 3790420686636315 -> 1.000000000008068 Inexact Rounded
dddiv4074 divide 871682421955147 871682421976441 -> 0.9999999999755714 Inexact Rounded
dddiv4075 divide 744141054479940 744141054512329 -> 0.9999999999564746 Inexact Rounded
dddiv4076 divide 8956824183670735 8956824183641741 -> 1.000000000003237 Inexact Rounded
dddiv4077 divide 8337291694485682 8337291694451193 -> 1.000000000004137 Inexact Rounded
dddiv4078 divide 4107775944683669 4107775944657097 -> 1.000000000006469 Inexact Rounded
dddiv4079 divide 8691900057964648 8691900057997555 -> 0.9999999999962141 Inexact Rounded
dddiv4080 divide 2229528520536462 2229528520502337 -> 1.000000000015306 Inexact Rounded
dddiv4081 divide 398442083774322 398442083746273 -> 1.000000000070397 Inexact Rounded
dddiv4082 divide 5319819776808759 5319819776838313 -> 0.9999999999944445 Inexact Rounded
dddiv4083 divide 7710491299066855 7710491299041858 -> 1.000000000003242 Inexact Rounded
dddiv4084 divide 9083231296087266 9083231296058160 -> 1.000000000003204 Inexact Rounded
dddiv4085 divide 3566873574904559 3566873574890328 -> 1.000000000003990 Inexact Rounded
dddiv4086 divide 596343290550525 596343290555614 -> 0.9999999999914663 Inexact Rounded
dddiv4087 divide 278227925093192 278227925068104 -> 1.000000000090171 Inexact Rounded
dddiv4088 divide 3292902958490649 3292902958519881 -> 0.9999999999911227 Inexact Rounded
dddiv4089 divide 5521871364245881 5521871364229536 -> 1.000000000002960 Inexact Rounded
dddiv4090 divide 2406505602883617 2406505602857997 -> 1.000000000010646 Inexact Rounded
dddiv4091 divide 7741146984869208 7741146984867255 -> 1.000000000000252 Inexact Rounded
dddiv4092 divide 4576041832414909 4576041832405102 -> 1.000000000002143 Inexact Rounded
dddiv4093 divide 9183756982878057 9183756982901934 -> 0.9999999999974001 Inexact Rounded
dddiv4094 divide 6215736513855159 6215736513870342 -> 0.9999999999975573 Inexact Rounded
dddiv4095 divide 248554968534533 248554968551417 -> 0.9999999999320714 Inexact Rounded
dddiv4096 divide 376314165668645 376314165659755 -> 1.000000000023624 Inexact Rounded
dddiv4097 divide 5513569249809718 5513569249808906 -> 1.000000000000147 Inexact Rounded
dddiv4098 divide 3367992242167904 3367992242156228 -> 1.000000000003467 Inexact Rounded
dddiv4099 divide 6134869538966967 6134869538985986 -> 0.9999999999968999 Inexact Rounded
-- Null tests
dddiv9998 divide 10 # -> NaN Invalid_operation
dddiv9999 divide # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,449 @@
------------------------------------------------------------------------
-- ddDivideInt.decTest -- decDouble integer division --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
dddvi001 divideint 1 1 -> 1
dddvi002 divideint 2 1 -> 2
dddvi003 divideint 1 2 -> 0
dddvi004 divideint 2 2 -> 1
dddvi005 divideint 0 1 -> 0
dddvi006 divideint 0 2 -> 0
dddvi007 divideint 1 3 -> 0
dddvi008 divideint 2 3 -> 0
dddvi009 divideint 3 3 -> 1
dddvi010 divideint 2.4 1 -> 2
dddvi011 divideint 2.4 -1 -> -2
dddvi012 divideint -2.4 1 -> -2
dddvi013 divideint -2.4 -1 -> 2
dddvi014 divideint 2.40 1 -> 2
dddvi015 divideint 2.400 1 -> 2
dddvi016 divideint 2.4 2 -> 1
dddvi017 divideint 2.400 2 -> 1
dddvi018 divideint 2. 2 -> 1
dddvi019 divideint 20 20 -> 1
dddvi020 divideint 187 187 -> 1
dddvi021 divideint 5 2 -> 2
dddvi022 divideint 5 2.0 -> 2
dddvi023 divideint 5 2.000 -> 2
dddvi024 divideint 5 0.200 -> 25
dddvi025 divideint 5 0.200 -> 25
dddvi030 divideint 1 2 -> 0
dddvi031 divideint 1 4 -> 0
dddvi032 divideint 1 8 -> 0
dddvi033 divideint 1 16 -> 0
dddvi034 divideint 1 32 -> 0
dddvi035 divideint 1 64 -> 0
dddvi040 divideint 1 -2 -> -0
dddvi041 divideint 1 -4 -> -0
dddvi042 divideint 1 -8 -> -0
dddvi043 divideint 1 -16 -> -0
dddvi044 divideint 1 -32 -> -0
dddvi045 divideint 1 -64 -> -0
dddvi050 divideint -1 2 -> -0
dddvi051 divideint -1 4 -> -0
dddvi052 divideint -1 8 -> -0
dddvi053 divideint -1 16 -> -0
dddvi054 divideint -1 32 -> -0
dddvi055 divideint -1 64 -> -0
dddvi060 divideint -1 -2 -> 0
dddvi061 divideint -1 -4 -> 0
dddvi062 divideint -1 -8 -> 0
dddvi063 divideint -1 -16 -> 0
dddvi064 divideint -1 -32 -> 0
dddvi065 divideint -1 -64 -> 0
-- similar with powers of ten
dddvi160 divideint 1 1 -> 1
dddvi161 divideint 1 10 -> 0
dddvi162 divideint 1 100 -> 0
dddvi163 divideint 1 1000 -> 0
dddvi164 divideint 1 10000 -> 0
dddvi165 divideint 1 100000 -> 0
dddvi166 divideint 1 1000000 -> 0
dddvi167 divideint 1 10000000 -> 0
dddvi168 divideint 1 100000000 -> 0
dddvi170 divideint 1 -1 -> -1
dddvi171 divideint 1 -10 -> -0
dddvi172 divideint 1 -100 -> -0
dddvi173 divideint 1 -1000 -> -0
dddvi174 divideint 1 -10000 -> -0
dddvi175 divideint 1 -100000 -> -0
dddvi176 divideint 1 -1000000 -> -0
dddvi177 divideint 1 -10000000 -> -0
dddvi178 divideint 1 -100000000 -> -0
dddvi180 divideint -1 1 -> -1
dddvi181 divideint -1 10 -> -0
dddvi182 divideint -1 100 -> -0
dddvi183 divideint -1 1000 -> -0
dddvi184 divideint -1 10000 -> -0
dddvi185 divideint -1 100000 -> -0
dddvi186 divideint -1 1000000 -> -0
dddvi187 divideint -1 10000000 -> -0
dddvi188 divideint -1 100000000 -> -0
dddvi190 divideint -1 -1 -> 1
dddvi191 divideint -1 -10 -> 0
dddvi192 divideint -1 -100 -> 0
dddvi193 divideint -1 -1000 -> 0
dddvi194 divideint -1 -10000 -> 0
dddvi195 divideint -1 -100000 -> 0
dddvi196 divideint -1 -1000000 -> 0
dddvi197 divideint -1 -10000000 -> 0
dddvi198 divideint -1 -100000000 -> 0
-- some long operand (at p=9) cases
dddvi070 divideint 999999999 1 -> 999999999
dddvi071 divideint 999999999.4 1 -> 999999999
dddvi072 divideint 999999999.5 1 -> 999999999
dddvi073 divideint 999999999.9 1 -> 999999999
dddvi074 divideint 999999999.999 1 -> 999999999
dddvi090 divideint 0. 1 -> 0
dddvi091 divideint .0 1 -> 0
dddvi092 divideint 0.00 1 -> 0
dddvi093 divideint 0.00E+9 1 -> 0
dddvi094 divideint 0.0000E-50 1 -> 0
dddvi100 divideint 1 1 -> 1
dddvi101 divideint 1 2 -> 0
dddvi102 divideint 1 3 -> 0
dddvi103 divideint 1 4 -> 0
dddvi104 divideint 1 5 -> 0
dddvi105 divideint 1 6 -> 0
dddvi106 divideint 1 7 -> 0
dddvi107 divideint 1 8 -> 0
dddvi108 divideint 1 9 -> 0
dddvi109 divideint 1 10 -> 0
dddvi110 divideint 1 1 -> 1
dddvi111 divideint 2 1 -> 2
dddvi112 divideint 3 1 -> 3
dddvi113 divideint 4 1 -> 4
dddvi114 divideint 5 1 -> 5
dddvi115 divideint 6 1 -> 6
dddvi116 divideint 7 1 -> 7
dddvi117 divideint 8 1 -> 8
dddvi118 divideint 9 1 -> 9
dddvi119 divideint 10 1 -> 10
-- from DiagBigDecimal
dddvi131 divideint 101.3 1 -> 101
dddvi132 divideint 101.0 1 -> 101
dddvi133 divideint 101.3 3 -> 33
dddvi134 divideint 101.0 3 -> 33
dddvi135 divideint 2.4 1 -> 2
dddvi136 divideint 2.400 1 -> 2
dddvi137 divideint 18 18 -> 1
dddvi138 divideint 1120 1000 -> 1
dddvi139 divideint 2.4 2 -> 1
dddvi140 divideint 2.400 2 -> 1
dddvi141 divideint 0.5 2.000 -> 0
dddvi142 divideint 8.005 7 -> 1
dddvi143 divideint 5 2 -> 2
dddvi144 divideint 0 2 -> 0
dddvi145 divideint 0.00 2 -> 0
-- Others
dddvi150 divideint 12345 4.999 -> 2469
dddvi151 divideint 12345 4.99 -> 2473
dddvi152 divideint 12345 4.9 -> 2519
dddvi153 divideint 12345 5 -> 2469
dddvi154 divideint 12345 5.1 -> 2420
dddvi155 divideint 12345 5.01 -> 2464
dddvi156 divideint 12345 5.001 -> 2468
dddvi157 divideint 101 7.6 -> 13
-- Various flavours of divideint by 0
dddvi201 divideint 0 0 -> NaN Division_undefined
dddvi202 divideint 0.0E5 0 -> NaN Division_undefined
dddvi203 divideint 0.000 0 -> NaN Division_undefined
dddvi204 divideint 0.0001 0 -> Infinity Division_by_zero
dddvi205 divideint 0.01 0 -> Infinity Division_by_zero
dddvi206 divideint 0.1 0 -> Infinity Division_by_zero
dddvi207 divideint 1 0 -> Infinity Division_by_zero
dddvi208 divideint 1 0.0 -> Infinity Division_by_zero
dddvi209 divideint 10 0.0 -> Infinity Division_by_zero
dddvi210 divideint 1E+100 0.0 -> Infinity Division_by_zero
dddvi211 divideint 1E+380 0 -> Infinity Division_by_zero
dddvi214 divideint -0.0001 0 -> -Infinity Division_by_zero
dddvi215 divideint -0.01 0 -> -Infinity Division_by_zero
dddvi216 divideint -0.1 0 -> -Infinity Division_by_zero
dddvi217 divideint -1 0 -> -Infinity Division_by_zero
dddvi218 divideint -1 0.0 -> -Infinity Division_by_zero
dddvi219 divideint -10 0.0 -> -Infinity Division_by_zero
dddvi220 divideint -1E+100 0.0 -> -Infinity Division_by_zero
dddvi221 divideint -1E+380 0 -> -Infinity Division_by_zero
-- test some cases that are close to exponent overflow
dddvi270 divideint 1 1e384 -> 0
dddvi271 divideint 1 0.9e384 -> 0
dddvi272 divideint 1 0.99e384 -> 0
dddvi273 divideint 1 0.9999999999999999e384 -> 0
dddvi274 divideint 9e384 1 -> NaN Division_impossible
dddvi275 divideint 9.9e384 1 -> NaN Division_impossible
dddvi276 divideint 9.99e384 1 -> NaN Division_impossible
dddvi277 divideint 9.999999999999999e384 1 -> NaN Division_impossible
dddvi280 divideint 0.1 9e-383 -> NaN Division_impossible
dddvi281 divideint 0.1 99e-383 -> NaN Division_impossible
dddvi282 divideint 0.1 999e-383 -> NaN Division_impossible
dddvi283 divideint 0.1 9e-382 -> NaN Division_impossible
dddvi284 divideint 0.1 99e-382 -> NaN Division_impossible
-- GD edge cases: lhs smaller than rhs but more digits
dddvi301 divideint 0.9 2 -> 0
dddvi302 divideint 0.9 2.0 -> 0
dddvi303 divideint 0.9 2.1 -> 0
dddvi304 divideint 0.9 2.00 -> 0
dddvi305 divideint 0.9 2.01 -> 0
dddvi306 divideint 0.12 1 -> 0
dddvi307 divideint 0.12 1.0 -> 0
dddvi308 divideint 0.12 1.00 -> 0
dddvi309 divideint 0.12 1.0 -> 0
dddvi310 divideint 0.12 1.00 -> 0
dddvi311 divideint 0.12 2 -> 0
dddvi312 divideint 0.12 2.0 -> 0
dddvi313 divideint 0.12 2.1 -> 0
dddvi314 divideint 0.12 2.00 -> 0
dddvi315 divideint 0.12 2.01 -> 0
-- edge cases of impossible
dddvi330 divideint 1234567890123456 10 -> 123456789012345
dddvi331 divideint 1234567890123456 1 -> 1234567890123456
dddvi332 divideint 1234567890123456 0.1 -> NaN Division_impossible
dddvi333 divideint 1234567890123456 0.01 -> NaN Division_impossible
-- overflow and underflow tests [from divide]
dddvi1051 divideint 1e+277 1e-311 -> NaN Division_impossible
dddvi1052 divideint 1e+277 -1e-311 -> NaN Division_impossible
dddvi1053 divideint -1e+277 1e-311 -> NaN Division_impossible
dddvi1054 divideint -1e+277 -1e-311 -> NaN Division_impossible
dddvi1055 divideint 1e-277 1e+311 -> 0
dddvi1056 divideint 1e-277 -1e+311 -> -0
dddvi1057 divideint -1e-277 1e+311 -> -0
dddvi1058 divideint -1e-277 -1e+311 -> 0
-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
dddvi1060 divideint 1e-291 1e+101 -> 0
dddvi1061 divideint 1e-291 1e+102 -> 0
dddvi1062 divideint 1e-291 1e+103 -> 0
dddvi1063 divideint 1e-291 1e+104 -> 0
dddvi1064 divideint 1e-291 1e+105 -> 0
dddvi1065 divideint 1e-291 1e+106 -> 0
dddvi1066 divideint 1e-291 1e+107 -> 0
dddvi1067 divideint 1e-291 1e+108 -> 0
dddvi1068 divideint 1e-291 1e+109 -> 0
dddvi1069 divideint 1e-291 1e+110 -> 0
dddvi1101 divideint 1.0000E-394 1 -> 0
dddvi1102 divideint 1.000E-394 1e+1 -> 0
dddvi1103 divideint 1.00E-394 1e+2 -> 0
dddvi1118 divideint 1E-394 1e+4 -> 0
dddvi1119 divideint 3E-394 -1e+5 -> -0
dddvi1120 divideint 5E-394 1e+5 -> 0
dddvi1124 divideint 1E-394 -1e+4 -> -0
dddvi1130 divideint 3.0E-394 -1e+5 -> -0
dddvi1131 divideint 1.0E-199 1e+200 -> 0
dddvi1132 divideint 1.0E-199 1e+199 -> 0
dddvi1133 divideint 1.0E-199 1e+198 -> 0
dddvi1134 divideint 2.0E-199 2e+198 -> 0
dddvi1135 divideint 4.0E-199 4e+198 -> 0
-- long operand checks
dddvi401 divideint 12345678000 100 -> 123456780
dddvi402 divideint 1 12345678000 -> 0
dddvi403 divideint 1234567800 10 -> 123456780
dddvi404 divideint 1 1234567800 -> 0
dddvi405 divideint 1234567890 10 -> 123456789
dddvi406 divideint 1 1234567890 -> 0
dddvi407 divideint 1234567891 10 -> 123456789
dddvi408 divideint 1 1234567891 -> 0
dddvi409 divideint 12345678901 100 -> 123456789
dddvi410 divideint 1 12345678901 -> 0
dddvi411 divideint 1234567896 10 -> 123456789
dddvi412 divideint 1 1234567896 -> 0
dddvi413 divideint 12345678948 100 -> 123456789
dddvi414 divideint 12345678949 100 -> 123456789
dddvi415 divideint 12345678950 100 -> 123456789
dddvi416 divideint 12345678951 100 -> 123456789
dddvi417 divideint 12345678999 100 -> 123456789
dddvi441 divideint 12345678000 1 -> 12345678000
dddvi442 divideint 1 12345678000 -> 0
dddvi443 divideint 1234567800 1 -> 1234567800
dddvi444 divideint 1 1234567800 -> 0
dddvi445 divideint 1234567890 1 -> 1234567890
dddvi446 divideint 1 1234567890 -> 0
dddvi447 divideint 1234567891 1 -> 1234567891
dddvi448 divideint 1 1234567891 -> 0
dddvi449 divideint 12345678901 1 -> 12345678901
dddvi450 divideint 1 12345678901 -> 0
dddvi451 divideint 1234567896 1 -> 1234567896
dddvi452 divideint 1 1234567896 -> 0
-- more zeros, etc.
dddvi531 divideint 5.00 1E-3 -> 5000
dddvi532 divideint 00.00 0.000 -> NaN Division_undefined
dddvi533 divideint 00.00 0E-3 -> NaN Division_undefined
dddvi534 divideint 0 -0 -> NaN Division_undefined
dddvi535 divideint -0 0 -> NaN Division_undefined
dddvi536 divideint -0 -0 -> NaN Division_undefined
dddvi541 divideint 0 -1 -> -0
dddvi542 divideint -0 -1 -> 0
dddvi543 divideint 0 1 -> 0
dddvi544 divideint -0 1 -> -0
dddvi545 divideint -1 0 -> -Infinity Division_by_zero
dddvi546 divideint -1 -0 -> Infinity Division_by_zero
dddvi547 divideint 1 0 -> Infinity Division_by_zero
dddvi548 divideint 1 -0 -> -Infinity Division_by_zero
dddvi551 divideint 0.0 -1 -> -0
dddvi552 divideint -0.0 -1 -> 0
dddvi553 divideint 0.0 1 -> 0
dddvi554 divideint -0.0 1 -> -0
dddvi555 divideint -1.0 0 -> -Infinity Division_by_zero
dddvi556 divideint -1.0 -0 -> Infinity Division_by_zero
dddvi557 divideint 1.0 0 -> Infinity Division_by_zero
dddvi558 divideint 1.0 -0 -> -Infinity Division_by_zero
dddvi561 divideint 0 -1.0 -> -0
dddvi562 divideint -0 -1.0 -> 0
dddvi563 divideint 0 1.0 -> 0
dddvi564 divideint -0 1.0 -> -0
dddvi565 divideint -1 0.0 -> -Infinity Division_by_zero
dddvi566 divideint -1 -0.0 -> Infinity Division_by_zero
dddvi567 divideint 1 0.0 -> Infinity Division_by_zero
dddvi568 divideint 1 -0.0 -> -Infinity Division_by_zero
dddvi571 divideint 0.0 -1.0 -> -0
dddvi572 divideint -0.0 -1.0 -> 0
dddvi573 divideint 0.0 1.0 -> 0
dddvi574 divideint -0.0 1.0 -> -0
dddvi575 divideint -1.0 0.0 -> -Infinity Division_by_zero
dddvi576 divideint -1.0 -0.0 -> Infinity Division_by_zero
dddvi577 divideint 1.0 0.0 -> Infinity Division_by_zero
dddvi578 divideint 1.0 -0.0 -> -Infinity Division_by_zero
-- Specials
dddvi580 divideint Inf -Inf -> NaN Invalid_operation
dddvi581 divideint Inf -1000 -> -Infinity
dddvi582 divideint Inf -1 -> -Infinity
dddvi583 divideint Inf -0 -> -Infinity
dddvi584 divideint Inf 0 -> Infinity
dddvi585 divideint Inf 1 -> Infinity
dddvi586 divideint Inf 1000 -> Infinity
dddvi587 divideint Inf Inf -> NaN Invalid_operation
dddvi588 divideint -1000 Inf -> -0
dddvi589 divideint -Inf Inf -> NaN Invalid_operation
dddvi590 divideint -1 Inf -> -0
dddvi591 divideint -0 Inf -> -0
dddvi592 divideint 0 Inf -> 0
dddvi593 divideint 1 Inf -> 0
dddvi594 divideint 1000 Inf -> 0
dddvi595 divideint Inf Inf -> NaN Invalid_operation
dddvi600 divideint -Inf -Inf -> NaN Invalid_operation
dddvi601 divideint -Inf -1000 -> Infinity
dddvi602 divideint -Inf -1 -> Infinity
dddvi603 divideint -Inf -0 -> Infinity
dddvi604 divideint -Inf 0 -> -Infinity
dddvi605 divideint -Inf 1 -> -Infinity
dddvi606 divideint -Inf 1000 -> -Infinity
dddvi607 divideint -Inf Inf -> NaN Invalid_operation
dddvi608 divideint -1000 Inf -> -0
dddvi609 divideint -Inf -Inf -> NaN Invalid_operation
dddvi610 divideint -1 -Inf -> 0
dddvi611 divideint -0 -Inf -> 0
dddvi612 divideint 0 -Inf -> -0
dddvi613 divideint 1 -Inf -> -0
dddvi614 divideint 1000 -Inf -> -0
dddvi615 divideint Inf -Inf -> NaN Invalid_operation
dddvi621 divideint NaN -Inf -> NaN
dddvi622 divideint NaN -1000 -> NaN
dddvi623 divideint NaN -1 -> NaN
dddvi624 divideint NaN -0 -> NaN
dddvi625 divideint NaN 0 -> NaN
dddvi626 divideint NaN 1 -> NaN
dddvi627 divideint NaN 1000 -> NaN
dddvi628 divideint NaN Inf -> NaN
dddvi629 divideint NaN NaN -> NaN
dddvi630 divideint -Inf NaN -> NaN
dddvi631 divideint -1000 NaN -> NaN
dddvi632 divideint -1 NaN -> NaN
dddvi633 divideint -0 NaN -> NaN
dddvi634 divideint 0 NaN -> NaN
dddvi635 divideint 1 NaN -> NaN
dddvi636 divideint 1000 NaN -> NaN
dddvi637 divideint Inf NaN -> NaN
dddvi641 divideint sNaN -Inf -> NaN Invalid_operation
dddvi642 divideint sNaN -1000 -> NaN Invalid_operation
dddvi643 divideint sNaN -1 -> NaN Invalid_operation
dddvi644 divideint sNaN -0 -> NaN Invalid_operation
dddvi645 divideint sNaN 0 -> NaN Invalid_operation
dddvi646 divideint sNaN 1 -> NaN Invalid_operation
dddvi647 divideint sNaN 1000 -> NaN Invalid_operation
dddvi648 divideint sNaN NaN -> NaN Invalid_operation
dddvi649 divideint sNaN sNaN -> NaN Invalid_operation
dddvi650 divideint NaN sNaN -> NaN Invalid_operation
dddvi651 divideint -Inf sNaN -> NaN Invalid_operation
dddvi652 divideint -1000 sNaN -> NaN Invalid_operation
dddvi653 divideint -1 sNaN -> NaN Invalid_operation
dddvi654 divideint -0 sNaN -> NaN Invalid_operation
dddvi655 divideint 0 sNaN -> NaN Invalid_operation
dddvi656 divideint 1 sNaN -> NaN Invalid_operation
dddvi657 divideint 1000 sNaN -> NaN Invalid_operation
dddvi658 divideint Inf sNaN -> NaN Invalid_operation
dddvi659 divideint NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dddvi661 divideint NaN9 -Inf -> NaN9
dddvi662 divideint NaN8 1000 -> NaN8
dddvi663 divideint NaN7 Inf -> NaN7
dddvi664 divideint -NaN6 NaN5 -> -NaN6
dddvi665 divideint -Inf NaN4 -> NaN4
dddvi666 divideint -1000 NaN3 -> NaN3
dddvi667 divideint Inf -NaN2 -> -NaN2
dddvi671 divideint -sNaN99 -Inf -> -NaN99 Invalid_operation
dddvi672 divideint sNaN98 -1 -> NaN98 Invalid_operation
dddvi673 divideint sNaN97 NaN -> NaN97 Invalid_operation
dddvi674 divideint sNaN96 sNaN94 -> NaN96 Invalid_operation
dddvi675 divideint NaN95 sNaN93 -> NaN93 Invalid_operation
dddvi676 divideint -Inf sNaN92 -> NaN92 Invalid_operation
dddvi677 divideint 0 sNaN91 -> NaN91 Invalid_operation
dddvi678 divideint Inf -sNaN90 -> -NaN90 Invalid_operation
dddvi679 divideint NaN sNaN89 -> NaN89 Invalid_operation
-- Null tests
dddvi900 divideint 10 # -> NaN Invalid_operation
dddvi901 divideint # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,495 @@
------------------------------------------------------------------------
-- ddEncode.decTest -- decimal eight-byte format testcases --
-- Copyright (c) IBM Corporation, 2000, 2008. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
-- [Previously called decimal64.decTest]
version: 2.59
-- This set of tests is for the eight-byte concrete representation.
-- Its characteristics are:
--
-- 1 bit sign
-- 5 bits combination field
-- 8 bits exponent continuation
-- 50 bits coefficient continuation
--
-- Total exponent length 10 bits
-- Total coefficient length 54 bits (16 digits)
--
-- Elimit = 767 (maximum encoded exponent)
-- Emax = 384 (largest exponent value)
-- Emin = -383 (smallest exponent value)
-- bias = 398 (subtracted from encoded exponent) = -Etiny
-- The testcases here have only exactly representable data on the
-- 'left-hand-side'; rounding from strings is tested in 'base'
-- testcase groups.
extended: 1
clamp: 1
precision: 16
rounding: half_up
maxExponent: 384
minExponent: -383
-- General testcases
-- (mostly derived from the Strawman 4 document and examples)
dece001 apply #A2300000000003D0 -> -7.50
dece002 apply -7.50 -> #A2300000000003D0
-- derivative canonical plain strings
dece003 apply #A23c0000000003D0 -> -7.50E+3
dece004 apply -7.50E+3 -> #A23c0000000003D0
dece005 apply #A2380000000003D0 -> -750
dece006 apply -750 -> #A2380000000003D0
dece007 apply #A2340000000003D0 -> -75.0
dece008 apply -75.0 -> #A2340000000003D0
dece009 apply #A22c0000000003D0 -> -0.750
dece010 apply -0.750 -> #A22c0000000003D0
dece011 apply #A2280000000003D0 -> -0.0750
dece012 apply -0.0750 -> #A2280000000003D0
dece013 apply #A2200000000003D0 -> -0.000750
dece014 apply -0.000750 -> #A2200000000003D0
dece015 apply #A2180000000003D0 -> -0.00000750
dece016 apply -0.00000750 -> #A2180000000003D0
dece017 apply #A2140000000003D0 -> -7.50E-7
dece018 apply -7.50E-7 -> #A2140000000003D0
-- Normality
dece020 apply 1234567890123456 -> #263934b9c1e28e56
dece021 apply -1234567890123456 -> #a63934b9c1e28e56
dece022 apply 1234.567890123456 -> #260934b9c1e28e56
dece023 apply #260934b9c1e28e56 -> 1234.567890123456
dece024 apply 1111111111111111 -> #2638912449124491
dece025 apply 9999999999999999 -> #6e38ff3fcff3fcff
-- Nmax and similar
dece031 apply 9999999999999999E+369 -> #77fcff3fcff3fcff
dece032 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff
dece033 apply #77fcff3fcff3fcff -> 9.999999999999999E+384
dece034 apply 1.234567890123456E+384 -> #47fd34b9c1e28e56
dece035 apply #47fd34b9c1e28e56 -> 1.234567890123456E+384
-- fold-downs (more below)
dece036 apply 1.23E+384 -> #47fd300000000000 Clamped
dece037 apply #47fd300000000000 -> 1.230000000000000E+384
decd038 apply 1E+384 -> #47fc000000000000 Clamped
decd039 apply #47fc000000000000 -> 1.000000000000000E+384
decd051 apply 12345 -> #22380000000049c5
decd052 apply #22380000000049c5 -> 12345
decd053 apply 1234 -> #2238000000000534
decd054 apply #2238000000000534 -> 1234
decd055 apply 123 -> #22380000000000a3
decd056 apply #22380000000000a3 -> 123
decd057 apply 12 -> #2238000000000012
decd058 apply #2238000000000012 -> 12
decd059 apply 1 -> #2238000000000001
decd060 apply #2238000000000001 -> 1
decd061 apply 1.23 -> #22300000000000a3
decd062 apply #22300000000000a3 -> 1.23
decd063 apply 123.45 -> #22300000000049c5
decd064 apply #22300000000049c5 -> 123.45
-- Nmin and below
decd071 apply 1E-383 -> #003c000000000001
decd072 apply #003c000000000001 -> 1E-383
decd073 apply 1.000000000000000E-383 -> #0400000000000000
decd074 apply #0400000000000000 -> 1.000000000000000E-383
decd075 apply 1.000000000000001E-383 -> #0400000000000001
decd076 apply #0400000000000001 -> 1.000000000000001E-383
decd077 apply 0.100000000000000E-383 -> #0000800000000000 Subnormal
decd078 apply #0000800000000000 -> 1.00000000000000E-384 Subnormal
decd079 apply 0.000000000000010E-383 -> #0000000000000010 Subnormal
decd080 apply #0000000000000010 -> 1.0E-397 Subnormal
decd081 apply 0.00000000000001E-383 -> #0004000000000001 Subnormal
decd082 apply #0004000000000001 -> 1E-397 Subnormal
decd083 apply 0.000000000000001E-383 -> #0000000000000001 Subnormal
decd084 apply #0000000000000001 -> 1E-398 Subnormal
-- next is smallest all-nines
decd085 apply 9999999999999999E-398 -> #6400ff3fcff3fcff
decd086 apply #6400ff3fcff3fcff -> 9.999999999999999E-383
-- and a problematic divide result
decd088 apply 1.111111111111111E-383 -> #0400912449124491
decd089 apply #0400912449124491 -> 1.111111111111111E-383
-- forties
decd090 apply 40 -> #2238000000000040
decd091 apply 39.99 -> #2230000000000cff
-- underflows cannot be tested as all LHS exact
-- Same again, negatives
-- Nmax and similar
decd122 apply -9.999999999999999E+384 -> #f7fcff3fcff3fcff
decd123 apply #f7fcff3fcff3fcff -> -9.999999999999999E+384
decd124 apply -1.234567890123456E+384 -> #c7fd34b9c1e28e56
decd125 apply #c7fd34b9c1e28e56 -> -1.234567890123456E+384
-- fold-downs (more below)
decd130 apply -1.23E+384 -> #c7fd300000000000 Clamped
decd131 apply #c7fd300000000000 -> -1.230000000000000E+384
decd132 apply -1E+384 -> #c7fc000000000000 Clamped
decd133 apply #c7fc000000000000 -> -1.000000000000000E+384
-- overflows
decd151 apply -12345 -> #a2380000000049c5
decd152 apply #a2380000000049c5 -> -12345
decd153 apply -1234 -> #a238000000000534
decd154 apply #a238000000000534 -> -1234
decd155 apply -123 -> #a2380000000000a3
decd156 apply #a2380000000000a3 -> -123
decd157 apply -12 -> #a238000000000012
decd158 apply #a238000000000012 -> -12
decd159 apply -1 -> #a238000000000001
decd160 apply #a238000000000001 -> -1
decd161 apply -1.23 -> #a2300000000000a3
decd162 apply #a2300000000000a3 -> -1.23
decd163 apply -123.45 -> #a2300000000049c5
decd164 apply #a2300000000049c5 -> -123.45
-- Nmin and below
decd171 apply -1E-383 -> #803c000000000001
decd172 apply #803c000000000001 -> -1E-383
decd173 apply -1.000000000000000E-383 -> #8400000000000000
decd174 apply #8400000000000000 -> -1.000000000000000E-383
decd175 apply -1.000000000000001E-383 -> #8400000000000001
decd176 apply #8400000000000001 -> -1.000000000000001E-383
decd177 apply -0.100000000000000E-383 -> #8000800000000000 Subnormal
decd178 apply #8000800000000000 -> -1.00000000000000E-384 Subnormal
decd179 apply -0.000000000000010E-383 -> #8000000000000010 Subnormal
decd180 apply #8000000000000010 -> -1.0E-397 Subnormal
decd181 apply -0.00000000000001E-383 -> #8004000000000001 Subnormal
decd182 apply #8004000000000001 -> -1E-397 Subnormal
decd183 apply -0.000000000000001E-383 -> #8000000000000001 Subnormal
decd184 apply #8000000000000001 -> -1E-398 Subnormal
-- next is smallest all-nines
decd185 apply -9999999999999999E-398 -> #e400ff3fcff3fcff
decd186 apply #e400ff3fcff3fcff -> -9.999999999999999E-383
-- and a tricky subnormal
decd187 apply 1.11111111111524E-384 -> #00009124491246a4 Subnormal
decd188 apply #00009124491246a4 -> 1.11111111111524E-384 Subnormal
-- near-underflows
decd189 apply -1e-398 -> #8000000000000001 Subnormal
decd190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded
-- zeros
decd401 apply 0E-500 -> #0000000000000000 Clamped
decd402 apply 0E-400 -> #0000000000000000 Clamped
decd403 apply 0E-398 -> #0000000000000000
decd404 apply #0000000000000000 -> 0E-398
decd405 apply 0.000000000000000E-383 -> #0000000000000000
decd406 apply #0000000000000000 -> 0E-398
decd407 apply 0E-2 -> #2230000000000000
decd408 apply #2230000000000000 -> 0.00
decd409 apply 0 -> #2238000000000000
decd410 apply #2238000000000000 -> 0
decd411 apply 0E+3 -> #2244000000000000
decd412 apply #2244000000000000 -> 0E+3
decd413 apply 0E+369 -> #43fc000000000000
decd414 apply #43fc000000000000 -> 0E+369
-- clamped zeros...
decd415 apply 0E+370 -> #43fc000000000000 Clamped
decd416 apply #43fc000000000000 -> 0E+369
decd417 apply 0E+384 -> #43fc000000000000 Clamped
decd418 apply #43fc000000000000 -> 0E+369
decd419 apply 0E+400 -> #43fc000000000000 Clamped
decd420 apply #43fc000000000000 -> 0E+369
decd421 apply 0E+500 -> #43fc000000000000 Clamped
decd422 apply #43fc000000000000 -> 0E+369
-- negative zeros
decd431 apply -0E-400 -> #8000000000000000 Clamped
decd432 apply -0E-400 -> #8000000000000000 Clamped
decd433 apply -0E-398 -> #8000000000000000
decd434 apply #8000000000000000 -> -0E-398
decd435 apply -0.000000000000000E-383 -> #8000000000000000
decd436 apply #8000000000000000 -> -0E-398
decd437 apply -0E-2 -> #a230000000000000
decd438 apply #a230000000000000 -> -0.00
decd439 apply -0 -> #a238000000000000
decd440 apply #a238000000000000 -> -0
decd441 apply -0E+3 -> #a244000000000000
decd442 apply #a244000000000000 -> -0E+3
decd443 apply -0E+369 -> #c3fc000000000000
decd444 apply #c3fc000000000000 -> -0E+369
-- clamped zeros...
decd445 apply -0E+370 -> #c3fc000000000000 Clamped
decd446 apply #c3fc000000000000 -> -0E+369
decd447 apply -0E+384 -> #c3fc000000000000 Clamped
decd448 apply #c3fc000000000000 -> -0E+369
decd449 apply -0E+400 -> #c3fc000000000000 Clamped
decd450 apply #c3fc000000000000 -> -0E+369
decd451 apply -0E+500 -> #c3fc000000000000 Clamped
decd452 apply #c3fc000000000000 -> -0E+369
-- exponents
decd460 apply #225c000000000007 -> 7E+9
decd461 apply 7E+9 -> #225c000000000007
decd462 apply #23c4000000000007 -> 7E+99
decd463 apply 7E+99 -> #23c4000000000007
-- Specials
decd500 apply Infinity -> #7800000000000000
decd501 apply #7878787878787878 -> #7800000000000000
decd502 apply #7800000000000000 -> Infinity
decd503 apply #7979797979797979 -> #7800000000000000
decd504 apply #7900000000000000 -> Infinity
decd505 apply #7a7a7a7a7a7a7a7a -> #7800000000000000
decd506 apply #7a00000000000000 -> Infinity
decd507 apply #7b7b7b7b7b7b7b7b -> #7800000000000000
decd508 apply #7b00000000000000 -> Infinity
decd509 apply NaN -> #7c00000000000000
decd510 apply #7c7c7c7c7c7c7c7c -> #7c007c7c7c7c7c7c
decd511 apply #7c00000000000000 -> NaN
decd512 apply #7d7d7d7d7d7d7d7d -> #7c017d7d7d7d7d7d
decd513 apply #7d00000000000000 -> NaN
decd514 apply #7e7e7e7e7e7e7e7e -> #7e007e7e7e7e7c7e
decd515 apply #7e00000000000000 -> sNaN
decd516 apply #7f7f7f7f7f7f7f7f -> #7e007f7f7f7f7c7f
decd517 apply #7f00000000000000 -> sNaN
decd518 apply #7fffffffffffffff -> sNaN999999999999999
decd519 apply #7fffffffffffffff -> #7e00ff3fcff3fcff
decd520 apply -Infinity -> #f800000000000000
decd521 apply #f878787878787878 -> #f800000000000000
decd522 apply #f800000000000000 -> -Infinity
decd523 apply #f979797979797979 -> #f800000000000000
decd524 apply #f900000000000000 -> -Infinity
decd525 apply #fa7a7a7a7a7a7a7a -> #f800000000000000
decd526 apply #fa00000000000000 -> -Infinity
decd527 apply #fb7b7b7b7b7b7b7b -> #f800000000000000
decd528 apply #fb00000000000000 -> -Infinity
decd529 apply -NaN -> #fc00000000000000
decd530 apply #fc7c7c7c7c7c7c7c -> #fc007c7c7c7c7c7c
decd531 apply #fc00000000000000 -> -NaN
decd532 apply #fd7d7d7d7d7d7d7d -> #fc017d7d7d7d7d7d
decd533 apply #fd00000000000000 -> -NaN
decd534 apply #fe7e7e7e7e7e7e7e -> #fe007e7e7e7e7c7e
decd535 apply #fe00000000000000 -> -sNaN
decd536 apply #ff7f7f7f7f7f7f7f -> #fe007f7f7f7f7c7f
decd537 apply #ff00000000000000 -> -sNaN
decd538 apply #ffffffffffffffff -> -sNaN999999999999999
decd539 apply #ffffffffffffffff -> #fe00ff3fcff3fcff
-- diagnostic NaNs
decd540 apply NaN -> #7c00000000000000
decd541 apply NaN0 -> #7c00000000000000
decd542 apply NaN1 -> #7c00000000000001
decd543 apply NaN12 -> #7c00000000000012
decd544 apply NaN79 -> #7c00000000000079
decd545 apply NaN12345 -> #7c000000000049c5
decd546 apply NaN123456 -> #7c00000000028e56
decd547 apply NaN799799 -> #7c000000000f7fdf
decd548 apply NaN799799799799799 -> #7c03dff7fdff7fdf
decd549 apply NaN999999999999999 -> #7c00ff3fcff3fcff
-- too many digits
-- fold-down full sequence
decd601 apply 1E+384 -> #47fc000000000000 Clamped
decd602 apply #47fc000000000000 -> 1.000000000000000E+384
decd603 apply 1E+383 -> #43fc800000000000 Clamped
decd604 apply #43fc800000000000 -> 1.00000000000000E+383
decd605 apply 1E+382 -> #43fc100000000000 Clamped
decd606 apply #43fc100000000000 -> 1.0000000000000E+382
decd607 apply 1E+381 -> #43fc010000000000 Clamped
decd608 apply #43fc010000000000 -> 1.000000000000E+381
decd609 apply 1E+380 -> #43fc002000000000 Clamped
decd610 apply #43fc002000000000 -> 1.00000000000E+380
decd611 apply 1E+379 -> #43fc000400000000 Clamped
decd612 apply #43fc000400000000 -> 1.0000000000E+379
decd613 apply 1E+378 -> #43fc000040000000 Clamped
decd614 apply #43fc000040000000 -> 1.000000000E+378
decd615 apply 1E+377 -> #43fc000008000000 Clamped
decd616 apply #43fc000008000000 -> 1.00000000E+377
decd617 apply 1E+376 -> #43fc000001000000 Clamped
decd618 apply #43fc000001000000 -> 1.0000000E+376
decd619 apply 1E+375 -> #43fc000000100000 Clamped
decd620 apply #43fc000000100000 -> 1.000000E+375
decd621 apply 1E+374 -> #43fc000000020000 Clamped
decd622 apply #43fc000000020000 -> 1.00000E+374
decd623 apply 1E+373 -> #43fc000000004000 Clamped
decd624 apply #43fc000000004000 -> 1.0000E+373
decd625 apply 1E+372 -> #43fc000000000400 Clamped
decd626 apply #43fc000000000400 -> 1.000E+372
decd627 apply 1E+371 -> #43fc000000000080 Clamped
decd628 apply #43fc000000000080 -> 1.00E+371
decd629 apply 1E+370 -> #43fc000000000010 Clamped
decd630 apply #43fc000000000010 -> 1.0E+370
decd631 apply 1E+369 -> #43fc000000000001
decd632 apply #43fc000000000001 -> 1E+369
decd633 apply 1E+368 -> #43f8000000000001
decd634 apply #43f8000000000001 -> 1E+368
-- same with 9s
decd641 apply 9E+384 -> #77fc000000000000 Clamped
decd642 apply #77fc000000000000 -> 9.000000000000000E+384
decd643 apply 9E+383 -> #43fc8c0000000000 Clamped
decd644 apply #43fc8c0000000000 -> 9.00000000000000E+383
decd645 apply 9E+382 -> #43fc1a0000000000 Clamped
decd646 apply #43fc1a0000000000 -> 9.0000000000000E+382
decd647 apply 9E+381 -> #43fc090000000000 Clamped
decd648 apply #43fc090000000000 -> 9.000000000000E+381
decd649 apply 9E+380 -> #43fc002300000000 Clamped
decd650 apply #43fc002300000000 -> 9.00000000000E+380
decd651 apply 9E+379 -> #43fc000680000000 Clamped
decd652 apply #43fc000680000000 -> 9.0000000000E+379
decd653 apply 9E+378 -> #43fc000240000000 Clamped
decd654 apply #43fc000240000000 -> 9.000000000E+378
decd655 apply 9E+377 -> #43fc000008c00000 Clamped
decd656 apply #43fc000008c00000 -> 9.00000000E+377
decd657 apply 9E+376 -> #43fc000001a00000 Clamped
decd658 apply #43fc000001a00000 -> 9.0000000E+376
decd659 apply 9E+375 -> #43fc000000900000 Clamped
decd660 apply #43fc000000900000 -> 9.000000E+375
decd661 apply 9E+374 -> #43fc000000023000 Clamped
decd662 apply #43fc000000023000 -> 9.00000E+374
decd663 apply 9E+373 -> #43fc000000006800 Clamped
decd664 apply #43fc000000006800 -> 9.0000E+373
decd665 apply 9E+372 -> #43fc000000002400 Clamped
decd666 apply #43fc000000002400 -> 9.000E+372
decd667 apply 9E+371 -> #43fc00000000008c Clamped
decd668 apply #43fc00000000008c -> 9.00E+371
decd669 apply 9E+370 -> #43fc00000000001a Clamped
decd670 apply #43fc00000000001a -> 9.0E+370
decd671 apply 9E+369 -> #43fc000000000009
decd672 apply #43fc000000000009 -> 9E+369
decd673 apply 9E+368 -> #43f8000000000009
decd674 apply #43f8000000000009 -> 9E+368
-- Selected DPD codes
decd700 apply #2238000000000000 -> 0
decd701 apply #2238000000000009 -> 9
decd702 apply #2238000000000010 -> 10
decd703 apply #2238000000000019 -> 19
decd704 apply #2238000000000020 -> 20
decd705 apply #2238000000000029 -> 29
decd706 apply #2238000000000030 -> 30
decd707 apply #2238000000000039 -> 39
decd708 apply #2238000000000040 -> 40
decd709 apply #2238000000000049 -> 49
decd710 apply #2238000000000050 -> 50
decd711 apply #2238000000000059 -> 59
decd712 apply #2238000000000060 -> 60
decd713 apply #2238000000000069 -> 69
decd714 apply #2238000000000070 -> 70
decd715 apply #2238000000000071 -> 71
decd716 apply #2238000000000072 -> 72
decd717 apply #2238000000000073 -> 73
decd718 apply #2238000000000074 -> 74
decd719 apply #2238000000000075 -> 75
decd720 apply #2238000000000076 -> 76
decd721 apply #2238000000000077 -> 77
decd722 apply #2238000000000078 -> 78
decd723 apply #2238000000000079 -> 79
decd725 apply #223800000000029e -> 994
decd726 apply #223800000000029f -> 995
decd727 apply #22380000000002a0 -> 520
decd728 apply #22380000000002a1 -> 521
-- from telco test data
decd730 apply #2238000000000188 -> 308
decd731 apply #22380000000001a3 -> 323
decd732 apply #223800000000002a -> 82
decd733 apply #22380000000001a9 -> 329
decd734 apply #2238000000000081 -> 101
decd735 apply #22380000000002a2 -> 522
-- DPD: one of each of the huffman groups
decd740 apply #22380000000003f7 -> 777
decd741 apply #22380000000003f8 -> 778
decd742 apply #22380000000003eb -> 787
decd743 apply #223800000000037d -> 877
decd744 apply #223800000000039f -> 997
decd745 apply #22380000000003bf -> 979
decd746 apply #22380000000003df -> 799
decd747 apply #223800000000006e -> 888
-- DPD all-highs cases (includes the 24 redundant codes)
decd750 apply #223800000000006e -> 888
decd751 apply #223800000000016e -> 888
decd752 apply #223800000000026e -> 888
decd753 apply #223800000000036e -> 888
decd754 apply #223800000000006f -> 889
decd755 apply #223800000000016f -> 889
decd756 apply #223800000000026f -> 889
decd757 apply #223800000000036f -> 889
decd760 apply #223800000000007e -> 898
decd761 apply #223800000000017e -> 898
decd762 apply #223800000000027e -> 898
decd763 apply #223800000000037e -> 898
decd764 apply #223800000000007f -> 899
decd765 apply #223800000000017f -> 899
decd766 apply #223800000000027f -> 899
decd767 apply #223800000000037f -> 899
decd770 apply #22380000000000ee -> 988
decd771 apply #22380000000001ee -> 988
decd772 apply #22380000000002ee -> 988
decd773 apply #22380000000003ee -> 988
decd774 apply #22380000000000ef -> 989
decd775 apply #22380000000001ef -> 989
decd776 apply #22380000000002ef -> 989
decd777 apply #22380000000003ef -> 989
decd780 apply #22380000000000fe -> 998
decd781 apply #22380000000001fe -> 998
decd782 apply #22380000000002fe -> 998
decd783 apply #22380000000003fe -> 998
decd784 apply #22380000000000ff -> 999
decd785 apply #22380000000001ff -> 999
decd786 apply #22380000000002ff -> 999
decd787 apply #22380000000003ff -> 999
-- values around [u]int32 edges (zeros done earlier)
decd800 apply -2147483646 -> #a23800008c78af46
decd801 apply -2147483647 -> #a23800008c78af47
decd802 apply -2147483648 -> #a23800008c78af48
decd803 apply -2147483649 -> #a23800008c78af49
decd804 apply 2147483646 -> #223800008c78af46
decd805 apply 2147483647 -> #223800008c78af47
decd806 apply 2147483648 -> #223800008c78af48
decd807 apply 2147483649 -> #223800008c78af49
decd808 apply 4294967294 -> #2238000115afb55a
decd809 apply 4294967295 -> #2238000115afb55b
decd810 apply 4294967296 -> #2238000115afb57a
decd811 apply 4294967297 -> #2238000115afb57b
decd820 apply #a23800008c78af46 -> -2147483646
decd821 apply #a23800008c78af47 -> -2147483647
decd822 apply #a23800008c78af48 -> -2147483648
decd823 apply #a23800008c78af49 -> -2147483649
decd824 apply #223800008c78af46 -> 2147483646
decd825 apply #223800008c78af47 -> 2147483647
decd826 apply #223800008c78af48 -> 2147483648
decd827 apply #223800008c78af49 -> 2147483649
decd828 apply #2238000115afb55a -> 4294967294
decd829 apply #2238000115afb55b -> 4294967295
decd830 apply #2238000115afb57a -> 4294967296
decd831 apply #2238000115afb57b -> 4294967297
-- for narrowing
decd840 apply #2870000000000000 -> 2.000000000000000E-99
-- some miscellaneous
decd850 apply #0004070000000000 -> 7.000000000000E-385 Subnormal
decd851 apply #0008000000020000 -> 1.00000E-391 Subnormal

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,202 @@
------------------------------------------------------------------------
-- ddInvert.decTest -- digitwise logical INVERT for decDoubles --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check (truth table)
ddinv001 invert 0 -> 1111111111111111
ddinv002 invert 1 -> 1111111111111110
ddinv003 invert 10 -> 1111111111111101
ddinv004 invert 111111111 -> 1111111000000000
ddinv005 invert 000000000 -> 1111111111111111
-- and at msd and msd-1
ddinv007 invert 0000000000000000 -> 1111111111111111
ddinv008 invert 1000000000000000 -> 111111111111111
ddinv009 invert 0000000000000000 -> 1111111111111111
ddinv010 invert 0100000000000000 -> 1011111111111111
ddinv011 invert 0111111111111111 -> 1000000000000000
ddinv012 invert 1111111111111111 -> 0
ddinv013 invert 0011111111111111 -> 1100000000000000
ddinv014 invert 0111111111111111 -> 1000000000000000
-- Various lengths
-- 123456789 1234567890123456
ddinv021 invert 111111111 -> 1111111000000000
ddinv022 invert 111111111111 -> 1111000000000000
ddinv023 invert 11111111 -> 1111111100000000
ddinv025 invert 1111111 -> 1111111110000000
ddinv026 invert 111111 -> 1111111111000000
ddinv027 invert 11111 -> 1111111111100000
ddinv028 invert 1111 -> 1111111111110000
ddinv029 invert 111 -> 1111111111111000
ddinv031 invert 11 -> 1111111111111100
ddinv032 invert 1 -> 1111111111111110
ddinv033 invert 111111111111 -> 1111000000000000
ddinv034 invert 11111111111 -> 1111100000000000
ddinv035 invert 1111111111 -> 1111110000000000
ddinv036 invert 111111111 -> 1111111000000000
ddinv040 invert 011111111 -> 1111111100000000
ddinv041 invert 101111111 -> 1111111010000000
ddinv042 invert 110111111 -> 1111111001000000
ddinv043 invert 111011111 -> 1111111000100000
ddinv044 invert 111101111 -> 1111111000010000
ddinv045 invert 111110111 -> 1111111000001000
ddinv046 invert 111111011 -> 1111111000000100
ddinv047 invert 111111101 -> 1111111000000010
ddinv048 invert 111111110 -> 1111111000000001
ddinv049 invert 011111011 -> 1111111100000100
ddinv050 invert 101111101 -> 1111111010000010
ddinv051 invert 110111110 -> 1111111001000001
ddinv052 invert 111011101 -> 1111111000100010
ddinv053 invert 111101011 -> 1111111000010100
ddinv054 invert 111110111 -> 1111111000001000
ddinv055 invert 111101011 -> 1111111000010100
ddinv056 invert 111011101 -> 1111111000100010
ddinv057 invert 110111110 -> 1111111001000001
ddinv058 invert 101111101 -> 1111111010000010
ddinv059 invert 011111011 -> 1111111100000100
ddinv080 invert 1000000011111111 -> 111111100000000
ddinv081 invert 0100000101111111 -> 1011111010000000
ddinv082 invert 0010000110111111 -> 1101111001000000
ddinv083 invert 0001000111011111 -> 1110111000100000
ddinv084 invert 0000100111101111 -> 1111011000010000
ddinv085 invert 0000010111110111 -> 1111101000001000
ddinv086 invert 0000001111111011 -> 1111110000000100
ddinv087 invert 0000010111111101 -> 1111101000000010
ddinv088 invert 0000100111111110 -> 1111011000000001
ddinv089 invert 0001000011111011 -> 1110111100000100
ddinv090 invert 0010000101111101 -> 1101111010000010
ddinv091 invert 0100000110111110 -> 1011111001000001
ddinv092 invert 1000000111011101 -> 111111000100010
ddinv093 invert 0100000111101011 -> 1011111000010100
ddinv094 invert 0010000111110111 -> 1101111000001000
ddinv095 invert 0001000111101011 -> 1110111000010100
ddinv096 invert 0000100111011101 -> 1111011000100010
ddinv097 invert 0000010110111110 -> 1111101001000001
ddinv098 invert 0000001101111101 -> 1111110010000010
ddinv099 invert 0000010011111011 -> 1111101100000100
-- non-0/1 should not be accepted, nor should signs
ddinv220 invert 111111112 -> NaN Invalid_operation
ddinv221 invert 333333333 -> NaN Invalid_operation
ddinv222 invert 555555555 -> NaN Invalid_operation
ddinv223 invert 777777777 -> NaN Invalid_operation
ddinv224 invert 999999999 -> NaN Invalid_operation
ddinv225 invert 222222222 -> NaN Invalid_operation
ddinv226 invert 444444444 -> NaN Invalid_operation
ddinv227 invert 666666666 -> NaN Invalid_operation
ddinv228 invert 888888888 -> NaN Invalid_operation
ddinv229 invert 999999999 -> NaN Invalid_operation
ddinv230 invert 999999999 -> NaN Invalid_operation
ddinv231 invert 999999999 -> NaN Invalid_operation
ddinv232 invert 999999999 -> NaN Invalid_operation
-- a few randoms
ddinv240 invert 567468689 -> NaN Invalid_operation
ddinv241 invert 567367689 -> NaN Invalid_operation
ddinv242 invert -631917772 -> NaN Invalid_operation
ddinv243 invert -756253257 -> NaN Invalid_operation
ddinv244 invert 835590149 -> NaN Invalid_operation
-- test MSD
ddinv250 invert 2000000000000000 -> NaN Invalid_operation
ddinv251 invert 3000000000000000 -> NaN Invalid_operation
ddinv252 invert 4000000000000000 -> NaN Invalid_operation
ddinv253 invert 5000000000000000 -> NaN Invalid_operation
ddinv254 invert 6000000000000000 -> NaN Invalid_operation
ddinv255 invert 7000000000000000 -> NaN Invalid_operation
ddinv256 invert 8000000000000000 -> NaN Invalid_operation
ddinv257 invert 9000000000000000 -> NaN Invalid_operation
-- test MSD-1
ddinv270 invert 0200001000000000 -> NaN Invalid_operation
ddinv271 invert 0300000100000000 -> NaN Invalid_operation
ddinv272 invert 0400000010000000 -> NaN Invalid_operation
ddinv273 invert 0500000001000000 -> NaN Invalid_operation
ddinv274 invert 1600000000100000 -> NaN Invalid_operation
ddinv275 invert 1700000000010000 -> NaN Invalid_operation
ddinv276 invert 1800000000001000 -> NaN Invalid_operation
ddinv277 invert 1900000000000100 -> NaN Invalid_operation
-- test LSD
ddinv280 invert 0010000000000002 -> NaN Invalid_operation
ddinv281 invert 0001000000000003 -> NaN Invalid_operation
ddinv282 invert 0000100000000004 -> NaN Invalid_operation
ddinv283 invert 0000010000000005 -> NaN Invalid_operation
ddinv284 invert 1000001000000006 -> NaN Invalid_operation
ddinv285 invert 1000000100000007 -> NaN Invalid_operation
ddinv286 invert 1000000010000008 -> NaN Invalid_operation
ddinv287 invert 1000000001000009 -> NaN Invalid_operation
-- test Middie
ddinv288 invert 0010000020000000 -> NaN Invalid_operation
ddinv289 invert 0001000030000001 -> NaN Invalid_operation
ddinv290 invert 0000100040000010 -> NaN Invalid_operation
ddinv291 invert 0000010050000100 -> NaN Invalid_operation
ddinv292 invert 1000001060001000 -> NaN Invalid_operation
ddinv293 invert 1000000170010000 -> NaN Invalid_operation
ddinv294 invert 1000000080100000 -> NaN Invalid_operation
ddinv295 invert 1000000091000000 -> NaN Invalid_operation
-- sign
ddinv296 invert -1000000001000000 -> NaN Invalid_operation
ddinv299 invert 1000000001000000 -> 111111110111111
-- Nmax, Nmin, Ntiny-like
ddinv341 invert 9.99999999E+299 -> NaN Invalid_operation
ddinv342 invert 1E-299 -> NaN Invalid_operation
ddinv343 invert 1.00000000E-299 -> NaN Invalid_operation
ddinv344 invert 1E-207 -> NaN Invalid_operation
ddinv345 invert -1E-207 -> NaN Invalid_operation
ddinv346 invert -1.00000000E-299 -> NaN Invalid_operation
ddinv347 invert -1E-299 -> NaN Invalid_operation
ddinv348 invert -9.99999999E+299 -> NaN Invalid_operation
-- A few other non-integers
ddinv361 invert 1.0 -> NaN Invalid_operation
ddinv362 invert 1E+1 -> NaN Invalid_operation
ddinv363 invert 0.0 -> NaN Invalid_operation
ddinv364 invert 0E+1 -> NaN Invalid_operation
ddinv365 invert 9.9 -> NaN Invalid_operation
ddinv366 invert 9E+1 -> NaN Invalid_operation
-- All Specials are in error
ddinv788 invert -Inf -> NaN Invalid_operation
ddinv794 invert Inf -> NaN Invalid_operation
ddinv821 invert NaN -> NaN Invalid_operation
ddinv841 invert sNaN -> NaN Invalid_operation
-- propagating NaNs
ddinv861 invert NaN1 -> NaN Invalid_operation
ddinv862 invert +NaN2 -> NaN Invalid_operation
ddinv863 invert NaN3 -> NaN Invalid_operation
ddinv864 invert NaN4 -> NaN Invalid_operation
ddinv865 invert NaN5 -> NaN Invalid_operation
ddinv871 invert sNaN11 -> NaN Invalid_operation
ddinv872 invert sNaN12 -> NaN Invalid_operation
ddinv873 invert sNaN13 -> NaN Invalid_operation
ddinv874 invert sNaN14 -> NaN Invalid_operation
ddinv875 invert sNaN15 -> NaN Invalid_operation
ddinv876 invert NaN16 -> NaN Invalid_operation
ddinv881 invert +NaN25 -> NaN Invalid_operation
ddinv882 invert -NaN26 -> NaN Invalid_operation
ddinv883 invert -sNaN27 -> NaN Invalid_operation

View file

@ -0,0 +1,159 @@
------------------------------------------------------------------------
-- ddLogB.decTest -- integral 754r adjusted exponent, for decDoubles --
-- Copyright (c) IBM Corporation, 2005, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- basics
ddlogb000 logb 0 -> -Infinity Division_by_zero
ddlogb001 logb 1E-398 -> -398
ddlogb002 logb 1E-383 -> -383
ddlogb003 logb 0.001 -> -3
ddlogb004 logb 0.03 -> -2
ddlogb005 logb 1 -> 0
ddlogb006 logb 2 -> 0
ddlogb007 logb 2.5 -> 0
ddlogb008 logb 2.500 -> 0
ddlogb009 logb 10 -> 1
ddlogb010 logb 70 -> 1
ddlogb011 logb 100 -> 2
ddlogb012 logb 333 -> 2
ddlogb013 logb 9E+384 -> 384
ddlogb014 logb +Infinity -> Infinity
-- negatives appear to be treated as positives
ddlogb021 logb -0 -> -Infinity Division_by_zero
ddlogb022 logb -1E-398 -> -398
ddlogb023 logb -9E-383 -> -383
ddlogb024 logb -0.001 -> -3
ddlogb025 logb -1 -> 0
ddlogb026 logb -2 -> 0
ddlogb027 logb -10 -> 1
ddlogb028 logb -70 -> 1
ddlogb029 logb -100 -> 2
ddlogb030 logb -9E+384 -> 384
ddlogb031 logb -Infinity -> Infinity
-- zeros
ddlogb111 logb 0 -> -Infinity Division_by_zero
ddlogb112 logb -0 -> -Infinity Division_by_zero
ddlogb113 logb 0E+4 -> -Infinity Division_by_zero
ddlogb114 logb -0E+4 -> -Infinity Division_by_zero
ddlogb115 logb 0.0000 -> -Infinity Division_by_zero
ddlogb116 logb -0.0000 -> -Infinity Division_by_zero
ddlogb117 logb 0E-141 -> -Infinity Division_by_zero
ddlogb118 logb -0E-141 -> -Infinity Division_by_zero
-- full coefficients, alternating bits
ddlogb121 logb 268268268 -> 8
ddlogb122 logb -268268268 -> 8
ddlogb123 logb 134134134 -> 8
ddlogb124 logb -134134134 -> 8
-- Nmax, Nmin, Ntiny
ddlogb131 logb 9.999999999999999E+384 -> 384
ddlogb132 logb 1E-383 -> -383
ddlogb133 logb 1.000000000000000E-383 -> -383
ddlogb134 logb 1E-398 -> -398
ddlogb135 logb -1E-398 -> -398
ddlogb136 logb -1.000000000000000E-383 -> -383
ddlogb137 logb -1E-383 -> -383
ddlogb138 logb -9.999999999999999E+384 -> 384
-- ones
ddlogb0061 logb 1 -> 0
ddlogb0062 logb 1.0 -> 0
ddlogb0063 logb 1.000000000000000 -> 0
-- notable cases -- exact powers of 10
ddlogb1100 logb 1 -> 0
ddlogb1101 logb 10 -> 1
ddlogb1102 logb 100 -> 2
ddlogb1103 logb 1000 -> 3
ddlogb1104 logb 10000 -> 4
ddlogb1105 logb 100000 -> 5
ddlogb1106 logb 1000000 -> 6
ddlogb1107 logb 10000000 -> 7
ddlogb1108 logb 100000000 -> 8
ddlogb1109 logb 1000000000 -> 9
ddlogb1110 logb 10000000000 -> 10
ddlogb1111 logb 100000000000 -> 11
ddlogb1112 logb 1000000000000 -> 12
ddlogb1113 logb 0.00000000001 -> -11
ddlogb1114 logb 0.0000000001 -> -10
ddlogb1115 logb 0.000000001 -> -9
ddlogb1116 logb 0.00000001 -> -8
ddlogb1117 logb 0.0000001 -> -7
ddlogb1118 logb 0.000001 -> -6
ddlogb1119 logb 0.00001 -> -5
ddlogb1120 logb 0.0001 -> -4
ddlogb1121 logb 0.001 -> -3
ddlogb1122 logb 0.01 -> -2
ddlogb1123 logb 0.1 -> -1
ddlogb1124 logb 1E-99 -> -99
ddlogb1125 logb 1E-100 -> -100
ddlogb1127 logb 1E-299 -> -299
ddlogb1126 logb 1E-383 -> -383
-- suggestions from Ilan Nehama
ddlogb1400 logb 10E-3 -> -2
ddlogb1401 logb 10E-2 -> -1
ddlogb1402 logb 100E-2 -> 0
ddlogb1403 logb 1000E-2 -> 1
ddlogb1404 logb 10000E-2 -> 2
ddlogb1405 logb 10E-1 -> 0
ddlogb1406 logb 100E-1 -> 1
ddlogb1407 logb 1000E-1 -> 2
ddlogb1408 logb 10000E-1 -> 3
ddlogb1409 logb 10E0 -> 1
ddlogb1410 logb 100E0 -> 2
ddlogb1411 logb 1000E0 -> 3
ddlogb1412 logb 10000E0 -> 4
ddlogb1413 logb 10E1 -> 2
ddlogb1414 logb 100E1 -> 3
ddlogb1415 logb 1000E1 -> 4
ddlogb1416 logb 10000E1 -> 5
ddlogb1417 logb 10E2 -> 3
ddlogb1418 logb 100E2 -> 4
ddlogb1419 logb 1000E2 -> 5
ddlogb1420 logb 10000E2 -> 6
-- special values
ddlogb820 logb Infinity -> Infinity
ddlogb821 logb 0 -> -Infinity Division_by_zero
ddlogb822 logb NaN -> NaN
ddlogb823 logb sNaN -> NaN Invalid_operation
-- propagating NaNs
ddlogb824 logb sNaN123 -> NaN123 Invalid_operation
ddlogb825 logb -sNaN321 -> -NaN321 Invalid_operation
ddlogb826 logb NaN456 -> NaN456
ddlogb827 logb -NaN654 -> -NaN654
ddlogb828 logb NaN1 -> NaN1
-- Null test
ddlogb900 logb # -> NaN Invalid_operation

View file

@ -0,0 +1,322 @@
------------------------------------------------------------------------
-- ddMax.decTest -- decDouble maxnum --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
ddmax001 max -2 -2 -> -2
ddmax002 max -2 -1 -> -1
ddmax003 max -2 0 -> 0
ddmax004 max -2 1 -> 1
ddmax005 max -2 2 -> 2
ddmax006 max -1 -2 -> -1
ddmax007 max -1 -1 -> -1
ddmax008 max -1 0 -> 0
ddmax009 max -1 1 -> 1
ddmax010 max -1 2 -> 2
ddmax011 max 0 -2 -> 0
ddmax012 max 0 -1 -> 0
ddmax013 max 0 0 -> 0
ddmax014 max 0 1 -> 1
ddmax015 max 0 2 -> 2
ddmax016 max 1 -2 -> 1
ddmax017 max 1 -1 -> 1
ddmax018 max 1 0 -> 1
ddmax019 max 1 1 -> 1
ddmax020 max 1 2 -> 2
ddmax021 max 2 -2 -> 2
ddmax022 max 2 -1 -> 2
ddmax023 max 2 0 -> 2
ddmax025 max 2 1 -> 2
ddmax026 max 2 2 -> 2
-- extended zeros
ddmax030 max 0 0 -> 0
ddmax031 max 0 -0 -> 0
ddmax032 max 0 -0.0 -> 0
ddmax033 max 0 0.0 -> 0
ddmax034 max -0 0 -> 0 -- note: -0 = 0, but 0 chosen
ddmax035 max -0 -0 -> -0
ddmax036 max -0 -0.0 -> -0.0
ddmax037 max -0 0.0 -> 0.0
ddmax038 max 0.0 0 -> 0
ddmax039 max 0.0 -0 -> 0.0
ddmax040 max 0.0 -0.0 -> 0.0
ddmax041 max 0.0 0.0 -> 0.0
ddmax042 max -0.0 0 -> 0
ddmax043 max -0.0 -0 -> -0.0
ddmax044 max -0.0 -0.0 -> -0.0
ddmax045 max -0.0 0.0 -> 0.0
ddmax050 max -0E1 0E1 -> 0E+1
ddmax051 max -0E2 0E2 -> 0E+2
ddmax052 max -0E2 0E1 -> 0E+1
ddmax053 max -0E1 0E2 -> 0E+2
ddmax054 max 0E1 -0E1 -> 0E+1
ddmax055 max 0E2 -0E2 -> 0E+2
ddmax056 max 0E2 -0E1 -> 0E+2
ddmax057 max 0E1 -0E2 -> 0E+1
ddmax058 max 0E1 0E1 -> 0E+1
ddmax059 max 0E2 0E2 -> 0E+2
ddmax060 max 0E2 0E1 -> 0E+2
ddmax061 max 0E1 0E2 -> 0E+2
ddmax062 max -0E1 -0E1 -> -0E+1
ddmax063 max -0E2 -0E2 -> -0E+2
ddmax064 max -0E2 -0E1 -> -0E+1
ddmax065 max -0E1 -0E2 -> -0E+1
-- Specials
ddmax090 max Inf -Inf -> Infinity
ddmax091 max Inf -1000 -> Infinity
ddmax092 max Inf -1 -> Infinity
ddmax093 max Inf -0 -> Infinity
ddmax094 max Inf 0 -> Infinity
ddmax095 max Inf 1 -> Infinity
ddmax096 max Inf 1000 -> Infinity
ddmax097 max Inf Inf -> Infinity
ddmax098 max -1000 Inf -> Infinity
ddmax099 max -Inf Inf -> Infinity
ddmax100 max -1 Inf -> Infinity
ddmax101 max -0 Inf -> Infinity
ddmax102 max 0 Inf -> Infinity
ddmax103 max 1 Inf -> Infinity
ddmax104 max 1000 Inf -> Infinity
ddmax105 max Inf Inf -> Infinity
ddmax120 max -Inf -Inf -> -Infinity
ddmax121 max -Inf -1000 -> -1000
ddmax122 max -Inf -1 -> -1
ddmax123 max -Inf -0 -> -0
ddmax124 max -Inf 0 -> 0
ddmax125 max -Inf 1 -> 1
ddmax126 max -Inf 1000 -> 1000
ddmax127 max -Inf Inf -> Infinity
ddmax128 max -Inf -Inf -> -Infinity
ddmax129 max -1000 -Inf -> -1000
ddmax130 max -1 -Inf -> -1
ddmax131 max -0 -Inf -> -0
ddmax132 max 0 -Inf -> 0
ddmax133 max 1 -Inf -> 1
ddmax134 max 1000 -Inf -> 1000
ddmax135 max Inf -Inf -> Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
ddmax141 max NaN -Inf -> -Infinity
ddmax142 max NaN -1000 -> -1000
ddmax143 max NaN -1 -> -1
ddmax144 max NaN -0 -> -0
ddmax145 max NaN 0 -> 0
ddmax146 max NaN 1 -> 1
ddmax147 max NaN 1000 -> 1000
ddmax148 max NaN Inf -> Infinity
ddmax149 max NaN NaN -> NaN
ddmax150 max -Inf NaN -> -Infinity
ddmax151 max -1000 NaN -> -1000
ddmax152 max -1 NaN -> -1
ddmax153 max -0 NaN -> -0
ddmax154 max 0 NaN -> 0
ddmax155 max 1 NaN -> 1
ddmax156 max 1000 NaN -> 1000
ddmax157 max Inf NaN -> Infinity
ddmax161 max sNaN -Inf -> NaN Invalid_operation
ddmax162 max sNaN -1000 -> NaN Invalid_operation
ddmax163 max sNaN -1 -> NaN Invalid_operation
ddmax164 max sNaN -0 -> NaN Invalid_operation
ddmax165 max sNaN 0 -> NaN Invalid_operation
ddmax166 max sNaN 1 -> NaN Invalid_operation
ddmax167 max sNaN 1000 -> NaN Invalid_operation
ddmax168 max sNaN NaN -> NaN Invalid_operation
ddmax169 max sNaN sNaN -> NaN Invalid_operation
ddmax170 max NaN sNaN -> NaN Invalid_operation
ddmax171 max -Inf sNaN -> NaN Invalid_operation
ddmax172 max -1000 sNaN -> NaN Invalid_operation
ddmax173 max -1 sNaN -> NaN Invalid_operation
ddmax174 max -0 sNaN -> NaN Invalid_operation
ddmax175 max 0 sNaN -> NaN Invalid_operation
ddmax176 max 1 sNaN -> NaN Invalid_operation
ddmax177 max 1000 sNaN -> NaN Invalid_operation
ddmax178 max Inf sNaN -> NaN Invalid_operation
ddmax179 max NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddmax181 max NaN9 -Inf -> -Infinity
ddmax182 max NaN8 9 -> 9
ddmax183 max -NaN7 Inf -> Infinity
ddmax184 max -NaN1 NaN11 -> -NaN1
ddmax185 max NaN2 NaN12 -> NaN2
ddmax186 max -NaN13 -NaN7 -> -NaN13
ddmax187 max NaN14 -NaN5 -> NaN14
ddmax188 max -Inf NaN4 -> -Infinity
ddmax189 max -9 -NaN3 -> -9
ddmax190 max Inf NaN2 -> Infinity
ddmax191 max sNaN99 -Inf -> NaN99 Invalid_operation
ddmax192 max sNaN98 -1 -> NaN98 Invalid_operation
ddmax193 max -sNaN97 NaN -> -NaN97 Invalid_operation
ddmax194 max sNaN96 sNaN94 -> NaN96 Invalid_operation
ddmax195 max NaN95 sNaN93 -> NaN93 Invalid_operation
ddmax196 max -Inf sNaN92 -> NaN92 Invalid_operation
ddmax197 max 0 sNaN91 -> NaN91 Invalid_operation
ddmax198 max Inf -sNaN90 -> -NaN90 Invalid_operation
ddmax199 max NaN sNaN89 -> NaN89 Invalid_operation
-- old rounding checks
ddmax221 max 12345678000 1 -> 12345678000
ddmax222 max 1 12345678000 -> 12345678000
ddmax223 max 1234567800 1 -> 1234567800
ddmax224 max 1 1234567800 -> 1234567800
ddmax225 max 1234567890 1 -> 1234567890
ddmax226 max 1 1234567890 -> 1234567890
ddmax227 max 1234567891 1 -> 1234567891
ddmax228 max 1 1234567891 -> 1234567891
ddmax229 max 12345678901 1 -> 12345678901
ddmax230 max 1 12345678901 -> 12345678901
ddmax231 max 1234567896 1 -> 1234567896
ddmax232 max 1 1234567896 -> 1234567896
ddmax233 max -1234567891 1 -> 1
ddmax234 max 1 -1234567891 -> 1
ddmax235 max -12345678901 1 -> 1
ddmax236 max 1 -12345678901 -> 1
ddmax237 max -1234567896 1 -> 1
ddmax238 max 1 -1234567896 -> 1
-- from examples
ddmax280 max '3' '2' -> '3'
ddmax281 max '-10' '3' -> '3'
ddmax282 max '1.0' '1' -> '1'
ddmax283 max '1' '1.0' -> '1'
ddmax284 max '7' 'NaN' -> '7'
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
ddmax401 max Inf 1.1 -> Infinity
ddmax402 max 1.1 1 -> 1.1
ddmax403 max 1 1.0 -> 1
ddmax404 max 1.0 0.1 -> 1.0
ddmax405 max 0.1 0.10 -> 0.1
ddmax406 max 0.10 0.100 -> 0.10
ddmax407 max 0.10 0 -> 0.10
ddmax408 max 0 0.0 -> 0
ddmax409 max 0.0 -0 -> 0.0
ddmax410 max 0.0 -0.0 -> 0.0
ddmax411 max 0.00 -0.0 -> 0.00
ddmax412 max 0.0 -0.00 -> 0.0
ddmax413 max 0 -0.0 -> 0
ddmax414 max 0 -0 -> 0
ddmax415 max -0.0 -0 -> -0.0
ddmax416 max -0 -0.100 -> -0
ddmax417 max -0.100 -0.10 -> -0.100
ddmax418 max -0.10 -0.1 -> -0.10
ddmax419 max -0.1 -1.0 -> -0.1
ddmax420 max -1.0 -1 -> -1.0
ddmax421 max -1 -1.1 -> -1
ddmax423 max -1.1 -Inf -> -1.1
-- same with operands reversed
ddmax431 max 1.1 Inf -> Infinity
ddmax432 max 1 1.1 -> 1.1
ddmax433 max 1.0 1 -> 1
ddmax434 max 0.1 1.0 -> 1.0
ddmax435 max 0.10 0.1 -> 0.1
ddmax436 max 0.100 0.10 -> 0.10
ddmax437 max 0 0.10 -> 0.10
ddmax438 max 0.0 0 -> 0
ddmax439 max -0 0.0 -> 0.0
ddmax440 max -0.0 0.0 -> 0.0
ddmax441 max -0.0 0.00 -> 0.00
ddmax442 max -0.00 0.0 -> 0.0
ddmax443 max -0.0 0 -> 0
ddmax444 max -0 0 -> 0
ddmax445 max -0 -0.0 -> -0.0
ddmax446 max -0.100 -0 -> -0
ddmax447 max -0.10 -0.100 -> -0.100
ddmax448 max -0.1 -0.10 -> -0.10
ddmax449 max -1.0 -0.1 -> -0.1
ddmax450 max -1 -1.0 -> -1.0
ddmax451 max -1.1 -1 -> -1
ddmax453 max -Inf -1.1 -> -1.1
-- largies
ddmax460 max 1000 1E+3 -> 1E+3
ddmax461 max 1E+3 1000 -> 1E+3
ddmax462 max 1000 -1E+3 -> 1000
ddmax463 max 1E+3 -1000 -> 1E+3
ddmax464 max -1000 1E+3 -> 1E+3
ddmax465 max -1E+3 1000 -> 1000
ddmax466 max -1000 -1E+3 -> -1000
ddmax467 max -1E+3 -1000 -> -1000
-- misalignment traps for little-endian
ddmax471 max 1.0 0.1 -> 1.0
ddmax472 max 0.1 1.0 -> 1.0
ddmax473 max 10.0 0.1 -> 10.0
ddmax474 max 0.1 10.0 -> 10.0
ddmax475 max 100 1.0 -> 100
ddmax476 max 1.0 100 -> 100
ddmax477 max 1000 10.0 -> 1000
ddmax478 max 10.0 1000 -> 1000
ddmax479 max 10000 100.0 -> 10000
ddmax480 max 100.0 10000 -> 10000
ddmax481 max 100000 1000.0 -> 100000
ddmax482 max 1000.0 100000 -> 100000
ddmax483 max 1000000 10000.0 -> 1000000
ddmax484 max 10000.0 1000000 -> 1000000
-- subnormals
ddmax510 max 1.00E-383 0 -> 1.00E-383
ddmax511 max 0.1E-383 0 -> 1E-384 Subnormal
ddmax512 max 0.10E-383 0 -> 1.0E-384 Subnormal
ddmax513 max 0.100E-383 0 -> 1.00E-384 Subnormal
ddmax514 max 0.01E-383 0 -> 1E-385 Subnormal
ddmax515 max 0.999E-383 0 -> 9.99E-384 Subnormal
ddmax516 max 0.099E-383 0 -> 9.9E-385 Subnormal
ddmax517 max 0.009E-383 0 -> 9E-386 Subnormal
ddmax518 max 0.001E-383 0 -> 1E-386 Subnormal
ddmax519 max 0.0009E-383 0 -> 9E-387 Subnormal
ddmax520 max 0.0001E-383 0 -> 1E-387 Subnormal
ddmax530 max -1.00E-383 0 -> 0
ddmax531 max -0.1E-383 0 -> 0
ddmax532 max -0.10E-383 0 -> 0
ddmax533 max -0.100E-383 0 -> 0
ddmax534 max -0.01E-383 0 -> 0
ddmax535 max -0.999E-383 0 -> 0
ddmax536 max -0.099E-383 0 -> 0
ddmax537 max -0.009E-383 0 -> 0
ddmax538 max -0.001E-383 0 -> 0
ddmax539 max -0.0009E-383 0 -> 0
ddmax540 max -0.0001E-383 0 -> 0
-- Null tests
ddmax900 max 10 # -> NaN Invalid_operation
ddmax901 max # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,304 @@
------------------------------------------------------------------------
-- ddMaxMag.decTest -- decDouble maxnummag --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
ddmxg001 maxmag -2 -2 -> -2
ddmxg002 maxmag -2 -1 -> -2
ddmxg003 maxmag -2 0 -> -2
ddmxg004 maxmag -2 1 -> -2
ddmxg005 maxmag -2 2 -> 2
ddmxg006 maxmag -1 -2 -> -2
ddmxg007 maxmag -1 -1 -> -1
ddmxg008 maxmag -1 0 -> -1
ddmxg009 maxmag -1 1 -> 1
ddmxg010 maxmag -1 2 -> 2
ddmxg011 maxmag 0 -2 -> -2
ddmxg012 maxmag 0 -1 -> -1
ddmxg013 maxmag 0 0 -> 0
ddmxg014 maxmag 0 1 -> 1
ddmxg015 maxmag 0 2 -> 2
ddmxg016 maxmag 1 -2 -> -2
ddmxg017 maxmag 1 -1 -> 1
ddmxg018 maxmag 1 0 -> 1
ddmxg019 maxmag 1 1 -> 1
ddmxg020 maxmag 1 2 -> 2
ddmxg021 maxmag 2 -2 -> 2
ddmxg022 maxmag 2 -1 -> 2
ddmxg023 maxmag 2 0 -> 2
ddmxg025 maxmag 2 1 -> 2
ddmxg026 maxmag 2 2 -> 2
-- extended zeros
ddmxg030 maxmag 0 0 -> 0
ddmxg031 maxmag 0 -0 -> 0
ddmxg032 maxmag 0 -0.0 -> 0
ddmxg033 maxmag 0 0.0 -> 0
ddmxg034 maxmag -0 0 -> 0 -- note: -0 = 0, but 0 chosen
ddmxg035 maxmag -0 -0 -> -0
ddmxg036 maxmag -0 -0.0 -> -0.0
ddmxg037 maxmag -0 0.0 -> 0.0
ddmxg038 maxmag 0.0 0 -> 0
ddmxg039 maxmag 0.0 -0 -> 0.0
ddmxg040 maxmag 0.0 -0.0 -> 0.0
ddmxg041 maxmag 0.0 0.0 -> 0.0
ddmxg042 maxmag -0.0 0 -> 0
ddmxg043 maxmag -0.0 -0 -> -0.0
ddmxg044 maxmag -0.0 -0.0 -> -0.0
ddmxg045 maxmag -0.0 0.0 -> 0.0
ddmxg050 maxmag -0E1 0E1 -> 0E+1
ddmxg051 maxmag -0E2 0E2 -> 0E+2
ddmxg052 maxmag -0E2 0E1 -> 0E+1
ddmxg053 maxmag -0E1 0E2 -> 0E+2
ddmxg054 maxmag 0E1 -0E1 -> 0E+1
ddmxg055 maxmag 0E2 -0E2 -> 0E+2
ddmxg056 maxmag 0E2 -0E1 -> 0E+2
ddmxg057 maxmag 0E1 -0E2 -> 0E+1
ddmxg058 maxmag 0E1 0E1 -> 0E+1
ddmxg059 maxmag 0E2 0E2 -> 0E+2
ddmxg060 maxmag 0E2 0E1 -> 0E+2
ddmxg061 maxmag 0E1 0E2 -> 0E+2
ddmxg062 maxmag -0E1 -0E1 -> -0E+1
ddmxg063 maxmag -0E2 -0E2 -> -0E+2
ddmxg064 maxmag -0E2 -0E1 -> -0E+1
ddmxg065 maxmag -0E1 -0E2 -> -0E+1
-- Specials
ddmxg090 maxmag Inf -Inf -> Infinity
ddmxg091 maxmag Inf -1000 -> Infinity
ddmxg092 maxmag Inf -1 -> Infinity
ddmxg093 maxmag Inf -0 -> Infinity
ddmxg094 maxmag Inf 0 -> Infinity
ddmxg095 maxmag Inf 1 -> Infinity
ddmxg096 maxmag Inf 1000 -> Infinity
ddmxg097 maxmag Inf Inf -> Infinity
ddmxg098 maxmag -1000 Inf -> Infinity
ddmxg099 maxmag -Inf Inf -> Infinity
ddmxg100 maxmag -1 Inf -> Infinity
ddmxg101 maxmag -0 Inf -> Infinity
ddmxg102 maxmag 0 Inf -> Infinity
ddmxg103 maxmag 1 Inf -> Infinity
ddmxg104 maxmag 1000 Inf -> Infinity
ddmxg105 maxmag Inf Inf -> Infinity
ddmxg120 maxmag -Inf -Inf -> -Infinity
ddmxg121 maxmag -Inf -1000 -> -Infinity
ddmxg122 maxmag -Inf -1 -> -Infinity
ddmxg123 maxmag -Inf -0 -> -Infinity
ddmxg124 maxmag -Inf 0 -> -Infinity
ddmxg125 maxmag -Inf 1 -> -Infinity
ddmxg126 maxmag -Inf 1000 -> -Infinity
ddmxg127 maxmag -Inf Inf -> Infinity
ddmxg128 maxmag -Inf -Inf -> -Infinity
ddmxg129 maxmag -1000 -Inf -> -Infinity
ddmxg130 maxmag -1 -Inf -> -Infinity
ddmxg131 maxmag -0 -Inf -> -Infinity
ddmxg132 maxmag 0 -Inf -> -Infinity
ddmxg133 maxmag 1 -Inf -> -Infinity
ddmxg134 maxmag 1000 -Inf -> -Infinity
ddmxg135 maxmag Inf -Inf -> Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
ddmxg141 maxmag NaN -Inf -> -Infinity
ddmxg142 maxmag NaN -1000 -> -1000
ddmxg143 maxmag NaN -1 -> -1
ddmxg144 maxmag NaN -0 -> -0
ddmxg145 maxmag NaN 0 -> 0
ddmxg146 maxmag NaN 1 -> 1
ddmxg147 maxmag NaN 1000 -> 1000
ddmxg148 maxmag NaN Inf -> Infinity
ddmxg149 maxmag NaN NaN -> NaN
ddmxg150 maxmag -Inf NaN -> -Infinity
ddmxg151 maxmag -1000 NaN -> -1000
ddmxg152 maxmag -1 NaN -> -1
ddmxg153 maxmag -0 NaN -> -0
ddmxg154 maxmag 0 NaN -> 0
ddmxg155 maxmag 1 NaN -> 1
ddmxg156 maxmag 1000 NaN -> 1000
ddmxg157 maxmag Inf NaN -> Infinity
ddmxg161 maxmag sNaN -Inf -> NaN Invalid_operation
ddmxg162 maxmag sNaN -1000 -> NaN Invalid_operation
ddmxg163 maxmag sNaN -1 -> NaN Invalid_operation
ddmxg164 maxmag sNaN -0 -> NaN Invalid_operation
ddmxg165 maxmag sNaN 0 -> NaN Invalid_operation
ddmxg166 maxmag sNaN 1 -> NaN Invalid_operation
ddmxg167 maxmag sNaN 1000 -> NaN Invalid_operation
ddmxg168 maxmag sNaN NaN -> NaN Invalid_operation
ddmxg169 maxmag sNaN sNaN -> NaN Invalid_operation
ddmxg170 maxmag NaN sNaN -> NaN Invalid_operation
ddmxg171 maxmag -Inf sNaN -> NaN Invalid_operation
ddmxg172 maxmag -1000 sNaN -> NaN Invalid_operation
ddmxg173 maxmag -1 sNaN -> NaN Invalid_operation
ddmxg174 maxmag -0 sNaN -> NaN Invalid_operation
ddmxg175 maxmag 0 sNaN -> NaN Invalid_operation
ddmxg176 maxmag 1 sNaN -> NaN Invalid_operation
ddmxg177 maxmag 1000 sNaN -> NaN Invalid_operation
ddmxg178 maxmag Inf sNaN -> NaN Invalid_operation
ddmxg179 maxmag NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddmxg181 maxmag NaN9 -Inf -> -Infinity
ddmxg182 maxmag NaN8 9 -> 9
ddmxg183 maxmag -NaN7 Inf -> Infinity
ddmxg184 maxmag -NaN1 NaN11 -> -NaN1
ddmxg185 maxmag NaN2 NaN12 -> NaN2
ddmxg186 maxmag -NaN13 -NaN7 -> -NaN13
ddmxg187 maxmag NaN14 -NaN5 -> NaN14
ddmxg188 maxmag -Inf NaN4 -> -Infinity
ddmxg189 maxmag -9 -NaN3 -> -9
ddmxg190 maxmag Inf NaN2 -> Infinity
ddmxg191 maxmag sNaN99 -Inf -> NaN99 Invalid_operation
ddmxg192 maxmag sNaN98 -1 -> NaN98 Invalid_operation
ddmxg193 maxmag -sNaN97 NaN -> -NaN97 Invalid_operation
ddmxg194 maxmag sNaN96 sNaN94 -> NaN96 Invalid_operation
ddmxg195 maxmag NaN95 sNaN93 -> NaN93 Invalid_operation
ddmxg196 maxmag -Inf sNaN92 -> NaN92 Invalid_operation
ddmxg197 maxmag 0 sNaN91 -> NaN91 Invalid_operation
ddmxg198 maxmag Inf -sNaN90 -> -NaN90 Invalid_operation
ddmxg199 maxmag NaN sNaN89 -> NaN89 Invalid_operation
-- old rounding checks
ddmxg221 maxmag 12345678000 1 -> 12345678000
ddmxg222 maxmag 1 12345678000 -> 12345678000
ddmxg223 maxmag 1234567800 1 -> 1234567800
ddmxg224 maxmag 1 1234567800 -> 1234567800
ddmxg225 maxmag 1234567890 1 -> 1234567890
ddmxg226 maxmag 1 1234567890 -> 1234567890
ddmxg227 maxmag 1234567891 1 -> 1234567891
ddmxg228 maxmag 1 1234567891 -> 1234567891
ddmxg229 maxmag 12345678901 1 -> 12345678901
ddmxg230 maxmag 1 12345678901 -> 12345678901
ddmxg231 maxmag 1234567896 1 -> 1234567896
ddmxg232 maxmag 1 1234567896 -> 1234567896
ddmxg233 maxmag -1234567891 1 -> -1234567891
ddmxg234 maxmag 1 -1234567891 -> -1234567891
ddmxg235 maxmag -12345678901 1 -> -12345678901
ddmxg236 maxmag 1 -12345678901 -> -12345678901
ddmxg237 maxmag -1234567896 1 -> -1234567896
ddmxg238 maxmag 1 -1234567896 -> -1234567896
-- from examples
ddmxg280 maxmag '3' '2' -> '3'
ddmxg281 maxmag '-10' '3' -> '-10'
ddmxg282 maxmag '1.0' '1' -> '1'
ddmxg283 maxmag '1' '1.0' -> '1'
ddmxg284 maxmag '7' 'NaN' -> '7'
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
ddmxg401 maxmag Inf 1.1 -> Infinity
ddmxg402 maxmag 1.1 1 -> 1.1
ddmxg403 maxmag 1 1.0 -> 1
ddmxg404 maxmag 1.0 0.1 -> 1.0
ddmxg405 maxmag 0.1 0.10 -> 0.1
ddmxg406 maxmag 0.10 0.100 -> 0.10
ddmxg407 maxmag 0.10 0 -> 0.10
ddmxg408 maxmag 0 0.0 -> 0
ddmxg409 maxmag 0.0 -0 -> 0.0
ddmxg410 maxmag 0.0 -0.0 -> 0.0
ddmxg411 maxmag 0.00 -0.0 -> 0.00
ddmxg412 maxmag 0.0 -0.00 -> 0.0
ddmxg413 maxmag 0 -0.0 -> 0
ddmxg414 maxmag 0 -0 -> 0
ddmxg415 maxmag -0.0 -0 -> -0.0
ddmxg416 maxmag -0 -0.100 -> -0.100
ddmxg417 maxmag -0.100 -0.10 -> -0.100
ddmxg418 maxmag -0.10 -0.1 -> -0.10
ddmxg419 maxmag -0.1 -1.0 -> -1.0
ddmxg420 maxmag -1.0 -1 -> -1.0
ddmxg421 maxmag -1 -1.1 -> -1.1
ddmxg423 maxmag -1.1 -Inf -> -Infinity
-- same with operands reversed
ddmxg431 maxmag 1.1 Inf -> Infinity
ddmxg432 maxmag 1 1.1 -> 1.1
ddmxg433 maxmag 1.0 1 -> 1
ddmxg434 maxmag 0.1 1.0 -> 1.0
ddmxg435 maxmag 0.10 0.1 -> 0.1
ddmxg436 maxmag 0.100 0.10 -> 0.10
ddmxg437 maxmag 0 0.10 -> 0.10
ddmxg438 maxmag 0.0 0 -> 0
ddmxg439 maxmag -0 0.0 -> 0.0
ddmxg440 maxmag -0.0 0.0 -> 0.0
ddmxg441 maxmag -0.0 0.00 -> 0.00
ddmxg442 maxmag -0.00 0.0 -> 0.0
ddmxg443 maxmag -0.0 0 -> 0
ddmxg444 maxmag -0 0 -> 0
ddmxg445 maxmag -0 -0.0 -> -0.0
ddmxg446 maxmag -0.100 -0 -> -0.100
ddmxg447 maxmag -0.10 -0.100 -> -0.100
ddmxg448 maxmag -0.1 -0.10 -> -0.10
ddmxg449 maxmag -1.0 -0.1 -> -1.0
ddmxg450 maxmag -1 -1.0 -> -1.0
ddmxg451 maxmag -1.1 -1 -> -1.1
ddmxg453 maxmag -Inf -1.1 -> -Infinity
-- largies
ddmxg460 maxmag 1000 1E+3 -> 1E+3
ddmxg461 maxmag 1E+3 1000 -> 1E+3
ddmxg462 maxmag 1000 -1E+3 -> 1000
ddmxg463 maxmag 1E+3 -1000 -> 1E+3
ddmxg464 maxmag -1000 1E+3 -> 1E+3
ddmxg465 maxmag -1E+3 1000 -> 1000
ddmxg466 maxmag -1000 -1E+3 -> -1000
ddmxg467 maxmag -1E+3 -1000 -> -1000
-- subnormals
ddmxg510 maxmag 1.00E-383 0 -> 1.00E-383
ddmxg511 maxmag 0.1E-383 0 -> 1E-384 Subnormal
ddmxg512 maxmag 0.10E-383 0 -> 1.0E-384 Subnormal
ddmxg513 maxmag 0.100E-383 0 -> 1.00E-384 Subnormal
ddmxg514 maxmag 0.01E-383 0 -> 1E-385 Subnormal
ddmxg515 maxmag 0.999E-383 0 -> 9.99E-384 Subnormal
ddmxg516 maxmag 0.099E-383 0 -> 9.9E-385 Subnormal
ddmxg517 maxmag 0.009E-383 0 -> 9E-386 Subnormal
ddmxg518 maxmag 0.001E-383 0 -> 1E-386 Subnormal
ddmxg519 maxmag 0.0009E-383 0 -> 9E-387 Subnormal
ddmxg520 maxmag 0.0001E-383 0 -> 1E-387 Subnormal
ddmxg530 maxmag -1.00E-383 0 -> -1.00E-383
ddmxg531 maxmag -0.1E-383 0 -> -1E-384 Subnormal
ddmxg532 maxmag -0.10E-383 0 -> -1.0E-384 Subnormal
ddmxg533 maxmag -0.100E-383 0 -> -1.00E-384 Subnormal
ddmxg534 maxmag -0.01E-383 0 -> -1E-385 Subnormal
ddmxg535 maxmag -0.999E-383 0 -> -9.99E-384 Subnormal
ddmxg536 maxmag -0.099E-383 0 -> -9.9E-385 Subnormal
ddmxg537 maxmag -0.009E-383 0 -> -9E-386 Subnormal
ddmxg538 maxmag -0.001E-383 0 -> -1E-386 Subnormal
ddmxg539 maxmag -0.0009E-383 0 -> -9E-387 Subnormal
ddmxg540 maxmag -0.0001E-383 0 -> -1E-387 Subnormal
-- Null tests
ddmxg900 maxmag 10 # -> NaN Invalid_operation
ddmxg901 maxmag # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,309 @@
------------------------------------------------------------------------
-- ddMin.decTest -- decDouble minnum --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
ddmin001 min -2 -2 -> -2
ddmin002 min -2 -1 -> -2
ddmin003 min -2 0 -> -2
ddmin004 min -2 1 -> -2
ddmin005 min -2 2 -> -2
ddmin006 min -1 -2 -> -2
ddmin007 min -1 -1 -> -1
ddmin008 min -1 0 -> -1
ddmin009 min -1 1 -> -1
ddmin010 min -1 2 -> -1
ddmin011 min 0 -2 -> -2
ddmin012 min 0 -1 -> -1
ddmin013 min 0 0 -> 0
ddmin014 min 0 1 -> 0
ddmin015 min 0 2 -> 0
ddmin016 min 1 -2 -> -2
ddmin017 min 1 -1 -> -1
ddmin018 min 1 0 -> 0
ddmin019 min 1 1 -> 1
ddmin020 min 1 2 -> 1
ddmin021 min 2 -2 -> -2
ddmin022 min 2 -1 -> -1
ddmin023 min 2 0 -> 0
ddmin025 min 2 1 -> 1
ddmin026 min 2 2 -> 2
-- extended zeros
ddmin030 min 0 0 -> 0
ddmin031 min 0 -0 -> -0
ddmin032 min 0 -0.0 -> -0.0
ddmin033 min 0 0.0 -> 0.0
ddmin034 min -0 0 -> -0
ddmin035 min -0 -0 -> -0
ddmin036 min -0 -0.0 -> -0
ddmin037 min -0 0.0 -> -0
ddmin038 min 0.0 0 -> 0.0
ddmin039 min 0.0 -0 -> -0
ddmin040 min 0.0 -0.0 -> -0.0
ddmin041 min 0.0 0.0 -> 0.0
ddmin042 min -0.0 0 -> -0.0
ddmin043 min -0.0 -0 -> -0
ddmin044 min -0.0 -0.0 -> -0.0
ddmin045 min -0.0 0.0 -> -0.0
ddmin046 min 0E1 -0E1 -> -0E+1
ddmin047 min -0E1 0E2 -> -0E+1
ddmin048 min 0E2 0E1 -> 0E+1
ddmin049 min 0E1 0E2 -> 0E+1
ddmin050 min -0E3 -0E2 -> -0E+3
ddmin051 min -0E2 -0E3 -> -0E+3
-- Specials
ddmin090 min Inf -Inf -> -Infinity
ddmin091 min Inf -1000 -> -1000
ddmin092 min Inf -1 -> -1
ddmin093 min Inf -0 -> -0
ddmin094 min Inf 0 -> 0
ddmin095 min Inf 1 -> 1
ddmin096 min Inf 1000 -> 1000
ddmin097 min Inf Inf -> Infinity
ddmin098 min -1000 Inf -> -1000
ddmin099 min -Inf Inf -> -Infinity
ddmin100 min -1 Inf -> -1
ddmin101 min -0 Inf -> -0
ddmin102 min 0 Inf -> 0
ddmin103 min 1 Inf -> 1
ddmin104 min 1000 Inf -> 1000
ddmin105 min Inf Inf -> Infinity
ddmin120 min -Inf -Inf -> -Infinity
ddmin121 min -Inf -1000 -> -Infinity
ddmin122 min -Inf -1 -> -Infinity
ddmin123 min -Inf -0 -> -Infinity
ddmin124 min -Inf 0 -> -Infinity
ddmin125 min -Inf 1 -> -Infinity
ddmin126 min -Inf 1000 -> -Infinity
ddmin127 min -Inf Inf -> -Infinity
ddmin128 min -Inf -Inf -> -Infinity
ddmin129 min -1000 -Inf -> -Infinity
ddmin130 min -1 -Inf -> -Infinity
ddmin131 min -0 -Inf -> -Infinity
ddmin132 min 0 -Inf -> -Infinity
ddmin133 min 1 -Inf -> -Infinity
ddmin134 min 1000 -Inf -> -Infinity
ddmin135 min Inf -Inf -> -Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
ddmin141 min NaN -Inf -> -Infinity
ddmin142 min NaN -1000 -> -1000
ddmin143 min NaN -1 -> -1
ddmin144 min NaN -0 -> -0
ddmin145 min NaN 0 -> 0
ddmin146 min NaN 1 -> 1
ddmin147 min NaN 1000 -> 1000
ddmin148 min NaN Inf -> Infinity
ddmin149 min NaN NaN -> NaN
ddmin150 min -Inf NaN -> -Infinity
ddmin151 min -1000 NaN -> -1000
ddmin152 min -1 -NaN -> -1
ddmin153 min -0 NaN -> -0
ddmin154 min 0 -NaN -> 0
ddmin155 min 1 NaN -> 1
ddmin156 min 1000 NaN -> 1000
ddmin157 min Inf NaN -> Infinity
ddmin161 min sNaN -Inf -> NaN Invalid_operation
ddmin162 min sNaN -1000 -> NaN Invalid_operation
ddmin163 min sNaN -1 -> NaN Invalid_operation
ddmin164 min sNaN -0 -> NaN Invalid_operation
ddmin165 min -sNaN 0 -> -NaN Invalid_operation
ddmin166 min -sNaN 1 -> -NaN Invalid_operation
ddmin167 min sNaN 1000 -> NaN Invalid_operation
ddmin168 min sNaN NaN -> NaN Invalid_operation
ddmin169 min sNaN sNaN -> NaN Invalid_operation
ddmin170 min NaN sNaN -> NaN Invalid_operation
ddmin171 min -Inf sNaN -> NaN Invalid_operation
ddmin172 min -1000 sNaN -> NaN Invalid_operation
ddmin173 min -1 sNaN -> NaN Invalid_operation
ddmin174 min -0 sNaN -> NaN Invalid_operation
ddmin175 min 0 sNaN -> NaN Invalid_operation
ddmin176 min 1 sNaN -> NaN Invalid_operation
ddmin177 min 1000 sNaN -> NaN Invalid_operation
ddmin178 min Inf sNaN -> NaN Invalid_operation
ddmin179 min NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddmin181 min NaN9 -Inf -> -Infinity
ddmin182 min -NaN8 9990 -> 9990
ddmin183 min NaN71 Inf -> Infinity
ddmin184 min NaN1 NaN54 -> NaN1
ddmin185 min NaN22 -NaN53 -> NaN22
ddmin186 min -NaN3 NaN6 -> -NaN3
ddmin187 min -NaN44 NaN7 -> -NaN44
ddmin188 min -Inf NaN41 -> -Infinity
ddmin189 min -9999 -NaN33 -> -9999
ddmin190 min Inf NaN2 -> Infinity
ddmin191 min sNaN99 -Inf -> NaN99 Invalid_operation
ddmin192 min sNaN98 -11 -> NaN98 Invalid_operation
ddmin193 min -sNaN97 NaN8 -> -NaN97 Invalid_operation
ddmin194 min sNaN69 sNaN94 -> NaN69 Invalid_operation
ddmin195 min NaN95 sNaN93 -> NaN93 Invalid_operation
ddmin196 min -Inf sNaN92 -> NaN92 Invalid_operation
ddmin197 min 088 sNaN91 -> NaN91 Invalid_operation
ddmin198 min Inf -sNaN90 -> -NaN90 Invalid_operation
ddmin199 min NaN sNaN86 -> NaN86 Invalid_operation
-- old rounding checks
ddmin221 min -12345678000 1 -> -12345678000
ddmin222 min 1 -12345678000 -> -12345678000
ddmin223 min -1234567800 1 -> -1234567800
ddmin224 min 1 -1234567800 -> -1234567800
ddmin225 min -1234567890 1 -> -1234567890
ddmin226 min 1 -1234567890 -> -1234567890
ddmin227 min -1234567891 1 -> -1234567891
ddmin228 min 1 -1234567891 -> -1234567891
ddmin229 min -12345678901 1 -> -12345678901
ddmin230 min 1 -12345678901 -> -12345678901
ddmin231 min -1234567896 1 -> -1234567896
ddmin232 min 1 -1234567896 -> -1234567896
ddmin233 min 1234567891 1 -> 1
ddmin234 min 1 1234567891 -> 1
ddmin235 min 12345678901 1 -> 1
ddmin236 min 1 12345678901 -> 1
ddmin237 min 1234567896 1 -> 1
ddmin238 min 1 1234567896 -> 1
-- from examples
ddmin280 min '3' '2' -> '2'
ddmin281 min '-10' '3' -> '-10'
ddmin282 min '1.0' '1' -> '1.0'
ddmin283 min '1' '1.0' -> '1.0'
ddmin284 min '7' 'NaN' -> '7'
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
ddmin401 min Inf 1.1 -> 1.1
ddmin402 min 1.1 1 -> 1
ddmin403 min 1 1.0 -> 1.0
ddmin404 min 1.0 0.1 -> 0.1
ddmin405 min 0.1 0.10 -> 0.10
ddmin406 min 0.10 0.100 -> 0.100
ddmin407 min 0.10 0 -> 0
ddmin408 min 0 0.0 -> 0.0
ddmin409 min 0.0 -0 -> -0
ddmin410 min 0.0 -0.0 -> -0.0
ddmin411 min 0.00 -0.0 -> -0.0
ddmin412 min 0.0 -0.00 -> -0.00
ddmin413 min 0 -0.0 -> -0.0
ddmin414 min 0 -0 -> -0
ddmin415 min -0.0 -0 -> -0
ddmin416 min -0 -0.100 -> -0.100
ddmin417 min -0.100 -0.10 -> -0.10
ddmin418 min -0.10 -0.1 -> -0.1
ddmin419 min -0.1 -1.0 -> -1.0
ddmin420 min -1.0 -1 -> -1
ddmin421 min -1 -1.1 -> -1.1
ddmin423 min -1.1 -Inf -> -Infinity
-- same with operands reversed
ddmin431 min 1.1 Inf -> 1.1
ddmin432 min 1 1.1 -> 1
ddmin433 min 1.0 1 -> 1.0
ddmin434 min 0.1 1.0 -> 0.1
ddmin435 min 0.10 0.1 -> 0.10
ddmin436 min 0.100 0.10 -> 0.100
ddmin437 min 0 0.10 -> 0
ddmin438 min 0.0 0 -> 0.0
ddmin439 min -0 0.0 -> -0
ddmin440 min -0.0 0.0 -> -0.0
ddmin441 min -0.0 0.00 -> -0.0
ddmin442 min -0.00 0.0 -> -0.00
ddmin443 min -0.0 0 -> -0.0
ddmin444 min -0 0 -> -0
ddmin445 min -0 -0.0 -> -0
ddmin446 min -0.100 -0 -> -0.100
ddmin447 min -0.10 -0.100 -> -0.10
ddmin448 min -0.1 -0.10 -> -0.1
ddmin449 min -1.0 -0.1 -> -1.0
ddmin450 min -1 -1.0 -> -1
ddmin451 min -1.1 -1 -> -1.1
ddmin453 min -Inf -1.1 -> -Infinity
-- largies
ddmin460 min 1000 1E+3 -> 1000
ddmin461 min 1E+3 1000 -> 1000
ddmin462 min 1000 -1E+3 -> -1E+3
ddmin463 min 1E+3 -384 -> -384
ddmin464 min -384 1E+3 -> -384
ddmin465 min -1E+3 1000 -> -1E+3
ddmin466 min -384 -1E+3 -> -1E+3
ddmin467 min -1E+3 -384 -> -1E+3
-- misalignment traps for little-endian
ddmin471 min 1.0 0.1 -> 0.1
ddmin472 min 0.1 1.0 -> 0.1
ddmin473 min 10.0 0.1 -> 0.1
ddmin474 min 0.1 10.0 -> 0.1
ddmin475 min 100 1.0 -> 1.0
ddmin476 min 1.0 100 -> 1.0
ddmin477 min 1000 10.0 -> 10.0
ddmin478 min 10.0 1000 -> 10.0
ddmin479 min 10000 100.0 -> 100.0
ddmin480 min 100.0 10000 -> 100.0
ddmin481 min 100000 1000.0 -> 1000.0
ddmin482 min 1000.0 100000 -> 1000.0
ddmin483 min 1000000 10000.0 -> 10000.0
ddmin484 min 10000.0 1000000 -> 10000.0
-- subnormals
ddmin510 min 1.00E-383 0 -> 0
ddmin511 min 0.1E-383 0 -> 0
ddmin512 min 0.10E-383 0 -> 0
ddmin513 min 0.100E-383 0 -> 0
ddmin514 min 0.01E-383 0 -> 0
ddmin515 min 0.999E-383 0 -> 0
ddmin516 min 0.099E-383 0 -> 0
ddmin517 min 0.009E-383 0 -> 0
ddmin518 min 0.001E-383 0 -> 0
ddmin519 min 0.0009E-383 0 -> 0
ddmin520 min 0.0001E-383 0 -> 0
ddmin530 min -1.00E-383 0 -> -1.00E-383
ddmin531 min -0.1E-383 0 -> -1E-384 Subnormal
ddmin532 min -0.10E-383 0 -> -1.0E-384 Subnormal
ddmin533 min -0.100E-383 0 -> -1.00E-384 Subnormal
ddmin534 min -0.01E-383 0 -> -1E-385 Subnormal
ddmin535 min -0.999E-383 0 -> -9.99E-384 Subnormal
ddmin536 min -0.099E-383 0 -> -9.9E-385 Subnormal
ddmin537 min -0.009E-383 0 -> -9E-386 Subnormal
ddmin538 min -0.001E-383 0 -> -1E-386 Subnormal
ddmin539 min -0.0009E-383 0 -> -9E-387 Subnormal
ddmin540 min -0.0001E-383 0 -> -1E-387 Subnormal
-- Null tests
ddmin900 min 10 # -> NaN Invalid_operation
ddmin901 min # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,293 @@
------------------------------------------------------------------------
-- ddMinMag.decTest -- decDouble minnummag --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
ddmng001 minmag -2 -2 -> -2
ddmng002 minmag -2 -1 -> -1
ddmng003 minmag -2 0 -> 0
ddmng004 minmag -2 1 -> 1
ddmng005 minmag -2 2 -> -2
ddmng006 minmag -1 -2 -> -1
ddmng007 minmag -1 -1 -> -1
ddmng008 minmag -1 0 -> 0
ddmng009 minmag -1 1 -> -1
ddmng010 minmag -1 2 -> -1
ddmng011 minmag 0 -2 -> 0
ddmng012 minmag 0 -1 -> 0
ddmng013 minmag 0 0 -> 0
ddmng014 minmag 0 1 -> 0
ddmng015 minmag 0 2 -> 0
ddmng016 minmag 1 -2 -> 1
ddmng017 minmag 1 -1 -> -1
ddmng018 minmag 1 0 -> 0
ddmng019 minmag 1 1 -> 1
ddmng020 minmag 1 2 -> 1
ddmng021 minmag 2 -2 -> -2
ddmng022 minmag 2 -1 -> -1
ddmng023 minmag 2 0 -> 0
ddmng025 minmag 2 1 -> 1
ddmng026 minmag 2 2 -> 2
-- extended zeros
ddmng030 minmag 0 0 -> 0
ddmng031 minmag 0 -0 -> -0
ddmng032 minmag 0 -0.0 -> -0.0
ddmng033 minmag 0 0.0 -> 0.0
ddmng034 minmag -0 0 -> -0
ddmng035 minmag -0 -0 -> -0
ddmng036 minmag -0 -0.0 -> -0
ddmng037 minmag -0 0.0 -> -0
ddmng038 minmag 0.0 0 -> 0.0
ddmng039 minmag 0.0 -0 -> -0
ddmng040 minmag 0.0 -0.0 -> -0.0
ddmng041 minmag 0.0 0.0 -> 0.0
ddmng042 minmag -0.0 0 -> -0.0
ddmng043 minmag -0.0 -0 -> -0
ddmng044 minmag -0.0 -0.0 -> -0.0
ddmng045 minmag -0.0 0.0 -> -0.0
ddmng046 minmag 0E1 -0E1 -> -0E+1
ddmng047 minmag -0E1 0E2 -> -0E+1
ddmng048 minmag 0E2 0E1 -> 0E+1
ddmng049 minmag 0E1 0E2 -> 0E+1
ddmng050 minmag -0E3 -0E2 -> -0E+3
ddmng051 minmag -0E2 -0E3 -> -0E+3
-- Specials
ddmng090 minmag Inf -Inf -> -Infinity
ddmng091 minmag Inf -1000 -> -1000
ddmng092 minmag Inf -1 -> -1
ddmng093 minmag Inf -0 -> -0
ddmng094 minmag Inf 0 -> 0
ddmng095 minmag Inf 1 -> 1
ddmng096 minmag Inf 1000 -> 1000
ddmng097 minmag Inf Inf -> Infinity
ddmng098 minmag -1000 Inf -> -1000
ddmng099 minmag -Inf Inf -> -Infinity
ddmng100 minmag -1 Inf -> -1
ddmng101 minmag -0 Inf -> -0
ddmng102 minmag 0 Inf -> 0
ddmng103 minmag 1 Inf -> 1
ddmng104 minmag 1000 Inf -> 1000
ddmng105 minmag Inf Inf -> Infinity
ddmng120 minmag -Inf -Inf -> -Infinity
ddmng121 minmag -Inf -1000 -> -1000
ddmng122 minmag -Inf -1 -> -1
ddmng123 minmag -Inf -0 -> -0
ddmng124 minmag -Inf 0 -> 0
ddmng125 minmag -Inf 1 -> 1
ddmng126 minmag -Inf 1000 -> 1000
ddmng127 minmag -Inf Inf -> -Infinity
ddmng128 minmag -Inf -Inf -> -Infinity
ddmng129 minmag -1000 -Inf -> -1000
ddmng130 minmag -1 -Inf -> -1
ddmng131 minmag -0 -Inf -> -0
ddmng132 minmag 0 -Inf -> 0
ddmng133 minmag 1 -Inf -> 1
ddmng134 minmag 1000 -Inf -> 1000
ddmng135 minmag Inf -Inf -> -Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
ddmng141 minmag NaN -Inf -> -Infinity
ddmng142 minmag NaN -1000 -> -1000
ddmng143 minmag NaN -1 -> -1
ddmng144 minmag NaN -0 -> -0
ddmng145 minmag NaN 0 -> 0
ddmng146 minmag NaN 1 -> 1
ddmng147 minmag NaN 1000 -> 1000
ddmng148 minmag NaN Inf -> Infinity
ddmng149 minmag NaN NaN -> NaN
ddmng150 minmag -Inf NaN -> -Infinity
ddmng151 minmag -1000 NaN -> -1000
ddmng152 minmag -1 -NaN -> -1
ddmng153 minmag -0 NaN -> -0
ddmng154 minmag 0 -NaN -> 0
ddmng155 minmag 1 NaN -> 1
ddmng156 minmag 1000 NaN -> 1000
ddmng157 minmag Inf NaN -> Infinity
ddmng161 minmag sNaN -Inf -> NaN Invalid_operation
ddmng162 minmag sNaN -1000 -> NaN Invalid_operation
ddmng163 minmag sNaN -1 -> NaN Invalid_operation
ddmng164 minmag sNaN -0 -> NaN Invalid_operation
ddmng165 minmag -sNaN 0 -> -NaN Invalid_operation
ddmng166 minmag -sNaN 1 -> -NaN Invalid_operation
ddmng167 minmag sNaN 1000 -> NaN Invalid_operation
ddmng168 minmag sNaN NaN -> NaN Invalid_operation
ddmng169 minmag sNaN sNaN -> NaN Invalid_operation
ddmng170 minmag NaN sNaN -> NaN Invalid_operation
ddmng171 minmag -Inf sNaN -> NaN Invalid_operation
ddmng172 minmag -1000 sNaN -> NaN Invalid_operation
ddmng173 minmag -1 sNaN -> NaN Invalid_operation
ddmng174 minmag -0 sNaN -> NaN Invalid_operation
ddmng175 minmag 0 sNaN -> NaN Invalid_operation
ddmng176 minmag 1 sNaN -> NaN Invalid_operation
ddmng177 minmag 1000 sNaN -> NaN Invalid_operation
ddmng178 minmag Inf sNaN -> NaN Invalid_operation
ddmng179 minmag NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddmng181 minmag NaN9 -Inf -> -Infinity
ddmng182 minmag -NaN8 9990 -> 9990
ddmng183 minmag NaN71 Inf -> Infinity
ddmng184 minmag NaN1 NaN54 -> NaN1
ddmng185 minmag NaN22 -NaN53 -> NaN22
ddmng186 minmag -NaN3 NaN6 -> -NaN3
ddmng187 minmag -NaN44 NaN7 -> -NaN44
ddmng188 minmag -Inf NaN41 -> -Infinity
ddmng189 minmag -9999 -NaN33 -> -9999
ddmng190 minmag Inf NaN2 -> Infinity
ddmng191 minmag sNaN99 -Inf -> NaN99 Invalid_operation
ddmng192 minmag sNaN98 -11 -> NaN98 Invalid_operation
ddmng193 minmag -sNaN97 NaN8 -> -NaN97 Invalid_operation
ddmng194 minmag sNaN69 sNaN94 -> NaN69 Invalid_operation
ddmng195 minmag NaN95 sNaN93 -> NaN93 Invalid_operation
ddmng196 minmag -Inf sNaN92 -> NaN92 Invalid_operation
ddmng197 minmag 088 sNaN91 -> NaN91 Invalid_operation
ddmng198 minmag Inf -sNaN90 -> -NaN90 Invalid_operation
ddmng199 minmag NaN sNaN86 -> NaN86 Invalid_operation
-- old rounding checks
ddmng221 minmag -12345678000 1 -> 1
ddmng222 minmag 1 -12345678000 -> 1
ddmng223 minmag -1234567800 1 -> 1
ddmng224 minmag 1 -1234567800 -> 1
ddmng225 minmag -1234567890 1 -> 1
ddmng226 minmag 1 -1234567890 -> 1
ddmng227 minmag -1234567891 1 -> 1
ddmng228 minmag 1 -1234567891 -> 1
ddmng229 minmag -12345678901 1 -> 1
ddmng230 minmag 1 -12345678901 -> 1
ddmng231 minmag -1234567896 1 -> 1
ddmng232 minmag 1 -1234567896 -> 1
ddmng233 minmag 1234567891 1 -> 1
ddmng234 minmag 1 1234567891 -> 1
ddmng235 minmag 12345678901 1 -> 1
ddmng236 minmag 1 12345678901 -> 1
ddmng237 minmag 1234567896 1 -> 1
ddmng238 minmag 1 1234567896 -> 1
-- from examples
ddmng280 minmag '3' '2' -> '2'
ddmng281 minmag '-10' '3' -> '3'
ddmng282 minmag '1.0' '1' -> '1.0'
ddmng283 minmag '1' '1.0' -> '1.0'
ddmng284 minmag '7' 'NaN' -> '7'
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
ddmng401 minmag Inf 1.1 -> 1.1
ddmng402 minmag 1.1 1 -> 1
ddmng403 minmag 1 1.0 -> 1.0
ddmng404 minmag 1.0 0.1 -> 0.1
ddmng405 minmag 0.1 0.10 -> 0.10
ddmng406 minmag 0.10 0.100 -> 0.100
ddmng407 minmag 0.10 0 -> 0
ddmng408 minmag 0 0.0 -> 0.0
ddmng409 minmag 0.0 -0 -> -0
ddmng410 minmag 0.0 -0.0 -> -0.0
ddmng411 minmag 0.00 -0.0 -> -0.0
ddmng412 minmag 0.0 -0.00 -> -0.00
ddmng413 minmag 0 -0.0 -> -0.0
ddmng414 minmag 0 -0 -> -0
ddmng415 minmag -0.0 -0 -> -0
ddmng416 minmag -0 -0.100 -> -0
ddmng417 minmag -0.100 -0.10 -> -0.10
ddmng418 minmag -0.10 -0.1 -> -0.1
ddmng419 minmag -0.1 -1.0 -> -0.1
ddmng420 minmag -1.0 -1 -> -1
ddmng421 minmag -1 -1.1 -> -1
ddmng423 minmag -1.1 -Inf -> -1.1
-- same with operands reversed
ddmng431 minmag 1.1 Inf -> 1.1
ddmng432 minmag 1 1.1 -> 1
ddmng433 minmag 1.0 1 -> 1.0
ddmng434 minmag 0.1 1.0 -> 0.1
ddmng435 minmag 0.10 0.1 -> 0.10
ddmng436 minmag 0.100 0.10 -> 0.100
ddmng437 minmag 0 0.10 -> 0
ddmng438 minmag 0.0 0 -> 0.0
ddmng439 minmag -0 0.0 -> -0
ddmng440 minmag -0.0 0.0 -> -0.0
ddmng441 minmag -0.0 0.00 -> -0.0
ddmng442 minmag -0.00 0.0 -> -0.00
ddmng443 minmag -0.0 0 -> -0.0
ddmng444 minmag -0 0 -> -0
ddmng445 minmag -0 -0.0 -> -0
ddmng446 minmag -0.100 -0 -> -0
ddmng447 minmag -0.10 -0.100 -> -0.10
ddmng448 minmag -0.1 -0.10 -> -0.1
ddmng449 minmag -1.0 -0.1 -> -0.1
ddmng450 minmag -1 -1.0 -> -1
ddmng451 minmag -1.1 -1 -> -1
ddmng453 minmag -Inf -1.1 -> -1.1
-- largies
ddmng460 minmag 1000 1E+3 -> 1000
ddmng461 minmag 1E+3 1000 -> 1000
ddmng462 minmag 1000 -1E+3 -> -1E+3
ddmng463 minmag 1E+3 -384 -> -384
ddmng464 minmag -384 1E+3 -> -384
ddmng465 minmag -1E+3 1000 -> -1E+3
ddmng466 minmag -384 -1E+3 -> -384
ddmng467 minmag -1E+3 -384 -> -384
-- subnormals
ddmng510 minmag 1.00E-383 0 -> 0
ddmng511 minmag 0.1E-383 0 -> 0
ddmng512 minmag 0.10E-383 0 -> 0
ddmng513 minmag 0.100E-383 0 -> 0
ddmng514 minmag 0.01E-383 0 -> 0
ddmng515 minmag 0.999E-383 0 -> 0
ddmng516 minmag 0.099E-383 0 -> 0
ddmng517 minmag 0.009E-383 0 -> 0
ddmng518 minmag 0.001E-383 0 -> 0
ddmng519 minmag 0.0009E-383 0 -> 0
ddmng520 minmag 0.0001E-383 0 -> 0
ddmng530 minmag -1.00E-383 0 -> 0
ddmng531 minmag -0.1E-383 0 -> 0
ddmng532 minmag -0.10E-383 0 -> 0
ddmng533 minmag -0.100E-383 0 -> 0
ddmng534 minmag -0.01E-383 0 -> 0
ddmng535 minmag -0.999E-383 0 -> 0
ddmng536 minmag -0.099E-383 0 -> 0
ddmng537 minmag -0.009E-383 0 -> 0
ddmng538 minmag -0.001E-383 0 -> 0
ddmng539 minmag -0.0009E-383 0 -> 0
ddmng540 minmag -0.0001E-383 0 -> 0
-- Null tests
ddmng900 minmag 10 # -> NaN Invalid_operation
ddmng901 minmag # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,88 @@
------------------------------------------------------------------------
-- ddMinus.decTest -- decDouble 0-x --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check
ddmns001 minus +7.50 -> -7.50
-- Infinities
ddmns011 minus Infinity -> -Infinity
ddmns012 minus -Infinity -> Infinity
-- NaNs, 0 payload
ddmns021 minus NaN -> NaN
ddmns022 minus -NaN -> -NaN
ddmns023 minus sNaN -> NaN Invalid_operation
ddmns024 minus -sNaN -> -NaN Invalid_operation
-- NaNs, non-0 payload
ddmns031 minus NaN13 -> NaN13
ddmns032 minus -NaN13 -> -NaN13
ddmns033 minus sNaN13 -> NaN13 Invalid_operation
ddmns034 minus -sNaN13 -> -NaN13 Invalid_operation
ddmns035 minus NaN70 -> NaN70
ddmns036 minus -NaN70 -> -NaN70
ddmns037 minus sNaN101 -> NaN101 Invalid_operation
ddmns038 minus -sNaN101 -> -NaN101 Invalid_operation
-- finites
ddmns101 minus 7 -> -7
ddmns102 minus -7 -> 7
ddmns103 minus 75 -> -75
ddmns104 minus -75 -> 75
ddmns105 minus 7.50 -> -7.50
ddmns106 minus -7.50 -> 7.50
ddmns107 minus 7.500 -> -7.500
ddmns108 minus -7.500 -> 7.500
-- zeros
ddmns111 minus 0 -> 0
ddmns112 minus -0 -> 0
ddmns113 minus 0E+4 -> 0E+4
ddmns114 minus -0E+4 -> 0E+4
ddmns115 minus 0.0000 -> 0.0000
ddmns116 minus -0.0000 -> 0.0000
ddmns117 minus 0E-141 -> 0E-141
ddmns118 minus -0E-141 -> 0E-141
-- full coefficients, alternating bits
ddmns121 minus 2682682682682682 -> -2682682682682682
ddmns122 minus -2682682682682682 -> 2682682682682682
ddmns123 minus 1341341341341341 -> -1341341341341341
ddmns124 minus -1341341341341341 -> 1341341341341341
-- Nmax, Nmin, Ntiny
ddmns131 minus 9.999999999999999E+384 -> -9.999999999999999E+384
ddmns132 minus 1E-383 -> -1E-383
ddmns133 minus 1.000000000000000E-383 -> -1.000000000000000E-383
ddmns134 minus 1E-398 -> -1E-398 Subnormal
ddmns135 minus -1E-398 -> 1E-398 Subnormal
ddmns136 minus -1.000000000000000E-383 -> 1.000000000000000E-383
ddmns137 minus -1E-383 -> 1E-383
ddmns138 minus -9.999999999999999E+384 -> 9.999999999999999E+384

View file

@ -0,0 +1,553 @@
------------------------------------------------------------------------
-- ddMultiply.decTest -- decDouble multiplication --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- This set of tests are for decDoubles only; all arguments are
-- representable in a decDouble
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
ddmul000 multiply 2 2 -> 4
ddmul001 multiply 2 3 -> 6
ddmul002 multiply 5 1 -> 5
ddmul003 multiply 5 2 -> 10
ddmul004 multiply 1.20 2 -> 2.40
ddmul005 multiply 1.20 0 -> 0.00
ddmul006 multiply 1.20 -2 -> -2.40
ddmul007 multiply -1.20 2 -> -2.40
ddmul008 multiply -1.20 0 -> -0.00
ddmul009 multiply -1.20 -2 -> 2.40
ddmul010 multiply 5.09 7.1 -> 36.139
ddmul011 multiply 2.5 4 -> 10.0
ddmul012 multiply 2.50 4 -> 10.00
ddmul013 multiply 1.23456789 1.00000000 -> 1.234567890000000 Rounded
ddmul015 multiply 2.50 4 -> 10.00
ddmul016 multiply 9.999999999 9.999999999 -> 99.99999998000000 Inexact Rounded
ddmul017 multiply 9.999999999 -9.999999999 -> -99.99999998000000 Inexact Rounded
ddmul018 multiply -9.999999999 9.999999999 -> -99.99999998000000 Inexact Rounded
ddmul019 multiply -9.999999999 -9.999999999 -> 99.99999998000000 Inexact Rounded
-- zeros, etc.
ddmul021 multiply 0 0 -> 0
ddmul022 multiply 0 -0 -> -0
ddmul023 multiply -0 0 -> -0
ddmul024 multiply -0 -0 -> 0
ddmul025 multiply -0.0 -0.0 -> 0.00
ddmul026 multiply -0.0 -0.0 -> 0.00
ddmul027 multiply -0.0 -0.0 -> 0.00
ddmul028 multiply -0.0 -0.0 -> 0.00
ddmul030 multiply 5.00 1E-3 -> 0.00500
ddmul031 multiply 00.00 0.000 -> 0.00000
ddmul032 multiply 00.00 0E-3 -> 0.00000 -- rhs is 0
ddmul033 multiply 0E-3 00.00 -> 0.00000 -- lhs is 0
ddmul034 multiply -5.00 1E-3 -> -0.00500
ddmul035 multiply -00.00 0.000 -> -0.00000
ddmul036 multiply -00.00 0E-3 -> -0.00000 -- rhs is 0
ddmul037 multiply -0E-3 00.00 -> -0.00000 -- lhs is 0
ddmul038 multiply 5.00 -1E-3 -> -0.00500
ddmul039 multiply 00.00 -0.000 -> -0.00000
ddmul040 multiply 00.00 -0E-3 -> -0.00000 -- rhs is 0
ddmul041 multiply 0E-3 -00.00 -> -0.00000 -- lhs is 0
ddmul042 multiply -5.00 -1E-3 -> 0.00500
ddmul043 multiply -00.00 -0.000 -> 0.00000
ddmul044 multiply -00.00 -0E-3 -> 0.00000 -- rhs is 0
ddmul045 multiply -0E-3 -00.00 -> 0.00000 -- lhs is 0
-- examples from decarith
ddmul050 multiply 1.20 3 -> 3.60
ddmul051 multiply 7 3 -> 21
ddmul052 multiply 0.9 0.8 -> 0.72
ddmul053 multiply 0.9 -0 -> -0.0
ddmul054 multiply 654321 654321 -> 428135971041
ddmul060 multiply 123.45 1e7 -> 1.2345E+9
ddmul061 multiply 123.45 1e8 -> 1.2345E+10
ddmul062 multiply 123.45 1e+9 -> 1.2345E+11
ddmul063 multiply 123.45 1e10 -> 1.2345E+12
ddmul064 multiply 123.45 1e11 -> 1.2345E+13
ddmul065 multiply 123.45 1e12 -> 1.2345E+14
ddmul066 multiply 123.45 1e13 -> 1.2345E+15
-- test some intermediate lengths
-- 1234567890123456
ddmul080 multiply 0.1 1230123456456789 -> 123012345645678.9
ddmul084 multiply 0.1 1230123456456789 -> 123012345645678.9
ddmul090 multiply 1230123456456789 0.1 -> 123012345645678.9
ddmul094 multiply 1230123456456789 0.1 -> 123012345645678.9
-- test some more edge cases and carries
ddmul101 multiply 9 9 -> 81
ddmul102 multiply 9 90 -> 810
ddmul103 multiply 9 900 -> 8100
ddmul104 multiply 9 9000 -> 81000
ddmul105 multiply 9 90000 -> 810000
ddmul106 multiply 9 900000 -> 8100000
ddmul107 multiply 9 9000000 -> 81000000
ddmul108 multiply 9 90000000 -> 810000000
ddmul109 multiply 9 900000000 -> 8100000000
ddmul110 multiply 9 9000000000 -> 81000000000
ddmul111 multiply 9 90000000000 -> 810000000000
ddmul112 multiply 9 900000000000 -> 8100000000000
ddmul113 multiply 9 9000000000000 -> 81000000000000
ddmul114 multiply 9 90000000000000 -> 810000000000000
ddmul115 multiply 9 900000000000000 -> 8100000000000000
--ddmul116 multiply 9 9000000000000000 -> 81000000000000000
--ddmul117 multiply 9 90000000000000000 -> 810000000000000000
--ddmul118 multiply 9 900000000000000000 -> 8100000000000000000
--ddmul119 multiply 9 9000000000000000000 -> 81000000000000000000
--ddmul120 multiply 9 90000000000000000000 -> 810000000000000000000
--ddmul121 multiply 9 900000000000000000000 -> 8100000000000000000000
--ddmul122 multiply 9 9000000000000000000000 -> 81000000000000000000000
--ddmul123 multiply 9 90000000000000000000000 -> 810000000000000000000000
-- test some more edge cases without carries
ddmul131 multiply 3 3 -> 9
ddmul132 multiply 3 30 -> 90
ddmul133 multiply 3 300 -> 900
ddmul134 multiply 3 3000 -> 9000
ddmul135 multiply 3 30000 -> 90000
ddmul136 multiply 3 300000 -> 900000
ddmul137 multiply 3 3000000 -> 9000000
ddmul138 multiply 3 30000000 -> 90000000
ddmul139 multiply 3 300000000 -> 900000000
ddmul140 multiply 3 3000000000 -> 9000000000
ddmul141 multiply 3 30000000000 -> 90000000000
ddmul142 multiply 3 300000000000 -> 900000000000
ddmul143 multiply 3 3000000000000 -> 9000000000000
ddmul144 multiply 3 30000000000000 -> 90000000000000
ddmul145 multiply 3 300000000000000 -> 900000000000000
-- test some edge cases with exact rounding
ddmul301 multiply 9 9 -> 81
ddmul302 multiply 9 90 -> 810
ddmul303 multiply 9 900 -> 8100
ddmul304 multiply 9 9000 -> 81000
ddmul305 multiply 9 90000 -> 810000
ddmul306 multiply 9 900000 -> 8100000
ddmul307 multiply 9 9000000 -> 81000000
ddmul308 multiply 9 90000000 -> 810000000
ddmul309 multiply 9 900000000 -> 8100000000
ddmul310 multiply 9 9000000000 -> 81000000000
ddmul311 multiply 9 90000000000 -> 810000000000
ddmul312 multiply 9 900000000000 -> 8100000000000
ddmul313 multiply 9 9000000000000 -> 81000000000000
ddmul314 multiply 9 90000000000000 -> 810000000000000
ddmul315 multiply 9 900000000000000 -> 8100000000000000
ddmul316 multiply 9 9000000000000000 -> 8.100000000000000E+16 Rounded
ddmul317 multiply 90 9000000000000000 -> 8.100000000000000E+17 Rounded
ddmul318 multiply 900 9000000000000000 -> 8.100000000000000E+18 Rounded
ddmul319 multiply 9000 9000000000000000 -> 8.100000000000000E+19 Rounded
ddmul320 multiply 90000 9000000000000000 -> 8.100000000000000E+20 Rounded
ddmul321 multiply 900000 9000000000000000 -> 8.100000000000000E+21 Rounded
ddmul322 multiply 9000000 9000000000000000 -> 8.100000000000000E+22 Rounded
ddmul323 multiply 90000000 9000000000000000 -> 8.100000000000000E+23 Rounded
-- tryzeros cases
ddmul504 multiply 0E-260 1000E-260 -> 0E-398 Clamped
ddmul505 multiply 100E+260 0E+260 -> 0E+369 Clamped
-- 65K-1 case
ddmul506 multiply 77.1 850 -> 65535.0
-- mixed with zeros
ddmul541 multiply 0 -1 -> -0
ddmul542 multiply -0 -1 -> 0
ddmul543 multiply 0 1 -> 0
ddmul544 multiply -0 1 -> -0
ddmul545 multiply -1 0 -> -0
ddmul546 multiply -1 -0 -> 0
ddmul547 multiply 1 0 -> 0
ddmul548 multiply 1 -0 -> -0
ddmul551 multiply 0.0 -1 -> -0.0
ddmul552 multiply -0.0 -1 -> 0.0
ddmul553 multiply 0.0 1 -> 0.0
ddmul554 multiply -0.0 1 -> -0.0
ddmul555 multiply -1.0 0 -> -0.0
ddmul556 multiply -1.0 -0 -> 0.0
ddmul557 multiply 1.0 0 -> 0.0
ddmul558 multiply 1.0 -0 -> -0.0
ddmul561 multiply 0 -1.0 -> -0.0
ddmul562 multiply -0 -1.0 -> 0.0
ddmul563 multiply 0 1.0 -> 0.0
ddmul564 multiply -0 1.0 -> -0.0
ddmul565 multiply -1 0.0 -> -0.0
ddmul566 multiply -1 -0.0 -> 0.0
ddmul567 multiply 1 0.0 -> 0.0
ddmul568 multiply 1 -0.0 -> -0.0
ddmul571 multiply 0.0 -1.0 -> -0.00
ddmul572 multiply -0.0 -1.0 -> 0.00
ddmul573 multiply 0.0 1.0 -> 0.00
ddmul574 multiply -0.0 1.0 -> -0.00
ddmul575 multiply -1.0 0.0 -> -0.00
ddmul576 multiply -1.0 -0.0 -> 0.00
ddmul577 multiply 1.0 0.0 -> 0.00
ddmul578 multiply 1.0 -0.0 -> -0.00
-- Specials
ddmul580 multiply Inf -Inf -> -Infinity
ddmul581 multiply Inf -1000 -> -Infinity
ddmul582 multiply Inf -1 -> -Infinity
ddmul583 multiply Inf -0 -> NaN Invalid_operation
ddmul584 multiply Inf 0 -> NaN Invalid_operation
ddmul585 multiply Inf 1 -> Infinity
ddmul586 multiply Inf 1000 -> Infinity
ddmul587 multiply Inf Inf -> Infinity
ddmul588 multiply -1000 Inf -> -Infinity
ddmul589 multiply -Inf Inf -> -Infinity
ddmul590 multiply -1 Inf -> -Infinity
ddmul591 multiply -0 Inf -> NaN Invalid_operation
ddmul592 multiply 0 Inf -> NaN Invalid_operation
ddmul593 multiply 1 Inf -> Infinity
ddmul594 multiply 1000 Inf -> Infinity
ddmul595 multiply Inf Inf -> Infinity
ddmul600 multiply -Inf -Inf -> Infinity
ddmul601 multiply -Inf -1000 -> Infinity
ddmul602 multiply -Inf -1 -> Infinity
ddmul603 multiply -Inf -0 -> NaN Invalid_operation
ddmul604 multiply -Inf 0 -> NaN Invalid_operation
ddmul605 multiply -Inf 1 -> -Infinity
ddmul606 multiply -Inf 1000 -> -Infinity
ddmul607 multiply -Inf Inf -> -Infinity
ddmul608 multiply -1000 Inf -> -Infinity
ddmul609 multiply -Inf -Inf -> Infinity
ddmul610 multiply -1 -Inf -> Infinity
ddmul611 multiply -0 -Inf -> NaN Invalid_operation
ddmul612 multiply 0 -Inf -> NaN Invalid_operation
ddmul613 multiply 1 -Inf -> -Infinity
ddmul614 multiply 1000 -Inf -> -Infinity
ddmul615 multiply Inf -Inf -> -Infinity
ddmul621 multiply NaN -Inf -> NaN
ddmul622 multiply NaN -1000 -> NaN
ddmul623 multiply NaN -1 -> NaN
ddmul624 multiply NaN -0 -> NaN
ddmul625 multiply NaN 0 -> NaN
ddmul626 multiply NaN 1 -> NaN
ddmul627 multiply NaN 1000 -> NaN
ddmul628 multiply NaN Inf -> NaN
ddmul629 multiply NaN NaN -> NaN
ddmul630 multiply -Inf NaN -> NaN
ddmul631 multiply -1000 NaN -> NaN
ddmul632 multiply -1 NaN -> NaN
ddmul633 multiply -0 NaN -> NaN
ddmul634 multiply 0 NaN -> NaN
ddmul635 multiply 1 NaN -> NaN
ddmul636 multiply 1000 NaN -> NaN
ddmul637 multiply Inf NaN -> NaN
ddmul641 multiply sNaN -Inf -> NaN Invalid_operation
ddmul642 multiply sNaN -1000 -> NaN Invalid_operation
ddmul643 multiply sNaN -1 -> NaN Invalid_operation
ddmul644 multiply sNaN -0 -> NaN Invalid_operation
ddmul645 multiply sNaN 0 -> NaN Invalid_operation
ddmul646 multiply sNaN 1 -> NaN Invalid_operation
ddmul647 multiply sNaN 1000 -> NaN Invalid_operation
ddmul648 multiply sNaN NaN -> NaN Invalid_operation
ddmul649 multiply sNaN sNaN -> NaN Invalid_operation
ddmul650 multiply NaN sNaN -> NaN Invalid_operation
ddmul651 multiply -Inf sNaN -> NaN Invalid_operation
ddmul652 multiply -1000 sNaN -> NaN Invalid_operation
ddmul653 multiply -1 sNaN -> NaN Invalid_operation
ddmul654 multiply -0 sNaN -> NaN Invalid_operation
ddmul655 multiply 0 sNaN -> NaN Invalid_operation
ddmul656 multiply 1 sNaN -> NaN Invalid_operation
ddmul657 multiply 1000 sNaN -> NaN Invalid_operation
ddmul658 multiply Inf sNaN -> NaN Invalid_operation
ddmul659 multiply NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddmul661 multiply NaN9 -Inf -> NaN9
ddmul662 multiply NaN8 999 -> NaN8
ddmul663 multiply NaN71 Inf -> NaN71
ddmul664 multiply NaN6 NaN5 -> NaN6
ddmul665 multiply -Inf NaN4 -> NaN4
ddmul666 multiply -999 NaN33 -> NaN33
ddmul667 multiply Inf NaN2 -> NaN2
ddmul671 multiply sNaN99 -Inf -> NaN99 Invalid_operation
ddmul672 multiply sNaN98 -11 -> NaN98 Invalid_operation
ddmul673 multiply sNaN97 NaN -> NaN97 Invalid_operation
ddmul674 multiply sNaN16 sNaN94 -> NaN16 Invalid_operation
ddmul675 multiply NaN95 sNaN93 -> NaN93 Invalid_operation
ddmul676 multiply -Inf sNaN92 -> NaN92 Invalid_operation
ddmul677 multiply 088 sNaN91 -> NaN91 Invalid_operation
ddmul678 multiply Inf sNaN90 -> NaN90 Invalid_operation
ddmul679 multiply NaN sNaN89 -> NaN89 Invalid_operation
ddmul681 multiply -NaN9 -Inf -> -NaN9
ddmul682 multiply -NaN8 999 -> -NaN8
ddmul683 multiply -NaN71 Inf -> -NaN71
ddmul684 multiply -NaN6 -NaN5 -> -NaN6
ddmul685 multiply -Inf -NaN4 -> -NaN4
ddmul686 multiply -999 -NaN33 -> -NaN33
ddmul687 multiply Inf -NaN2 -> -NaN2
ddmul691 multiply -sNaN99 -Inf -> -NaN99 Invalid_operation
ddmul692 multiply -sNaN98 -11 -> -NaN98 Invalid_operation
ddmul693 multiply -sNaN97 NaN -> -NaN97 Invalid_operation
ddmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation
ddmul695 multiply -NaN95 -sNaN93 -> -NaN93 Invalid_operation
ddmul696 multiply -Inf -sNaN92 -> -NaN92 Invalid_operation
ddmul697 multiply 088 -sNaN91 -> -NaN91 Invalid_operation
ddmul698 multiply Inf -sNaN90 -> -NaN90 Invalid_operation
ddmul699 multiply -NaN -sNaN89 -> -NaN89 Invalid_operation
ddmul701 multiply -NaN -Inf -> -NaN
ddmul702 multiply -NaN 999 -> -NaN
ddmul703 multiply -NaN Inf -> -NaN
ddmul704 multiply -NaN -NaN -> -NaN
ddmul705 multiply -Inf -NaN0 -> -NaN
ddmul706 multiply -999 -NaN -> -NaN
ddmul707 multiply Inf -NaN -> -NaN
ddmul711 multiply -sNaN -Inf -> -NaN Invalid_operation
ddmul712 multiply -sNaN -11 -> -NaN Invalid_operation
ddmul713 multiply -sNaN00 NaN -> -NaN Invalid_operation
ddmul714 multiply -sNaN -sNaN -> -NaN Invalid_operation
ddmul715 multiply -NaN -sNaN -> -NaN Invalid_operation
ddmul716 multiply -Inf -sNaN -> -NaN Invalid_operation
ddmul717 multiply 088 -sNaN -> -NaN Invalid_operation
ddmul718 multiply Inf -sNaN -> -NaN Invalid_operation
ddmul719 multiply -NaN -sNaN -> -NaN Invalid_operation
-- overflow and underflow tests .. note subnormal results
-- signs
ddmul751 multiply 1e+277 1e+311 -> Infinity Overflow Inexact Rounded
ddmul752 multiply 1e+277 -1e+311 -> -Infinity Overflow Inexact Rounded
ddmul753 multiply -1e+277 1e+311 -> -Infinity Overflow Inexact Rounded
ddmul754 multiply -1e+277 -1e+311 -> Infinity Overflow Inexact Rounded
ddmul755 multiply 1e-277 1e-311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul756 multiply 1e-277 -1e-311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul757 multiply -1e-277 1e-311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul758 multiply -1e-277 -1e-311 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
ddmul760 multiply 1e-291 1e-101 -> 1E-392 Subnormal
ddmul761 multiply 1e-291 1e-102 -> 1E-393 Subnormal
ddmul762 multiply 1e-291 1e-103 -> 1E-394 Subnormal
ddmul763 multiply 1e-291 1e-104 -> 1E-395 Subnormal
ddmul764 multiply 1e-291 1e-105 -> 1E-396 Subnormal
ddmul765 multiply 1e-291 1e-106 -> 1E-397 Subnormal
ddmul766 multiply 1e-291 1e-107 -> 1E-398 Subnormal
ddmul767 multiply 1e-291 1e-108 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul768 multiply 1e-291 1e-109 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul769 multiply 1e-291 1e-110 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-- [no equivalent of 'subnormal' for overflow]
ddmul770 multiply 1e+60 1e+321 -> 1.000000000000E+381 Clamped
ddmul771 multiply 1e+60 1e+322 -> 1.0000000000000E+382 Clamped
ddmul772 multiply 1e+60 1e+323 -> 1.00000000000000E+383 Clamped
ddmul773 multiply 1e+60 1e+324 -> 1.000000000000000E+384 Clamped
ddmul774 multiply 1e+60 1e+325 -> Infinity Overflow Inexact Rounded
ddmul775 multiply 1e+60 1e+326 -> Infinity Overflow Inexact Rounded
ddmul776 multiply 1e+60 1e+327 -> Infinity Overflow Inexact Rounded
ddmul777 multiply 1e+60 1e+328 -> Infinity Overflow Inexact Rounded
ddmul778 multiply 1e+60 1e+329 -> Infinity Overflow Inexact Rounded
ddmul779 multiply 1e+60 1e+330 -> Infinity Overflow Inexact Rounded
ddmul801 multiply 1.0000E-394 1 -> 1.0000E-394 Subnormal
ddmul802 multiply 1.000E-394 1e-1 -> 1.000E-395 Subnormal
ddmul803 multiply 1.00E-394 1e-2 -> 1.00E-396 Subnormal
ddmul804 multiply 1.0E-394 1e-3 -> 1.0E-397 Subnormal
ddmul805 multiply 1.0E-394 1e-4 -> 1E-398 Subnormal Rounded
ddmul806 multiply 1.3E-394 1e-4 -> 1E-398 Underflow Subnormal Inexact Rounded
ddmul807 multiply 1.5E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded
ddmul808 multiply 1.7E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded
ddmul809 multiply 2.3E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded
ddmul810 multiply 2.5E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded
ddmul811 multiply 2.7E-394 1e-4 -> 3E-398 Underflow Subnormal Inexact Rounded
ddmul812 multiply 1.49E-394 1e-4 -> 1E-398 Underflow Subnormal Inexact Rounded
ddmul813 multiply 1.50E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded
ddmul814 multiply 1.51E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded
ddmul815 multiply 2.49E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded
ddmul816 multiply 2.50E-394 1e-4 -> 2E-398 Underflow Subnormal Inexact Rounded
ddmul817 multiply 2.51E-394 1e-4 -> 3E-398 Underflow Subnormal Inexact Rounded
ddmul818 multiply 1E-394 1e-4 -> 1E-398 Subnormal
ddmul819 multiply 3E-394 1e-5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul820 multiply 5E-394 1e-5 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul821 multiply 7E-394 1e-5 -> 1E-398 Underflow Subnormal Inexact Rounded
ddmul822 multiply 9E-394 1e-5 -> 1E-398 Underflow Subnormal Inexact Rounded
ddmul823 multiply 9.9E-394 1e-5 -> 1E-398 Underflow Subnormal Inexact Rounded
ddmul824 multiply 1E-394 -1e-4 -> -1E-398 Subnormal
ddmul825 multiply 3E-394 -1e-5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul826 multiply -5E-394 1e-5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul827 multiply 7E-394 -1e-5 -> -1E-398 Underflow Subnormal Inexact Rounded
ddmul828 multiply -9E-394 1e-5 -> -1E-398 Underflow Subnormal Inexact Rounded
ddmul829 multiply 9.9E-394 -1e-5 -> -1E-398 Underflow Subnormal Inexact Rounded
ddmul830 multiply 3.0E-394 -1e-5 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul831 multiply 1.0E-199 1e-200 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddmul832 multiply 1.0E-199 1e-199 -> 1E-398 Subnormal Rounded
ddmul833 multiply 1.0E-199 1e-198 -> 1.0E-397 Subnormal
ddmul834 multiply 2.0E-199 2e-198 -> 4.0E-397 Subnormal
ddmul835 multiply 4.0E-199 4e-198 -> 1.60E-396 Subnormal
ddmul836 multiply 10.0E-199 10e-198 -> 1.000E-395 Subnormal
ddmul837 multiply 30.0E-199 30e-198 -> 9.000E-395 Subnormal
ddmul838 multiply 40.0E-199 40e-188 -> 1.6000E-384 Subnormal
ddmul839 multiply 40.0E-199 40e-187 -> 1.6000E-383
ddmul840 multiply 40.0E-199 40e-186 -> 1.6000E-382
-- Long operand overflow may be a different path
ddmul870 multiply 100 9.999E+383 -> Infinity Inexact Overflow Rounded
ddmul871 multiply 100 -9.999E+383 -> -Infinity Inexact Overflow Rounded
ddmul872 multiply 9.999E+383 100 -> Infinity Inexact Overflow Rounded
ddmul873 multiply -9.999E+383 100 -> -Infinity Inexact Overflow Rounded
-- check for double-rounded subnormals
ddmul881 multiply 1.2347E-355 1.2347E-40 -> 1.524E-395 Inexact Rounded Subnormal Underflow
ddmul882 multiply 1.234E-355 1.234E-40 -> 1.523E-395 Inexact Rounded Subnormal Underflow
ddmul883 multiply 1.23E-355 1.23E-40 -> 1.513E-395 Inexact Rounded Subnormal Underflow
ddmul884 multiply 1.2E-355 1.2E-40 -> 1.44E-395 Subnormal
ddmul885 multiply 1.2E-355 1.2E-41 -> 1.44E-396 Subnormal
ddmul886 multiply 1.2E-355 1.2E-42 -> 1.4E-397 Subnormal Inexact Rounded Underflow
ddmul887 multiply 1.2E-355 1.3E-42 -> 1.6E-397 Subnormal Inexact Rounded Underflow
ddmul888 multiply 1.3E-355 1.3E-42 -> 1.7E-397 Subnormal Inexact Rounded Underflow
ddmul889 multiply 1.3E-355 1.3E-43 -> 2E-398 Subnormal Inexact Rounded Underflow
ddmul890 multiply 1.3E-356 1.3E-43 -> 0E-398 Clamped Subnormal Inexact Rounded Underflow
ddmul891 multiply 1.2345E-39 1.234E-355 -> 1.5234E-394 Inexact Rounded Subnormal Underflow
ddmul892 multiply 1.23456E-39 1.234E-355 -> 1.5234E-394 Inexact Rounded Subnormal Underflow
ddmul893 multiply 1.2345E-40 1.234E-355 -> 1.523E-395 Inexact Rounded Subnormal Underflow
ddmul894 multiply 1.23456E-40 1.234E-355 -> 1.523E-395 Inexact Rounded Subnormal Underflow
ddmul895 multiply 1.2345E-41 1.234E-355 -> 1.52E-396 Inexact Rounded Subnormal Underflow
ddmul896 multiply 1.23456E-41 1.234E-355 -> 1.52E-396 Inexact Rounded Subnormal Underflow
-- Now explore the case where we get a normal result with Underflow
-- 1 234567890123456
ddmul900 multiply 0.3000000000E-191 0.3000000000E-191 -> 9.00000000000000E-384 Subnormal Rounded
ddmul901 multiply 0.3000000001E-191 0.3000000001E-191 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded
ddmul902 multiply 9.999999999999999E-383 0.0999999999999 -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded
ddmul903 multiply 9.999999999999999E-383 0.09999999999999 -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded
ddmul904 multiply 9.999999999999999E-383 0.099999999999999 -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded
ddmul905 multiply 9.999999999999999E-383 0.0999999999999999 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded
-- The next rounds to Nmin (b**emin); this is the distinguishing case
-- for detecting tininess (before or after rounding) -- if after
-- rounding then the result would be the same, but the Underflow flag
-- would not be set
ddmul906 multiply 9.999999999999999E-383 0.09999999999999999 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-- prove those operands were exact
ddmul907 multiply 9.999999999999999E-383 1 -> 9.999999999999999E-383
ddmul908 multiply 1 0.09999999999999999 -> 0.09999999999999999
-- reducing tiniest
ddmul910 multiply 1e-398 0.99 -> 1E-398 Subnormal Inexact Rounded Underflow
ddmul911 multiply 1e-398 0.75 -> 1E-398 Subnormal Inexact Rounded Underflow
ddmul912 multiply 1e-398 0.5 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped
ddmul913 multiply 1e-398 0.25 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped
ddmul914 multiply 1e-398 0.01 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped
-- hugest
ddmul920 multiply 9999999999999999 9999999999999999 -> 9.999999999999998E+31 Inexact Rounded
-- power-of-ten edge cases
ddmul1001 multiply 1 10 -> 10
ddmul1002 multiply 1 100 -> 100
ddmul1003 multiply 1 1000 -> 1000
ddmul1004 multiply 1 10000 -> 10000
ddmul1005 multiply 1 100000 -> 100000
ddmul1006 multiply 1 1000000 -> 1000000
ddmul1007 multiply 1 10000000 -> 10000000
ddmul1008 multiply 1 100000000 -> 100000000
ddmul1009 multiply 1 1000000000 -> 1000000000
ddmul1010 multiply 1 10000000000 -> 10000000000
ddmul1011 multiply 1 100000000000 -> 100000000000
ddmul1012 multiply 1 1000000000000 -> 1000000000000
ddmul1013 multiply 1 10000000000000 -> 10000000000000
ddmul1014 multiply 1 100000000000000 -> 100000000000000
ddmul1015 multiply 1 1000000000000000 -> 1000000000000000
ddmul1021 multiply 10 1 -> 10
ddmul1022 multiply 10 10 -> 100
ddmul1023 multiply 10 100 -> 1000
ddmul1024 multiply 10 1000 -> 10000
ddmul1025 multiply 10 10000 -> 100000
ddmul1026 multiply 10 100000 -> 1000000
ddmul1027 multiply 10 1000000 -> 10000000
ddmul1028 multiply 10 10000000 -> 100000000
ddmul1029 multiply 10 100000000 -> 1000000000
ddmul1030 multiply 10 1000000000 -> 10000000000
ddmul1031 multiply 10 10000000000 -> 100000000000
ddmul1032 multiply 10 100000000000 -> 1000000000000
ddmul1033 multiply 10 1000000000000 -> 10000000000000
ddmul1034 multiply 10 10000000000000 -> 100000000000000
ddmul1035 multiply 10 100000000000000 -> 1000000000000000
ddmul1041 multiply 100 0.1 -> 10.0
ddmul1042 multiply 100 1 -> 100
ddmul1043 multiply 100 10 -> 1000
ddmul1044 multiply 100 100 -> 10000
ddmul1045 multiply 100 1000 -> 100000
ddmul1046 multiply 100 10000 -> 1000000
ddmul1047 multiply 100 100000 -> 10000000
ddmul1048 multiply 100 1000000 -> 100000000
ddmul1049 multiply 100 10000000 -> 1000000000
ddmul1050 multiply 100 100000000 -> 10000000000
ddmul1051 multiply 100 1000000000 -> 100000000000
ddmul1052 multiply 100 10000000000 -> 1000000000000
ddmul1053 multiply 100 100000000000 -> 10000000000000
ddmul1054 multiply 100 1000000000000 -> 100000000000000
ddmul1055 multiply 100 10000000000000 -> 1000000000000000
ddmul1061 multiply 1000 0.01 -> 10.00
ddmul1062 multiply 1000 0.1 -> 100.0
ddmul1063 multiply 1000 1 -> 1000
ddmul1064 multiply 1000 10 -> 10000
ddmul1065 multiply 1000 100 -> 100000
ddmul1066 multiply 1000 1000 -> 1000000
ddmul1067 multiply 1000 10000 -> 10000000
ddmul1068 multiply 1000 100000 -> 100000000
ddmul1069 multiply 1000 1000000 -> 1000000000
ddmul1070 multiply 1000 10000000 -> 10000000000
ddmul1071 multiply 1000 100000000 -> 100000000000
ddmul1072 multiply 1000 1000000000 -> 1000000000000
ddmul1073 multiply 1000 10000000000 -> 10000000000000
ddmul1074 multiply 1000 100000000000 -> 100000000000000
ddmul1075 multiply 1000 1000000000000 -> 1000000000000000
ddmul1081 multiply 10000 0.001 -> 10.000
ddmul1082 multiply 10000 0.01 -> 100.00
ddmul1083 multiply 10000 0.1 -> 1000.0
ddmul1084 multiply 10000 1 -> 10000
ddmul1085 multiply 10000 10 -> 100000
ddmul1086 multiply 10000 100 -> 1000000
ddmul1087 multiply 10000 1000 -> 10000000
ddmul1088 multiply 10000 10000 -> 100000000
ddmul1089 multiply 10000 100000 -> 1000000000
ddmul1090 multiply 10000 1000000 -> 10000000000
ddmul1091 multiply 10000 10000000 -> 100000000000
ddmul1092 multiply 10000 100000000 -> 1000000000000
ddmul1093 multiply 10000 1000000000 -> 10000000000000
ddmul1094 multiply 10000 10000000000 -> 100000000000000
ddmul1095 multiply 10000 100000000000 -> 1000000000000000
ddmul1097 multiply 10000 99999999999 -> 999999999990000
ddmul1098 multiply 10000 99999999999 -> 999999999990000
-- Null tests
ddmul9990 multiply 10 # -> NaN Invalid_operation
ddmul9991 multiply # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,126 @@
------------------------------------------------------------------------
-- ddNextMinus.decTest -- decDouble next that is less [754r nextdown] --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
ddnextm001 nextminus 0.9999999999999995 -> 0.9999999999999994
ddnextm002 nextminus 0.9999999999999996 -> 0.9999999999999995
ddnextm003 nextminus 0.9999999999999997 -> 0.9999999999999996
ddnextm004 nextminus 0.9999999999999998 -> 0.9999999999999997
ddnextm005 nextminus 0.9999999999999999 -> 0.9999999999999998
ddnextm006 nextminus 1.000000000000000 -> 0.9999999999999999
ddnextm007 nextminus 1.0 -> 0.9999999999999999
ddnextm008 nextminus 1 -> 0.9999999999999999
ddnextm009 nextminus 1.000000000000001 -> 1.000000000000000
ddnextm010 nextminus 1.000000000000002 -> 1.000000000000001
ddnextm011 nextminus 1.000000000000003 -> 1.000000000000002
ddnextm012 nextminus 1.000000000000004 -> 1.000000000000003
ddnextm013 nextminus 1.000000000000005 -> 1.000000000000004
ddnextm014 nextminus 1.000000000000006 -> 1.000000000000005
ddnextm015 nextminus 1.000000000000007 -> 1.000000000000006
ddnextm016 nextminus 1.000000000000008 -> 1.000000000000007
ddnextm017 nextminus 1.000000000000009 -> 1.000000000000008
ddnextm018 nextminus 1.000000000000010 -> 1.000000000000009
ddnextm019 nextminus 1.000000000000011 -> 1.000000000000010
ddnextm020 nextminus 1.000000000000012 -> 1.000000000000011
ddnextm021 nextminus -0.9999999999999995 -> -0.9999999999999996
ddnextm022 nextminus -0.9999999999999996 -> -0.9999999999999997
ddnextm023 nextminus -0.9999999999999997 -> -0.9999999999999998
ddnextm024 nextminus -0.9999999999999998 -> -0.9999999999999999
ddnextm025 nextminus -0.9999999999999999 -> -1.000000000000000
ddnextm026 nextminus -1.000000000000000 -> -1.000000000000001
ddnextm027 nextminus -1.0 -> -1.000000000000001
ddnextm028 nextminus -1 -> -1.000000000000001
ddnextm029 nextminus -1.000000000000001 -> -1.000000000000002
ddnextm030 nextminus -1.000000000000002 -> -1.000000000000003
ddnextm031 nextminus -1.000000000000003 -> -1.000000000000004
ddnextm032 nextminus -1.000000000000004 -> -1.000000000000005
ddnextm033 nextminus -1.000000000000005 -> -1.000000000000006
ddnextm034 nextminus -1.000000000000006 -> -1.000000000000007
ddnextm035 nextminus -1.000000000000007 -> -1.000000000000008
ddnextm036 nextminus -1.000000000000008 -> -1.000000000000009
ddnextm037 nextminus -1.000000000000009 -> -1.000000000000010
ddnextm038 nextminus -1.000000000000010 -> -1.000000000000011
ddnextm039 nextminus -1.000000000000011 -> -1.000000000000012
-- ultra-tiny inputs
ddnextm062 nextminus 1E-398 -> 0E-398
ddnextm065 nextminus -1E-398 -> -2E-398
-- Zeros
ddnextm100 nextminus -0 -> -1E-398
ddnextm101 nextminus 0 -> -1E-398
ddnextm102 nextminus 0.00 -> -1E-398
ddnextm103 nextminus -0.00 -> -1E-398
ddnextm104 nextminus 0E-300 -> -1E-398
ddnextm105 nextminus 0E+300 -> -1E-398
ddnextm106 nextminus 0E+30000 -> -1E-398
ddnextm107 nextminus -0E+30000 -> -1E-398
-- specials
ddnextm150 nextminus Inf -> 9.999999999999999E+384
ddnextm151 nextminus -Inf -> -Infinity
ddnextm152 nextminus NaN -> NaN
ddnextm153 nextminus sNaN -> NaN Invalid_operation
ddnextm154 nextminus NaN77 -> NaN77
ddnextm155 nextminus sNaN88 -> NaN88 Invalid_operation
ddnextm156 nextminus -NaN -> -NaN
ddnextm157 nextminus -sNaN -> -NaN Invalid_operation
ddnextm158 nextminus -NaN77 -> -NaN77
ddnextm159 nextminus -sNaN88 -> -NaN88 Invalid_operation
-- Nmax, Nmin, Ntiny, subnormals
ddnextm170 nextminus 9.999999999999999E+384 -> 9.999999999999998E+384
ddnextm171 nextminus 9.999999999999998E+384 -> 9.999999999999997E+384
ddnextm172 nextminus 1E-383 -> 9.99999999999999E-384
ddnextm173 nextminus 1.000000000000000E-383 -> 9.99999999999999E-384
ddnextm174 nextminus 9E-398 -> 8E-398
ddnextm175 nextminus 9.9E-397 -> 9.8E-397
ddnextm176 nextminus 9.99999999999E-387 -> 9.99999999998E-387
ddnextm177 nextminus 9.99999999999999E-384 -> 9.99999999999998E-384
ddnextm178 nextminus 9.99999999999998E-384 -> 9.99999999999997E-384
ddnextm179 nextminus 9.99999999999997E-384 -> 9.99999999999996E-384
ddnextm180 nextminus 0E-398 -> -1E-398
ddnextm181 nextminus 1E-398 -> 0E-398
ddnextm182 nextminus 2E-398 -> 1E-398
ddnextm183 nextminus -0E-398 -> -1E-398
ddnextm184 nextminus -1E-398 -> -2E-398
ddnextm185 nextminus -2E-398 -> -3E-398
ddnextm186 nextminus -10E-398 -> -1.1E-397
ddnextm187 nextminus -100E-398 -> -1.01E-396
ddnextm188 nextminus -100000E-398 -> -1.00001E-393
ddnextm189 nextminus -1.00000000000E-383 -> -1.000000000000001E-383
ddnextm190 nextminus -1.000000000000000E-383 -> -1.000000000000001E-383
ddnextm191 nextminus -1E-383 -> -1.000000000000001E-383
ddnextm192 nextminus -9.999999999999998E+384 -> -9.999999999999999E+384
ddnextm193 nextminus -9.999999999999999E+384 -> -Infinity
-- Null tests
ddnextm900 nextminus # -> NaN Invalid_operation

View file

@ -0,0 +1,124 @@
------------------------------------------------------------------------
-- ddNextPlus.decTest -- decDouble next that is greater [754r nextup] --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
ddnextp001 nextplus 0.9999999999999995 -> 0.9999999999999996
ddnextp002 nextplus 0.9999999999999996 -> 0.9999999999999997
ddnextp003 nextplus 0.9999999999999997 -> 0.9999999999999998
ddnextp004 nextplus 0.9999999999999998 -> 0.9999999999999999
ddnextp005 nextplus 0.9999999999999999 -> 1.000000000000000
ddnextp006 nextplus 1.000000000000000 -> 1.000000000000001
ddnextp007 nextplus 1.0 -> 1.000000000000001
ddnextp008 nextplus 1 -> 1.000000000000001
ddnextp009 nextplus 1.000000000000001 -> 1.000000000000002
ddnextp010 nextplus 1.000000000000002 -> 1.000000000000003
ddnextp011 nextplus 1.000000000000003 -> 1.000000000000004
ddnextp012 nextplus 1.000000000000004 -> 1.000000000000005
ddnextp013 nextplus 1.000000000000005 -> 1.000000000000006
ddnextp014 nextplus 1.000000000000006 -> 1.000000000000007
ddnextp015 nextplus 1.000000000000007 -> 1.000000000000008
ddnextp016 nextplus 1.000000000000008 -> 1.000000000000009
ddnextp017 nextplus 1.000000000000009 -> 1.000000000000010
ddnextp018 nextplus 1.000000000000010 -> 1.000000000000011
ddnextp019 nextplus 1.000000000000011 -> 1.000000000000012
ddnextp021 nextplus -0.9999999999999995 -> -0.9999999999999994
ddnextp022 nextplus -0.9999999999999996 -> -0.9999999999999995
ddnextp023 nextplus -0.9999999999999997 -> -0.9999999999999996
ddnextp024 nextplus -0.9999999999999998 -> -0.9999999999999997
ddnextp025 nextplus -0.9999999999999999 -> -0.9999999999999998
ddnextp026 nextplus -1.000000000000000 -> -0.9999999999999999
ddnextp027 nextplus -1.0 -> -0.9999999999999999
ddnextp028 nextplus -1 -> -0.9999999999999999
ddnextp029 nextplus -1.000000000000001 -> -1.000000000000000
ddnextp030 nextplus -1.000000000000002 -> -1.000000000000001
ddnextp031 nextplus -1.000000000000003 -> -1.000000000000002
ddnextp032 nextplus -1.000000000000004 -> -1.000000000000003
ddnextp033 nextplus -1.000000000000005 -> -1.000000000000004
ddnextp034 nextplus -1.000000000000006 -> -1.000000000000005
ddnextp035 nextplus -1.000000000000007 -> -1.000000000000006
ddnextp036 nextplus -1.000000000000008 -> -1.000000000000007
ddnextp037 nextplus -1.000000000000009 -> -1.000000000000008
ddnextp038 nextplus -1.000000000000010 -> -1.000000000000009
ddnextp039 nextplus -1.000000000000011 -> -1.000000000000010
ddnextp040 nextplus -1.000000000000012 -> -1.000000000000011
-- Zeros
ddnextp100 nextplus 0 -> 1E-398
ddnextp101 nextplus 0.00 -> 1E-398
ddnextp102 nextplus 0E-300 -> 1E-398
ddnextp103 nextplus 0E+300 -> 1E-398
ddnextp104 nextplus 0E+30000 -> 1E-398
ddnextp105 nextplus -0 -> 1E-398
ddnextp106 nextplus -0.00 -> 1E-398
ddnextp107 nextplus -0E-300 -> 1E-398
ddnextp108 nextplus -0E+300 -> 1E-398
ddnextp109 nextplus -0E+30000 -> 1E-398
-- specials
ddnextp150 nextplus Inf -> Infinity
ddnextp151 nextplus -Inf -> -9.999999999999999E+384
ddnextp152 nextplus NaN -> NaN
ddnextp153 nextplus sNaN -> NaN Invalid_operation
ddnextp154 nextplus NaN77 -> NaN77
ddnextp155 nextplus sNaN88 -> NaN88 Invalid_operation
ddnextp156 nextplus -NaN -> -NaN
ddnextp157 nextplus -sNaN -> -NaN Invalid_operation
ddnextp158 nextplus -NaN77 -> -NaN77
ddnextp159 nextplus -sNaN88 -> -NaN88 Invalid_operation
-- Nmax, Nmin, Ntiny, subnormals
ddnextp170 nextplus -9.999999999999999E+384 -> -9.999999999999998E+384
ddnextp171 nextplus -9.999999999999998E+384 -> -9.999999999999997E+384
ddnextp172 nextplus -1E-383 -> -9.99999999999999E-384
ddnextp173 nextplus -1.000000000000000E-383 -> -9.99999999999999E-384
ddnextp174 nextplus -9E-398 -> -8E-398
ddnextp175 nextplus -9.9E-397 -> -9.8E-397
ddnextp176 nextplus -9.99999999999E-387 -> -9.99999999998E-387
ddnextp177 nextplus -9.99999999999999E-384 -> -9.99999999999998E-384
ddnextp178 nextplus -9.99999999999998E-384 -> -9.99999999999997E-384
ddnextp179 nextplus -9.99999999999997E-384 -> -9.99999999999996E-384
ddnextp180 nextplus -0E-398 -> 1E-398
ddnextp181 nextplus -1E-398 -> -0E-398
ddnextp182 nextplus -2E-398 -> -1E-398
ddnextp183 nextplus 0E-398 -> 1E-398
ddnextp184 nextplus 1E-398 -> 2E-398
ddnextp185 nextplus 2E-398 -> 3E-398
ddnextp186 nextplus 10E-398 -> 1.1E-397
ddnextp187 nextplus 100E-398 -> 1.01E-396
ddnextp188 nextplus 100000E-398 -> 1.00001E-393
ddnextp189 nextplus 1.00000000000E-383 -> 1.000000000000001E-383
ddnextp190 nextplus 1.000000000000000E-383 -> 1.000000000000001E-383
ddnextp191 nextplus 1E-383 -> 1.000000000000001E-383
ddnextp192 nextplus 9.999999999999998E+384 -> 9.999999999999999E+384
ddnextp193 nextplus 9.999999999999999E+384 -> Infinity
-- Null tests
ddnextp900 nextplus # -> NaN Invalid_operation

View file

@ -0,0 +1,374 @@
------------------------------------------------------------------------
-- ddNextToward.decTest -- decDouble next toward rhs [754r nextafter] --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check with a scattering of numerics
ddnextt001 nexttoward 10 10 -> 10
ddnextt002 nexttoward -10 -10 -> -10
ddnextt003 nexttoward 1 10 -> 1.000000000000001
ddnextt004 nexttoward 1 -10 -> 0.9999999999999999
ddnextt005 nexttoward -1 10 -> -0.9999999999999999
ddnextt006 nexttoward -1 -10 -> -1.000000000000001
ddnextt007 nexttoward 0 10 -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt008 nexttoward 0 -10 -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt009 nexttoward 9.999999999999999E+384 +Infinity -> Infinity Overflow Inexact Rounded
ddnextt010 nexttoward -9.999999999999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded
ddnextt011 nexttoward 9.999999999999999 10 -> 10.00000000000000
ddnextt012 nexttoward 10 9.999999999999999 -> 9.999999999999999
ddnextt013 nexttoward -9.999999999999999 -10 -> -10.00000000000000
ddnextt014 nexttoward -10 -9.999999999999999 -> -9.999999999999999
ddnextt015 nexttoward 9.999999999999998 10 -> 9.999999999999999
ddnextt016 nexttoward 10 9.999999999999998 -> 9.999999999999999
ddnextt017 nexttoward -9.999999999999998 -10 -> -9.999999999999999
ddnextt018 nexttoward -10 -9.999999999999998 -> -9.999999999999999
------- lhs=rhs
-- finites
ddnextt101 nexttoward 7 7 -> 7
ddnextt102 nexttoward -7 -7 -> -7
ddnextt103 nexttoward 75 75 -> 75
ddnextt104 nexttoward -75 -75 -> -75
ddnextt105 nexttoward 7.50 7.5 -> 7.50
ddnextt106 nexttoward -7.50 -7.50 -> -7.50
ddnextt107 nexttoward 7.500 7.5000 -> 7.500
ddnextt108 nexttoward -7.500 -7.5 -> -7.500
-- zeros
ddnextt111 nexttoward 0 0 -> 0
ddnextt112 nexttoward -0 -0 -> -0
ddnextt113 nexttoward 0E+4 0 -> 0E+4
ddnextt114 nexttoward -0E+4 -0 -> -0E+4
ddnextt115 nexttoward 0.00000000000 0.000000000000 -> 0E-11
ddnextt116 nexttoward -0.00000000000 -0.00 -> -0E-11
ddnextt117 nexttoward 0E-141 0 -> 0E-141
ddnextt118 nexttoward -0E-141 -000 -> -0E-141
-- full coefficients, alternating bits
ddnextt121 nexttoward 268268268 268268268 -> 268268268
ddnextt122 nexttoward -268268268 -268268268 -> -268268268
ddnextt123 nexttoward 134134134 134134134 -> 134134134
ddnextt124 nexttoward -134134134 -134134134 -> -134134134
-- Nmax, Nmin, Ntiny
ddnextt131 nexttoward 9.999999999999999E+384 9.999999999999999E+384 -> 9.999999999999999E+384
ddnextt132 nexttoward 1E-383 1E-383 -> 1E-383
ddnextt133 nexttoward 1.000000000000000E-383 1.000000000000000E-383 -> 1.000000000000000E-383
ddnextt134 nexttoward 1E-398 1E-398 -> 1E-398
ddnextt135 nexttoward -1E-398 -1E-398 -> -1E-398
ddnextt136 nexttoward -1.000000000000000E-383 -1.000000000000000E-383 -> -1.000000000000000E-383
ddnextt137 nexttoward -1E-383 -1E-383 -> -1E-383
ddnextt138 nexttoward -9.999999999999999E+384 -9.999999999999999E+384 -> -9.999999999999999E+384
------- lhs<rhs
ddnextt201 nexttoward 0.9999999999999995 Infinity -> 0.9999999999999996
ddnextt202 nexttoward 0.9999999999999996 Infinity -> 0.9999999999999997
ddnextt203 nexttoward 0.9999999999999997 Infinity -> 0.9999999999999998
ddnextt204 nexttoward 0.9999999999999998 Infinity -> 0.9999999999999999
ddnextt205 nexttoward 0.9999999999999999 Infinity -> 1.000000000000000
ddnextt206 nexttoward 1.000000000000000 Infinity -> 1.000000000000001
ddnextt207 nexttoward 1.0 Infinity -> 1.000000000000001
ddnextt208 nexttoward 1 Infinity -> 1.000000000000001
ddnextt209 nexttoward 1.000000000000001 Infinity -> 1.000000000000002
ddnextt210 nexttoward 1.000000000000002 Infinity -> 1.000000000000003
ddnextt211 nexttoward 1.000000000000003 Infinity -> 1.000000000000004
ddnextt212 nexttoward 1.000000000000004 Infinity -> 1.000000000000005
ddnextt213 nexttoward 1.000000000000005 Infinity -> 1.000000000000006
ddnextt214 nexttoward 1.000000000000006 Infinity -> 1.000000000000007
ddnextt215 nexttoward 1.000000000000007 Infinity -> 1.000000000000008
ddnextt216 nexttoward 1.000000000000008 Infinity -> 1.000000000000009
ddnextt217 nexttoward 1.000000000000009 Infinity -> 1.000000000000010
ddnextt218 nexttoward 1.000000000000010 Infinity -> 1.000000000000011
ddnextt219 nexttoward 1.000000000000011 Infinity -> 1.000000000000012
ddnextt221 nexttoward -0.9999999999999995 Infinity -> -0.9999999999999994
ddnextt222 nexttoward -0.9999999999999996 Infinity -> -0.9999999999999995
ddnextt223 nexttoward -0.9999999999999997 Infinity -> -0.9999999999999996
ddnextt224 nexttoward -0.9999999999999998 Infinity -> -0.9999999999999997
ddnextt225 nexttoward -0.9999999999999999 Infinity -> -0.9999999999999998
ddnextt226 nexttoward -1.000000000000000 Infinity -> -0.9999999999999999
ddnextt227 nexttoward -1.0 Infinity -> -0.9999999999999999
ddnextt228 nexttoward -1 Infinity -> -0.9999999999999999
ddnextt229 nexttoward -1.000000000000001 Infinity -> -1.000000000000000
ddnextt230 nexttoward -1.000000000000002 Infinity -> -1.000000000000001
ddnextt231 nexttoward -1.000000000000003 Infinity -> -1.000000000000002
ddnextt232 nexttoward -1.000000000000004 Infinity -> -1.000000000000003
ddnextt233 nexttoward -1.000000000000005 Infinity -> -1.000000000000004
ddnextt234 nexttoward -1.000000000000006 Infinity -> -1.000000000000005
ddnextt235 nexttoward -1.000000000000007 Infinity -> -1.000000000000006
ddnextt236 nexttoward -1.000000000000008 Infinity -> -1.000000000000007
ddnextt237 nexttoward -1.000000000000009 Infinity -> -1.000000000000008
ddnextt238 nexttoward -1.000000000000010 Infinity -> -1.000000000000009
ddnextt239 nexttoward -1.000000000000011 Infinity -> -1.000000000000010
ddnextt240 nexttoward -1.000000000000012 Infinity -> -1.000000000000011
-- Zeros
ddnextt300 nexttoward 0 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt301 nexttoward 0.00 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt302 nexttoward 0E-300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt303 nexttoward 0E+300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt304 nexttoward 0E+30000 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt305 nexttoward -0 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt306 nexttoward -0.00 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt307 nexttoward -0E-300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt308 nexttoward -0E+300 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt309 nexttoward -0E+30000 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
-- specials
ddnextt350 nexttoward Inf Infinity -> Infinity
ddnextt351 nexttoward -Inf Infinity -> -9.999999999999999E+384
ddnextt352 nexttoward NaN Infinity -> NaN
ddnextt353 nexttoward sNaN Infinity -> NaN Invalid_operation
ddnextt354 nexttoward NaN77 Infinity -> NaN77
ddnextt355 nexttoward sNaN88 Infinity -> NaN88 Invalid_operation
ddnextt356 nexttoward -NaN Infinity -> -NaN
ddnextt357 nexttoward -sNaN Infinity -> -NaN Invalid_operation
ddnextt358 nexttoward -NaN77 Infinity -> -NaN77
ddnextt359 nexttoward -sNaN88 Infinity -> -NaN88 Invalid_operation
-- Nmax, Nmin, Ntiny, subnormals
ddnextt370 nexttoward -9.999999999999999E+384 Infinity -> -9.999999999999998E+384
ddnextt371 nexttoward -9.999999999999998E+384 Infinity -> -9.999999999999997E+384
ddnextt372 nexttoward -1E-383 Infinity -> -9.99999999999999E-384 Underflow Subnormal Inexact Rounded
ddnextt373 nexttoward -1.000000000000000E-383 Infinity -> -9.99999999999999E-384 Underflow Subnormal Inexact Rounded
ddnextt374 nexttoward -9E-398 Infinity -> -8E-398 Underflow Subnormal Inexact Rounded
ddnextt375 nexttoward -9.9E-397 Infinity -> -9.8E-397 Underflow Subnormal Inexact Rounded
ddnextt376 nexttoward -9.99999999999E-387 Infinity -> -9.99999999998E-387 Underflow Subnormal Inexact Rounded
ddnextt377 nexttoward -9.99999999999999E-384 Infinity -> -9.99999999999998E-384 Underflow Subnormal Inexact Rounded
ddnextt378 nexttoward -9.99999999999998E-384 Infinity -> -9.99999999999997E-384 Underflow Subnormal Inexact Rounded
ddnextt379 nexttoward -9.99999999999997E-384 Infinity -> -9.99999999999996E-384 Underflow Subnormal Inexact Rounded
ddnextt380 nexttoward -0E-398 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt381 nexttoward -1E-398 Infinity -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
ddnextt382 nexttoward -2E-398 Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt383 nexttoward 0E-398 Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt384 nexttoward 1E-398 Infinity -> 2E-398 Underflow Subnormal Inexact Rounded
ddnextt385 nexttoward 2E-398 Infinity -> 3E-398 Underflow Subnormal Inexact Rounded
ddnextt386 nexttoward 10E-398 Infinity -> 1.1E-397 Underflow Subnormal Inexact Rounded
ddnextt387 nexttoward 100E-398 Infinity -> 1.01E-396 Underflow Subnormal Inexact Rounded
ddnextt388 nexttoward 100000E-398 Infinity -> 1.00001E-393 Underflow Subnormal Inexact Rounded
ddnextt389 nexttoward 1.00000000000E-383 Infinity -> 1.000000000000001E-383
ddnextt390 nexttoward 1.000000000000000E-383 Infinity -> 1.000000000000001E-383
ddnextt391 nexttoward 1E-383 Infinity -> 1.000000000000001E-383
ddnextt392 nexttoward 9.999999999999997E+384 Infinity -> 9.999999999999998E+384
ddnextt393 nexttoward 9.999999999999998E+384 Infinity -> 9.999999999999999E+384
ddnextt394 nexttoward 9.999999999999999E+384 Infinity -> Infinity Overflow Inexact Rounded
------- lhs>rhs
ddnextt401 nexttoward 0.9999999999999995 -Infinity -> 0.9999999999999994
ddnextt402 nexttoward 0.9999999999999996 -Infinity -> 0.9999999999999995
ddnextt403 nexttoward 0.9999999999999997 -Infinity -> 0.9999999999999996
ddnextt404 nexttoward 0.9999999999999998 -Infinity -> 0.9999999999999997
ddnextt405 nexttoward 0.9999999999999999 -Infinity -> 0.9999999999999998
ddnextt406 nexttoward 1.000000000000000 -Infinity -> 0.9999999999999999
ddnextt407 nexttoward 1.0 -Infinity -> 0.9999999999999999
ddnextt408 nexttoward 1 -Infinity -> 0.9999999999999999
ddnextt409 nexttoward 1.000000000000001 -Infinity -> 1.000000000000000
ddnextt410 nexttoward 1.000000000000002 -Infinity -> 1.000000000000001
ddnextt411 nexttoward 1.000000000000003 -Infinity -> 1.000000000000002
ddnextt412 nexttoward 1.000000000000004 -Infinity -> 1.000000000000003
ddnextt413 nexttoward 1.000000000000005 -Infinity -> 1.000000000000004
ddnextt414 nexttoward 1.000000000000006 -Infinity -> 1.000000000000005
ddnextt415 nexttoward 1.000000000000007 -Infinity -> 1.000000000000006
ddnextt416 nexttoward 1.000000000000008 -Infinity -> 1.000000000000007
ddnextt417 nexttoward 1.000000000000009 -Infinity -> 1.000000000000008
ddnextt418 nexttoward 1.000000000000010 -Infinity -> 1.000000000000009
ddnextt419 nexttoward 1.000000000000011 -Infinity -> 1.000000000000010
ddnextt420 nexttoward 1.000000000000012 -Infinity -> 1.000000000000011
ddnextt421 nexttoward -0.9999999999999995 -Infinity -> -0.9999999999999996
ddnextt422 nexttoward -0.9999999999999996 -Infinity -> -0.9999999999999997
ddnextt423 nexttoward -0.9999999999999997 -Infinity -> -0.9999999999999998
ddnextt424 nexttoward -0.9999999999999998 -Infinity -> -0.9999999999999999
ddnextt425 nexttoward -0.9999999999999999 -Infinity -> -1.000000000000000
ddnextt426 nexttoward -1.000000000000000 -Infinity -> -1.000000000000001
ddnextt427 nexttoward -1.0 -Infinity -> -1.000000000000001
ddnextt428 nexttoward -1 -Infinity -> -1.000000000000001
ddnextt429 nexttoward -1.000000000000001 -Infinity -> -1.000000000000002
ddnextt430 nexttoward -1.000000000000002 -Infinity -> -1.000000000000003
ddnextt431 nexttoward -1.000000000000003 -Infinity -> -1.000000000000004
ddnextt432 nexttoward -1.000000000000004 -Infinity -> -1.000000000000005
ddnextt433 nexttoward -1.000000000000005 -Infinity -> -1.000000000000006
ddnextt434 nexttoward -1.000000000000006 -Infinity -> -1.000000000000007
ddnextt435 nexttoward -1.000000000000007 -Infinity -> -1.000000000000008
ddnextt436 nexttoward -1.000000000000008 -Infinity -> -1.000000000000009
ddnextt437 nexttoward -1.000000000000009 -Infinity -> -1.000000000000010
ddnextt438 nexttoward -1.000000000000010 -Infinity -> -1.000000000000011
ddnextt439 nexttoward -1.000000000000011 -Infinity -> -1.000000000000012
-- Zeros
ddnextt500 nexttoward -0 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt501 nexttoward 0 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt502 nexttoward 0.00 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt503 nexttoward -0.00 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt504 nexttoward 0E-300 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt505 nexttoward 0E+300 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt506 nexttoward 0E+30000 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt507 nexttoward -0E+30000 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
-- specials
ddnextt550 nexttoward Inf -Infinity -> 9.999999999999999E+384
ddnextt551 nexttoward -Inf -Infinity -> -Infinity
ddnextt552 nexttoward NaN -Infinity -> NaN
ddnextt553 nexttoward sNaN -Infinity -> NaN Invalid_operation
ddnextt554 nexttoward NaN77 -Infinity -> NaN77
ddnextt555 nexttoward sNaN88 -Infinity -> NaN88 Invalid_operation
ddnextt556 nexttoward -NaN -Infinity -> -NaN
ddnextt557 nexttoward -sNaN -Infinity -> -NaN Invalid_operation
ddnextt558 nexttoward -NaN77 -Infinity -> -NaN77
ddnextt559 nexttoward -sNaN88 -Infinity -> -NaN88 Invalid_operation
-- Nmax, Nmin, Ntiny, subnormals
ddnextt670 nexttoward 9.999999999999999E+384 -Infinity -> 9.999999999999998E+384
ddnextt671 nexttoward 9.999999999999998E+384 -Infinity -> 9.999999999999997E+384
ddnextt672 nexttoward 1E-383 -Infinity -> 9.99999999999999E-384 Underflow Subnormal Inexact Rounded
ddnextt673 nexttoward 1.000000000000000E-383 -Infinity -> 9.99999999999999E-384 Underflow Subnormal Inexact Rounded
ddnextt674 nexttoward 9E-398 -Infinity -> 8E-398 Underflow Subnormal Inexact Rounded
ddnextt675 nexttoward 9.9E-397 -Infinity -> 9.8E-397 Underflow Subnormal Inexact Rounded
ddnextt676 nexttoward 9.99999999999E-387 -Infinity -> 9.99999999998E-387 Underflow Subnormal Inexact Rounded
ddnextt677 nexttoward 9.99999999999999E-384 -Infinity -> 9.99999999999998E-384 Underflow Subnormal Inexact Rounded
ddnextt678 nexttoward 9.99999999999998E-384 -Infinity -> 9.99999999999997E-384 Underflow Subnormal Inexact Rounded
ddnextt679 nexttoward 9.99999999999997E-384 -Infinity -> 9.99999999999996E-384 Underflow Subnormal Inexact Rounded
ddnextt680 nexttoward 0E-398 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt681 nexttoward 1E-398 -Infinity -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddnextt682 nexttoward 2E-398 -Infinity -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt683 nexttoward -0E-398 -Infinity -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt684 nexttoward -1E-398 -Infinity -> -2E-398 Underflow Subnormal Inexact Rounded
ddnextt685 nexttoward -2E-398 -Infinity -> -3E-398 Underflow Subnormal Inexact Rounded
ddnextt686 nexttoward -10E-398 -Infinity -> -1.1E-397 Underflow Subnormal Inexact Rounded
ddnextt687 nexttoward -100E-398 -Infinity -> -1.01E-396 Underflow Subnormal Inexact Rounded
ddnextt688 nexttoward -100000E-398 -Infinity -> -1.00001E-393 Underflow Subnormal Inexact Rounded
ddnextt689 nexttoward -1.00000000000E-383 -Infinity -> -1.000000000000001E-383
ddnextt690 nexttoward -1.000000000000000E-383 -Infinity -> -1.000000000000001E-383
ddnextt691 nexttoward -1E-383 -Infinity -> -1.000000000000001E-383
ddnextt692 nexttoward -9.999999999999998E+384 -Infinity -> -9.999999999999999E+384
ddnextt693 nexttoward -9.999999999999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded
------- Specials
ddnextt780 nexttoward -Inf -Inf -> -Infinity
ddnextt781 nexttoward -Inf -1000 -> -9.999999999999999E+384
ddnextt782 nexttoward -Inf -1 -> -9.999999999999999E+384
ddnextt783 nexttoward -Inf -0 -> -9.999999999999999E+384
ddnextt784 nexttoward -Inf 0 -> -9.999999999999999E+384
ddnextt785 nexttoward -Inf 1 -> -9.999999999999999E+384
ddnextt786 nexttoward -Inf 1000 -> -9.999999999999999E+384
ddnextt787 nexttoward -1000 -Inf -> -1000.000000000001
ddnextt788 nexttoward -Inf -Inf -> -Infinity
ddnextt789 nexttoward -1 -Inf -> -1.000000000000001
ddnextt790 nexttoward -0 -Inf -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt791 nexttoward 0 -Inf -> -1E-398 Underflow Subnormal Inexact Rounded
ddnextt792 nexttoward 1 -Inf -> 0.9999999999999999
ddnextt793 nexttoward 1000 -Inf -> 999.9999999999999
ddnextt794 nexttoward Inf -Inf -> 9.999999999999999E+384
ddnextt800 nexttoward Inf -Inf -> 9.999999999999999E+384
ddnextt801 nexttoward Inf -1000 -> 9.999999999999999E+384
ddnextt802 nexttoward Inf -1 -> 9.999999999999999E+384
ddnextt803 nexttoward Inf -0 -> 9.999999999999999E+384
ddnextt804 nexttoward Inf 0 -> 9.999999999999999E+384
ddnextt805 nexttoward Inf 1 -> 9.999999999999999E+384
ddnextt806 nexttoward Inf 1000 -> 9.999999999999999E+384
ddnextt807 nexttoward Inf Inf -> Infinity
ddnextt808 nexttoward -1000 Inf -> -999.9999999999999
ddnextt809 nexttoward -Inf Inf -> -9.999999999999999E+384
ddnextt810 nexttoward -1 Inf -> -0.9999999999999999
ddnextt811 nexttoward -0 Inf -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt812 nexttoward 0 Inf -> 1E-398 Underflow Subnormal Inexact Rounded
ddnextt813 nexttoward 1 Inf -> 1.000000000000001
ddnextt814 nexttoward 1000 Inf -> 1000.000000000001
ddnextt815 nexttoward Inf Inf -> Infinity
ddnextt821 nexttoward NaN -Inf -> NaN
ddnextt822 nexttoward NaN -1000 -> NaN
ddnextt823 nexttoward NaN -1 -> NaN
ddnextt824 nexttoward NaN -0 -> NaN
ddnextt825 nexttoward NaN 0 -> NaN
ddnextt826 nexttoward NaN 1 -> NaN
ddnextt827 nexttoward NaN 1000 -> NaN
ddnextt828 nexttoward NaN Inf -> NaN
ddnextt829 nexttoward NaN NaN -> NaN
ddnextt830 nexttoward -Inf NaN -> NaN
ddnextt831 nexttoward -1000 NaN -> NaN
ddnextt832 nexttoward -1 NaN -> NaN
ddnextt833 nexttoward -0 NaN -> NaN
ddnextt834 nexttoward 0 NaN -> NaN
ddnextt835 nexttoward 1 NaN -> NaN
ddnextt836 nexttoward 1000 NaN -> NaN
ddnextt837 nexttoward Inf NaN -> NaN
ddnextt841 nexttoward sNaN -Inf -> NaN Invalid_operation
ddnextt842 nexttoward sNaN -1000 -> NaN Invalid_operation
ddnextt843 nexttoward sNaN -1 -> NaN Invalid_operation
ddnextt844 nexttoward sNaN -0 -> NaN Invalid_operation
ddnextt845 nexttoward sNaN 0 -> NaN Invalid_operation
ddnextt846 nexttoward sNaN 1 -> NaN Invalid_operation
ddnextt847 nexttoward sNaN 1000 -> NaN Invalid_operation
ddnextt848 nexttoward sNaN NaN -> NaN Invalid_operation
ddnextt849 nexttoward sNaN sNaN -> NaN Invalid_operation
ddnextt850 nexttoward NaN sNaN -> NaN Invalid_operation
ddnextt851 nexttoward -Inf sNaN -> NaN Invalid_operation
ddnextt852 nexttoward -1000 sNaN -> NaN Invalid_operation
ddnextt853 nexttoward -1 sNaN -> NaN Invalid_operation
ddnextt854 nexttoward -0 sNaN -> NaN Invalid_operation
ddnextt855 nexttoward 0 sNaN -> NaN Invalid_operation
ddnextt856 nexttoward 1 sNaN -> NaN Invalid_operation
ddnextt857 nexttoward 1000 sNaN -> NaN Invalid_operation
ddnextt858 nexttoward Inf sNaN -> NaN Invalid_operation
ddnextt859 nexttoward NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddnextt861 nexttoward NaN1 -Inf -> NaN1
ddnextt862 nexttoward +NaN2 -1000 -> NaN2
ddnextt863 nexttoward NaN3 1000 -> NaN3
ddnextt864 nexttoward NaN4 Inf -> NaN4
ddnextt865 nexttoward NaN5 +NaN6 -> NaN5
ddnextt866 nexttoward -Inf NaN7 -> NaN7
ddnextt867 nexttoward -1000 NaN8 -> NaN8
ddnextt868 nexttoward 1000 NaN9 -> NaN9
ddnextt869 nexttoward Inf +NaN10 -> NaN10
ddnextt871 nexttoward sNaN11 -Inf -> NaN11 Invalid_operation
ddnextt872 nexttoward sNaN12 -1000 -> NaN12 Invalid_operation
ddnextt873 nexttoward sNaN13 1000 -> NaN13 Invalid_operation
ddnextt874 nexttoward sNaN14 NaN17 -> NaN14 Invalid_operation
ddnextt875 nexttoward sNaN15 sNaN18 -> NaN15 Invalid_operation
ddnextt876 nexttoward NaN16 sNaN19 -> NaN19 Invalid_operation
ddnextt877 nexttoward -Inf +sNaN20 -> NaN20 Invalid_operation
ddnextt878 nexttoward -1000 sNaN21 -> NaN21 Invalid_operation
ddnextt879 nexttoward 1000 sNaN22 -> NaN22 Invalid_operation
ddnextt880 nexttoward Inf sNaN23 -> NaN23 Invalid_operation
ddnextt881 nexttoward +NaN25 +sNaN24 -> NaN24 Invalid_operation
ddnextt882 nexttoward -NaN26 NaN28 -> -NaN26
ddnextt883 nexttoward -sNaN27 sNaN29 -> -NaN27 Invalid_operation
ddnextt884 nexttoward 1000 -NaN30 -> -NaN30
ddnextt885 nexttoward 1000 -sNaN31 -> -NaN31 Invalid_operation
-- Null tests
ddnextt900 nexttoward 1 # -> NaN Invalid_operation
ddnextt901 nexttoward # 1 -> NaN Invalid_operation

View file

@ -0,0 +1,292 @@
------------------------------------------------------------------------
-- ddOr.decTest -- digitwise logical OR for decDoubles --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check (truth table)
ddor001 or 0 0 -> 0
ddor002 or 0 1 -> 1
ddor003 or 1 0 -> 1
ddor004 or 1 1 -> 1
ddor005 or 1100 1010 -> 1110
-- and at msd and msd-1
ddor006 or 0000000000000000 0000000000000000 -> 0
ddor007 or 0000000000000000 1000000000000000 -> 1000000000000000
ddor008 or 1000000000000000 0000000000000000 -> 1000000000000000
ddor009 or 1000000000000000 1000000000000000 -> 1000000000000000
ddor010 or 0000000000000000 0000000000000000 -> 0
ddor011 or 0000000000000000 0100000000000000 -> 100000000000000
ddor012 or 0100000000000000 0000000000000000 -> 100000000000000
ddor013 or 0100000000000000 0100000000000000 -> 100000000000000
-- Various lengths
-- 1234567890123456 1234567890123456 1234567890123456
ddor020 or 1111111111111111 1111111111111111 -> 1111111111111111
ddor021 or 111111111111111 111111111111111 -> 111111111111111
ddor022 or 11111111111111 11111111111111 -> 11111111111111
ddor023 or 1111111111111 1111111111111 -> 1111111111111
ddor024 or 111111111111 111111111111 -> 111111111111
ddor025 or 11111111111 11111111111 -> 11111111111
ddor026 or 1111111111 1111111111 -> 1111111111
ddor027 or 111111111 111111111 -> 111111111
ddor028 or 11111111 11111111 -> 11111111
ddor029 or 1111111 1111111 -> 1111111
ddor030 or 111111 111111 -> 111111
ddor031 or 11111 11111 -> 11111
ddor032 or 1111 1111 -> 1111
ddor033 or 111 111 -> 111
ddor034 or 11 11 -> 11
ddor035 or 1 1 -> 1
ddor036 or 0 0 -> 0
ddor042 or 111111110000000 1111111110000000 -> 1111111110000000
ddor043 or 11111110000000 1000000100000000 -> 1011111110000000
ddor044 or 1111110000000 1000001000000000 -> 1001111110000000
ddor045 or 111110000000 1000010000000000 -> 1000111110000000
ddor046 or 11110000000 1000100000000000 -> 1000111110000000
ddor047 or 1110000000 1001000000000000 -> 1001001110000000
ddor048 or 110000000 1010000000000000 -> 1010000110000000
ddor049 or 10000000 1100000000000000 -> 1100000010000000
ddor090 or 011111111 111101111 -> 111111111
ddor091 or 101111111 111101111 -> 111111111
ddor092 or 110111111 111101111 -> 111111111
ddor093 or 111011111 111101111 -> 111111111
ddor094 or 111101111 111101111 -> 111101111
ddor095 or 111110111 111101111 -> 111111111
ddor096 or 111111011 111101111 -> 111111111
ddor097 or 111111101 111101111 -> 111111111
ddor098 or 111111110 111101111 -> 111111111
ddor100 or 111101111 011111111 -> 111111111
ddor101 or 111101111 101111111 -> 111111111
ddor102 or 111101111 110111111 -> 111111111
ddor103 or 111101111 111011111 -> 111111111
ddor104 or 111101111 111101111 -> 111101111
ddor105 or 111101111 111110111 -> 111111111
ddor106 or 111101111 111111011 -> 111111111
ddor107 or 111101111 111111101 -> 111111111
ddor108 or 111101111 111111110 -> 111111111
-- non-0/1 should not be accepted, nor should signs
ddor220 or 111111112 111111111 -> NaN Invalid_operation
ddor221 or 333333333 333333333 -> NaN Invalid_operation
ddor222 or 555555555 555555555 -> NaN Invalid_operation
ddor223 or 777777777 777777777 -> NaN Invalid_operation
ddor224 or 999999999 999999999 -> NaN Invalid_operation
ddor225 or 222222222 999999999 -> NaN Invalid_operation
ddor226 or 444444444 999999999 -> NaN Invalid_operation
ddor227 or 666666666 999999999 -> NaN Invalid_operation
ddor228 or 888888888 999999999 -> NaN Invalid_operation
ddor229 or 999999999 222222222 -> NaN Invalid_operation
ddor230 or 999999999 444444444 -> NaN Invalid_operation
ddor231 or 999999999 666666666 -> NaN Invalid_operation
ddor232 or 999999999 888888888 -> NaN Invalid_operation
-- a few randoms
ddor240 or 567468689 -934981942 -> NaN Invalid_operation
ddor241 or 567367689 934981942 -> NaN Invalid_operation
ddor242 or -631917772 -706014634 -> NaN Invalid_operation
ddor243 or -756253257 138579234 -> NaN Invalid_operation
ddor244 or 835590149 567435400 -> NaN Invalid_operation
-- test MSD
ddor250 or 2000000000000000 1000000000000000 -> NaN Invalid_operation
ddor251 or 7000000000000000 1000000000000000 -> NaN Invalid_operation
ddor252 or 8000000000000000 1000000000000000 -> NaN Invalid_operation
ddor253 or 9000000000000000 1000000000000000 -> NaN Invalid_operation
ddor254 or 2000000000000000 0000000000000000 -> NaN Invalid_operation
ddor255 or 7000000000000000 0000000000000000 -> NaN Invalid_operation
ddor256 or 8000000000000000 0000000000000000 -> NaN Invalid_operation
ddor257 or 9000000000000000 0000000000000000 -> NaN Invalid_operation
ddor258 or 1000000000000000 2000000000000000 -> NaN Invalid_operation
ddor259 or 1000000000000000 7000000000000000 -> NaN Invalid_operation
ddor260 or 1000000000000000 8000000000000000 -> NaN Invalid_operation
ddor261 or 1000000000000000 9000000000000000 -> NaN Invalid_operation
ddor262 or 0000000000000000 2000000000000000 -> NaN Invalid_operation
ddor263 or 0000000000000000 7000000000000000 -> NaN Invalid_operation
ddor264 or 0000000000000000 8000000000000000 -> NaN Invalid_operation
ddor265 or 0000000000000000 9000000000000000 -> NaN Invalid_operation
-- test MSD-1
ddor270 or 0200001000000000 1000100000000010 -> NaN Invalid_operation
ddor271 or 0700000100000000 1000010000000100 -> NaN Invalid_operation
ddor272 or 0800000010000000 1000001000001000 -> NaN Invalid_operation
ddor273 or 0900000001000000 1000000100010000 -> NaN Invalid_operation
ddor274 or 1000000000100000 0200000010100000 -> NaN Invalid_operation
ddor275 or 1000000000010000 0700000001000000 -> NaN Invalid_operation
ddor276 or 1000000000001000 0800000010100000 -> NaN Invalid_operation
ddor277 or 1000000000000100 0900000000010000 -> NaN Invalid_operation
-- test LSD
ddor280 or 0010000000000002 1000000100000001 -> NaN Invalid_operation
ddor281 or 0001000000000007 1000001000000011 -> NaN Invalid_operation
ddor282 or 0000100000000008 1000010000000001 -> NaN Invalid_operation
ddor283 or 0000010000000009 1000100000000001 -> NaN Invalid_operation
ddor284 or 1000001000000000 0001000000000002 -> NaN Invalid_operation
ddor285 or 1000000100000000 0010000000000007 -> NaN Invalid_operation
ddor286 or 1000000010000000 0100000000000008 -> NaN Invalid_operation
ddor287 or 1000000001000000 1000000000000009 -> NaN Invalid_operation
-- test Middie
ddor288 or 0010000020000000 1000001000000000 -> NaN Invalid_operation
ddor289 or 0001000070000001 1000000100000000 -> NaN Invalid_operation
ddor290 or 0000100080000010 1000000010000000 -> NaN Invalid_operation
ddor291 or 0000010090000100 1000000001000000 -> NaN Invalid_operation
ddor292 or 1000001000001000 0000000020100000 -> NaN Invalid_operation
ddor293 or 1000000100010000 0000000070010000 -> NaN Invalid_operation
ddor294 or 1000000010100000 0000000080001000 -> NaN Invalid_operation
ddor295 or 1000000001000000 0000000090000100 -> NaN Invalid_operation
-- signs
ddor296 or -1000000001000000 -0000010000000100 -> NaN Invalid_operation
ddor297 or -1000000001000000 0000000010000100 -> NaN Invalid_operation
ddor298 or 1000000001000000 -0000001000000100 -> NaN Invalid_operation
ddor299 or 1000000001000000 0000000011000100 -> 1000000011000100
-- Nmax, Nmin, Ntiny-like
ddor331 or 2 9.99999999E+199 -> NaN Invalid_operation
ddor332 or 3 1E-199 -> NaN Invalid_operation
ddor333 or 4 1.00000000E-199 -> NaN Invalid_operation
ddor334 or 5 1E-100 -> NaN Invalid_operation
ddor335 or 6 -1E-100 -> NaN Invalid_operation
ddor336 or 7 -1.00000000E-199 -> NaN Invalid_operation
ddor337 or 8 -1E-199 -> NaN Invalid_operation
ddor338 or 9 -9.99999999E+199 -> NaN Invalid_operation
ddor341 or 9.99999999E+299 -18 -> NaN Invalid_operation
ddor342 or 1E-299 01 -> NaN Invalid_operation
ddor343 or 1.00000000E-299 -18 -> NaN Invalid_operation
ddor344 or 1E-100 18 -> NaN Invalid_operation
ddor345 or -1E-100 -10 -> NaN Invalid_operation
ddor346 or -1.00000000E-299 18 -> NaN Invalid_operation
ddor347 or -1E-299 10 -> NaN Invalid_operation
ddor348 or -9.99999999E+299 -18 -> NaN Invalid_operation
-- A few other non-integers
ddor361 or 1.0 1 -> NaN Invalid_operation
ddor362 or 1E+1 1 -> NaN Invalid_operation
ddor363 or 0.0 1 -> NaN Invalid_operation
ddor364 or 0E+1 1 -> NaN Invalid_operation
ddor365 or 9.9 1 -> NaN Invalid_operation
ddor366 or 9E+1 1 -> NaN Invalid_operation
ddor371 or 0 1.0 -> NaN Invalid_operation
ddor372 or 0 1E+1 -> NaN Invalid_operation
ddor373 or 0 0.0 -> NaN Invalid_operation
ddor374 or 0 0E+1 -> NaN Invalid_operation
ddor375 or 0 9.9 -> NaN Invalid_operation
ddor376 or 0 9E+1 -> NaN Invalid_operation
-- All Specials are in error
ddor780 or -Inf -Inf -> NaN Invalid_operation
ddor781 or -Inf -1000 -> NaN Invalid_operation
ddor782 or -Inf -1 -> NaN Invalid_operation
ddor783 or -Inf -0 -> NaN Invalid_operation
ddor784 or -Inf 0 -> NaN Invalid_operation
ddor785 or -Inf 1 -> NaN Invalid_operation
ddor786 or -Inf 1000 -> NaN Invalid_operation
ddor787 or -1000 -Inf -> NaN Invalid_operation
ddor788 or -Inf -Inf -> NaN Invalid_operation
ddor789 or -1 -Inf -> NaN Invalid_operation
ddor790 or -0 -Inf -> NaN Invalid_operation
ddor791 or 0 -Inf -> NaN Invalid_operation
ddor792 or 1 -Inf -> NaN Invalid_operation
ddor793 or 1000 -Inf -> NaN Invalid_operation
ddor794 or Inf -Inf -> NaN Invalid_operation
ddor800 or Inf -Inf -> NaN Invalid_operation
ddor801 or Inf -1000 -> NaN Invalid_operation
ddor802 or Inf -1 -> NaN Invalid_operation
ddor803 or Inf -0 -> NaN Invalid_operation
ddor804 or Inf 0 -> NaN Invalid_operation
ddor805 or Inf 1 -> NaN Invalid_operation
ddor806 or Inf 1000 -> NaN Invalid_operation
ddor807 or Inf Inf -> NaN Invalid_operation
ddor808 or -1000 Inf -> NaN Invalid_operation
ddor809 or -Inf Inf -> NaN Invalid_operation
ddor810 or -1 Inf -> NaN Invalid_operation
ddor811 or -0 Inf -> NaN Invalid_operation
ddor812 or 0 Inf -> NaN Invalid_operation
ddor813 or 1 Inf -> NaN Invalid_operation
ddor814 or 1000 Inf -> NaN Invalid_operation
ddor815 or Inf Inf -> NaN Invalid_operation
ddor821 or NaN -Inf -> NaN Invalid_operation
ddor822 or NaN -1000 -> NaN Invalid_operation
ddor823 or NaN -1 -> NaN Invalid_operation
ddor824 or NaN -0 -> NaN Invalid_operation
ddor825 or NaN 0 -> NaN Invalid_operation
ddor826 or NaN 1 -> NaN Invalid_operation
ddor827 or NaN 1000 -> NaN Invalid_operation
ddor828 or NaN Inf -> NaN Invalid_operation
ddor829 or NaN NaN -> NaN Invalid_operation
ddor830 or -Inf NaN -> NaN Invalid_operation
ddor831 or -1000 NaN -> NaN Invalid_operation
ddor832 or -1 NaN -> NaN Invalid_operation
ddor833 or -0 NaN -> NaN Invalid_operation
ddor834 or 0 NaN -> NaN Invalid_operation
ddor835 or 1 NaN -> NaN Invalid_operation
ddor836 or 1000 NaN -> NaN Invalid_operation
ddor837 or Inf NaN -> NaN Invalid_operation
ddor841 or sNaN -Inf -> NaN Invalid_operation
ddor842 or sNaN -1000 -> NaN Invalid_operation
ddor843 or sNaN -1 -> NaN Invalid_operation
ddor844 or sNaN -0 -> NaN Invalid_operation
ddor845 or sNaN 0 -> NaN Invalid_operation
ddor846 or sNaN 1 -> NaN Invalid_operation
ddor847 or sNaN 1000 -> NaN Invalid_operation
ddor848 or sNaN NaN -> NaN Invalid_operation
ddor849 or sNaN sNaN -> NaN Invalid_operation
ddor850 or NaN sNaN -> NaN Invalid_operation
ddor851 or -Inf sNaN -> NaN Invalid_operation
ddor852 or -1000 sNaN -> NaN Invalid_operation
ddor853 or -1 sNaN -> NaN Invalid_operation
ddor854 or -0 sNaN -> NaN Invalid_operation
ddor855 or 0 sNaN -> NaN Invalid_operation
ddor856 or 1 sNaN -> NaN Invalid_operation
ddor857 or 1000 sNaN -> NaN Invalid_operation
ddor858 or Inf sNaN -> NaN Invalid_operation
ddor859 or NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddor861 or NaN1 -Inf -> NaN Invalid_operation
ddor862 or +NaN2 -1000 -> NaN Invalid_operation
ddor863 or NaN3 1000 -> NaN Invalid_operation
ddor864 or NaN4 Inf -> NaN Invalid_operation
ddor865 or NaN5 +NaN6 -> NaN Invalid_operation
ddor866 or -Inf NaN7 -> NaN Invalid_operation
ddor867 or -1000 NaN8 -> NaN Invalid_operation
ddor868 or 1000 NaN9 -> NaN Invalid_operation
ddor869 or Inf +NaN10 -> NaN Invalid_operation
ddor871 or sNaN11 -Inf -> NaN Invalid_operation
ddor872 or sNaN12 -1000 -> NaN Invalid_operation
ddor873 or sNaN13 1000 -> NaN Invalid_operation
ddor874 or sNaN14 NaN17 -> NaN Invalid_operation
ddor875 or sNaN15 sNaN18 -> NaN Invalid_operation
ddor876 or NaN16 sNaN19 -> NaN Invalid_operation
ddor877 or -Inf +sNaN20 -> NaN Invalid_operation
ddor878 or -1000 sNaN21 -> NaN Invalid_operation
ddor879 or 1000 sNaN22 -> NaN Invalid_operation
ddor880 or Inf sNaN23 -> NaN Invalid_operation
ddor881 or +NaN25 +sNaN24 -> NaN Invalid_operation
ddor882 or -NaN26 NaN28 -> NaN Invalid_operation
ddor883 or -sNaN27 sNaN29 -> NaN Invalid_operation
ddor884 or 1000 -NaN30 -> NaN Invalid_operation
ddor885 or 1000 -sNaN31 -> NaN Invalid_operation

View file

@ -0,0 +1,88 @@
------------------------------------------------------------------------
-- ddPlus.decTest -- decDouble 0+x --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check
ddpls001 plus +7.50 -> 7.50
-- Infinities
ddpls011 plus Infinity -> Infinity
ddpls012 plus -Infinity -> -Infinity
-- NaNs, 0 payload
ddpls021 plus NaN -> NaN
ddpls022 plus -NaN -> -NaN
ddpls023 plus sNaN -> NaN Invalid_operation
ddpls024 plus -sNaN -> -NaN Invalid_operation
-- NaNs, non-0 payload
ddpls031 plus NaN13 -> NaN13
ddpls032 plus -NaN13 -> -NaN13
ddpls033 plus sNaN13 -> NaN13 Invalid_operation
ddpls034 plus -sNaN13 -> -NaN13 Invalid_operation
ddpls035 plus NaN70 -> NaN70
ddpls036 plus -NaN70 -> -NaN70
ddpls037 plus sNaN101 -> NaN101 Invalid_operation
ddpls038 plus -sNaN101 -> -NaN101 Invalid_operation
-- finites
ddpls101 plus 7 -> 7
ddpls102 plus -7 -> -7
ddpls103 plus 75 -> 75
ddpls104 plus -75 -> -75
ddpls105 plus 7.50 -> 7.50
ddpls106 plus -7.50 -> -7.50
ddpls107 plus 7.500 -> 7.500
ddpls108 plus -7.500 -> -7.500
-- zeros
ddpls111 plus 0 -> 0
ddpls112 plus -0 -> 0
ddpls113 plus 0E+4 -> 0E+4
ddpls114 plus -0E+4 -> 0E+4
ddpls115 plus 0.0000 -> 0.0000
ddpls116 plus -0.0000 -> 0.0000
ddpls117 plus 0E-141 -> 0E-141
ddpls118 plus -0E-141 -> 0E-141
-- full coefficients, alternating bits
ddpls121 plus 2682682682682682 -> 2682682682682682
ddpls122 plus -2682682682682682 -> -2682682682682682
ddpls123 plus 1341341341341341 -> 1341341341341341
ddpls124 plus -1341341341341341 -> -1341341341341341
-- Nmax, Nmin, Ntiny
ddpls131 plus 9.999999999999999E+384 -> 9.999999999999999E+384
ddpls132 plus 1E-383 -> 1E-383
ddpls133 plus 1.000000000000000E-383 -> 1.000000000000000E-383
ddpls134 plus 1E-398 -> 1E-398 Subnormal
ddpls135 plus -1E-398 -> -1E-398 Subnormal
ddpls136 plus -1.000000000000000E-383 -> -1.000000000000000E-383
ddpls137 plus -1E-383 -> -1E-383
ddpls138 plus -9.999999999999999E+384 -> -9.999999999999999E+384

View file

@ -0,0 +1,833 @@
------------------------------------------------------------------------
-- ddQuantize.decTest -- decDouble quantize operation --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Most of the tests here assume a "regular pattern", where the
-- sign and coefficient are +1.
-- 2004.03.15 Underflow for quantize is suppressed
-- 2005.06.08 More extensive tests for 'does not fit'
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks
ddqua001 quantize 0 1e0 -> 0
ddqua002 quantize 1 1e0 -> 1
ddqua003 quantize 0.1 1e+2 -> 0E+2 Inexact Rounded
ddqua005 quantize 0.1 1e+1 -> 0E+1 Inexact Rounded
ddqua006 quantize 0.1 1e0 -> 0 Inexact Rounded
ddqua007 quantize 0.1 1e-1 -> 0.1
ddqua008 quantize 0.1 1e-2 -> 0.10
ddqua009 quantize 0.1 1e-3 -> 0.100
ddqua010 quantize 0.9 1e+2 -> 0E+2 Inexact Rounded
ddqua011 quantize 0.9 1e+1 -> 0E+1 Inexact Rounded
ddqua012 quantize 0.9 1e+0 -> 1 Inexact Rounded
ddqua013 quantize 0.9 1e-1 -> 0.9
ddqua014 quantize 0.9 1e-2 -> 0.90
ddqua015 quantize 0.9 1e-3 -> 0.900
-- negatives
ddqua021 quantize -0 1e0 -> -0
ddqua022 quantize -1 1e0 -> -1
ddqua023 quantize -0.1 1e+2 -> -0E+2 Inexact Rounded
ddqua025 quantize -0.1 1e+1 -> -0E+1 Inexact Rounded
ddqua026 quantize -0.1 1e0 -> -0 Inexact Rounded
ddqua027 quantize -0.1 1e-1 -> -0.1
ddqua028 quantize -0.1 1e-2 -> -0.10
ddqua029 quantize -0.1 1e-3 -> -0.100
ddqua030 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded
ddqua031 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded
ddqua032 quantize -0.9 1e+0 -> -1 Inexact Rounded
ddqua033 quantize -0.9 1e-1 -> -0.9
ddqua034 quantize -0.9 1e-2 -> -0.90
ddqua035 quantize -0.9 1e-3 -> -0.900
ddqua036 quantize -0.5 1e+2 -> -0E+2 Inexact Rounded
ddqua037 quantize -0.5 1e+1 -> -0E+1 Inexact Rounded
ddqua038 quantize -0.5 1e+0 -> -0 Inexact Rounded
ddqua039 quantize -0.5 1e-1 -> -0.5
ddqua040 quantize -0.5 1e-2 -> -0.50
ddqua041 quantize -0.5 1e-3 -> -0.500
ddqua042 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded
ddqua043 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded
ddqua044 quantize -0.9 1e+0 -> -1 Inexact Rounded
ddqua045 quantize -0.9 1e-1 -> -0.9
ddqua046 quantize -0.9 1e-2 -> -0.90
ddqua047 quantize -0.9 1e-3 -> -0.900
-- examples from Specification
ddqua060 quantize 2.17 0.001 -> 2.170
ddqua061 quantize 2.17 0.01 -> 2.17
ddqua062 quantize 2.17 0.1 -> 2.2 Inexact Rounded
ddqua063 quantize 2.17 1e+0 -> 2 Inexact Rounded
ddqua064 quantize 2.17 1e+1 -> 0E+1 Inexact Rounded
ddqua065 quantize -Inf Inf -> -Infinity
ddqua066 quantize 2 Inf -> NaN Invalid_operation
ddqua067 quantize -0.1 1 -> -0 Inexact Rounded
ddqua068 quantize -0 1e+5 -> -0E+5
ddqua069 quantize +123456789012345.6 1e-2 -> NaN Invalid_operation
ddqua070 quantize -987654335236450.6 1e-2 -> NaN Invalid_operation
ddqua071 quantize 217 1e-1 -> 217.0
ddqua072 quantize 217 1e+0 -> 217
ddqua073 quantize 217 1e+1 -> 2.2E+2 Inexact Rounded
ddqua074 quantize 217 1e+2 -> 2E+2 Inexact Rounded
-- general tests ..
ddqua089 quantize 12 1e+4 -> 0E+4 Inexact Rounded
ddqua090 quantize 12 1e+3 -> 0E+3 Inexact Rounded
ddqua091 quantize 12 1e+2 -> 0E+2 Inexact Rounded
ddqua092 quantize 12 1e+1 -> 1E+1 Inexact Rounded
ddqua093 quantize 1.2345 1e-2 -> 1.23 Inexact Rounded
ddqua094 quantize 1.2355 1e-2 -> 1.24 Inexact Rounded
ddqua095 quantize 1.2345 1e-6 -> 1.234500
ddqua096 quantize 9.9999 1e-2 -> 10.00 Inexact Rounded
ddqua097 quantize 0.0001 1e-2 -> 0.00 Inexact Rounded
ddqua098 quantize 0.001 1e-2 -> 0.00 Inexact Rounded
ddqua099 quantize 0.009 1e-2 -> 0.01 Inexact Rounded
ddqua100 quantize 92 1e+2 -> 1E+2 Inexact Rounded
ddqua101 quantize -1 1e0 -> -1
ddqua102 quantize -1 1e-1 -> -1.0
ddqua103 quantize -1 1e-2 -> -1.00
ddqua104 quantize 0 1e0 -> 0
ddqua105 quantize 0 1e-1 -> 0.0
ddqua106 quantize 0 1e-2 -> 0.00
ddqua107 quantize 0.00 1e0 -> 0
ddqua108 quantize 0 1e+1 -> 0E+1
ddqua109 quantize 0 1e+2 -> 0E+2
ddqua110 quantize +1 1e0 -> 1
ddqua111 quantize +1 1e-1 -> 1.0
ddqua112 quantize +1 1e-2 -> 1.00
ddqua120 quantize 1.04 1e-3 -> 1.040
ddqua121 quantize 1.04 1e-2 -> 1.04
ddqua122 quantize 1.04 1e-1 -> 1.0 Inexact Rounded
ddqua123 quantize 1.04 1e0 -> 1 Inexact Rounded
ddqua124 quantize 1.05 1e-3 -> 1.050
ddqua125 quantize 1.05 1e-2 -> 1.05
ddqua126 quantize 1.05 1e-1 -> 1.0 Inexact Rounded
ddqua131 quantize 1.05 1e0 -> 1 Inexact Rounded
ddqua132 quantize 1.06 1e-3 -> 1.060
ddqua133 quantize 1.06 1e-2 -> 1.06
ddqua134 quantize 1.06 1e-1 -> 1.1 Inexact Rounded
ddqua135 quantize 1.06 1e0 -> 1 Inexact Rounded
ddqua140 quantize -10 1e-2 -> -10.00
ddqua141 quantize +1 1e-2 -> 1.00
ddqua142 quantize +10 1e-2 -> 10.00
ddqua143 quantize 1E+17 1e-2 -> NaN Invalid_operation
ddqua144 quantize 1E-17 1e-2 -> 0.00 Inexact Rounded
ddqua145 quantize 1E-3 1e-2 -> 0.00 Inexact Rounded
ddqua146 quantize 1E-2 1e-2 -> 0.01
ddqua147 quantize 1E-1 1e-2 -> 0.10
ddqua148 quantize 0E-17 1e-2 -> 0.00
ddqua150 quantize 1.0600 1e-5 -> 1.06000
ddqua151 quantize 1.0600 1e-4 -> 1.0600
ddqua152 quantize 1.0600 1e-3 -> 1.060 Rounded
ddqua153 quantize 1.0600 1e-2 -> 1.06 Rounded
ddqua154 quantize 1.0600 1e-1 -> 1.1 Inexact Rounded
ddqua155 quantize 1.0600 1e0 -> 1 Inexact Rounded
-- a couple where rounding was different in base tests
rounding: half_up
ddqua157 quantize -0.5 1e+0 -> -1 Inexact Rounded
ddqua158 quantize 1.05 1e-1 -> 1.1 Inexact Rounded
ddqua159 quantize 1.06 1e0 -> 1 Inexact Rounded
rounding: half_even
-- base tests with non-1 coefficients
ddqua161 quantize 0 -9e0 -> 0
ddqua162 quantize 1 -7e0 -> 1
ddqua163 quantize 0.1 -1e+2 -> 0E+2 Inexact Rounded
ddqua165 quantize 0.1 0e+1 -> 0E+1 Inexact Rounded
ddqua166 quantize 0.1 2e0 -> 0 Inexact Rounded
ddqua167 quantize 0.1 3e-1 -> 0.1
ddqua168 quantize 0.1 44e-2 -> 0.10
ddqua169 quantize 0.1 555e-3 -> 0.100
ddqua170 quantize 0.9 6666e+2 -> 0E+2 Inexact Rounded
ddqua171 quantize 0.9 -777e+1 -> 0E+1 Inexact Rounded
ddqua172 quantize 0.9 -88e+0 -> 1 Inexact Rounded
ddqua173 quantize 0.9 -9e-1 -> 0.9
ddqua174 quantize 0.9 0e-2 -> 0.90
ddqua175 quantize 0.9 1.1e-3 -> 0.9000
-- negatives
ddqua181 quantize -0 1.1e0 -> -0.0
ddqua182 quantize -1 -1e0 -> -1
ddqua183 quantize -0.1 11e+2 -> -0E+2 Inexact Rounded
ddqua185 quantize -0.1 111e+1 -> -0E+1 Inexact Rounded
ddqua186 quantize -0.1 71e0 -> -0 Inexact Rounded
ddqua187 quantize -0.1 -91e-1 -> -0.1
ddqua188 quantize -0.1 -.1e-2 -> -0.100
ddqua189 quantize -0.1 -1e-3 -> -0.100
ddqua190 quantize -0.9 0e+2 -> -0E+2 Inexact Rounded
ddqua191 quantize -0.9 -0e+1 -> -0E+1 Inexact Rounded
ddqua192 quantize -0.9 -10e+0 -> -1 Inexact Rounded
ddqua193 quantize -0.9 100e-1 -> -0.9
ddqua194 quantize -0.9 999e-2 -> -0.90
-- +ve exponents ..
ddqua201 quantize -1 1e+0 -> -1
ddqua202 quantize -1 1e+1 -> -0E+1 Inexact Rounded
ddqua203 quantize -1 1e+2 -> -0E+2 Inexact Rounded
ddqua204 quantize 0 1e+0 -> 0
ddqua205 quantize 0 1e+1 -> 0E+1
ddqua206 quantize 0 1e+2 -> 0E+2
ddqua207 quantize +1 1e+0 -> 1
ddqua208 quantize +1 1e+1 -> 0E+1 Inexact Rounded
ddqua209 quantize +1 1e+2 -> 0E+2 Inexact Rounded
ddqua220 quantize 1.04 1e+3 -> 0E+3 Inexact Rounded
ddqua221 quantize 1.04 1e+2 -> 0E+2 Inexact Rounded
ddqua222 quantize 1.04 1e+1 -> 0E+1 Inexact Rounded
ddqua223 quantize 1.04 1e+0 -> 1 Inexact Rounded
ddqua224 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded
ddqua225 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded
ddqua226 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded
ddqua227 quantize 1.05 1e+0 -> 1 Inexact Rounded
ddqua228 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded
ddqua229 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded
ddqua230 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded
ddqua231 quantize 1.05 1e+0 -> 1 Inexact Rounded
ddqua232 quantize 1.06 1e+3 -> 0E+3 Inexact Rounded
ddqua233 quantize 1.06 1e+2 -> 0E+2 Inexact Rounded
ddqua234 quantize 1.06 1e+1 -> 0E+1 Inexact Rounded
ddqua235 quantize 1.06 1e+0 -> 1 Inexact Rounded
ddqua240 quantize -10 1e+1 -> -1E+1 Rounded
ddqua241 quantize +1 1e+1 -> 0E+1 Inexact Rounded
ddqua242 quantize +10 1e+1 -> 1E+1 Rounded
ddqua243 quantize 1E+1 1e+1 -> 1E+1 -- underneath this is E+1
ddqua244 quantize 1E+2 1e+1 -> 1.0E+2 -- underneath this is E+1
ddqua245 quantize 1E+3 1e+1 -> 1.00E+3 -- underneath this is E+1
ddqua246 quantize 1E+4 1e+1 -> 1.000E+4 -- underneath this is E+1
ddqua247 quantize 1E+5 1e+1 -> 1.0000E+5 -- underneath this is E+1
ddqua248 quantize 1E+6 1e+1 -> 1.00000E+6 -- underneath this is E+1
ddqua249 quantize 1E+7 1e+1 -> 1.000000E+7 -- underneath this is E+1
ddqua250 quantize 1E+8 1e+1 -> 1.0000000E+8 -- underneath this is E+1
ddqua251 quantize 1E+9 1e+1 -> 1.00000000E+9 -- underneath this is E+1
-- next one tries to add 9 zeros
ddqua252 quantize 1E+17 1e+1 -> NaN Invalid_operation
ddqua253 quantize 1E-17 1e+1 -> 0E+1 Inexact Rounded
ddqua254 quantize 1E-2 1e+1 -> 0E+1 Inexact Rounded
ddqua255 quantize 0E-17 1e+1 -> 0E+1
ddqua256 quantize -0E-17 1e+1 -> -0E+1
ddqua257 quantize -0E-1 1e+1 -> -0E+1
ddqua258 quantize -0 1e+1 -> -0E+1
ddqua259 quantize -0E+1 1e+1 -> -0E+1
ddqua260 quantize -10 1e+2 -> -0E+2 Inexact Rounded
ddqua261 quantize +1 1e+2 -> 0E+2 Inexact Rounded
ddqua262 quantize +10 1e+2 -> 0E+2 Inexact Rounded
ddqua263 quantize 1E+1 1e+2 -> 0E+2 Inexact Rounded
ddqua264 quantize 1E+2 1e+2 -> 1E+2
ddqua265 quantize 1E+3 1e+2 -> 1.0E+3
ddqua266 quantize 1E+4 1e+2 -> 1.00E+4
ddqua267 quantize 1E+5 1e+2 -> 1.000E+5
ddqua268 quantize 1E+6 1e+2 -> 1.0000E+6
ddqua269 quantize 1E+7 1e+2 -> 1.00000E+7
ddqua270 quantize 1E+8 1e+2 -> 1.000000E+8
ddqua271 quantize 1E+9 1e+2 -> 1.0000000E+9
ddqua272 quantize 1E+10 1e+2 -> 1.00000000E+10
ddqua273 quantize 1E-10 1e+2 -> 0E+2 Inexact Rounded
ddqua274 quantize 1E-2 1e+2 -> 0E+2 Inexact Rounded
ddqua275 quantize 0E-10 1e+2 -> 0E+2
ddqua280 quantize -10 1e+3 -> -0E+3 Inexact Rounded
ddqua281 quantize +1 1e+3 -> 0E+3 Inexact Rounded
ddqua282 quantize +10 1e+3 -> 0E+3 Inexact Rounded
ddqua283 quantize 1E+1 1e+3 -> 0E+3 Inexact Rounded
ddqua284 quantize 1E+2 1e+3 -> 0E+3 Inexact Rounded
ddqua285 quantize 1E+3 1e+3 -> 1E+3
ddqua286 quantize 1E+4 1e+3 -> 1.0E+4
ddqua287 quantize 1E+5 1e+3 -> 1.00E+5
ddqua288 quantize 1E+6 1e+3 -> 1.000E+6
ddqua289 quantize 1E+7 1e+3 -> 1.0000E+7
ddqua290 quantize 1E+8 1e+3 -> 1.00000E+8
ddqua291 quantize 1E+9 1e+3 -> 1.000000E+9
ddqua292 quantize 1E+10 1e+3 -> 1.0000000E+10
ddqua293 quantize 1E-10 1e+3 -> 0E+3 Inexact Rounded
ddqua294 quantize 1E-2 1e+3 -> 0E+3 Inexact Rounded
ddqua295 quantize 0E-10 1e+3 -> 0E+3
-- round up from below [sign wrong in JIT compiler once]
ddqua300 quantize 0.0078 1e-5 -> 0.00780
ddqua301 quantize 0.0078 1e-4 -> 0.0078
ddqua302 quantize 0.0078 1e-3 -> 0.008 Inexact Rounded
ddqua303 quantize 0.0078 1e-2 -> 0.01 Inexact Rounded
ddqua304 quantize 0.0078 1e-1 -> 0.0 Inexact Rounded
ddqua305 quantize 0.0078 1e0 -> 0 Inexact Rounded
ddqua306 quantize 0.0078 1e+1 -> 0E+1 Inexact Rounded
ddqua307 quantize 0.0078 1e+2 -> 0E+2 Inexact Rounded
ddqua310 quantize -0.0078 1e-5 -> -0.00780
ddqua311 quantize -0.0078 1e-4 -> -0.0078
ddqua312 quantize -0.0078 1e-3 -> -0.008 Inexact Rounded
ddqua313 quantize -0.0078 1e-2 -> -0.01 Inexact Rounded
ddqua314 quantize -0.0078 1e-1 -> -0.0 Inexact Rounded
ddqua315 quantize -0.0078 1e0 -> -0 Inexact Rounded
ddqua316 quantize -0.0078 1e+1 -> -0E+1 Inexact Rounded
ddqua317 quantize -0.0078 1e+2 -> -0E+2 Inexact Rounded
ddqua320 quantize 0.078 1e-5 -> 0.07800
ddqua321 quantize 0.078 1e-4 -> 0.0780
ddqua322 quantize 0.078 1e-3 -> 0.078
ddqua323 quantize 0.078 1e-2 -> 0.08 Inexact Rounded
ddqua324 quantize 0.078 1e-1 -> 0.1 Inexact Rounded
ddqua325 quantize 0.078 1e0 -> 0 Inexact Rounded
ddqua326 quantize 0.078 1e+1 -> 0E+1 Inexact Rounded
ddqua327 quantize 0.078 1e+2 -> 0E+2 Inexact Rounded
ddqua330 quantize -0.078 1e-5 -> -0.07800
ddqua331 quantize -0.078 1e-4 -> -0.0780
ddqua332 quantize -0.078 1e-3 -> -0.078
ddqua333 quantize -0.078 1e-2 -> -0.08 Inexact Rounded
ddqua334 quantize -0.078 1e-1 -> -0.1 Inexact Rounded
ddqua335 quantize -0.078 1e0 -> -0 Inexact Rounded
ddqua336 quantize -0.078 1e+1 -> -0E+1 Inexact Rounded
ddqua337 quantize -0.078 1e+2 -> -0E+2 Inexact Rounded
ddqua340 quantize 0.78 1e-5 -> 0.78000
ddqua341 quantize 0.78 1e-4 -> 0.7800
ddqua342 quantize 0.78 1e-3 -> 0.780
ddqua343 quantize 0.78 1e-2 -> 0.78
ddqua344 quantize 0.78 1e-1 -> 0.8 Inexact Rounded
ddqua345 quantize 0.78 1e0 -> 1 Inexact Rounded
ddqua346 quantize 0.78 1e+1 -> 0E+1 Inexact Rounded
ddqua347 quantize 0.78 1e+2 -> 0E+2 Inexact Rounded
ddqua350 quantize -0.78 1e-5 -> -0.78000
ddqua351 quantize -0.78 1e-4 -> -0.7800
ddqua352 quantize -0.78 1e-3 -> -0.780
ddqua353 quantize -0.78 1e-2 -> -0.78
ddqua354 quantize -0.78 1e-1 -> -0.8 Inexact Rounded
ddqua355 quantize -0.78 1e0 -> -1 Inexact Rounded
ddqua356 quantize -0.78 1e+1 -> -0E+1 Inexact Rounded
ddqua357 quantize -0.78 1e+2 -> -0E+2 Inexact Rounded
ddqua360 quantize 7.8 1e-5 -> 7.80000
ddqua361 quantize 7.8 1e-4 -> 7.8000
ddqua362 quantize 7.8 1e-3 -> 7.800
ddqua363 quantize 7.8 1e-2 -> 7.80
ddqua364 quantize 7.8 1e-1 -> 7.8
ddqua365 quantize 7.8 1e0 -> 8 Inexact Rounded
ddqua366 quantize 7.8 1e+1 -> 1E+1 Inexact Rounded
ddqua367 quantize 7.8 1e+2 -> 0E+2 Inexact Rounded
ddqua368 quantize 7.8 1e+3 -> 0E+3 Inexact Rounded
ddqua370 quantize -7.8 1e-5 -> -7.80000
ddqua371 quantize -7.8 1e-4 -> -7.8000
ddqua372 quantize -7.8 1e-3 -> -7.800
ddqua373 quantize -7.8 1e-2 -> -7.80
ddqua374 quantize -7.8 1e-1 -> -7.8
ddqua375 quantize -7.8 1e0 -> -8 Inexact Rounded
ddqua376 quantize -7.8 1e+1 -> -1E+1 Inexact Rounded
ddqua377 quantize -7.8 1e+2 -> -0E+2 Inexact Rounded
ddqua378 quantize -7.8 1e+3 -> -0E+3 Inexact Rounded
-- some individuals
ddqua380 quantize 1234567352364.506 1e-2 -> 1234567352364.51 Inexact Rounded
ddqua381 quantize 12345673523645.06 1e-2 -> 12345673523645.06
ddqua382 quantize 123456735236450.6 1e-2 -> NaN Invalid_operation
ddqua383 quantize 1234567352364506 1e-2 -> NaN Invalid_operation
ddqua384 quantize -1234567352364.506 1e-2 -> -1234567352364.51 Inexact Rounded
ddqua385 quantize -12345673523645.06 1e-2 -> -12345673523645.06
ddqua386 quantize -123456735236450.6 1e-2 -> NaN Invalid_operation
ddqua387 quantize -1234567352364506 1e-2 -> NaN Invalid_operation
rounding: down
ddqua389 quantize 123456735236450.6 1e-2 -> NaN Invalid_operation
-- ? should that one instead have been:
-- ddqua389 quantize 123456735236450.6 1e-2 -> NaN Invalid_operation
rounding: half_up
-- and a few more from e-mail discussions
ddqua391 quantize 12345678912.34567 1e-3 -> 12345678912.346 Inexact Rounded
ddqua392 quantize 123456789123.4567 1e-3 -> 123456789123.457 Inexact Rounded
ddqua393 quantize 1234567891234.567 1e-3 -> 1234567891234.567
ddqua394 quantize 12345678912345.67 1e-3 -> NaN Invalid_operation
ddqua395 quantize 123456789123456.7 1e-3 -> NaN Invalid_operation
ddqua396 quantize 1234567891234567. 1e-3 -> NaN Invalid_operation
-- some 9999 round-up cases
ddqua400 quantize 9.999 1e-5 -> 9.99900
ddqua401 quantize 9.999 1e-4 -> 9.9990
ddqua402 quantize 9.999 1e-3 -> 9.999
ddqua403 quantize 9.999 1e-2 -> 10.00 Inexact Rounded
ddqua404 quantize 9.999 1e-1 -> 10.0 Inexact Rounded
ddqua405 quantize 9.999 1e0 -> 10 Inexact Rounded
ddqua406 quantize 9.999 1e1 -> 1E+1 Inexact Rounded
ddqua407 quantize 9.999 1e2 -> 0E+2 Inexact Rounded
ddqua410 quantize 0.999 1e-5 -> 0.99900
ddqua411 quantize 0.999 1e-4 -> 0.9990
ddqua412 quantize 0.999 1e-3 -> 0.999
ddqua413 quantize 0.999 1e-2 -> 1.00 Inexact Rounded
ddqua414 quantize 0.999 1e-1 -> 1.0 Inexact Rounded
ddqua415 quantize 0.999 1e0 -> 1 Inexact Rounded
ddqua416 quantize 0.999 1e1 -> 0E+1 Inexact Rounded
ddqua420 quantize 0.0999 1e-5 -> 0.09990
ddqua421 quantize 0.0999 1e-4 -> 0.0999
ddqua422 quantize 0.0999 1e-3 -> 0.100 Inexact Rounded
ddqua423 quantize 0.0999 1e-2 -> 0.10 Inexact Rounded
ddqua424 quantize 0.0999 1e-1 -> 0.1 Inexact Rounded
ddqua425 quantize 0.0999 1e0 -> 0 Inexact Rounded
ddqua426 quantize 0.0999 1e1 -> 0E+1 Inexact Rounded
ddqua430 quantize 0.00999 1e-5 -> 0.00999
ddqua431 quantize 0.00999 1e-4 -> 0.0100 Inexact Rounded
ddqua432 quantize 0.00999 1e-3 -> 0.010 Inexact Rounded
ddqua433 quantize 0.00999 1e-2 -> 0.01 Inexact Rounded
ddqua434 quantize 0.00999 1e-1 -> 0.0 Inexact Rounded
ddqua435 quantize 0.00999 1e0 -> 0 Inexact Rounded
ddqua436 quantize 0.00999 1e1 -> 0E+1 Inexact Rounded
ddqua440 quantize 0.000999 1e-5 -> 0.00100 Inexact Rounded
ddqua441 quantize 0.000999 1e-4 -> 0.0010 Inexact Rounded
ddqua442 quantize 0.000999 1e-3 -> 0.001 Inexact Rounded
ddqua443 quantize 0.000999 1e-2 -> 0.00 Inexact Rounded
ddqua444 quantize 0.000999 1e-1 -> 0.0 Inexact Rounded
ddqua445 quantize 0.000999 1e0 -> 0 Inexact Rounded
ddqua446 quantize 0.000999 1e1 -> 0E+1 Inexact Rounded
ddqua1001 quantize 0.000 0.001 -> 0.000
ddqua1002 quantize 0.001 0.001 -> 0.001
ddqua1003 quantize 0.0012 0.001 -> 0.001 Inexact Rounded
ddqua1004 quantize 0.0018 0.001 -> 0.002 Inexact Rounded
ddqua1005 quantize 0.501 0.001 -> 0.501
ddqua1006 quantize 0.5012 0.001 -> 0.501 Inexact Rounded
ddqua1007 quantize 0.5018 0.001 -> 0.502 Inexact Rounded
ddqua1008 quantize 0.999 0.001 -> 0.999
ddqua481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
ddqua482 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded
ddqua483 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded
ddqua484 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded
ddqua485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
ddqua486 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded
-- a potential double-round
ddqua487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
ddqua488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
ddqua491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
ddqua492 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded
ddqua493 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded
ddqua494 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded
ddqua495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
ddqua496 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded
ddqua497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
ddqua498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
-- Zeros
ddqua500 quantize 0 1e1 -> 0E+1
ddqua501 quantize 0 1e0 -> 0
ddqua502 quantize 0 1e-1 -> 0.0
ddqua503 quantize 0.0 1e-1 -> 0.0
ddqua504 quantize 0.0 1e0 -> 0
ddqua505 quantize 0.0 1e+1 -> 0E+1
ddqua506 quantize 0E+1 1e-1 -> 0.0
ddqua507 quantize 0E+1 1e0 -> 0
ddqua508 quantize 0E+1 1e+1 -> 0E+1
ddqua509 quantize -0 1e1 -> -0E+1
ddqua510 quantize -0 1e0 -> -0
ddqua511 quantize -0 1e-1 -> -0.0
ddqua512 quantize -0.0 1e-1 -> -0.0
ddqua513 quantize -0.0 1e0 -> -0
ddqua514 quantize -0.0 1e+1 -> -0E+1
ddqua515 quantize -0E+1 1e-1 -> -0.0
ddqua516 quantize -0E+1 1e0 -> -0
ddqua517 quantize -0E+1 1e+1 -> -0E+1
-- Suspicious RHS values
ddqua520 quantize 1.234 1e359 -> 0E+359 Inexact Rounded
ddqua521 quantize 123.456 1e359 -> 0E+359 Inexact Rounded
ddqua522 quantize 1.234 1e359 -> 0E+359 Inexact Rounded
ddqua523 quantize 123.456 1e359 -> 0E+359 Inexact Rounded
-- next four are "won't fit" overfl
ddqua526 quantize 1.234 1e-299 -> NaN Invalid_operation
ddqua527 quantize 123.456 1e-299 -> NaN Invalid_operation
ddqua528 quantize 1.234 1e-299 -> NaN Invalid_operation
ddqua529 quantize 123.456 1e-299 -> NaN Invalid_operation
ddqua532 quantize 1.234E+299 1e299 -> 1E+299 Inexact Rounded
ddqua533 quantize 1.234E+298 1e299 -> 0E+299 Inexact Rounded
ddqua534 quantize 1.234 1e299 -> 0E+299 Inexact Rounded
ddqua537 quantize 0 1e-299 -> 0E-299
-- next two are "won't fit" overflows
ddqua538 quantize 1.234 1e-299 -> NaN Invalid_operation
ddqua539 quantize 1.234 1e-300 -> NaN Invalid_operation
-- [more below]
-- Specials
ddqua580 quantize Inf -Inf -> Infinity
ddqua581 quantize Inf 1e-299 -> NaN Invalid_operation
ddqua582 quantize Inf 1e-1 -> NaN Invalid_operation
ddqua583 quantize Inf 1e0 -> NaN Invalid_operation
ddqua584 quantize Inf 1e1 -> NaN Invalid_operation
ddqua585 quantize Inf 1e299 -> NaN Invalid_operation
ddqua586 quantize Inf Inf -> Infinity
ddqua587 quantize -1000 Inf -> NaN Invalid_operation
ddqua588 quantize -Inf Inf -> -Infinity
ddqua589 quantize -1 Inf -> NaN Invalid_operation
ddqua590 quantize 0 Inf -> NaN Invalid_operation
ddqua591 quantize 1 Inf -> NaN Invalid_operation
ddqua592 quantize 1000 Inf -> NaN Invalid_operation
ddqua593 quantize Inf Inf -> Infinity
ddqua594 quantize Inf 1e-0 -> NaN Invalid_operation
ddqua595 quantize -0 Inf -> NaN Invalid_operation
ddqua600 quantize -Inf -Inf -> -Infinity
ddqua601 quantize -Inf 1e-299 -> NaN Invalid_operation
ddqua602 quantize -Inf 1e-1 -> NaN Invalid_operation
ddqua603 quantize -Inf 1e0 -> NaN Invalid_operation
ddqua604 quantize -Inf 1e1 -> NaN Invalid_operation
ddqua605 quantize -Inf 1e299 -> NaN Invalid_operation
ddqua606 quantize -Inf Inf -> -Infinity
ddqua607 quantize -1000 Inf -> NaN Invalid_operation
ddqua608 quantize -Inf -Inf -> -Infinity
ddqua609 quantize -1 -Inf -> NaN Invalid_operation
ddqua610 quantize 0 -Inf -> NaN Invalid_operation
ddqua611 quantize 1 -Inf -> NaN Invalid_operation
ddqua612 quantize 1000 -Inf -> NaN Invalid_operation
ddqua613 quantize Inf -Inf -> Infinity
ddqua614 quantize -Inf 1e-0 -> NaN Invalid_operation
ddqua615 quantize -0 -Inf -> NaN Invalid_operation
ddqua621 quantize NaN -Inf -> NaN
ddqua622 quantize NaN 1e-299 -> NaN
ddqua623 quantize NaN 1e-1 -> NaN
ddqua624 quantize NaN 1e0 -> NaN
ddqua625 quantize NaN 1e1 -> NaN
ddqua626 quantize NaN 1e299 -> NaN
ddqua627 quantize NaN Inf -> NaN
ddqua628 quantize NaN NaN -> NaN
ddqua629 quantize -Inf NaN -> NaN
ddqua630 quantize -1000 NaN -> NaN
ddqua631 quantize -1 NaN -> NaN
ddqua632 quantize 0 NaN -> NaN
ddqua633 quantize 1 NaN -> NaN
ddqua634 quantize 1000 NaN -> NaN
ddqua635 quantize Inf NaN -> NaN
ddqua636 quantize NaN 1e-0 -> NaN
ddqua637 quantize -0 NaN -> NaN
ddqua641 quantize sNaN -Inf -> NaN Invalid_operation
ddqua642 quantize sNaN 1e-299 -> NaN Invalid_operation
ddqua643 quantize sNaN 1e-1 -> NaN Invalid_operation
ddqua644 quantize sNaN 1e0 -> NaN Invalid_operation
ddqua645 quantize sNaN 1e1 -> NaN Invalid_operation
ddqua646 quantize sNaN 1e299 -> NaN Invalid_operation
ddqua647 quantize sNaN NaN -> NaN Invalid_operation
ddqua648 quantize sNaN sNaN -> NaN Invalid_operation
ddqua649 quantize NaN sNaN -> NaN Invalid_operation
ddqua650 quantize -Inf sNaN -> NaN Invalid_operation
ddqua651 quantize -1000 sNaN -> NaN Invalid_operation
ddqua652 quantize -1 sNaN -> NaN Invalid_operation
ddqua653 quantize 0 sNaN -> NaN Invalid_operation
ddqua654 quantize 1 sNaN -> NaN Invalid_operation
ddqua655 quantize 1000 sNaN -> NaN Invalid_operation
ddqua656 quantize Inf sNaN -> NaN Invalid_operation
ddqua657 quantize NaN sNaN -> NaN Invalid_operation
ddqua658 quantize sNaN 1e-0 -> NaN Invalid_operation
ddqua659 quantize -0 sNaN -> NaN Invalid_operation
-- propagating NaNs
ddqua661 quantize NaN9 -Inf -> NaN9
ddqua662 quantize NaN8 919 -> NaN8
ddqua663 quantize NaN71 Inf -> NaN71
ddqua664 quantize NaN6 NaN5 -> NaN6
ddqua665 quantize -Inf NaN4 -> NaN4
ddqua666 quantize -919 NaN31 -> NaN31
ddqua667 quantize Inf NaN2 -> NaN2
ddqua671 quantize sNaN99 -Inf -> NaN99 Invalid_operation
ddqua672 quantize sNaN98 -11 -> NaN98 Invalid_operation
ddqua673 quantize sNaN97 NaN -> NaN97 Invalid_operation
ddqua674 quantize sNaN16 sNaN94 -> NaN16 Invalid_operation
ddqua675 quantize NaN95 sNaN93 -> NaN93 Invalid_operation
ddqua676 quantize -Inf sNaN92 -> NaN92 Invalid_operation
ddqua677 quantize 088 sNaN91 -> NaN91 Invalid_operation
ddqua678 quantize Inf sNaN90 -> NaN90 Invalid_operation
ddqua679 quantize NaN sNaN88 -> NaN88 Invalid_operation
ddqua681 quantize -NaN9 -Inf -> -NaN9
ddqua682 quantize -NaN8 919 -> -NaN8
ddqua683 quantize -NaN71 Inf -> -NaN71
ddqua684 quantize -NaN6 -NaN5 -> -NaN6
ddqua685 quantize -Inf -NaN4 -> -NaN4
ddqua686 quantize -919 -NaN31 -> -NaN31
ddqua687 quantize Inf -NaN2 -> -NaN2
ddqua691 quantize -sNaN99 -Inf -> -NaN99 Invalid_operation
ddqua692 quantize -sNaN98 -11 -> -NaN98 Invalid_operation
ddqua693 quantize -sNaN97 NaN -> -NaN97 Invalid_operation
ddqua694 quantize -sNaN16 sNaN94 -> -NaN16 Invalid_operation
ddqua695 quantize -NaN95 -sNaN93 -> -NaN93 Invalid_operation
ddqua696 quantize -Inf -sNaN92 -> -NaN92 Invalid_operation
ddqua697 quantize 088 -sNaN91 -> -NaN91 Invalid_operation
ddqua698 quantize Inf -sNaN90 -> -NaN90 Invalid_operation
ddqua699 quantize NaN -sNaN88 -> -NaN88 Invalid_operation
-- subnormals and underflow
ddqua710 quantize 1.00E-383 1e-383 -> 1E-383 Rounded
ddqua711 quantize 0.1E-383 2e-384 -> 1E-384 Subnormal
ddqua712 quantize 0.10E-383 3e-384 -> 1E-384 Subnormal Rounded
ddqua713 quantize 0.100E-383 4e-384 -> 1E-384 Subnormal Rounded
ddqua714 quantize 0.01E-383 5e-385 -> 1E-385 Subnormal
-- next is rounded to Emin
ddqua715 quantize 0.999E-383 1e-383 -> 1E-383 Inexact Rounded
ddqua716 quantize 0.099E-383 10e-384 -> 1E-384 Inexact Rounded Subnormal
ddqua717 quantize 0.009E-383 1e-385 -> 1E-385 Inexact Rounded Subnormal
ddqua718 quantize 0.001E-383 1e-385 -> 0E-385 Inexact Rounded
ddqua719 quantize 0.0009E-383 1e-385 -> 0E-385 Inexact Rounded
ddqua720 quantize 0.0001E-383 1e-385 -> 0E-385 Inexact Rounded
ddqua730 quantize -1.00E-383 1e-383 -> -1E-383 Rounded
ddqua731 quantize -0.1E-383 1e-383 -> -0E-383 Rounded Inexact
ddqua732 quantize -0.10E-383 1e-383 -> -0E-383 Rounded Inexact
ddqua733 quantize -0.100E-383 1e-383 -> -0E-383 Rounded Inexact
ddqua734 quantize -0.01E-383 1e-383 -> -0E-383 Inexact Rounded
-- next is rounded to Emin
ddqua735 quantize -0.999E-383 90e-383 -> -1E-383 Inexact Rounded
ddqua736 quantize -0.099E-383 -1e-383 -> -0E-383 Inexact Rounded
ddqua737 quantize -0.009E-383 -1e-383 -> -0E-383 Inexact Rounded
ddqua738 quantize -0.001E-383 -0e-383 -> -0E-383 Inexact Rounded
ddqua739 quantize -0.0001E-383 0e-383 -> -0E-383 Inexact Rounded
ddqua740 quantize -1.00E-383 1e-384 -> -1.0E-383 Rounded
ddqua741 quantize -0.1E-383 1e-384 -> -1E-384 Subnormal
ddqua742 quantize -0.10E-383 1e-384 -> -1E-384 Subnormal Rounded
ddqua743 quantize -0.100E-383 1e-384 -> -1E-384 Subnormal Rounded
ddqua744 quantize -0.01E-383 1e-384 -> -0E-384 Inexact Rounded
-- next is rounded to Emin
ddqua745 quantize -0.999E-383 1e-384 -> -1.0E-383 Inexact Rounded
ddqua746 quantize -0.099E-383 1e-384 -> -1E-384 Inexact Rounded Subnormal
ddqua747 quantize -0.009E-383 1e-384 -> -0E-384 Inexact Rounded
ddqua748 quantize -0.001E-383 1e-384 -> -0E-384 Inexact Rounded
ddqua749 quantize -0.0001E-383 1e-384 -> -0E-384 Inexact Rounded
ddqua750 quantize -1.00E-383 1e-385 -> -1.00E-383
ddqua751 quantize -0.1E-383 1e-385 -> -1.0E-384 Subnormal
ddqua752 quantize -0.10E-383 1e-385 -> -1.0E-384 Subnormal
ddqua753 quantize -0.100E-383 1e-385 -> -1.0E-384 Subnormal Rounded
ddqua754 quantize -0.01E-383 1e-385 -> -1E-385 Subnormal
-- next is rounded to Emin
ddqua755 quantize -0.999E-383 1e-385 -> -1.00E-383 Inexact Rounded
ddqua756 quantize -0.099E-383 1e-385 -> -1.0E-384 Inexact Rounded Subnormal
ddqua757 quantize -0.009E-383 1e-385 -> -1E-385 Inexact Rounded Subnormal
ddqua758 quantize -0.001E-383 1e-385 -> -0E-385 Inexact Rounded
ddqua759 quantize -0.0001E-383 1e-385 -> -0E-385 Inexact Rounded
ddqua760 quantize -1.00E-383 1e-386 -> -1.000E-383
ddqua761 quantize -0.1E-383 1e-386 -> -1.00E-384 Subnormal
ddqua762 quantize -0.10E-383 1e-386 -> -1.00E-384 Subnormal
ddqua763 quantize -0.100E-383 1e-386 -> -1.00E-384 Subnormal
ddqua764 quantize -0.01E-383 1e-386 -> -1.0E-385 Subnormal
ddqua765 quantize -0.999E-383 1e-386 -> -9.99E-384 Subnormal
ddqua766 quantize -0.099E-383 1e-386 -> -9.9E-385 Subnormal
ddqua767 quantize -0.009E-383 1e-386 -> -9E-386 Subnormal
ddqua768 quantize -0.001E-383 1e-386 -> -1E-386 Subnormal
ddqua769 quantize -0.0001E-383 1e-386 -> -0E-386 Inexact Rounded
-- More from Fung Lee
ddqua1021 quantize 8.666666666666000E+384 1.000000000000000E+384 -> 8.666666666666000E+384
ddqua1022 quantize -8.666666666666000E+384 1.000000000000000E+384 -> -8.666666666666000E+384
ddqua1027 quantize 8.666666666666000E+323 1E+31 -> NaN Invalid_operation
ddqua1029 quantize 8.66666666E+3 1E+3 -> 9E+3 Inexact Rounded
--ddqua1030 quantize 8.666666666666000E+384 1E+384 -> 9.000000000000000E+384 Rounded Inexact
--ddqua1031 quantize 8.666666666666000E+384 1E+384 -> 8.666666666666000E+384 Rounded
--ddqua1032 quantize 8.666666666666000E+384 1E+383 -> 8.666666666666000E+384 Rounded
--ddqua1033 quantize 8.666666666666000E+384 1E+382 -> 8.666666666666000E+384 Rounded
--ddqua1034 quantize 8.666666666666000E+384 1E+381 -> 8.666666666666000E+384 Rounded
--ddqua1035 quantize 8.666666666666000E+384 1E+380 -> 8.666666666666000E+384 Rounded
-- Int and uInt32 edge values for testing conversions
ddqua1040 quantize -2147483646 0 -> -2147483646
ddqua1041 quantize -2147483647 0 -> -2147483647
ddqua1042 quantize -2147483648 0 -> -2147483648
ddqua1043 quantize -2147483649 0 -> -2147483649
ddqua1044 quantize 2147483646 0 -> 2147483646
ddqua1045 quantize 2147483647 0 -> 2147483647
ddqua1046 quantize 2147483648 0 -> 2147483648
ddqua1047 quantize 2147483649 0 -> 2147483649
ddqua1048 quantize 4294967294 0 -> 4294967294
ddqua1049 quantize 4294967295 0 -> 4294967295
ddqua1050 quantize 4294967296 0 -> 4294967296
ddqua1051 quantize 4294967297 0 -> 4294967297
-- Rounding swathe
rounding: half_even
ddqua1100 quantize 1.2300 1.00 -> 1.23 Rounded
ddqua1101 quantize 1.2301 1.00 -> 1.23 Inexact Rounded
ddqua1102 quantize 1.2310 1.00 -> 1.23 Inexact Rounded
ddqua1103 quantize 1.2350 1.00 -> 1.24 Inexact Rounded
ddqua1104 quantize 1.2351 1.00 -> 1.24 Inexact Rounded
ddqua1105 quantize 1.2450 1.00 -> 1.24 Inexact Rounded
ddqua1106 quantize 1.2451 1.00 -> 1.25 Inexact Rounded
ddqua1107 quantize 1.2360 1.00 -> 1.24 Inexact Rounded
ddqua1108 quantize 1.2370 1.00 -> 1.24 Inexact Rounded
ddqua1109 quantize 1.2399 1.00 -> 1.24 Inexact Rounded
rounding: half_up
ddqua1200 quantize 1.2300 1.00 -> 1.23 Rounded
ddqua1201 quantize 1.2301 1.00 -> 1.23 Inexact Rounded
ddqua1202 quantize 1.2310 1.00 -> 1.23 Inexact Rounded
ddqua1203 quantize 1.2350 1.00 -> 1.24 Inexact Rounded
ddqua1204 quantize 1.2351 1.00 -> 1.24 Inexact Rounded
ddqua1205 quantize 1.2450 1.00 -> 1.25 Inexact Rounded
ddqua1206 quantize 1.2451 1.00 -> 1.25 Inexact Rounded
ddqua1207 quantize 1.2360 1.00 -> 1.24 Inexact Rounded
ddqua1208 quantize 1.2370 1.00 -> 1.24 Inexact Rounded
ddqua1209 quantize 1.2399 1.00 -> 1.24 Inexact Rounded
rounding: half_down
ddqua1300 quantize 1.2300 1.00 -> 1.23 Rounded
ddqua1301 quantize 1.2301 1.00 -> 1.23 Inexact Rounded
ddqua1302 quantize 1.2310 1.00 -> 1.23 Inexact Rounded
ddqua1303 quantize 1.2350 1.00 -> 1.23 Inexact Rounded
ddqua1304 quantize 1.2351 1.00 -> 1.24 Inexact Rounded
ddqua1305 quantize 1.2450 1.00 -> 1.24 Inexact Rounded
ddqua1306 quantize 1.2451 1.00 -> 1.25 Inexact Rounded
ddqua1307 quantize 1.2360 1.00 -> 1.24 Inexact Rounded
ddqua1308 quantize 1.2370 1.00 -> 1.24 Inexact Rounded
ddqua1309 quantize 1.2399 1.00 -> 1.24 Inexact Rounded
rounding: up
ddqua1400 quantize 1.2300 1.00 -> 1.23 Rounded
ddqua1401 quantize 1.2301 1.00 -> 1.24 Inexact Rounded
ddqua1402 quantize 1.2310 1.00 -> 1.24 Inexact Rounded
ddqua1403 quantize 1.2350 1.00 -> 1.24 Inexact Rounded
ddqua1404 quantize 1.2351 1.00 -> 1.24 Inexact Rounded
ddqua1405 quantize 1.2450 1.00 -> 1.25 Inexact Rounded
ddqua1406 quantize 1.2451 1.00 -> 1.25 Inexact Rounded
ddqua1407 quantize 1.2360 1.00 -> 1.24 Inexact Rounded
ddqua1408 quantize 1.2370 1.00 -> 1.24 Inexact Rounded
ddqua1409 quantize 1.2399 1.00 -> 1.24 Inexact Rounded
ddqua1411 quantize -1.2399 1.00 -> -1.24 Inexact Rounded
rounding: down
ddqua1500 quantize 1.2300 1.00 -> 1.23 Rounded
ddqua1501 quantize 1.2301 1.00 -> 1.23 Inexact Rounded
ddqua1502 quantize 1.2310 1.00 -> 1.23 Inexact Rounded
ddqua1503 quantize 1.2350 1.00 -> 1.23 Inexact Rounded
ddqua1504 quantize 1.2351 1.00 -> 1.23 Inexact Rounded
ddqua1505 quantize 1.2450 1.00 -> 1.24 Inexact Rounded
ddqua1506 quantize 1.2451 1.00 -> 1.24 Inexact Rounded
ddqua1507 quantize 1.2360 1.00 -> 1.23 Inexact Rounded
ddqua1508 quantize 1.2370 1.00 -> 1.23 Inexact Rounded
ddqua1509 quantize 1.2399 1.00 -> 1.23 Inexact Rounded
ddqua1511 quantize -1.2399 1.00 -> -1.23 Inexact Rounded
rounding: ceiling
ddqua1600 quantize 1.2300 1.00 -> 1.23 Rounded
ddqua1601 quantize 1.2301 1.00 -> 1.24 Inexact Rounded
ddqua1602 quantize 1.2310 1.00 -> 1.24 Inexact Rounded
ddqua1603 quantize 1.2350 1.00 -> 1.24 Inexact Rounded
ddqua1604 quantize 1.2351 1.00 -> 1.24 Inexact Rounded
ddqua1605 quantize 1.2450 1.00 -> 1.25 Inexact Rounded
ddqua1606 quantize 1.2451 1.00 -> 1.25 Inexact Rounded
ddqua1607 quantize 1.2360 1.00 -> 1.24 Inexact Rounded
ddqua1608 quantize 1.2370 1.00 -> 1.24 Inexact Rounded
ddqua1609 quantize 1.2399 1.00 -> 1.24 Inexact Rounded
ddqua1611 quantize -1.2399 1.00 -> -1.23 Inexact Rounded
rounding: floor
ddqua1700 quantize 1.2300 1.00 -> 1.23 Rounded
ddqua1701 quantize 1.2301 1.00 -> 1.23 Inexact Rounded
ddqua1702 quantize 1.2310 1.00 -> 1.23 Inexact Rounded
ddqua1703 quantize 1.2350 1.00 -> 1.23 Inexact Rounded
ddqua1704 quantize 1.2351 1.00 -> 1.23 Inexact Rounded
ddqua1705 quantize 1.2450 1.00 -> 1.24 Inexact Rounded
ddqua1706 quantize 1.2451 1.00 -> 1.24 Inexact Rounded
ddqua1707 quantize 1.2360 1.00 -> 1.23 Inexact Rounded
ddqua1708 quantize 1.2370 1.00 -> 1.23 Inexact Rounded
ddqua1709 quantize 1.2399 1.00 -> 1.23 Inexact Rounded
ddqua1711 quantize -1.2399 1.00 -> -1.24 Inexact Rounded
rounding: 05up
ddqua1800 quantize 1.2000 1.00 -> 1.20 Rounded
ddqua1801 quantize 1.2001 1.00 -> 1.21 Inexact Rounded
ddqua1802 quantize 1.2010 1.00 -> 1.21 Inexact Rounded
ddqua1803 quantize 1.2050 1.00 -> 1.21 Inexact Rounded
ddqua1804 quantize 1.2051 1.00 -> 1.21 Inexact Rounded
ddqua1807 quantize 1.2060 1.00 -> 1.21 Inexact Rounded
ddqua1808 quantize 1.2070 1.00 -> 1.21 Inexact Rounded
ddqua1809 quantize 1.2099 1.00 -> 1.21 Inexact Rounded
ddqua1811 quantize -1.2099 1.00 -> -1.21 Inexact Rounded
ddqua1900 quantize 1.2100 1.00 -> 1.21 Rounded
ddqua1901 quantize 1.2101 1.00 -> 1.21 Inexact Rounded
ddqua1902 quantize 1.2110 1.00 -> 1.21 Inexact Rounded
ddqua1903 quantize 1.2150 1.00 -> 1.21 Inexact Rounded
ddqua1904 quantize 1.2151 1.00 -> 1.21 Inexact Rounded
ddqua1907 quantize 1.2160 1.00 -> 1.21 Inexact Rounded
ddqua1908 quantize 1.2170 1.00 -> 1.21 Inexact Rounded
ddqua1909 quantize 1.2199 1.00 -> 1.21 Inexact Rounded
ddqua1911 quantize -1.2199 1.00 -> -1.21 Inexact Rounded
ddqua2000 quantize 1.2400 1.00 -> 1.24 Rounded
ddqua2001 quantize 1.2401 1.00 -> 1.24 Inexact Rounded
ddqua2002 quantize 1.2410 1.00 -> 1.24 Inexact Rounded
ddqua2003 quantize 1.2450 1.00 -> 1.24 Inexact Rounded
ddqua2004 quantize 1.2451 1.00 -> 1.24 Inexact Rounded
ddqua2007 quantize 1.2460 1.00 -> 1.24 Inexact Rounded
ddqua2008 quantize 1.2470 1.00 -> 1.24 Inexact Rounded
ddqua2009 quantize 1.2499 1.00 -> 1.24 Inexact Rounded
ddqua2011 quantize -1.2499 1.00 -> -1.24 Inexact Rounded
ddqua2100 quantize 1.2500 1.00 -> 1.25 Rounded
ddqua2101 quantize 1.2501 1.00 -> 1.26 Inexact Rounded
ddqua2102 quantize 1.2510 1.00 -> 1.26 Inexact Rounded
ddqua2103 quantize 1.2550 1.00 -> 1.26 Inexact Rounded
ddqua2104 quantize 1.2551 1.00 -> 1.26 Inexact Rounded
ddqua2107 quantize 1.2560 1.00 -> 1.26 Inexact Rounded
ddqua2108 quantize 1.2570 1.00 -> 1.26 Inexact Rounded
ddqua2109 quantize 1.2599 1.00 -> 1.26 Inexact Rounded
ddqua2111 quantize -1.2599 1.00 -> -1.26 Inexact Rounded
ddqua2200 quantize 1.2600 1.00 -> 1.26 Rounded
ddqua2201 quantize 1.2601 1.00 -> 1.26 Inexact Rounded
ddqua2202 quantize 1.2610 1.00 -> 1.26 Inexact Rounded
ddqua2203 quantize 1.2650 1.00 -> 1.26 Inexact Rounded
ddqua2204 quantize 1.2651 1.00 -> 1.26 Inexact Rounded
ddqua2207 quantize 1.2660 1.00 -> 1.26 Inexact Rounded
ddqua2208 quantize 1.2670 1.00 -> 1.26 Inexact Rounded
ddqua2209 quantize 1.2699 1.00 -> 1.26 Inexact Rounded
ddqua2211 quantize -1.2699 1.00 -> -1.26 Inexact Rounded
ddqua2300 quantize 1.2900 1.00 -> 1.29 Rounded
ddqua2301 quantize 1.2901 1.00 -> 1.29 Inexact Rounded
ddqua2302 quantize 1.2910 1.00 -> 1.29 Inexact Rounded
ddqua2303 quantize 1.2950 1.00 -> 1.29 Inexact Rounded
ddqua2304 quantize 1.2951 1.00 -> 1.29 Inexact Rounded
ddqua2307 quantize 1.2960 1.00 -> 1.29 Inexact Rounded
ddqua2308 quantize 1.2970 1.00 -> 1.29 Inexact Rounded
ddqua2309 quantize 1.2999 1.00 -> 1.29 Inexact Rounded
ddqua2311 quantize -1.2999 1.00 -> -1.29 Inexact Rounded
-- Null tests
rounding: half_even
ddqua998 quantize 10 # -> NaN Invalid_operation
ddqua999 quantize # 1e10 -> NaN Invalid_operation

View file

@ -0,0 +1,182 @@
------------------------------------------------------------------------
-- ddReduce.decTest -- remove trailing zeros from a decDouble --
-- Copyright (c) IBM Corporation, 2003, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
ddred001 reduce '1' -> '1'
ddred002 reduce '-1' -> '-1'
ddred003 reduce '1.00' -> '1'
ddred004 reduce '-1.00' -> '-1'
ddred005 reduce '0' -> '0'
ddred006 reduce '0.00' -> '0'
ddred007 reduce '00.0' -> '0'
ddred008 reduce '00.00' -> '0'
ddred009 reduce '00' -> '0'
ddred010 reduce '0E+1' -> '0'
ddred011 reduce '0E+5' -> '0'
ddred012 reduce '-2' -> '-2'
ddred013 reduce '2' -> '2'
ddred014 reduce '-2.00' -> '-2'
ddred015 reduce '2.00' -> '2'
ddred016 reduce '-0' -> '-0'
ddred017 reduce '-0.00' -> '-0'
ddred018 reduce '-00.0' -> '-0'
ddred019 reduce '-00.00' -> '-0'
ddred020 reduce '-00' -> '-0'
ddred021 reduce '-0E+5' -> '-0'
ddred022 reduce '-0E+1' -> '-0'
ddred030 reduce '+0.1' -> '0.1'
ddred031 reduce '-0.1' -> '-0.1'
ddred032 reduce '+0.01' -> '0.01'
ddred033 reduce '-0.01' -> '-0.01'
ddred034 reduce '+0.001' -> '0.001'
ddred035 reduce '-0.001' -> '-0.001'
ddred036 reduce '+0.000001' -> '0.000001'
ddred037 reduce '-0.000001' -> '-0.000001'
ddred038 reduce '+0.000000000001' -> '1E-12'
ddred039 reduce '-0.000000000001' -> '-1E-12'
ddred041 reduce 1.1 -> 1.1
ddred042 reduce 1.10 -> 1.1
ddred043 reduce 1.100 -> 1.1
ddred044 reduce 1.110 -> 1.11
ddred045 reduce -1.1 -> -1.1
ddred046 reduce -1.10 -> -1.1
ddred047 reduce -1.100 -> -1.1
ddred048 reduce -1.110 -> -1.11
ddred049 reduce 9.9 -> 9.9
ddred050 reduce 9.90 -> 9.9
ddred051 reduce 9.900 -> 9.9
ddred052 reduce 9.990 -> 9.99
ddred053 reduce -9.9 -> -9.9
ddred054 reduce -9.90 -> -9.9
ddred055 reduce -9.900 -> -9.9
ddred056 reduce -9.990 -> -9.99
-- some trailing fractional zeros with zeros in units
ddred060 reduce 10.0 -> 1E+1
ddred061 reduce 10.00 -> 1E+1
ddred062 reduce 100.0 -> 1E+2
ddred063 reduce 100.00 -> 1E+2
ddred064 reduce 1.1000E+3 -> 1.1E+3
ddred065 reduce 1.10000E+3 -> 1.1E+3
ddred066 reduce -10.0 -> -1E+1
ddred067 reduce -10.00 -> -1E+1
ddred068 reduce -100.0 -> -1E+2
ddred069 reduce -100.00 -> -1E+2
ddred070 reduce -1.1000E+3 -> -1.1E+3
ddred071 reduce -1.10000E+3 -> -1.1E+3
-- some insignificant trailing zeros with positive exponent
ddred080 reduce 10E+1 -> 1E+2
ddred081 reduce 100E+1 -> 1E+3
ddred082 reduce 1.0E+2 -> 1E+2
ddred083 reduce 1.0E+3 -> 1E+3
ddred084 reduce 1.1E+3 -> 1.1E+3
ddred085 reduce 1.00E+3 -> 1E+3
ddred086 reduce 1.10E+3 -> 1.1E+3
ddred087 reduce -10E+1 -> -1E+2
ddred088 reduce -100E+1 -> -1E+3
ddred089 reduce -1.0E+2 -> -1E+2
ddred090 reduce -1.0E+3 -> -1E+3
ddred091 reduce -1.1E+3 -> -1.1E+3
ddred092 reduce -1.00E+3 -> -1E+3
ddred093 reduce -1.10E+3 -> -1.1E+3
-- some significant trailing zeros, were we to be trimming
ddred100 reduce 11 -> 11
ddred101 reduce 10 -> 1E+1
ddred102 reduce 10. -> 1E+1
ddred103 reduce 1.1E+1 -> 11
ddred104 reduce 1.0E+1 -> 1E+1
ddred105 reduce 1.10E+2 -> 1.1E+2
ddred106 reduce 1.00E+2 -> 1E+2
ddred107 reduce 1.100E+3 -> 1.1E+3
ddred108 reduce 1.000E+3 -> 1E+3
ddred109 reduce 1.000000E+6 -> 1E+6
ddred110 reduce -11 -> -11
ddred111 reduce -10 -> -1E+1
ddred112 reduce -10. -> -1E+1
ddred113 reduce -1.1E+1 -> -11
ddred114 reduce -1.0E+1 -> -1E+1
ddred115 reduce -1.10E+2 -> -1.1E+2
ddred116 reduce -1.00E+2 -> -1E+2
ddred117 reduce -1.100E+3 -> -1.1E+3
ddred118 reduce -1.000E+3 -> -1E+3
ddred119 reduce -1.00000E+5 -> -1E+5
ddred120 reduce -1.000000E+6 -> -1E+6
ddred121 reduce -10.00000E+6 -> -1E+7
ddred122 reduce -100.0000E+6 -> -1E+8
ddred123 reduce -1000.000E+6 -> -1E+9
ddred124 reduce -10000.00E+6 -> -1E+10
ddred125 reduce -100000.0E+6 -> -1E+11
ddred126 reduce -1000000.E+6 -> -1E+12
-- examples from decArith
ddred140 reduce '2.1' -> '2.1'
ddred141 reduce '-2.0' -> '-2'
ddred142 reduce '1.200' -> '1.2'
ddred143 reduce '-120' -> '-1.2E+2'
ddred144 reduce '120.00' -> '1.2E+2'
ddred145 reduce '0.00' -> '0'
-- Nmax, Nmin, Ntiny
-- note origami effect on some of these
ddred151 reduce 9.999999999999999E+384 -> 9.999999999999999E+384
ddred152 reduce 9.999999000000000E+380 -> 9.99999900000E+380
ddred153 reduce 9.999999999990000E+384 -> 9.999999999990000E+384
ddred154 reduce 1E-383 -> 1E-383
ddred155 reduce 1.000000000000000E-383 -> 1E-383
ddred156 reduce 2.000E-395 -> 2E-395 Subnormal
ddred157 reduce 1E-398 -> 1E-398 Subnormal
ddred161 reduce -1E-398 -> -1E-398 Subnormal
ddred162 reduce -2.000E-395 -> -2E-395 Subnormal
ddred163 reduce -1.000000000000000E-383 -> -1E-383
ddred164 reduce -1E-383 -> -1E-383
ddred165 reduce -9.999999000000000E+380 -> -9.99999900000E+380
ddred166 reduce -9.999999999990000E+384 -> -9.999999999990000E+384
ddred167 reduce -9.999999999999990E+384 -> -9.999999999999990E+384
ddred168 reduce -9.999999999999999E+384 -> -9.999999999999999E+384
ddred169 reduce -9.999999999999990E+384 -> -9.999999999999990E+384
-- specials (reduce does not affect payload)
ddred820 reduce 'Inf' -> 'Infinity'
ddred821 reduce '-Inf' -> '-Infinity'
ddred822 reduce NaN -> NaN
ddred823 reduce sNaN -> NaN Invalid_operation
ddred824 reduce NaN101 -> NaN101
ddred825 reduce sNaN010 -> NaN10 Invalid_operation
ddred827 reduce -NaN -> -NaN
ddred828 reduce -sNaN -> -NaN Invalid_operation
ddred829 reduce -NaN101 -> -NaN101
ddred830 reduce -sNaN010 -> -NaN10 Invalid_operation
-- Null test
ddred900 reduce # -> NaN Invalid_operation

View file

@ -0,0 +1,600 @@
------------------------------------------------------------------------
-- ddRemainder.decTest -- decDouble remainder --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks (as base, above)
ddrem001 remainder 1 1 -> 0
ddrem002 remainder 2 1 -> 0
ddrem003 remainder 1 2 -> 1
ddrem004 remainder 2 2 -> 0
ddrem005 remainder 0 1 -> 0
ddrem006 remainder 0 2 -> 0
ddrem007 remainder 1 3 -> 1
ddrem008 remainder 2 3 -> 2
ddrem009 remainder 3 3 -> 0
ddrem010 remainder 2.4 1 -> 0.4
ddrem011 remainder 2.4 -1 -> 0.4
ddrem012 remainder -2.4 1 -> -0.4
ddrem013 remainder -2.4 -1 -> -0.4
ddrem014 remainder 2.40 1 -> 0.40
ddrem015 remainder 2.400 1 -> 0.400
ddrem016 remainder 2.4 2 -> 0.4
ddrem017 remainder 2.400 2 -> 0.400
ddrem018 remainder 2. 2 -> 0
ddrem019 remainder 20 20 -> 0
ddrem020 remainder 187 187 -> 0
ddrem021 remainder 5 2 -> 1
ddrem022 remainder 5 2.0 -> 1.0
ddrem023 remainder 5 2.000 -> 1.000
ddrem024 remainder 5 0.200 -> 0.000
ddrem025 remainder 5 0.200 -> 0.000
ddrem030 remainder 1 2 -> 1
ddrem031 remainder 1 4 -> 1
ddrem032 remainder 1 8 -> 1
ddrem033 remainder 1 16 -> 1
ddrem034 remainder 1 32 -> 1
ddrem035 remainder 1 64 -> 1
ddrem040 remainder 1 -2 -> 1
ddrem041 remainder 1 -4 -> 1
ddrem042 remainder 1 -8 -> 1
ddrem043 remainder 1 -16 -> 1
ddrem044 remainder 1 -32 -> 1
ddrem045 remainder 1 -64 -> 1
ddrem050 remainder -1 2 -> -1
ddrem051 remainder -1 4 -> -1
ddrem052 remainder -1 8 -> -1
ddrem053 remainder -1 16 -> -1
ddrem054 remainder -1 32 -> -1
ddrem055 remainder -1 64 -> -1
ddrem060 remainder -1 -2 -> -1
ddrem061 remainder -1 -4 -> -1
ddrem062 remainder -1 -8 -> -1
ddrem063 remainder -1 -16 -> -1
ddrem064 remainder -1 -32 -> -1
ddrem065 remainder -1 -64 -> -1
ddrem066 remainder 999999999 1 -> 0
ddrem067 remainder 999999999.4 1 -> 0.4
ddrem068 remainder 999999999.5 1 -> 0.5
ddrem069 remainder 999999999.9 1 -> 0.9
ddrem070 remainder 999999999.999 1 -> 0.999
ddrem071 remainder 999999.999999 1 -> 0.999999
ddrem072 remainder 9 1 -> 0
ddrem073 remainder 9999999999999999 1 -> 0
ddrem074 remainder 9999999999999999 2 -> 1
ddrem075 remainder 9999999999999999 3 -> 0
ddrem076 remainder 9999999999999999 4 -> 3
ddrem080 remainder 0. 1 -> 0
ddrem081 remainder .0 1 -> 0.0
ddrem082 remainder 0.00 1 -> 0.00
ddrem083 remainder 0.00E+9 1 -> 0
ddrem084 remainder 0.00E+3 1 -> 0
ddrem085 remainder 0.00E+2 1 -> 0
ddrem086 remainder 0.00E+1 1 -> 0.0
ddrem087 remainder 0.00E+0 1 -> 0.00
ddrem088 remainder 0.00E-0 1 -> 0.00
ddrem089 remainder 0.00E-1 1 -> 0.000
ddrem090 remainder 0.00E-2 1 -> 0.0000
ddrem091 remainder 0.00E-3 1 -> 0.00000
ddrem092 remainder 0.00E-4 1 -> 0.000000
ddrem093 remainder 0.00E-5 1 -> 0E-7
ddrem094 remainder 0.00E-6 1 -> 0E-8
ddrem095 remainder 0.0000E-50 1 -> 0E-54
-- Various flavours of remainder by 0
ddrem101 remainder 0 0 -> NaN Division_undefined
ddrem102 remainder 0 -0 -> NaN Division_undefined
ddrem103 remainder -0 0 -> NaN Division_undefined
ddrem104 remainder -0 -0 -> NaN Division_undefined
ddrem105 remainder 0.0E5 0 -> NaN Division_undefined
ddrem106 remainder 0.000 0 -> NaN Division_undefined
-- [Some think this next group should be Division_by_zero exception, but
-- IEEE 854 is explicit that it is Invalid operation .. for
-- remainder-near, anyway]
ddrem107 remainder 0.0001 0 -> NaN Invalid_operation
ddrem108 remainder 0.01 0 -> NaN Invalid_operation
ddrem109 remainder 0.1 0 -> NaN Invalid_operation
ddrem110 remainder 1 0 -> NaN Invalid_operation
ddrem111 remainder 1 0.0 -> NaN Invalid_operation
ddrem112 remainder 10 0.0 -> NaN Invalid_operation
ddrem113 remainder 1E+100 0.0 -> NaN Invalid_operation
ddrem114 remainder 1E+380 0 -> NaN Invalid_operation
ddrem115 remainder 0.0001 -0 -> NaN Invalid_operation
ddrem116 remainder 0.01 -0 -> NaN Invalid_operation
ddrem119 remainder 0.1 -0 -> NaN Invalid_operation
ddrem120 remainder 1 -0 -> NaN Invalid_operation
ddrem121 remainder 1 -0.0 -> NaN Invalid_operation
ddrem122 remainder 10 -0.0 -> NaN Invalid_operation
ddrem123 remainder 1E+100 -0.0 -> NaN Invalid_operation
ddrem124 remainder 1E+384 -0 -> NaN Invalid_operation
-- and zeros on left
ddrem130 remainder 0 1 -> 0
ddrem131 remainder 0 -1 -> 0
ddrem132 remainder 0.0 1 -> 0.0
ddrem133 remainder 0.0 -1 -> 0.0
ddrem134 remainder -0 1 -> -0
ddrem135 remainder -0 -1 -> -0
ddrem136 remainder -0.0 1 -> -0.0
ddrem137 remainder -0.0 -1 -> -0.0
-- 0.5ers
ddrem143 remainder 0.5 2 -> 0.5
ddrem144 remainder 0.5 2.1 -> 0.5
ddrem145 remainder 0.5 2.01 -> 0.50
ddrem146 remainder 0.5 2.001 -> 0.500
ddrem147 remainder 0.50 2 -> 0.50
ddrem148 remainder 0.50 2.01 -> 0.50
ddrem149 remainder 0.50 2.001 -> 0.500
-- steadies
ddrem150 remainder 1 1 -> 0
ddrem151 remainder 1 2 -> 1
ddrem152 remainder 1 3 -> 1
ddrem153 remainder 1 4 -> 1
ddrem154 remainder 1 5 -> 1
ddrem155 remainder 1 6 -> 1
ddrem156 remainder 1 7 -> 1
ddrem157 remainder 1 8 -> 1
ddrem158 remainder 1 9 -> 1
ddrem159 remainder 1 10 -> 1
ddrem160 remainder 1 1 -> 0
ddrem161 remainder 2 1 -> 0
ddrem162 remainder 3 1 -> 0
ddrem163 remainder 4 1 -> 0
ddrem164 remainder 5 1 -> 0
ddrem165 remainder 6 1 -> 0
ddrem166 remainder 7 1 -> 0
ddrem167 remainder 8 1 -> 0
ddrem168 remainder 9 1 -> 0
ddrem169 remainder 10 1 -> 0
-- some differences from remainderNear
ddrem171 remainder 0.4 1.020 -> 0.400
ddrem172 remainder 0.50 1.020 -> 0.500
ddrem173 remainder 0.51 1.020 -> 0.510
ddrem174 remainder 0.52 1.020 -> 0.520
ddrem175 remainder 0.6 1.020 -> 0.600
-- More flavours of remainder by 0
ddrem201 remainder 0 0 -> NaN Division_undefined
ddrem202 remainder 0.0E5 0 -> NaN Division_undefined
ddrem203 remainder 0.000 0 -> NaN Division_undefined
ddrem204 remainder 0.0001 0 -> NaN Invalid_operation
ddrem205 remainder 0.01 0 -> NaN Invalid_operation
ddrem206 remainder 0.1 0 -> NaN Invalid_operation
ddrem207 remainder 1 0 -> NaN Invalid_operation
ddrem208 remainder 1 0.0 -> NaN Invalid_operation
ddrem209 remainder 10 0.0 -> NaN Invalid_operation
ddrem210 remainder 1E+100 0.0 -> NaN Invalid_operation
ddrem211 remainder 1E+380 0 -> NaN Invalid_operation
-- some differences from remainderNear
ddrem231 remainder -0.4 1.020 -> -0.400
ddrem232 remainder -0.50 1.020 -> -0.500
ddrem233 remainder -0.51 1.020 -> -0.510
ddrem234 remainder -0.52 1.020 -> -0.520
ddrem235 remainder -0.6 1.020 -> -0.600
-- high Xs
ddrem240 remainder 1E+2 1.00 -> 0.00
-- ddrem3xx are from DiagBigDecimal
ddrem301 remainder 1 3 -> 1
ddrem302 remainder 5 5 -> 0
ddrem303 remainder 13 10 -> 3
ddrem304 remainder 13 50 -> 13
ddrem305 remainder 13 100 -> 13
ddrem306 remainder 13 1000 -> 13
ddrem307 remainder .13 1 -> 0.13
ddrem308 remainder 0.133 1 -> 0.133
ddrem309 remainder 0.1033 1 -> 0.1033
ddrem310 remainder 1.033 1 -> 0.033
ddrem311 remainder 10.33 1 -> 0.33
ddrem312 remainder 10.33 10 -> 0.33
ddrem313 remainder 103.3 1 -> 0.3
ddrem314 remainder 133 10 -> 3
ddrem315 remainder 1033 10 -> 3
ddrem316 remainder 1033 50 -> 33
ddrem317 remainder 101.0 3 -> 2.0
ddrem318 remainder 102.0 3 -> 0.0
ddrem319 remainder 103.0 3 -> 1.0
ddrem320 remainder 2.40 1 -> 0.40
ddrem321 remainder 2.400 1 -> 0.400
ddrem322 remainder 2.4 1 -> 0.4
ddrem323 remainder 2.4 2 -> 0.4
ddrem324 remainder 2.400 2 -> 0.400
ddrem325 remainder 1 0.3 -> 0.1
ddrem326 remainder 1 0.30 -> 0.10
ddrem327 remainder 1 0.300 -> 0.100
ddrem328 remainder 1 0.3000 -> 0.1000
ddrem329 remainder 1.0 0.3 -> 0.1
ddrem330 remainder 1.00 0.3 -> 0.10
ddrem331 remainder 1.000 0.3 -> 0.100
ddrem332 remainder 1.0000 0.3 -> 0.1000
ddrem333 remainder 0.5 2 -> 0.5
ddrem334 remainder 0.5 2.1 -> 0.5
ddrem335 remainder 0.5 2.01 -> 0.50
ddrem336 remainder 0.5 2.001 -> 0.500
ddrem337 remainder 0.50 2 -> 0.50
ddrem338 remainder 0.50 2.01 -> 0.50
ddrem339 remainder 0.50 2.001 -> 0.500
ddrem340 remainder 0.5 0.5000001 -> 0.5000000
ddrem341 remainder 0.5 0.50000001 -> 0.50000000
ddrem342 remainder 0.5 0.500000001 -> 0.500000000
ddrem343 remainder 0.5 0.5000000001 -> 0.5000000000
ddrem344 remainder 0.5 0.50000000001 -> 0.50000000000
ddrem345 remainder 0.5 0.4999999 -> 1E-7
ddrem346 remainder 0.5 0.49999999 -> 1E-8
ddrem347 remainder 0.5 0.499999999 -> 1E-9
ddrem348 remainder 0.5 0.4999999999 -> 1E-10
ddrem349 remainder 0.5 0.49999999999 -> 1E-11
ddrem350 remainder 0.5 0.499999999999 -> 1E-12
ddrem351 remainder 0.03 7 -> 0.03
ddrem352 remainder 5 2 -> 1
ddrem353 remainder 4.1 2 -> 0.1
ddrem354 remainder 4.01 2 -> 0.01
ddrem355 remainder 4.001 2 -> 0.001
ddrem356 remainder 4.0001 2 -> 0.0001
ddrem357 remainder 4.00001 2 -> 0.00001
ddrem358 remainder 4.000001 2 -> 0.000001
ddrem359 remainder 4.0000001 2 -> 1E-7
ddrem360 remainder 1.2 0.7345 -> 0.4655
ddrem361 remainder 0.8 12 -> 0.8
ddrem362 remainder 0.8 0.2 -> 0.0
ddrem363 remainder 0.8 0.3 -> 0.2
ddrem364 remainder 0.800 12 -> 0.800
ddrem365 remainder 0.800 1.7 -> 0.800
ddrem366 remainder 2.400 2 -> 0.400
ddrem371 remainder 2.400 2 -> 0.400
ddrem381 remainder 12345 1 -> 0
ddrem382 remainder 12345 1.0001 -> 0.7657
ddrem383 remainder 12345 1.001 -> 0.668
ddrem384 remainder 12345 1.01 -> 0.78
ddrem385 remainder 12345 1.1 -> 0.8
ddrem386 remainder 12355 4 -> 3
ddrem387 remainder 12345 4 -> 1
ddrem388 remainder 12355 4.0001 -> 2.6912
ddrem389 remainder 12345 4.0001 -> 0.6914
ddrem390 remainder 12345 4.9 -> 1.9
ddrem391 remainder 12345 4.99 -> 4.73
ddrem392 remainder 12345 4.999 -> 2.469
ddrem393 remainder 12345 4.9999 -> 0.2469
ddrem394 remainder 12345 5 -> 0
ddrem395 remainder 12345 5.0001 -> 4.7532
ddrem396 remainder 12345 5.001 -> 2.532
ddrem397 remainder 12345 5.01 -> 0.36
ddrem398 remainder 12345 5.1 -> 3.0
-- the nasty division-by-1 cases
ddrem401 remainder 0.5 1 -> 0.5
ddrem402 remainder 0.55 1 -> 0.55
ddrem403 remainder 0.555 1 -> 0.555
ddrem404 remainder 0.5555 1 -> 0.5555
ddrem405 remainder 0.55555 1 -> 0.55555
ddrem406 remainder 0.555555 1 -> 0.555555
ddrem407 remainder 0.5555555 1 -> 0.5555555
ddrem408 remainder 0.55555555 1 -> 0.55555555
ddrem409 remainder 0.555555555 1 -> 0.555555555
-- folddowns
ddrem421 remainder 1E+384 1 -> NaN Division_impossible
ddrem422 remainder 1E+384 1E+383 -> 0E+369 Clamped
ddrem423 remainder 1E+384 2E+383 -> 0E+369 Clamped
ddrem424 remainder 1E+384 3E+383 -> 1.00000000000000E+383 Clamped
ddrem425 remainder 1E+384 4E+383 -> 2.00000000000000E+383 Clamped
ddrem426 remainder 1E+384 5E+383 -> 0E+369 Clamped
ddrem427 remainder 1E+384 6E+383 -> 4.00000000000000E+383 Clamped
ddrem428 remainder 1E+384 7E+383 -> 3.00000000000000E+383 Clamped
ddrem429 remainder 1E+384 8E+383 -> 2.00000000000000E+383 Clamped
ddrem430 remainder 1E+384 9E+383 -> 1.00000000000000E+383 Clamped
-- tinies
ddrem431 remainder 1E-397 1E-398 -> 0E-398
ddrem432 remainder 1E-397 2E-398 -> 0E-398
ddrem433 remainder 1E-397 3E-398 -> 1E-398 Subnormal
ddrem434 remainder 1E-397 4E-398 -> 2E-398 Subnormal
ddrem435 remainder 1E-397 5E-398 -> 0E-398
ddrem436 remainder 1E-397 6E-398 -> 4E-398 Subnormal
ddrem437 remainder 1E-397 7E-398 -> 3E-398 Subnormal
ddrem438 remainder 1E-397 8E-398 -> 2E-398 Subnormal
ddrem439 remainder 1E-397 9E-398 -> 1E-398 Subnormal
ddrem440 remainder 1E-397 10E-398 -> 0E-398
ddrem441 remainder 1E-397 11E-398 -> 1.0E-397 Subnormal
ddrem442 remainder 100E-397 11E-398 -> 1.0E-397 Subnormal
ddrem443 remainder 100E-397 20E-398 -> 0E-398
ddrem444 remainder 100E-397 21E-398 -> 1.3E-397 Subnormal
ddrem445 remainder 100E-397 30E-398 -> 1.0E-397 Subnormal
-- zero signs
ddrem650 remainder 1 1 -> 0
ddrem651 remainder -1 1 -> -0
ddrem652 remainder 1 -1 -> 0
ddrem653 remainder -1 -1 -> -0
ddrem654 remainder 0 1 -> 0
ddrem655 remainder -0 1 -> -0
ddrem656 remainder 0 -1 -> 0
ddrem657 remainder -0 -1 -> -0
ddrem658 remainder 0.00 1 -> 0.00
ddrem659 remainder -0.00 1 -> -0.00
-- Specials
ddrem680 remainder Inf -Inf -> NaN Invalid_operation
ddrem681 remainder Inf -1000 -> NaN Invalid_operation
ddrem682 remainder Inf -1 -> NaN Invalid_operation
ddrem683 remainder Inf 0 -> NaN Invalid_operation
ddrem684 remainder Inf -0 -> NaN Invalid_operation
ddrem685 remainder Inf 1 -> NaN Invalid_operation
ddrem686 remainder Inf 1000 -> NaN Invalid_operation
ddrem687 remainder Inf Inf -> NaN Invalid_operation
ddrem688 remainder -1000 Inf -> -1000
ddrem689 remainder -Inf Inf -> NaN Invalid_operation
ddrem691 remainder -1 Inf -> -1
ddrem692 remainder 0 Inf -> 0
ddrem693 remainder -0 Inf -> -0
ddrem694 remainder 1 Inf -> 1
ddrem695 remainder 1000 Inf -> 1000
ddrem696 remainder Inf Inf -> NaN Invalid_operation
ddrem700 remainder -Inf -Inf -> NaN Invalid_operation
ddrem701 remainder -Inf -1000 -> NaN Invalid_operation
ddrem702 remainder -Inf -1 -> NaN Invalid_operation
ddrem703 remainder -Inf -0 -> NaN Invalid_operation
ddrem704 remainder -Inf 0 -> NaN Invalid_operation
ddrem705 remainder -Inf 1 -> NaN Invalid_operation
ddrem706 remainder -Inf 1000 -> NaN Invalid_operation
ddrem707 remainder -Inf Inf -> NaN Invalid_operation
ddrem708 remainder -Inf -Inf -> NaN Invalid_operation
ddrem709 remainder -1000 Inf -> -1000
ddrem710 remainder -1 -Inf -> -1
ddrem711 remainder -0 -Inf -> -0
ddrem712 remainder 0 -Inf -> 0
ddrem713 remainder 1 -Inf -> 1
ddrem714 remainder 1000 -Inf -> 1000
ddrem715 remainder Inf -Inf -> NaN Invalid_operation
ddrem721 remainder NaN -Inf -> NaN
ddrem722 remainder NaN -1000 -> NaN
ddrem723 remainder NaN -1 -> NaN
ddrem724 remainder NaN -0 -> NaN
ddrem725 remainder -NaN 0 -> -NaN
ddrem726 remainder NaN 1 -> NaN
ddrem727 remainder NaN 1000 -> NaN
ddrem728 remainder NaN Inf -> NaN
ddrem729 remainder NaN -NaN -> NaN
ddrem730 remainder -Inf NaN -> NaN
ddrem731 remainder -1000 NaN -> NaN
ddrem732 remainder -1 NaN -> NaN
ddrem733 remainder -0 -NaN -> -NaN
ddrem734 remainder 0 NaN -> NaN
ddrem735 remainder 1 -NaN -> -NaN
ddrem736 remainder 1000 NaN -> NaN
ddrem737 remainder Inf NaN -> NaN
ddrem741 remainder sNaN -Inf -> NaN Invalid_operation
ddrem742 remainder sNaN -1000 -> NaN Invalid_operation
ddrem743 remainder -sNaN -1 -> -NaN Invalid_operation
ddrem744 remainder sNaN -0 -> NaN Invalid_operation
ddrem745 remainder sNaN 0 -> NaN Invalid_operation
ddrem746 remainder sNaN 1 -> NaN Invalid_operation
ddrem747 remainder sNaN 1000 -> NaN Invalid_operation
ddrem749 remainder sNaN NaN -> NaN Invalid_operation
ddrem750 remainder sNaN sNaN -> NaN Invalid_operation
ddrem751 remainder NaN sNaN -> NaN Invalid_operation
ddrem752 remainder -Inf sNaN -> NaN Invalid_operation
ddrem753 remainder -1000 sNaN -> NaN Invalid_operation
ddrem754 remainder -1 sNaN -> NaN Invalid_operation
ddrem755 remainder -0 sNaN -> NaN Invalid_operation
ddrem756 remainder 0 sNaN -> NaN Invalid_operation
ddrem757 remainder 1 sNaN -> NaN Invalid_operation
ddrem758 remainder 1000 sNaN -> NaN Invalid_operation
ddrem759 remainder Inf -sNaN -> -NaN Invalid_operation
-- propaging NaNs
ddrem760 remainder NaN1 NaN7 -> NaN1
ddrem761 remainder sNaN2 NaN8 -> NaN2 Invalid_operation
ddrem762 remainder NaN3 sNaN9 -> NaN9 Invalid_operation
ddrem763 remainder sNaN4 sNaN10 -> NaN4 Invalid_operation
ddrem764 remainder 15 NaN11 -> NaN11
ddrem765 remainder NaN6 NaN12 -> NaN6
ddrem766 remainder Inf NaN13 -> NaN13
ddrem767 remainder NaN14 -Inf -> NaN14
ddrem768 remainder 0 NaN15 -> NaN15
ddrem769 remainder NaN16 -0 -> NaN16
-- edge cases of impossible
ddrem770 remainder 1234567890123456 10 -> 6
ddrem771 remainder 1234567890123456 1 -> 0
ddrem772 remainder 1234567890123456 0.1 -> NaN Division_impossible
ddrem773 remainder 1234567890123456 0.01 -> NaN Division_impossible
-- long operand checks
ddrem801 remainder 12345678000 100 -> 0
ddrem802 remainder 1 12345678000 -> 1
ddrem803 remainder 1234567800 10 -> 0
ddrem804 remainder 1 1234567800 -> 1
ddrem805 remainder 1234567890 10 -> 0
ddrem806 remainder 1 1234567890 -> 1
ddrem807 remainder 1234567891 10 -> 1
ddrem808 remainder 1 1234567891 -> 1
ddrem809 remainder 12345678901 100 -> 1
ddrem810 remainder 1 12345678901 -> 1
ddrem811 remainder 1234567896 10 -> 6
ddrem812 remainder 1 1234567896 -> 1
ddrem821 remainder 12345678000 100 -> 0
ddrem822 remainder 1 12345678000 -> 1
ddrem823 remainder 1234567800 10 -> 0
ddrem824 remainder 1 1234567800 -> 1
ddrem825 remainder 1234567890 10 -> 0
ddrem826 remainder 1 1234567890 -> 1
ddrem827 remainder 1234567891 10 -> 1
ddrem828 remainder 1 1234567891 -> 1
ddrem829 remainder 12345678901 100 -> 1
ddrem830 remainder 1 12345678901 -> 1
ddrem831 remainder 1234567896 10 -> 6
ddrem832 remainder 1 1234567896 -> 1
-- from divideint
ddrem840 remainder 100000000.0 1 -> 0.0
ddrem841 remainder 100000000.4 1 -> 0.4
ddrem842 remainder 100000000.5 1 -> 0.5
ddrem843 remainder 100000000.9 1 -> 0.9
ddrem844 remainder 100000000.999 1 -> 0.999
ddrem850 remainder 100000003 5 -> 3
ddrem851 remainder 10000003 5 -> 3
ddrem852 remainder 1000003 5 -> 3
ddrem853 remainder 100003 5 -> 3
ddrem854 remainder 10003 5 -> 3
ddrem855 remainder 1003 5 -> 3
ddrem856 remainder 103 5 -> 3
ddrem857 remainder 13 5 -> 3
ddrem858 remainder 1 5 -> 1
-- Vladimir's cases 1234567890123456
ddrem860 remainder 123.0e1 1000000000000000 -> 1230
ddrem861 remainder 1230 1000000000000000 -> 1230
ddrem862 remainder 12.3e2 1000000000000000 -> 1230
ddrem863 remainder 1.23e3 1000000000000000 -> 1230
ddrem864 remainder 123e1 1000000000000000 -> 1230
ddrem870 remainder 123e1 1000000000000000 -> 1230
ddrem871 remainder 123e1 100000000000000 -> 1230
ddrem872 remainder 123e1 10000000000000 -> 1230
ddrem873 remainder 123e1 1000000000000 -> 1230
ddrem874 remainder 123e1 100000000000 -> 1230
ddrem875 remainder 123e1 10000000000 -> 1230
ddrem876 remainder 123e1 1000000000 -> 1230
ddrem877 remainder 123e1 100000000 -> 1230
ddrem878 remainder 1230 100000000 -> 1230
ddrem879 remainder 123e1 10000000 -> 1230
ddrem880 remainder 123e1 1000000 -> 1230
ddrem881 remainder 123e1 100000 -> 1230
ddrem882 remainder 123e1 10000 -> 1230
ddrem883 remainder 123e1 1000 -> 230
ddrem884 remainder 123e1 100 -> 30
ddrem885 remainder 123e1 10 -> 0
ddrem886 remainder 123e1 1 -> 0
ddrem890 remainder 123e1 2000000000000000 -> 1230
ddrem891 remainder 123e1 200000000000000 -> 1230
ddrem892 remainder 123e1 20000000000000 -> 1230
ddrem893 remainder 123e1 2000000000000 -> 1230
ddrem894 remainder 123e1 200000000000 -> 1230
ddrem895 remainder 123e1 20000000000 -> 1230
ddrem896 remainder 123e1 2000000000 -> 1230
ddrem897 remainder 123e1 200000000 -> 1230
ddrem899 remainder 123e1 20000000 -> 1230
ddrem900 remainder 123e1 2000000 -> 1230
ddrem901 remainder 123e1 200000 -> 1230
ddrem902 remainder 123e1 20000 -> 1230
ddrem903 remainder 123e1 2000 -> 1230
ddrem904 remainder 123e1 200 -> 30
ddrem905 remainder 123e1 20 -> 10
ddrem906 remainder 123e1 2 -> 0
ddrem910 remainder 123e1 5000000000000000 -> 1230
ddrem911 remainder 123e1 500000000000000 -> 1230
ddrem912 remainder 123e1 50000000000000 -> 1230
ddrem913 remainder 123e1 5000000000000 -> 1230
ddrem914 remainder 123e1 500000000000 -> 1230
ddrem915 remainder 123e1 50000000000 -> 1230
ddrem916 remainder 123e1 5000000000 -> 1230
ddrem917 remainder 123e1 500000000 -> 1230
ddrem919 remainder 123e1 50000000 -> 1230
ddrem920 remainder 123e1 5000000 -> 1230
ddrem921 remainder 123e1 500000 -> 1230
ddrem922 remainder 123e1 50000 -> 1230
ddrem923 remainder 123e1 5000 -> 1230
ddrem924 remainder 123e1 500 -> 230
ddrem925 remainder 123e1 50 -> 30
ddrem926 remainder 123e1 5 -> 0
ddrem930 remainder 123e1 9000000000000000 -> 1230
ddrem931 remainder 123e1 900000000000000 -> 1230
ddrem932 remainder 123e1 90000000000000 -> 1230
ddrem933 remainder 123e1 9000000000000 -> 1230
ddrem934 remainder 123e1 900000000000 -> 1230
ddrem935 remainder 123e1 90000000000 -> 1230
ddrem936 remainder 123e1 9000000000 -> 1230
ddrem937 remainder 123e1 900000000 -> 1230
ddrem939 remainder 123e1 90000000 -> 1230
ddrem940 remainder 123e1 9000000 -> 1230
ddrem941 remainder 123e1 900000 -> 1230
ddrem942 remainder 123e1 90000 -> 1230
ddrem943 remainder 123e1 9000 -> 1230
ddrem944 remainder 123e1 900 -> 330
ddrem945 remainder 123e1 90 -> 60
ddrem946 remainder 123e1 9 -> 6
ddrem950 remainder 123e1 1000000000000000 -> 1230
ddrem961 remainder 123e1 2999999999999999 -> 1230
ddrem962 remainder 123e1 3999999999999999 -> 1230
ddrem963 remainder 123e1 4999999999999999 -> 1230
ddrem964 remainder 123e1 5999999999999999 -> 1230
ddrem965 remainder 123e1 6999999999999999 -> 1230
ddrem966 remainder 123e1 7999999999999999 -> 1230
ddrem967 remainder 123e1 8999999999999999 -> 1230
ddrem968 remainder 123e1 9999999999999999 -> 1230
ddrem969 remainder 123e1 9876543210987654 -> 1230
ddrem980 remainder 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally
-- overflow and underflow tests [from divide]
ddrem1051 remainder 1e+277 1e-311 -> NaN Division_impossible
ddrem1052 remainder 1e+277 -1e-311 -> NaN Division_impossible
ddrem1053 remainder -1e+277 1e-311 -> NaN Division_impossible
ddrem1054 remainder -1e+277 -1e-311 -> NaN Division_impossible
ddrem1055 remainder 1e-277 1e+311 -> 1E-277
ddrem1056 remainder 1e-277 -1e+311 -> 1E-277
ddrem1057 remainder -1e-277 1e+311 -> -1E-277
ddrem1058 remainder -1e-277 -1e+311 -> -1E-277
-- destructive subtract
ddrem1101 remainder 1234567890123456 1.000000000000001 -> 0.765432109876546
ddrem1102 remainder 1234567890123456 1.00000000000001 -> 0.65432109876557
ddrem1103 remainder 1234567890123456 1.0000000000001 -> 0.5432109876668
ddrem1104 remainder 1234567890123455 4.000000000000001 -> 2.691358027469137
ddrem1105 remainder 1234567890123456 4.000000000000001 -> 3.691358027469137
ddrem1106 remainder 1234567890123456 4.9999999999999 -> 0.6913578024696
ddrem1107 remainder 1234567890123456 4.99999999999999 -> 3.46913578024691
ddrem1108 remainder 1234567890123456 4.999999999999999 -> 1.246913578024691
ddrem1109 remainder 1234567890123456 5.000000000000001 -> 0.753086421975309
ddrem1110 remainder 1234567890123456 5.00000000000001 -> 3.53086421975310
ddrem1111 remainder 1234567890123456 5.0000000000001 -> 1.3086421975314
-- Null tests
ddrem1000 remainder 10 # -> NaN Invalid_operation
ddrem1001 remainder # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,629 @@
------------------------------------------------------------------------
-- ddRemainderNear.decTest -- decDouble remainder-near --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- sanity checks (as base, above)
ddrmn001 remaindernear 1 1 -> 0
ddrmn002 remaindernear 2 1 -> 0
ddrmn003 remaindernear 1 2 -> 1
ddrmn004 remaindernear 2 2 -> 0
ddrmn005 remaindernear 0 1 -> 0
ddrmn006 remaindernear 0 2 -> 0
ddrmn007 remaindernear 1 3 -> 1
ddrmn008 remaindernear 2 3 -> -1
ddrmn009 remaindernear 3 3 -> 0
ddrmn010 remaindernear 2.4 1 -> 0.4
ddrmn011 remaindernear 2.4 -1 -> 0.4
ddrmn012 remaindernear -2.4 1 -> -0.4
ddrmn013 remaindernear -2.4 -1 -> -0.4
ddrmn014 remaindernear 2.40 1 -> 0.40
ddrmn015 remaindernear 2.400 1 -> 0.400
ddrmn016 remaindernear 2.4 2 -> 0.4
ddrmn017 remaindernear 2.400 2 -> 0.400
ddrmn018 remaindernear 2. 2 -> 0
ddrmn019 remaindernear 20 20 -> 0
ddrmn020 remaindernear 187 187 -> 0
ddrmn021 remaindernear 5 2 -> 1
ddrmn022 remaindernear 5 2.0 -> 1.0
ddrmn023 remaindernear 5 2.000 -> 1.000
ddrmn024 remaindernear 5 0.200 -> 0.000
ddrmn025 remaindernear 5 0.200 -> 0.000
ddrmn030 remaindernear 1 2 -> 1
ddrmn031 remaindernear 1 4 -> 1
ddrmn032 remaindernear 1 8 -> 1
ddrmn033 remaindernear 1 16 -> 1
ddrmn034 remaindernear 1 32 -> 1
ddrmn035 remaindernear 1 64 -> 1
ddrmn040 remaindernear 1 -2 -> 1
ddrmn041 remaindernear 1 -4 -> 1
ddrmn042 remaindernear 1 -8 -> 1
ddrmn043 remaindernear 1 -16 -> 1
ddrmn044 remaindernear 1 -32 -> 1
ddrmn045 remaindernear 1 -64 -> 1
ddrmn050 remaindernear -1 2 -> -1
ddrmn051 remaindernear -1 4 -> -1
ddrmn052 remaindernear -1 8 -> -1
ddrmn053 remaindernear -1 16 -> -1
ddrmn054 remaindernear -1 32 -> -1
ddrmn055 remaindernear -1 64 -> -1
ddrmn060 remaindernear -1 -2 -> -1
ddrmn061 remaindernear -1 -4 -> -1
ddrmn062 remaindernear -1 -8 -> -1
ddrmn063 remaindernear -1 -16 -> -1
ddrmn064 remaindernear -1 -32 -> -1
ddrmn065 remaindernear -1 -64 -> -1
ddrmn066 remaindernear 9.9 1 -> -0.1
ddrmn067 remaindernear 99.7 1 -> -0.3
ddrmn068 remaindernear 999999999 1 -> 0
ddrmn069 remaindernear 999999999.4 1 -> 0.4
ddrmn070 remaindernear 999999999.5 1 -> -0.5
ddrmn071 remaindernear 999999999.9 1 -> -0.1
ddrmn072 remaindernear 999999999.999 1 -> -0.001
ddrmn073 remaindernear 999999.999999 1 -> -0.000001
ddrmn074 remaindernear 9 1 -> 0
ddrmn075 remaindernear 9999999999999999 1 -> 0
ddrmn076 remaindernear 9999999999999999 2 -> -1
ddrmn077 remaindernear 9999999999999999 3 -> 0
ddrmn078 remaindernear 9999999999999999 4 -> -1
ddrmn080 remaindernear 0. 1 -> 0
ddrmn081 remaindernear .0 1 -> 0.0
ddrmn082 remaindernear 0.00 1 -> 0.00
ddrmn083 remaindernear 0.00E+9 1 -> 0
ddrmn084 remaindernear 0.00E+3 1 -> 0
ddrmn085 remaindernear 0.00E+2 1 -> 0
ddrmn086 remaindernear 0.00E+1 1 -> 0.0
ddrmn087 remaindernear 0.00E+0 1 -> 0.00
ddrmn088 remaindernear 0.00E-0 1 -> 0.00
ddrmn089 remaindernear 0.00E-1 1 -> 0.000
ddrmn090 remaindernear 0.00E-2 1 -> 0.0000
ddrmn091 remaindernear 0.00E-3 1 -> 0.00000
ddrmn092 remaindernear 0.00E-4 1 -> 0.000000
ddrmn093 remaindernear 0.00E-5 1 -> 0E-7
ddrmn094 remaindernear 0.00E-6 1 -> 0E-8
ddrmn095 remaindernear 0.0000E-50 1 -> 0E-54
-- Various flavours of remaindernear by 0
ddrmn101 remaindernear 0 0 -> NaN Division_undefined
ddrmn102 remaindernear 0 -0 -> NaN Division_undefined
ddrmn103 remaindernear -0 0 -> NaN Division_undefined
ddrmn104 remaindernear -0 -0 -> NaN Division_undefined
ddrmn105 remaindernear 0.0E5 0 -> NaN Division_undefined
ddrmn106 remaindernear 0.000 0 -> NaN Division_undefined
-- [Some think this next group should be Division_by_zero exception, but
-- IEEE 854 is explicit that it is Invalid operation .. for
-- remainder-near, anyway]
ddrmn107 remaindernear 0.0001 0 -> NaN Invalid_operation
ddrmn108 remaindernear 0.01 0 -> NaN Invalid_operation
ddrmn109 remaindernear 0.1 0 -> NaN Invalid_operation
ddrmn110 remaindernear 1 0 -> NaN Invalid_operation
ddrmn111 remaindernear 1 0.0 -> NaN Invalid_operation
ddrmn112 remaindernear 10 0.0 -> NaN Invalid_operation
ddrmn113 remaindernear 1E+100 0.0 -> NaN Invalid_operation
ddrmn114 remaindernear 1E+380 0 -> NaN Invalid_operation
ddrmn115 remaindernear 0.0001 -0 -> NaN Invalid_operation
ddrmn116 remaindernear 0.01 -0 -> NaN Invalid_operation
ddrmn119 remaindernear 0.1 -0 -> NaN Invalid_operation
ddrmn120 remaindernear 1 -0 -> NaN Invalid_operation
ddrmn121 remaindernear 1 -0.0 -> NaN Invalid_operation
ddrmn122 remaindernear 10 -0.0 -> NaN Invalid_operation
ddrmn123 remaindernear 1E+100 -0.0 -> NaN Invalid_operation
ddrmn124 remaindernear 1E+384 -0 -> NaN Invalid_operation
-- and zeros on left
ddrmn130 remaindernear 0 1 -> 0
ddrmn131 remaindernear 0 -1 -> 0
ddrmn132 remaindernear 0.0 1 -> 0.0
ddrmn133 remaindernear 0.0 -1 -> 0.0
ddrmn134 remaindernear -0 1 -> -0
ddrmn135 remaindernear -0 -1 -> -0
ddrmn136 remaindernear -0.0 1 -> -0.0
ddrmn137 remaindernear -0.0 -1 -> -0.0
-- 0.5ers
ddrmn143 remaindernear 0.5 2 -> 0.5
ddrmn144 remaindernear 0.5 2.1 -> 0.5
ddrmn145 remaindernear 0.5 2.01 -> 0.50
ddrmn146 remaindernear 0.5 2.001 -> 0.500
ddrmn147 remaindernear 0.50 2 -> 0.50
ddrmn148 remaindernear 0.50 2.01 -> 0.50
ddrmn149 remaindernear 0.50 2.001 -> 0.500
-- steadies
ddrmn150 remaindernear 1 1 -> 0
ddrmn151 remaindernear 1 2 -> 1
ddrmn152 remaindernear 1 3 -> 1
ddrmn153 remaindernear 1 4 -> 1
ddrmn154 remaindernear 1 5 -> 1
ddrmn155 remaindernear 1 6 -> 1
ddrmn156 remaindernear 1 7 -> 1
ddrmn157 remaindernear 1 8 -> 1
ddrmn158 remaindernear 1 9 -> 1
ddrmn159 remaindernear 1 10 -> 1
ddrmn160 remaindernear 1 1 -> 0
ddrmn161 remaindernear 2 1 -> 0
ddrmn162 remaindernear 3 1 -> 0
ddrmn163 remaindernear 4 1 -> 0
ddrmn164 remaindernear 5 1 -> 0
ddrmn165 remaindernear 6 1 -> 0
ddrmn166 remaindernear 7 1 -> 0
ddrmn167 remaindernear 8 1 -> 0
ddrmn168 remaindernear 9 1 -> 0
ddrmn169 remaindernear 10 1 -> 0
-- some differences from remainder
ddrmn171 remaindernear 0.4 1.020 -> 0.400
ddrmn172 remaindernear 0.50 1.020 -> 0.500
ddrmn173 remaindernear 0.51 1.020 -> 0.510
ddrmn174 remaindernear 0.52 1.020 -> -0.500
ddrmn175 remaindernear 0.6 1.020 -> -0.420
-- More flavours of remaindernear by 0
ddrmn201 remaindernear 0 0 -> NaN Division_undefined
ddrmn202 remaindernear 0.0E5 0 -> NaN Division_undefined
ddrmn203 remaindernear 0.000 0 -> NaN Division_undefined
ddrmn204 remaindernear 0.0001 0 -> NaN Invalid_operation
ddrmn205 remaindernear 0.01 0 -> NaN Invalid_operation
ddrmn206 remaindernear 0.1 0 -> NaN Invalid_operation
ddrmn207 remaindernear 1 0 -> NaN Invalid_operation
ddrmn208 remaindernear 1 0.0 -> NaN Invalid_operation
ddrmn209 remaindernear 10 0.0 -> NaN Invalid_operation
ddrmn210 remaindernear 1E+100 0.0 -> NaN Invalid_operation
ddrmn211 remaindernear 1E+380 0 -> NaN Invalid_operation
-- tests from the extended specification
ddrmn221 remaindernear 2.1 3 -> -0.9
ddrmn222 remaindernear 10 6 -> -2
ddrmn223 remaindernear 10 3 -> 1
ddrmn224 remaindernear -10 3 -> -1
ddrmn225 remaindernear 10.2 1 -> 0.2
ddrmn226 remaindernear 10 0.3 -> 0.1
ddrmn227 remaindernear 3.6 1.3 -> -0.3
-- some differences from remainder
ddrmn231 remaindernear -0.4 1.020 -> -0.400
ddrmn232 remaindernear -0.50 1.020 -> -0.500
ddrmn233 remaindernear -0.51 1.020 -> -0.510
ddrmn234 remaindernear -0.52 1.020 -> 0.500
ddrmn235 remaindernear -0.6 1.020 -> 0.420
-- high Xs
ddrmn240 remaindernear 1E+2 1.00 -> 0.00
-- ddrmn3xx are from DiagBigDecimal
ddrmn301 remaindernear 1 3 -> 1
ddrmn302 remaindernear 5 5 -> 0
ddrmn303 remaindernear 13 10 -> 3
ddrmn304 remaindernear 13 50 -> 13
ddrmn305 remaindernear 13 100 -> 13
ddrmn306 remaindernear 13 1000 -> 13
ddrmn307 remaindernear .13 1 -> 0.13
ddrmn308 remaindernear 0.133 1 -> 0.133
ddrmn309 remaindernear 0.1033 1 -> 0.1033
ddrmn310 remaindernear 1.033 1 -> 0.033
ddrmn311 remaindernear 10.33 1 -> 0.33
ddrmn312 remaindernear 10.33 10 -> 0.33
ddrmn313 remaindernear 103.3 1 -> 0.3
ddrmn314 remaindernear 133 10 -> 3
ddrmn315 remaindernear 1033 10 -> 3
ddrmn316 remaindernear 1033 50 -> -17
ddrmn317 remaindernear 101.0 3 -> -1.0
ddrmn318 remaindernear 102.0 3 -> 0.0
ddrmn319 remaindernear 103.0 3 -> 1.0
ddrmn320 remaindernear 2.40 1 -> 0.40
ddrmn321 remaindernear 2.400 1 -> 0.400
ddrmn322 remaindernear 2.4 1 -> 0.4
ddrmn323 remaindernear 2.4 2 -> 0.4
ddrmn324 remaindernear 2.400 2 -> 0.400
ddrmn325 remaindernear 1 0.3 -> 0.1
ddrmn326 remaindernear 1 0.30 -> 0.10
ddrmn327 remaindernear 1 0.300 -> 0.100
ddrmn328 remaindernear 1 0.3000 -> 0.1000
ddrmn329 remaindernear 1.0 0.3 -> 0.1
ddrmn330 remaindernear 1.00 0.3 -> 0.10
ddrmn331 remaindernear 1.000 0.3 -> 0.100
ddrmn332 remaindernear 1.0000 0.3 -> 0.1000
ddrmn333 remaindernear 0.5 2 -> 0.5
ddrmn334 remaindernear 0.5 2.1 -> 0.5
ddrmn335 remaindernear 0.5 2.01 -> 0.50
ddrmn336 remaindernear 0.5 2.001 -> 0.500
ddrmn337 remaindernear 0.50 2 -> 0.50
ddrmn338 remaindernear 0.50 2.01 -> 0.50
ddrmn339 remaindernear 0.50 2.001 -> 0.500
ddrmn340 remaindernear 0.5 0.5000001 -> -1E-7
ddrmn341 remaindernear 0.5 0.50000001 -> -1E-8
ddrmn342 remaindernear 0.5 0.500000001 -> -1E-9
ddrmn343 remaindernear 0.5 0.5000000001 -> -1E-10
ddrmn344 remaindernear 0.5 0.50000000001 -> -1E-11
ddrmn345 remaindernear 0.5 0.4999999 -> 1E-7
ddrmn346 remaindernear 0.5 0.49999999 -> 1E-8
ddrmn347 remaindernear 0.5 0.499999999 -> 1E-9
ddrmn348 remaindernear 0.5 0.4999999999 -> 1E-10
ddrmn349 remaindernear 0.5 0.49999999999 -> 1E-11
ddrmn350 remaindernear 0.5 0.499999999999 -> 1E-12
ddrmn351 remaindernear 0.03 7 -> 0.03
ddrmn352 remaindernear 5 2 -> 1
ddrmn353 remaindernear 4.1 2 -> 0.1
ddrmn354 remaindernear 4.01 2 -> 0.01
ddrmn355 remaindernear 4.001 2 -> 0.001
ddrmn356 remaindernear 4.0001 2 -> 0.0001
ddrmn357 remaindernear 4.00001 2 -> 0.00001
ddrmn358 remaindernear 4.000001 2 -> 0.000001
ddrmn359 remaindernear 4.0000001 2 -> 1E-7
ddrmn360 remaindernear 1.2 0.7345 -> -0.2690
ddrmn361 remaindernear 0.8 12 -> 0.8
ddrmn362 remaindernear 0.8 0.2 -> 0.0
ddrmn363 remaindernear 0.8 0.3 -> -0.1
ddrmn364 remaindernear 0.800 12 -> 0.800
ddrmn365 remaindernear 0.800 1.7 -> 0.800
ddrmn366 remaindernear 2.400 2 -> 0.400
-- round to even
ddrmn371 remaindernear 121 2 -> 1
ddrmn372 remaindernear 122 2 -> 0
ddrmn373 remaindernear 123 2 -> -1
ddrmn374 remaindernear 124 2 -> 0
ddrmn375 remaindernear 125 2 -> 1
ddrmn376 remaindernear 126 2 -> 0
ddrmn377 remaindernear 127 2 -> -1
ddrmn381 remaindernear 12345 1 -> 0
ddrmn382 remaindernear 12345 1.0001 -> -0.2344
ddrmn383 remaindernear 12345 1.001 -> -0.333
ddrmn384 remaindernear 12345 1.01 -> -0.23
ddrmn385 remaindernear 12345 1.1 -> -0.3
ddrmn386 remaindernear 12355 4 -> -1
ddrmn387 remaindernear 12345 4 -> 1
ddrmn388 remaindernear 12355 4.0001 -> -1.3089
ddrmn389 remaindernear 12345 4.0001 -> 0.6914
ddrmn390 remaindernear 12345 4.9 -> 1.9
ddrmn391 remaindernear 12345 4.99 -> -0.26
ddrmn392 remaindernear 12345 4.999 -> 2.469
ddrmn393 remaindernear 12345 4.9999 -> 0.2469
ddrmn394 remaindernear 12345 5 -> 0
ddrmn395 remaindernear 12345 5.0001 -> -0.2469
ddrmn396 remaindernear 12345 5.001 -> -2.469
ddrmn397 remaindernear 12345 5.01 -> 0.36
ddrmn398 remaindernear 12345 5.1 -> -2.1
-- the nasty division-by-1 cases
ddrmn401 remaindernear 0.4 1 -> 0.4
ddrmn402 remaindernear 0.45 1 -> 0.45
ddrmn403 remaindernear 0.455 1 -> 0.455
ddrmn404 remaindernear 0.4555 1 -> 0.4555
ddrmn405 remaindernear 0.45555 1 -> 0.45555
ddrmn406 remaindernear 0.455555 1 -> 0.455555
ddrmn407 remaindernear 0.4555555 1 -> 0.4555555
ddrmn408 remaindernear 0.45555555 1 -> 0.45555555
ddrmn409 remaindernear 0.455555555 1 -> 0.455555555
-- with spill... [412 exercises sticktab loop]
ddrmn411 remaindernear 0.5 1 -> 0.5
ddrmn412 remaindernear 0.55 1 -> -0.45
ddrmn413 remaindernear 0.555 1 -> -0.445
ddrmn414 remaindernear 0.5555 1 -> -0.4445
ddrmn415 remaindernear 0.55555 1 -> -0.44445
ddrmn416 remaindernear 0.555555 1 -> -0.444445
ddrmn417 remaindernear 0.5555555 1 -> -0.4444445
ddrmn418 remaindernear 0.55555555 1 -> -0.44444445
ddrmn419 remaindernear 0.555555555 1 -> -0.444444445
-- folddowns
ddrmn421 remaindernear 1E+384 1 -> NaN Division_impossible
ddrmn422 remaindernear 1E+384 1E+383 -> 0E+369 Clamped
ddrmn423 remaindernear 1E+384 2E+383 -> 0E+369 Clamped
ddrmn424 remaindernear 1E+384 3E+383 -> 1.00000000000000E+383 Clamped
ddrmn425 remaindernear 1E+384 4E+383 -> 2.00000000000000E+383 Clamped
ddrmn426 remaindernear 1E+384 5E+383 -> 0E+369 Clamped
ddrmn427 remaindernear 1E+384 6E+383 -> -2.00000000000000E+383 Clamped
ddrmn428 remaindernear 1E+384 7E+383 -> 3.00000000000000E+383 Clamped
ddrmn429 remaindernear 1E+384 8E+383 -> 2.00000000000000E+383 Clamped
ddrmn430 remaindernear 1E+384 9E+383 -> 1.00000000000000E+383 Clamped
-- tinies
ddrmn431 remaindernear 1E-397 1E-398 -> 0E-398
ddrmn432 remaindernear 1E-397 2E-398 -> 0E-398
ddrmn433 remaindernear 1E-397 3E-398 -> 1E-398 Subnormal
ddrmn434 remaindernear 1E-397 4E-398 -> 2E-398 Subnormal
ddrmn435 remaindernear 1E-397 5E-398 -> 0E-398
ddrmn436 remaindernear 1E-397 6E-398 -> -2E-398 Subnormal
ddrmn437 remaindernear 1E-397 7E-398 -> 3E-398 Subnormal
ddrmn438 remaindernear 1E-397 8E-398 -> 2E-398 Subnormal
ddrmn439 remaindernear 1E-397 9E-398 -> 1E-398 Subnormal
ddrmn440 remaindernear 1E-397 10E-398 -> 0E-398
ddrmn441 remaindernear 1E-397 11E-398 -> -1E-398 Subnormal
ddrmn442 remaindernear 100E-397 11E-398 -> -1E-398 Subnormal
ddrmn443 remaindernear 100E-397 20E-398 -> 0E-398
ddrmn444 remaindernear 100E-397 21E-398 -> -8E-398 Subnormal
ddrmn445 remaindernear 100E-397 30E-398 -> 1.0E-397 Subnormal
-- zero signs
ddrmn650 remaindernear 1 1 -> 0
ddrmn651 remaindernear -1 1 -> -0
ddrmn652 remaindernear 1 -1 -> 0
ddrmn653 remaindernear -1 -1 -> -0
ddrmn654 remaindernear 0 1 -> 0
ddrmn655 remaindernear -0 1 -> -0
ddrmn656 remaindernear 0 -1 -> 0
ddrmn657 remaindernear -0 -1 -> -0
ddrmn658 remaindernear 0.00 1 -> 0.00
ddrmn659 remaindernear -0.00 1 -> -0.00
-- Specials
ddrmn680 remaindernear Inf -Inf -> NaN Invalid_operation
ddrmn681 remaindernear Inf -1000 -> NaN Invalid_operation
ddrmn682 remaindernear Inf -1 -> NaN Invalid_operation
ddrmn683 remaindernear Inf 0 -> NaN Invalid_operation
ddrmn684 remaindernear Inf -0 -> NaN Invalid_operation
ddrmn685 remaindernear Inf 1 -> NaN Invalid_operation
ddrmn686 remaindernear Inf 1000 -> NaN Invalid_operation
ddrmn687 remaindernear Inf Inf -> NaN Invalid_operation
ddrmn688 remaindernear -1000 Inf -> -1000
ddrmn689 remaindernear -Inf Inf -> NaN Invalid_operation
ddrmn691 remaindernear -1 Inf -> -1
ddrmn692 remaindernear 0 Inf -> 0
ddrmn693 remaindernear -0 Inf -> -0
ddrmn694 remaindernear 1 Inf -> 1
ddrmn695 remaindernear 1000 Inf -> 1000
ddrmn696 remaindernear Inf Inf -> NaN Invalid_operation
ddrmn700 remaindernear -Inf -Inf -> NaN Invalid_operation
ddrmn701 remaindernear -Inf -1000 -> NaN Invalid_operation
ddrmn702 remaindernear -Inf -1 -> NaN Invalid_operation
ddrmn703 remaindernear -Inf -0 -> NaN Invalid_operation
ddrmn704 remaindernear -Inf 0 -> NaN Invalid_operation
ddrmn705 remaindernear -Inf 1 -> NaN Invalid_operation
ddrmn706 remaindernear -Inf 1000 -> NaN Invalid_operation
ddrmn707 remaindernear -Inf Inf -> NaN Invalid_operation
ddrmn708 remaindernear -Inf -Inf -> NaN Invalid_operation
ddrmn709 remaindernear -1000 Inf -> -1000
ddrmn710 remaindernear -1 -Inf -> -1
ddrmn711 remaindernear -0 -Inf -> -0
ddrmn712 remaindernear 0 -Inf -> 0
ddrmn713 remaindernear 1 -Inf -> 1
ddrmn714 remaindernear 1000 -Inf -> 1000
ddrmn715 remaindernear Inf -Inf -> NaN Invalid_operation
ddrmn721 remaindernear NaN -Inf -> NaN
ddrmn722 remaindernear NaN -1000 -> NaN
ddrmn723 remaindernear NaN -1 -> NaN
ddrmn724 remaindernear NaN -0 -> NaN
ddrmn725 remaindernear -NaN 0 -> -NaN
ddrmn726 remaindernear NaN 1 -> NaN
ddrmn727 remaindernear NaN 1000 -> NaN
ddrmn728 remaindernear NaN Inf -> NaN
ddrmn729 remaindernear NaN -NaN -> NaN
ddrmn730 remaindernear -Inf NaN -> NaN
ddrmn731 remaindernear -1000 NaN -> NaN
ddrmn732 remaindernear -1 NaN -> NaN
ddrmn733 remaindernear -0 -NaN -> -NaN
ddrmn734 remaindernear 0 NaN -> NaN
ddrmn735 remaindernear 1 -NaN -> -NaN
ddrmn736 remaindernear 1000 NaN -> NaN
ddrmn737 remaindernear Inf NaN -> NaN
ddrmn741 remaindernear sNaN -Inf -> NaN Invalid_operation
ddrmn742 remaindernear sNaN -1000 -> NaN Invalid_operation
ddrmn743 remaindernear -sNaN -1 -> -NaN Invalid_operation
ddrmn744 remaindernear sNaN -0 -> NaN Invalid_operation
ddrmn745 remaindernear sNaN 0 -> NaN Invalid_operation
ddrmn746 remaindernear sNaN 1 -> NaN Invalid_operation
ddrmn747 remaindernear sNaN 1000 -> NaN Invalid_operation
ddrmn749 remaindernear sNaN NaN -> NaN Invalid_operation
ddrmn750 remaindernear sNaN sNaN -> NaN Invalid_operation
ddrmn751 remaindernear NaN sNaN -> NaN Invalid_operation
ddrmn752 remaindernear -Inf sNaN -> NaN Invalid_operation
ddrmn753 remaindernear -1000 sNaN -> NaN Invalid_operation
ddrmn754 remaindernear -1 sNaN -> NaN Invalid_operation
ddrmn755 remaindernear -0 sNaN -> NaN Invalid_operation
ddrmn756 remaindernear 0 sNaN -> NaN Invalid_operation
ddrmn757 remaindernear 1 sNaN -> NaN Invalid_operation
ddrmn758 remaindernear 1000 sNaN -> NaN Invalid_operation
ddrmn759 remaindernear Inf -sNaN -> -NaN Invalid_operation
-- propaging NaNs
ddrmn760 remaindernear NaN1 NaN7 -> NaN1
ddrmn761 remaindernear sNaN2 NaN8 -> NaN2 Invalid_operation
ddrmn762 remaindernear NaN3 sNaN9 -> NaN9 Invalid_operation
ddrmn763 remaindernear sNaN4 sNaN10 -> NaN4 Invalid_operation
ddrmn764 remaindernear 15 NaN11 -> NaN11
ddrmn765 remaindernear NaN6 NaN12 -> NaN6
ddrmn766 remaindernear Inf NaN13 -> NaN13
ddrmn767 remaindernear NaN14 -Inf -> NaN14
ddrmn768 remaindernear 0 NaN15 -> NaN15
ddrmn769 remaindernear NaN16 -0 -> NaN16
-- edge cases of impossible
ddrmn770 remaindernear 1234567890123456 10 -> -4
ddrmn771 remaindernear 1234567890123456 1 -> 0
ddrmn772 remaindernear 1234567890123456 0.1 -> NaN Division_impossible
ddrmn773 remaindernear 1234567890123456 0.01 -> NaN Division_impossible
-- long operand checks
ddrmn801 remaindernear 12345678000 100 -> 0
ddrmn802 remaindernear 1 12345678000 -> 1
ddrmn803 remaindernear 1234567800 10 -> 0
ddrmn804 remaindernear 1 1234567800 -> 1
ddrmn805 remaindernear 1234567890 10 -> 0
ddrmn806 remaindernear 1 1234567890 -> 1
ddrmn807 remaindernear 1234567891 10 -> 1
ddrmn808 remaindernear 1 1234567891 -> 1
ddrmn809 remaindernear 12345678901 100 -> 1
ddrmn810 remaindernear 1 12345678901 -> 1
ddrmn811 remaindernear 1234567896 10 -> -4
ddrmn812 remaindernear 1 1234567896 -> 1
ddrmn821 remaindernear 12345678000 100 -> 0
ddrmn822 remaindernear 1 12345678000 -> 1
ddrmn823 remaindernear 1234567800 10 -> 0
ddrmn824 remaindernear 1 1234567800 -> 1
ddrmn825 remaindernear 1234567890 10 -> 0
ddrmn826 remaindernear 1 1234567890 -> 1
ddrmn827 remaindernear 1234567891 10 -> 1
ddrmn828 remaindernear 1 1234567891 -> 1
ddrmn829 remaindernear 12345678901 100 -> 1
ddrmn830 remaindernear 1 12345678901 -> 1
ddrmn831 remaindernear 1234567896 10 -> -4
ddrmn832 remaindernear 1 1234567896 -> 1
-- from divideint
ddrmn840 remaindernear 100000000.0 1 -> 0.0
ddrmn841 remaindernear 100000000.4 1 -> 0.4
ddrmn842 remaindernear 100000000.5 1 -> 0.5
ddrmn843 remaindernear 100000000.9 1 -> -0.1
ddrmn844 remaindernear 100000000.999 1 -> -0.001
ddrmn850 remaindernear 100000003 5 -> -2
ddrmn851 remaindernear 10000003 5 -> -2
ddrmn852 remaindernear 1000003 5 -> -2
ddrmn853 remaindernear 100003 5 -> -2
ddrmn854 remaindernear 10003 5 -> -2
ddrmn855 remaindernear 1003 5 -> -2
ddrmn856 remaindernear 103 5 -> -2
ddrmn857 remaindernear 13 5 -> -2
ddrmn858 remaindernear 1 5 -> 1
-- Vladimir's cases 1234567890123456
ddrmn860 remaindernear 123.0e1 1000000000000000 -> 1230
ddrmn861 remaindernear 1230 1000000000000000 -> 1230
ddrmn862 remaindernear 12.3e2 1000000000000000 -> 1230
ddrmn863 remaindernear 1.23e3 1000000000000000 -> 1230
ddrmn864 remaindernear 123e1 1000000000000000 -> 1230
ddrmn870 remaindernear 123e1 1000000000000000 -> 1230
ddrmn871 remaindernear 123e1 100000000000000 -> 1230
ddrmn872 remaindernear 123e1 10000000000000 -> 1230
ddrmn873 remaindernear 123e1 1000000000000 -> 1230
ddrmn874 remaindernear 123e1 100000000000 -> 1230
ddrmn875 remaindernear 123e1 10000000000 -> 1230
ddrmn876 remaindernear 123e1 1000000000 -> 1230
ddrmn877 remaindernear 123e1 100000000 -> 1230
ddrmn878 remaindernear 1230 100000000 -> 1230
ddrmn879 remaindernear 123e1 10000000 -> 1230
ddrmn880 remaindernear 123e1 1000000 -> 1230
ddrmn881 remaindernear 123e1 100000 -> 1230
ddrmn882 remaindernear 123e1 10000 -> 1230
ddrmn883 remaindernear 123e1 1000 -> 230
ddrmn884 remaindernear 123e1 100 -> 30
ddrmn885 remaindernear 123e1 10 -> 0
ddrmn886 remaindernear 123e1 1 -> 0
ddrmn890 remaindernear 123e1 2000000000000000 -> 1230
ddrmn891 remaindernear 123e1 200000000000000 -> 1230
ddrmn892 remaindernear 123e1 20000000000000 -> 1230
ddrmn893 remaindernear 123e1 2000000000000 -> 1230
ddrmn894 remaindernear 123e1 200000000000 -> 1230
ddrmn895 remaindernear 123e1 20000000000 -> 1230
ddrmn896 remaindernear 123e1 2000000000 -> 1230
ddrmn897 remaindernear 123e1 200000000 -> 1230
ddrmn899 remaindernear 123e1 20000000 -> 1230
ddrmn900 remaindernear 123e1 2000000 -> 1230
ddrmn901 remaindernear 123e1 200000 -> 1230
ddrmn902 remaindernear 123e1 20000 -> 1230
ddrmn903 remaindernear 123e1 2000 -> -770
ddrmn904 remaindernear 123e1 200 -> 30
ddrmn905 remaindernear 123e1 20 -> -10
ddrmn906 remaindernear 123e1 2 -> 0
ddrmn910 remaindernear 123e1 5000000000000000 -> 1230
ddrmn911 remaindernear 123e1 500000000000000 -> 1230
ddrmn912 remaindernear 123e1 50000000000000 -> 1230
ddrmn913 remaindernear 123e1 5000000000000 -> 1230
ddrmn914 remaindernear 123e1 500000000000 -> 1230
ddrmn915 remaindernear 123e1 50000000000 -> 1230
ddrmn916 remaindernear 123e1 5000000000 -> 1230
ddrmn917 remaindernear 123e1 500000000 -> 1230
ddrmn919 remaindernear 123e1 50000000 -> 1230
ddrmn920 remaindernear 123e1 5000000 -> 1230
ddrmn921 remaindernear 123e1 500000 -> 1230
ddrmn922 remaindernear 123e1 50000 -> 1230
ddrmn923 remaindernear 123e1 5000 -> 1230
ddrmn924 remaindernear 123e1 500 -> 230
ddrmn925 remaindernear 123e1 50 -> -20
ddrmn926 remaindernear 123e1 5 -> 0
ddrmn930 remaindernear 123e1 9000000000000000 -> 1230
ddrmn931 remaindernear 123e1 900000000000000 -> 1230
ddrmn932 remaindernear 123e1 90000000000000 -> 1230
ddrmn933 remaindernear 123e1 9000000000000 -> 1230
ddrmn934 remaindernear 123e1 900000000000 -> 1230
ddrmn935 remaindernear 123e1 90000000000 -> 1230
ddrmn936 remaindernear 123e1 9000000000 -> 1230
ddrmn937 remaindernear 123e1 900000000 -> 1230
ddrmn939 remaindernear 123e1 90000000 -> 1230
ddrmn940 remaindernear 123e1 9000000 -> 1230
ddrmn941 remaindernear 123e1 900000 -> 1230
ddrmn942 remaindernear 123e1 90000 -> 1230
ddrmn943 remaindernear 123e1 9000 -> 1230
ddrmn944 remaindernear 123e1 900 -> 330
ddrmn945 remaindernear 123e1 90 -> -30
ddrmn946 remaindernear 123e1 9 -> -3
ddrmn950 remaindernear 123e1 1000000000000000 -> 1230
ddrmn961 remaindernear 123e1 2999999999999999 -> 1230
ddrmn962 remaindernear 123e1 3999999999999999 -> 1230
ddrmn963 remaindernear 123e1 4999999999999999 -> 1230
ddrmn964 remaindernear 123e1 5999999999999999 -> 1230
ddrmn965 remaindernear 123e1 6999999999999999 -> 1230
ddrmn966 remaindernear 123e1 7999999999999999 -> 1230
ddrmn967 remaindernear 123e1 8999999999999999 -> 1230
ddrmn968 remaindernear 123e1 9999999999999999 -> 1230
ddrmn969 remaindernear 123e1 9876543210987654 -> 1230
ddrmn980 remaindernear 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally
-- overflow and underflow tests [from divide]
ddrmn1051 remaindernear 1e+277 1e-311 -> NaN Division_impossible
ddrmn1052 remaindernear 1e+277 -1e-311 -> NaN Division_impossible
ddrmn1053 remaindernear -1e+277 1e-311 -> NaN Division_impossible
ddrmn1054 remaindernear -1e+277 -1e-311 -> NaN Division_impossible
ddrmn1055 remaindernear 1e-277 1e+311 -> 1E-277
ddrmn1056 remaindernear 1e-277 -1e+311 -> 1E-277
ddrmn1057 remaindernear -1e-277 1e+311 -> -1E-277
ddrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277
-- destructive subtract
ddrmn1100 remainderNear 1234567890123456 1.000000000000001 -> -0.234567890123455
ddrmn1101 remainderNear 1234567890123456 1.00000000000001 -> -0.34567890123444
ddrmn1102 remainderNear 1234567890123456 1.0000000000001 -> -0.4567890123333
ddrmn1103 remainderNear 1234567890123455 4.000000000000001 -> -1.308641972530864
ddrmn1104 remainderNear 1234567890123456 4.000000000000001 -> -0.308641972530864
ddrmn1115 remainderNear 1234567890123456 4.9999999999999 -> 0.6913578024696
ddrmn1116 remainderNear 1234567890123456 4.99999999999999 -> -1.53086421975308
ddrmn1117 remainderNear 1234567890123456 4.999999999999999 -> 1.246913578024691
ddrmn1118 remainderNear 1234567890123456 5.000000000000001 -> 0.753086421975309
ddrmn1119 remainderNear 1234567890123456 5.00000000000001 -> -1.46913578024691
ddrmn1110 remainderNear 1234567890123456 5.0000000000001 -> 1.3086421975314
-- Null tests
ddrmn1000 remaindernear 10 # -> NaN Invalid_operation
ddrmn1001 remaindernear # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,262 @@
------------------------------------------------------------------------
-- ddRotate.decTest -- rotate a decDouble coefficient left or right --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check
ddrot001 rotate 0 0 -> 0
ddrot002 rotate 0 2 -> 0
ddrot003 rotate 1 2 -> 100
ddrot004 rotate 1 15 -> 1000000000000000
ddrot005 rotate 1 16 -> 1
ddrot006 rotate 1 -1 -> 1000000000000000
ddrot007 rotate 0 -2 -> 0
ddrot008 rotate 1234567890123456 -1 -> 6123456789012345
ddrot009 rotate 1234567890123456 -15 -> 2345678901234561
ddrot010 rotate 1234567890123456 -16 -> 1234567890123456
ddrot011 rotate 9934567890123456 -15 -> 9345678901234569
ddrot012 rotate 9934567890123456 -16 -> 9934567890123456
-- rhs must be an integer
ddrot015 rotate 1 1.5 -> NaN Invalid_operation
ddrot016 rotate 1 1.0 -> NaN Invalid_operation
ddrot017 rotate 1 0.1 -> NaN Invalid_operation
ddrot018 rotate 1 0.0 -> NaN Invalid_operation
ddrot019 rotate 1 1E+1 -> NaN Invalid_operation
ddrot020 rotate 1 1E+99 -> NaN Invalid_operation
ddrot021 rotate 1 Inf -> NaN Invalid_operation
ddrot022 rotate 1 -Inf -> NaN Invalid_operation
-- and |rhs| <= precision
ddrot025 rotate 1 -1000 -> NaN Invalid_operation
ddrot026 rotate 1 -17 -> NaN Invalid_operation
ddrot027 rotate 1 17 -> NaN Invalid_operation
ddrot028 rotate 1 1000 -> NaN Invalid_operation
-- full pattern
ddrot030 rotate 1234567890123456 -16 -> 1234567890123456
ddrot031 rotate 1234567890123456 -15 -> 2345678901234561
ddrot032 rotate 1234567890123456 -14 -> 3456789012345612
ddrot033 rotate 1234567890123456 -13 -> 4567890123456123
ddrot034 rotate 1234567890123456 -12 -> 5678901234561234
ddrot035 rotate 1234567890123456 -11 -> 6789012345612345
ddrot036 rotate 1234567890123456 -10 -> 7890123456123456
ddrot037 rotate 1234567890123456 -9 -> 8901234561234567
ddrot038 rotate 1234567890123456 -8 -> 9012345612345678
ddrot039 rotate 1234567890123456 -7 -> 123456123456789
ddrot040 rotate 1234567890123456 -6 -> 1234561234567890
ddrot041 rotate 1234567890123456 -5 -> 2345612345678901
ddrot042 rotate 1234567890123456 -4 -> 3456123456789012
ddrot043 rotate 1234567890123456 -3 -> 4561234567890123
ddrot044 rotate 1234567890123456 -2 -> 5612345678901234
ddrot045 rotate 1234567890123456 -1 -> 6123456789012345
ddrot046 rotate 1234567890123456 -0 -> 1234567890123456
ddrot047 rotate 1234567890123456 +0 -> 1234567890123456
ddrot048 rotate 1234567890123456 +1 -> 2345678901234561
ddrot049 rotate 1234567890123456 +2 -> 3456789012345612
ddrot050 rotate 1234567890123456 +3 -> 4567890123456123
ddrot051 rotate 1234567890123456 +4 -> 5678901234561234
ddrot052 rotate 1234567890123456 +5 -> 6789012345612345
ddrot053 rotate 1234567890123456 +6 -> 7890123456123456
ddrot054 rotate 1234567890123456 +7 -> 8901234561234567
ddrot055 rotate 1234567890123456 +8 -> 9012345612345678
ddrot056 rotate 1234567890123456 +9 -> 123456123456789
ddrot057 rotate 1234567890123456 +10 -> 1234561234567890
ddrot058 rotate 1234567890123456 +11 -> 2345612345678901
ddrot059 rotate 1234567890123456 +12 -> 3456123456789012
ddrot060 rotate 1234567890123456 +13 -> 4561234567890123
ddrot061 rotate 1234567890123456 +14 -> 5612345678901234
ddrot062 rotate 1234567890123456 +15 -> 6123456789012345
ddrot063 rotate 1234567890123456 +16 -> 1234567890123456
-- zeros
ddrot070 rotate 0E-10 +9 -> 0E-10
ddrot071 rotate 0E-10 -9 -> 0E-10
ddrot072 rotate 0.000 +9 -> 0.000
ddrot073 rotate 0.000 -9 -> 0.000
ddrot074 rotate 0E+10 +9 -> 0E+10
ddrot075 rotate 0E+10 -9 -> 0E+10
ddrot076 rotate -0E-10 +9 -> -0E-10
ddrot077 rotate -0E-10 -9 -> -0E-10
ddrot078 rotate -0.000 +9 -> -0.000
ddrot079 rotate -0.000 -9 -> -0.000
ddrot080 rotate -0E+10 +9 -> -0E+10
ddrot081 rotate -0E+10 -9 -> -0E+10
-- Nmax, Nmin, Ntiny
ddrot141 rotate 9.999999999999999E+384 -1 -> 9.999999999999999E+384
ddrot142 rotate 9.999999999999999E+384 -15 -> 9.999999999999999E+384
ddrot143 rotate 9.999999999999999E+384 1 -> 9.999999999999999E+384
ddrot144 rotate 9.999999999999999E+384 15 -> 9.999999999999999E+384
ddrot145 rotate 1E-383 -1 -> 1.000000000000000E-368
ddrot146 rotate 1E-383 -15 -> 1.0E-382
ddrot147 rotate 1E-383 1 -> 1.0E-382
ddrot148 rotate 1E-383 15 -> 1.000000000000000E-368
ddrot151 rotate 1.000000000000000E-383 -1 -> 1.00000000000000E-384
ddrot152 rotate 1.000000000000000E-383 -15 -> 1E-398
ddrot153 rotate 1.000000000000000E-383 1 -> 1E-398
ddrot154 rotate 1.000000000000000E-383 15 -> 1.00000000000000E-384
ddrot155 rotate 9.000000000000000E-383 -1 -> 9.00000000000000E-384
ddrot156 rotate 9.000000000000000E-383 -15 -> 9E-398
ddrot157 rotate 9.000000000000000E-383 1 -> 9E-398
ddrot158 rotate 9.000000000000000E-383 15 -> 9.00000000000000E-384
ddrot160 rotate 1E-398 -1 -> 1.000000000000000E-383
ddrot161 rotate 1E-398 -15 -> 1.0E-397
ddrot162 rotate 1E-398 1 -> 1.0E-397
ddrot163 rotate 1E-398 15 -> 1.000000000000000E-383
-- negatives
ddrot171 rotate -9.999999999999999E+384 -1 -> -9.999999999999999E+384
ddrot172 rotate -9.999999999999999E+384 -15 -> -9.999999999999999E+384
ddrot173 rotate -9.999999999999999E+384 1 -> -9.999999999999999E+384
ddrot174 rotate -9.999999999999999E+384 15 -> -9.999999999999999E+384
ddrot175 rotate -1E-383 -1 -> -1.000000000000000E-368
ddrot176 rotate -1E-383 -15 -> -1.0E-382
ddrot177 rotate -1E-383 1 -> -1.0E-382
ddrot178 rotate -1E-383 15 -> -1.000000000000000E-368
ddrot181 rotate -1.000000000000000E-383 -1 -> -1.00000000000000E-384
ddrot182 rotate -1.000000000000000E-383 -15 -> -1E-398
ddrot183 rotate -1.000000000000000E-383 1 -> -1E-398
ddrot184 rotate -1.000000000000000E-383 15 -> -1.00000000000000E-384
ddrot185 rotate -9.000000000000000E-383 -1 -> -9.00000000000000E-384
ddrot186 rotate -9.000000000000000E-383 -15 -> -9E-398
ddrot187 rotate -9.000000000000000E-383 1 -> -9E-398
ddrot188 rotate -9.000000000000000E-383 15 -> -9.00000000000000E-384
ddrot190 rotate -1E-398 -1 -> -1.000000000000000E-383
ddrot191 rotate -1E-398 -15 -> -1.0E-397
ddrot192 rotate -1E-398 1 -> -1.0E-397
ddrot193 rotate -1E-398 15 -> -1.000000000000000E-383
-- more negatives (of sanities)
ddrot201 rotate -0 0 -> -0
ddrot202 rotate -0 2 -> -0
ddrot203 rotate -1 2 -> -100
ddrot204 rotate -1 15 -> -1000000000000000
ddrot205 rotate -1 16 -> -1
ddrot206 rotate -1 -1 -> -1000000000000000
ddrot207 rotate -0 -2 -> -0
ddrot208 rotate -1234567890123456 -1 -> -6123456789012345
ddrot209 rotate -1234567890123456 -15 -> -2345678901234561
ddrot210 rotate -1234567890123456 -16 -> -1234567890123456
ddrot211 rotate -9934567890123456 -15 -> -9345678901234569
ddrot212 rotate -9934567890123456 -16 -> -9934567890123456
-- Specials; NaNs are handled as usual
ddrot781 rotate -Inf -8 -> -Infinity
ddrot782 rotate -Inf -1 -> -Infinity
ddrot783 rotate -Inf -0 -> -Infinity
ddrot784 rotate -Inf 0 -> -Infinity
ddrot785 rotate -Inf 1 -> -Infinity
ddrot786 rotate -Inf 8 -> -Infinity
ddrot787 rotate -1000 -Inf -> NaN Invalid_operation
ddrot788 rotate -Inf -Inf -> NaN Invalid_operation
ddrot789 rotate -1 -Inf -> NaN Invalid_operation
ddrot790 rotate -0 -Inf -> NaN Invalid_operation
ddrot791 rotate 0 -Inf -> NaN Invalid_operation
ddrot792 rotate 1 -Inf -> NaN Invalid_operation
ddrot793 rotate 1000 -Inf -> NaN Invalid_operation
ddrot794 rotate Inf -Inf -> NaN Invalid_operation
ddrot800 rotate Inf -Inf -> NaN Invalid_operation
ddrot801 rotate Inf -8 -> Infinity
ddrot802 rotate Inf -1 -> Infinity
ddrot803 rotate Inf -0 -> Infinity
ddrot804 rotate Inf 0 -> Infinity
ddrot805 rotate Inf 1 -> Infinity
ddrot806 rotate Inf 8 -> Infinity
ddrot807 rotate Inf Inf -> NaN Invalid_operation
ddrot808 rotate -1000 Inf -> NaN Invalid_operation
ddrot809 rotate -Inf Inf -> NaN Invalid_operation
ddrot810 rotate -1 Inf -> NaN Invalid_operation
ddrot811 rotate -0 Inf -> NaN Invalid_operation
ddrot812 rotate 0 Inf -> NaN Invalid_operation
ddrot813 rotate 1 Inf -> NaN Invalid_operation
ddrot814 rotate 1000 Inf -> NaN Invalid_operation
ddrot815 rotate Inf Inf -> NaN Invalid_operation
ddrot821 rotate NaN -Inf -> NaN
ddrot822 rotate NaN -1000 -> NaN
ddrot823 rotate NaN -1 -> NaN
ddrot824 rotate NaN -0 -> NaN
ddrot825 rotate NaN 0 -> NaN
ddrot826 rotate NaN 1 -> NaN
ddrot827 rotate NaN 1000 -> NaN
ddrot828 rotate NaN Inf -> NaN
ddrot829 rotate NaN NaN -> NaN
ddrot830 rotate -Inf NaN -> NaN
ddrot831 rotate -1000 NaN -> NaN
ddrot832 rotate -1 NaN -> NaN
ddrot833 rotate -0 NaN -> NaN
ddrot834 rotate 0 NaN -> NaN
ddrot835 rotate 1 NaN -> NaN
ddrot836 rotate 1000 NaN -> NaN
ddrot837 rotate Inf NaN -> NaN
ddrot841 rotate sNaN -Inf -> NaN Invalid_operation
ddrot842 rotate sNaN -1000 -> NaN Invalid_operation
ddrot843 rotate sNaN -1 -> NaN Invalid_operation
ddrot844 rotate sNaN -0 -> NaN Invalid_operation
ddrot845 rotate sNaN 0 -> NaN Invalid_operation
ddrot846 rotate sNaN 1 -> NaN Invalid_operation
ddrot847 rotate sNaN 1000 -> NaN Invalid_operation
ddrot848 rotate sNaN NaN -> NaN Invalid_operation
ddrot849 rotate sNaN sNaN -> NaN Invalid_operation
ddrot850 rotate NaN sNaN -> NaN Invalid_operation
ddrot851 rotate -Inf sNaN -> NaN Invalid_operation
ddrot852 rotate -1000 sNaN -> NaN Invalid_operation
ddrot853 rotate -1 sNaN -> NaN Invalid_operation
ddrot854 rotate -0 sNaN -> NaN Invalid_operation
ddrot855 rotate 0 sNaN -> NaN Invalid_operation
ddrot856 rotate 1 sNaN -> NaN Invalid_operation
ddrot857 rotate 1000 sNaN -> NaN Invalid_operation
ddrot858 rotate Inf sNaN -> NaN Invalid_operation
ddrot859 rotate NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddrot861 rotate NaN1 -Inf -> NaN1
ddrot862 rotate +NaN2 -1000 -> NaN2
ddrot863 rotate NaN3 1000 -> NaN3
ddrot864 rotate NaN4 Inf -> NaN4
ddrot865 rotate NaN5 +NaN6 -> NaN5
ddrot866 rotate -Inf NaN7 -> NaN7
ddrot867 rotate -1000 NaN8 -> NaN8
ddrot868 rotate 1000 NaN9 -> NaN9
ddrot869 rotate Inf +NaN10 -> NaN10
ddrot871 rotate sNaN11 -Inf -> NaN11 Invalid_operation
ddrot872 rotate sNaN12 -1000 -> NaN12 Invalid_operation
ddrot873 rotate sNaN13 1000 -> NaN13 Invalid_operation
ddrot874 rotate sNaN14 NaN17 -> NaN14 Invalid_operation
ddrot875 rotate sNaN15 sNaN18 -> NaN15 Invalid_operation
ddrot876 rotate NaN16 sNaN19 -> NaN19 Invalid_operation
ddrot877 rotate -Inf +sNaN20 -> NaN20 Invalid_operation
ddrot878 rotate -1000 sNaN21 -> NaN21 Invalid_operation
ddrot879 rotate 1000 sNaN22 -> NaN22 Invalid_operation
ddrot880 rotate Inf sNaN23 -> NaN23 Invalid_operation
ddrot881 rotate +NaN25 +sNaN24 -> NaN24 Invalid_operation
ddrot882 rotate -NaN26 NaN28 -> -NaN26
ddrot883 rotate -sNaN27 sNaN29 -> -NaN27 Invalid_operation
ddrot884 rotate 1000 -NaN30 -> -NaN30
ddrot885 rotate 1000 -sNaN31 -> -NaN31 Invalid_operation

View file

@ -0,0 +1,389 @@
------------------------------------------------------------------------
-- ddSameQuantum.decTest -- check decDouble quantums match --
-- Copyright (c) IBM Corporation, 2001, 2008. 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.59
-- All operands and results are decDoubles.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
ddsamq001 samequantum 0 0 -> 1
ddsamq002 samequantum 0 1 -> 1
ddsamq003 samequantum 1 0 -> 1
ddsamq004 samequantum 1 1 -> 1
ddsamq011 samequantum 10 1E+1 -> 0
ddsamq012 samequantum 10E+1 10E+1 -> 1
ddsamq013 samequantum 100 10E+1 -> 0
ddsamq014 samequantum 100 1E+2 -> 0
ddsamq015 samequantum 0.1 1E-2 -> 0
ddsamq016 samequantum 0.1 1E-1 -> 1
ddsamq017 samequantum 0.1 1E-0 -> 0
ddsamq018 samequantum 999 999 -> 1
ddsamq019 samequantum 999E-1 99.9 -> 1
ddsamq020 samequantum 111E-1 22.2 -> 1
ddsamq021 samequantum 111E-1 1234.2 -> 1
-- zeros
ddsamq030 samequantum 0.0 1.1 -> 1
ddsamq031 samequantum 0.0 1.11 -> 0
ddsamq032 samequantum 0.0 0 -> 0
ddsamq033 samequantum 0.0 0.0 -> 1
ddsamq034 samequantum 0.0 0.00 -> 0
ddsamq035 samequantum 0E+1 0E+0 -> 0
ddsamq036 samequantum 0E+1 0E+1 -> 1
ddsamq037 samequantum 0E+1 0E+2 -> 0
ddsamq038 samequantum 0E-17 0E-16 -> 0
ddsamq039 samequantum 0E-17 0E-17 -> 1
ddsamq040 samequantum 0E-17 0E-18 -> 0
ddsamq041 samequantum 0E-17 0.0E-15 -> 0
ddsamq042 samequantum 0E-17 0.0E-16 -> 1
ddsamq043 samequantum 0E-17 0.0E-17 -> 0
ddsamq044 samequantum -0E-17 0.0E-16 -> 1
ddsamq045 samequantum 0E-17 -0.0E-17 -> 0
ddsamq046 samequantum 0E-17 -0.0E-16 -> 1
ddsamq047 samequantum -0E-17 0.0E-17 -> 0
ddsamq048 samequantum -0E-17 -0.0E-16 -> 1
ddsamq049 samequantum -0E-17 -0.0E-17 -> 0
-- Nmax, Nmin, Ntiny
ddsamq051 samequantum 9.999999999999999E+384 9.999999999999999E+384 -> 1
ddsamq052 samequantum 1E-383 1E-383 -> 1
ddsamq053 samequantum 1.000000000000000E-383 1.000000000000000E-383 -> 1
ddsamq054 samequantum 1E-398 1E-398 -> 1
ddsamq055 samequantum 9.999999999999999E+384 9.999999999999999E+384 -> 1
ddsamq056 samequantum 1E-383 1E-383 -> 1
ddsamq057 samequantum 1.000000000000000E-383 1.000000000000000E-383 -> 1
ddsamq058 samequantum 1E-398 1E-398 -> 1
ddsamq061 samequantum -1E-398 -1E-398 -> 1
ddsamq062 samequantum -1.000000000000000E-383 -1.000000000000000E-383 -> 1
ddsamq063 samequantum -1E-383 -1E-383 -> 1
ddsamq064 samequantum -9.999999999999999E+384 -9.999999999999999E+384 -> 1
ddsamq065 samequantum -1E-398 -1E-398 -> 1
ddsamq066 samequantum -1.000000000000000E-383 -1.000000000000000E-383 -> 1
ddsamq067 samequantum -1E-383 -1E-383 -> 1
ddsamq068 samequantum -9.999999999999999E+384 -9.999999999999999E+384 -> 1
ddsamq071 samequantum -4E-398 -1E-398 -> 1
ddsamq072 samequantum -4.000000000000000E-383 -1.000040000000000E-383 -> 1
ddsamq073 samequantum -4E-383 -1E-383 -> 1
ddsamq074 samequantum -4.999999999999999E+384 -9.999999999949999E+384 -> 1
ddsamq075 samequantum -4E-398 -1E-398 -> 1
ddsamq076 samequantum -4.000000000000000E-383 -1.004000000000000E-383 -> 1
ddsamq077 samequantum -4E-383 -1E-383 -> 1
ddsamq078 samequantum -4.999999999999999E+384 -9.949999999999999E+384 -> 1
ddsamq081 samequantum -4E-397 -1E-398 -> 0
ddsamq082 samequantum -4.000000000000000E-383 -1.000040000000000E-336 -> 0
ddsamq083 samequantum -4E-346 -1E-383 -> 0
ddsamq084 samequantum -4.999999999999999E+384 -9.999499999999999E+336 -> 0
ddsamq085 samequantum -4E-397 -1E-398 -> 0
ddsamq086 samequantum -4.000000000000000E-383 -1.004000000000000E-336 -> 0
ddsamq087 samequantum -4E-346 -1E-383 -> 0
ddsamq088 samequantum -4.999999999999999E+384 -9.949999999999999E+336 -> 0
-- specials & combinations
ddsamq0110 samequantum -Inf -Inf -> 1
ddsamq0111 samequantum -Inf Inf -> 1
ddsamq0112 samequantum -Inf NaN -> 0
ddsamq0113 samequantum -Inf -7E+3 -> 0
ddsamq0114 samequantum -Inf -7 -> 0
ddsamq0115 samequantum -Inf -7E-3 -> 0
ddsamq0116 samequantum -Inf -0E-3 -> 0
ddsamq0117 samequantum -Inf -0 -> 0
ddsamq0118 samequantum -Inf -0E+3 -> 0
ddsamq0119 samequantum -Inf 0E-3 -> 0
ddsamq0120 samequantum -Inf 0 -> 0
ddsamq0121 samequantum -Inf 0E+3 -> 0
ddsamq0122 samequantum -Inf 7E-3 -> 0
ddsamq0123 samequantum -Inf 7 -> 0
ddsamq0124 samequantum -Inf 7E+3 -> 0
ddsamq0125 samequantum -Inf sNaN -> 0
ddsamq0210 samequantum Inf -Inf -> 1
ddsamq0211 samequantum Inf Inf -> 1
ddsamq0212 samequantum Inf NaN -> 0
ddsamq0213 samequantum Inf -7E+3 -> 0
ddsamq0214 samequantum Inf -7 -> 0
ddsamq0215 samequantum Inf -7E-3 -> 0
ddsamq0216 samequantum Inf -0E-3 -> 0
ddsamq0217 samequantum Inf -0 -> 0
ddsamq0218 samequantum Inf -0E+3 -> 0
ddsamq0219 samequantum Inf 0E-3 -> 0
ddsamq0220 samequantum Inf 0 -> 0
ddsamq0221 samequantum Inf 0E+3 -> 0
ddsamq0222 samequantum Inf 7E-3 -> 0
ddsamq0223 samequantum Inf 7 -> 0
ddsamq0224 samequantum Inf 7E+3 -> 0
ddsamq0225 samequantum Inf sNaN -> 0
ddsamq0310 samequantum NaN -Inf -> 0
ddsamq0311 samequantum NaN Inf -> 0
ddsamq0312 samequantum NaN NaN -> 1
ddsamq0313 samequantum NaN -7E+3 -> 0
ddsamq0314 samequantum NaN -7 -> 0
ddsamq0315 samequantum NaN -7E-3 -> 0
ddsamq0316 samequantum NaN -0E-3 -> 0
ddsamq0317 samequantum NaN -0 -> 0
ddsamq0318 samequantum NaN -0E+3 -> 0
ddsamq0319 samequantum NaN 0E-3 -> 0
ddsamq0320 samequantum NaN 0 -> 0
ddsamq0321 samequantum NaN 0E+3 -> 0
ddsamq0322 samequantum NaN 7E-3 -> 0
ddsamq0323 samequantum NaN 7 -> 0
ddsamq0324 samequantum NaN 7E+3 -> 0
ddsamq0325 samequantum NaN sNaN -> 1
ddsamq0410 samequantum -7E+3 -Inf -> 0
ddsamq0411 samequantum -7E+3 Inf -> 0
ddsamq0412 samequantum -7E+3 NaN -> 0
ddsamq0413 samequantum -7E+3 -7E+3 -> 1
ddsamq0414 samequantum -7E+3 -7 -> 0
ddsamq0415 samequantum -7E+3 -7E-3 -> 0
ddsamq0416 samequantum -7E+3 -0E-3 -> 0
ddsamq0417 samequantum -7E+3 -0 -> 0
ddsamq0418 samequantum -7E+3 -0E+3 -> 1
ddsamq0419 samequantum -7E+3 0E-3 -> 0
ddsamq0420 samequantum -7E+3 0 -> 0
ddsamq0421 samequantum -7E+3 0E+3 -> 1
ddsamq0422 samequantum -7E+3 7E-3 -> 0
ddsamq0423 samequantum -7E+3 7 -> 0
ddsamq0424 samequantum -7E+3 7E+3 -> 1
ddsamq0425 samequantum -7E+3 sNaN -> 0
ddsamq0510 samequantum -7 -Inf -> 0
ddsamq0511 samequantum -7 Inf -> 0
ddsamq0512 samequantum -7 NaN -> 0
ddsamq0513 samequantum -7 -7E+3 -> 0
ddsamq0514 samequantum -7 -7 -> 1
ddsamq0515 samequantum -7 -7E-3 -> 0
ddsamq0516 samequantum -7 -0E-3 -> 0
ddsamq0517 samequantum -7 -0 -> 1
ddsamq0518 samequantum -7 -0E+3 -> 0
ddsamq0519 samequantum -7 0E-3 -> 0
ddsamq0520 samequantum -7 0 -> 1
ddsamq0521 samequantum -7 0E+3 -> 0
ddsamq0522 samequantum -7 7E-3 -> 0
ddsamq0523 samequantum -7 7 -> 1
ddsamq0524 samequantum -7 7E+3 -> 0
ddsamq0525 samequantum -7 sNaN -> 0
ddsamq0610 samequantum -7E-3 -Inf -> 0
ddsamq0611 samequantum -7E-3 Inf -> 0
ddsamq0612 samequantum -7E-3 NaN -> 0
ddsamq0613 samequantum -7E-3 -7E+3 -> 0
ddsamq0614 samequantum -7E-3 -7 -> 0
ddsamq0615 samequantum -7E-3 -7E-3 -> 1
ddsamq0616 samequantum -7E-3 -0E-3 -> 1
ddsamq0617 samequantum -7E-3 -0 -> 0
ddsamq0618 samequantum -7E-3 -0E+3 -> 0
ddsamq0619 samequantum -7E-3 0E-3 -> 1
ddsamq0620 samequantum -7E-3 0 -> 0
ddsamq0621 samequantum -7E-3 0E+3 -> 0
ddsamq0622 samequantum -7E-3 7E-3 -> 1
ddsamq0623 samequantum -7E-3 7 -> 0
ddsamq0624 samequantum -7E-3 7E+3 -> 0
ddsamq0625 samequantum -7E-3 sNaN -> 0
ddsamq0710 samequantum -0E-3 -Inf -> 0
ddsamq0711 samequantum -0E-3 Inf -> 0
ddsamq0712 samequantum -0E-3 NaN -> 0
ddsamq0713 samequantum -0E-3 -7E+3 -> 0
ddsamq0714 samequantum -0E-3 -7 -> 0
ddsamq0715 samequantum -0E-3 -7E-3 -> 1
ddsamq0716 samequantum -0E-3 -0E-3 -> 1
ddsamq0717 samequantum -0E-3 -0 -> 0
ddsamq0718 samequantum -0E-3 -0E+3 -> 0
ddsamq0719 samequantum -0E-3 0E-3 -> 1
ddsamq0720 samequantum -0E-3 0 -> 0
ddsamq0721 samequantum -0E-3 0E+3 -> 0
ddsamq0722 samequantum -0E-3 7E-3 -> 1
ddsamq0723 samequantum -0E-3 7 -> 0
ddsamq0724 samequantum -0E-3 7E+3 -> 0
ddsamq0725 samequantum -0E-3 sNaN -> 0
ddsamq0810 samequantum -0 -Inf -> 0
ddsamq0811 samequantum -0 Inf -> 0
ddsamq0812 samequantum -0 NaN -> 0
ddsamq0813 samequantum -0 -7E+3 -> 0
ddsamq0814 samequantum -0 -7 -> 1
ddsamq0815 samequantum -0 -7E-3 -> 0
ddsamq0816 samequantum -0 -0E-3 -> 0
ddsamq0817 samequantum -0 -0 -> 1
ddsamq0818 samequantum -0 -0E+3 -> 0
ddsamq0819 samequantum -0 0E-3 -> 0
ddsamq0820 samequantum -0 0 -> 1
ddsamq0821 samequantum -0 0E+3 -> 0
ddsamq0822 samequantum -0 7E-3 -> 0
ddsamq0823 samequantum -0 7 -> 1
ddsamq0824 samequantum -0 7E+3 -> 0
ddsamq0825 samequantum -0 sNaN -> 0
ddsamq0910 samequantum -0E+3 -Inf -> 0
ddsamq0911 samequantum -0E+3 Inf -> 0
ddsamq0912 samequantum -0E+3 NaN -> 0
ddsamq0913 samequantum -0E+3 -7E+3 -> 1
ddsamq0914 samequantum -0E+3 -7 -> 0
ddsamq0915 samequantum -0E+3 -7E-3 -> 0
ddsamq0916 samequantum -0E+3 -0E-3 -> 0
ddsamq0917 samequantum -0E+3 -0 -> 0
ddsamq0918 samequantum -0E+3 -0E+3 -> 1
ddsamq0919 samequantum -0E+3 0E-3 -> 0
ddsamq0920 samequantum -0E+3 0 -> 0
ddsamq0921 samequantum -0E+3 0E+3 -> 1
ddsamq0922 samequantum -0E+3 7E-3 -> 0
ddsamq0923 samequantum -0E+3 7 -> 0
ddsamq0924 samequantum -0E+3 7E+3 -> 1
ddsamq0925 samequantum -0E+3 sNaN -> 0
ddsamq1110 samequantum 0E-3 -Inf -> 0
ddsamq1111 samequantum 0E-3 Inf -> 0
ddsamq1112 samequantum 0E-3 NaN -> 0
ddsamq1113 samequantum 0E-3 -7E+3 -> 0
ddsamq1114 samequantum 0E-3 -7 -> 0
ddsamq1115 samequantum 0E-3 -7E-3 -> 1
ddsamq1116 samequantum 0E-3 -0E-3 -> 1
ddsamq1117 samequantum 0E-3 -0 -> 0
ddsamq1118 samequantum 0E-3 -0E+3 -> 0
ddsamq1119 samequantum 0E-3 0E-3 -> 1
ddsamq1120 samequantum 0E-3 0 -> 0
ddsamq1121 samequantum 0E-3 0E+3 -> 0
ddsamq1122 samequantum 0E-3 7E-3 -> 1
ddsamq1123 samequantum 0E-3 7 -> 0
ddsamq1124 samequantum 0E-3 7E+3 -> 0
ddsamq1125 samequantum 0E-3 sNaN -> 0
ddsamq1210 samequantum 0 -Inf -> 0
ddsamq1211 samequantum 0 Inf -> 0
ddsamq1212 samequantum 0 NaN -> 0
ddsamq1213 samequantum 0 -7E+3 -> 0
ddsamq1214 samequantum 0 -7 -> 1
ddsamq1215 samequantum 0 -7E-3 -> 0
ddsamq1216 samequantum 0 -0E-3 -> 0
ddsamq1217 samequantum 0 -0 -> 1
ddsamq1218 samequantum 0 -0E+3 -> 0
ddsamq1219 samequantum 0 0E-3 -> 0
ddsamq1220 samequantum 0 0 -> 1
ddsamq1221 samequantum 0 0E+3 -> 0
ddsamq1222 samequantum 0 7E-3 -> 0
ddsamq1223 samequantum 0 7 -> 1
ddsamq1224 samequantum 0 7E+3 -> 0
ddsamq1225 samequantum 0 sNaN -> 0
ddsamq1310 samequantum 0E+3 -Inf -> 0
ddsamq1311 samequantum 0E+3 Inf -> 0
ddsamq1312 samequantum 0E+3 NaN -> 0
ddsamq1313 samequantum 0E+3 -7E+3 -> 1
ddsamq1314 samequantum 0E+3 -7 -> 0
ddsamq1315 samequantum 0E+3 -7E-3 -> 0
ddsamq1316 samequantum 0E+3 -0E-3 -> 0
ddsamq1317 samequantum 0E+3 -0 -> 0
ddsamq1318 samequantum 0E+3 -0E+3 -> 1
ddsamq1319 samequantum 0E+3 0E-3 -> 0
ddsamq1320 samequantum 0E+3 0 -> 0
ddsamq1321 samequantum 0E+3 0E+3 -> 1
ddsamq1322 samequantum 0E+3 7E-3 -> 0
ddsamq1323 samequantum 0E+3 7 -> 0
ddsamq1324 samequantum 0E+3 7E+3 -> 1
ddsamq1325 samequantum 0E+3 sNaN -> 0
ddsamq1410 samequantum 7E-3 -Inf -> 0
ddsamq1411 samequantum 7E-3 Inf -> 0
ddsamq1412 samequantum 7E-3 NaN -> 0
ddsamq1413 samequantum 7E-3 -7E+3 -> 0
ddsamq1414 samequantum 7E-3 -7 -> 0
ddsamq1415 samequantum 7E-3 -7E-3 -> 1
ddsamq1416 samequantum 7E-3 -0E-3 -> 1
ddsamq1417 samequantum 7E-3 -0 -> 0
ddsamq1418 samequantum 7E-3 -0E+3 -> 0
ddsamq1419 samequantum 7E-3 0E-3 -> 1
ddsamq1420 samequantum 7E-3 0 -> 0
ddsamq1421 samequantum 7E-3 0E+3 -> 0
ddsamq1422 samequantum 7E-3 7E-3 -> 1
ddsamq1423 samequantum 7E-3 7 -> 0
ddsamq1424 samequantum 7E-3 7E+3 -> 0
ddsamq1425 samequantum 7E-3 sNaN -> 0
ddsamq1510 samequantum 7 -Inf -> 0
ddsamq1511 samequantum 7 Inf -> 0
ddsamq1512 samequantum 7 NaN -> 0
ddsamq1513 samequantum 7 -7E+3 -> 0
ddsamq1514 samequantum 7 -7 -> 1
ddsamq1515 samequantum 7 -7E-3 -> 0
ddsamq1516 samequantum 7 -0E-3 -> 0
ddsamq1517 samequantum 7 -0 -> 1
ddsamq1518 samequantum 7 -0E+3 -> 0
ddsamq1519 samequantum 7 0E-3 -> 0
ddsamq1520 samequantum 7 0 -> 1
ddsamq1521 samequantum 7 0E+3 -> 0
ddsamq1522 samequantum 7 7E-3 -> 0
ddsamq1523 samequantum 7 7 -> 1
ddsamq1524 samequantum 7 7E+3 -> 0
ddsamq1525 samequantum 7 sNaN -> 0
ddsamq1610 samequantum 7E+3 -Inf -> 0
ddsamq1611 samequantum 7E+3 Inf -> 0
ddsamq1612 samequantum 7E+3 NaN -> 0
ddsamq1613 samequantum 7E+3 -7E+3 -> 1
ddsamq1614 samequantum 7E+3 -7 -> 0
ddsamq1615 samequantum 7E+3 -7E-3 -> 0
ddsamq1616 samequantum 7E+3 -0E-3 -> 0
ddsamq1617 samequantum 7E+3 -0 -> 0
ddsamq1618 samequantum 7E+3 -0E+3 -> 1
ddsamq1619 samequantum 7E+3 0E-3 -> 0
ddsamq1620 samequantum 7E+3 0 -> 0
ddsamq1621 samequantum 7E+3 0E+3 -> 1
ddsamq1622 samequantum 7E+3 7E-3 -> 0
ddsamq1623 samequantum 7E+3 7 -> 0
ddsamq1624 samequantum 7E+3 7E+3 -> 1
ddsamq1625 samequantum 7E+3 sNaN -> 0
ddsamq1710 samequantum sNaN -Inf -> 0
ddsamq1711 samequantum sNaN Inf -> 0
ddsamq1712 samequantum sNaN NaN -> 1
ddsamq1713 samequantum sNaN -7E+3 -> 0
ddsamq1714 samequantum sNaN -7 -> 0
ddsamq1715 samequantum sNaN -7E-3 -> 0
ddsamq1716 samequantum sNaN -0E-3 -> 0
ddsamq1717 samequantum sNaN -0 -> 0
ddsamq1718 samequantum sNaN -0E+3 -> 0
ddsamq1719 samequantum sNaN 0E-3 -> 0
ddsamq1720 samequantum sNaN 0 -> 0
ddsamq1721 samequantum sNaN 0E+3 -> 0
ddsamq1722 samequantum sNaN 7E-3 -> 0
ddsamq1723 samequantum sNaN 7 -> 0
ddsamq1724 samequantum sNaN 7E+3 -> 0
ddsamq1725 samequantum sNaN sNaN -> 1
-- noisy NaNs
ddsamq1730 samequantum sNaN3 sNaN3 -> 1
ddsamq1731 samequantum sNaN3 sNaN4 -> 1
ddsamq1732 samequantum NaN3 NaN3 -> 1
ddsamq1733 samequantum NaN3 NaN4 -> 1
ddsamq1734 samequantum sNaN3 3 -> 0
ddsamq1735 samequantum NaN3 3 -> 0
ddsamq1736 samequantum 4 sNaN4 -> 0
ddsamq1737 samequantum 3 NaN3 -> 0
ddsamq1738 samequantum Inf sNaN4 -> 0
ddsamq1739 samequantum -Inf NaN3 -> 0

View file

@ -0,0 +1,243 @@
------------------------------------------------------------------------
-- ddScalebB.decTest -- scale a decDouble by powers of 10 --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Max |rhs| is 2*(384+16) = 800
-- Sanity checks
ddscb001 scaleb 7.50 10 -> 7.50E+10
ddscb002 scaleb 7.50 3 -> 7.50E+3
ddscb003 scaleb 7.50 2 -> 750
ddscb004 scaleb 7.50 1 -> 75.0
ddscb005 scaleb 7.50 0 -> 7.50
ddscb006 scaleb 7.50 -1 -> 0.750
ddscb007 scaleb 7.50 -2 -> 0.0750
ddscb008 scaleb 7.50 -10 -> 7.50E-10
ddscb009 scaleb -7.50 3 -> -7.50E+3
ddscb010 scaleb -7.50 2 -> -750
ddscb011 scaleb -7.50 1 -> -75.0
ddscb012 scaleb -7.50 0 -> -7.50
ddscb013 scaleb -7.50 -1 -> -0.750
-- Infinities
ddscb014 scaleb Infinity 1 -> Infinity
ddscb015 scaleb -Infinity 2 -> -Infinity
ddscb016 scaleb Infinity -1 -> Infinity
ddscb017 scaleb -Infinity -2 -> -Infinity
-- Next two are somewhat undefined in 754r; treat as non-integer
ddscb018 scaleb 10 Infinity -> NaN Invalid_operation
ddscb019 scaleb 10 -Infinity -> NaN Invalid_operation
-- NaNs are undefined in 754r; assume usual processing
-- NaNs, 0 payload
ddscb021 scaleb NaN 1 -> NaN
ddscb022 scaleb -NaN -1 -> -NaN
ddscb023 scaleb sNaN 1 -> NaN Invalid_operation
ddscb024 scaleb -sNaN 1 -> -NaN Invalid_operation
ddscb025 scaleb 4 NaN -> NaN
ddscb026 scaleb -Inf -NaN -> -NaN
ddscb027 scaleb 4 sNaN -> NaN Invalid_operation
ddscb028 scaleb Inf -sNaN -> -NaN Invalid_operation
-- non-integer RHS
ddscb030 scaleb 1.23 1 -> 12.3
ddscb031 scaleb 1.23 1.00 -> NaN Invalid_operation
ddscb032 scaleb 1.23 1.1 -> NaN Invalid_operation
ddscb033 scaleb 1.23 1.01 -> NaN Invalid_operation
ddscb034 scaleb 1.23 0.01 -> NaN Invalid_operation
ddscb035 scaleb 1.23 0.11 -> NaN Invalid_operation
ddscb036 scaleb 1.23 0.999999999 -> NaN Invalid_operation
ddscb037 scaleb 1.23 -1 -> 0.123
ddscb038 scaleb 1.23 -1.00 -> NaN Invalid_operation
ddscb039 scaleb 1.23 -1.1 -> NaN Invalid_operation
ddscb040 scaleb 1.23 -1.01 -> NaN Invalid_operation
ddscb041 scaleb 1.23 -0.01 -> NaN Invalid_operation
ddscb042 scaleb 1.23 -0.11 -> NaN Invalid_operation
ddscb043 scaleb 1.23 -0.999999999 -> NaN Invalid_operation
ddscb044 scaleb 1.23 0.1 -> NaN Invalid_operation
ddscb045 scaleb 1.23 1E+1 -> NaN Invalid_operation
ddscb046 scaleb 1.23 1.1234E+6 -> NaN Invalid_operation
ddscb047 scaleb 1.23 1.123E+4 -> NaN Invalid_operation
-- out-of range RHS
ddscb120 scaleb 1.23 799 -> Infinity Overflow Inexact Rounded
ddscb121 scaleb 1.23 800 -> Infinity Overflow Inexact Rounded
ddscb122 scaleb 1.23 801 -> NaN Invalid_operation
ddscb123 scaleb 1.23 802 -> NaN Invalid_operation
ddscb124 scaleb 1.23 -799 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddscb125 scaleb 1.23 -800 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddscb126 scaleb 1.23 -801 -> NaN Invalid_operation
ddscb127 scaleb 1.23 -802 -> NaN Invalid_operation
-- NaNs, non-0 payload
-- propagating NaNs
ddscb861 scaleb NaN01 -Inf -> NaN1
ddscb862 scaleb -NaN02 -1000 -> -NaN2
ddscb863 scaleb NaN03 1000 -> NaN3
ddscb864 scaleb NaN04 Inf -> NaN4
ddscb865 scaleb NaN05 NaN61 -> NaN5
ddscb866 scaleb -Inf -NaN71 -> -NaN71
ddscb867 scaleb -1000 NaN81 -> NaN81
ddscb868 scaleb 1000 NaN91 -> NaN91
ddscb869 scaleb Inf NaN101 -> NaN101
ddscb871 scaleb sNaN011 -Inf -> NaN11 Invalid_operation
ddscb872 scaleb sNaN012 -1000 -> NaN12 Invalid_operation
ddscb873 scaleb -sNaN013 1000 -> -NaN13 Invalid_operation
ddscb874 scaleb sNaN014 NaN171 -> NaN14 Invalid_operation
ddscb875 scaleb sNaN015 sNaN181 -> NaN15 Invalid_operation
ddscb876 scaleb NaN016 sNaN191 -> NaN191 Invalid_operation
ddscb877 scaleb -Inf sNaN201 -> NaN201 Invalid_operation
ddscb878 scaleb -1000 sNaN211 -> NaN211 Invalid_operation
ddscb879 scaleb 1000 -sNaN221 -> -NaN221 Invalid_operation
ddscb880 scaleb Inf sNaN231 -> NaN231 Invalid_operation
ddscb881 scaleb NaN025 sNaN241 -> NaN241 Invalid_operation
-- finites
ddscb051 scaleb 7 -2 -> 0.07
ddscb052 scaleb -7 -2 -> -0.07
ddscb053 scaleb 75 -2 -> 0.75
ddscb054 scaleb -75 -2 -> -0.75
ddscb055 scaleb 7.50 -2 -> 0.0750
ddscb056 scaleb -7.50 -2 -> -0.0750
ddscb057 scaleb 7.500 -2 -> 0.07500
ddscb058 scaleb -7.500 -2 -> -0.07500
ddscb061 scaleb 7 -1 -> 0.7
ddscb062 scaleb -7 -1 -> -0.7
ddscb063 scaleb 75 -1 -> 7.5
ddscb064 scaleb -75 -1 -> -7.5
ddscb065 scaleb 7.50 -1 -> 0.750
ddscb066 scaleb -7.50 -1 -> -0.750
ddscb067 scaleb 7.500 -1 -> 0.7500
ddscb068 scaleb -7.500 -1 -> -0.7500
ddscb071 scaleb 7 0 -> 7
ddscb072 scaleb -7 0 -> -7
ddscb073 scaleb 75 0 -> 75
ddscb074 scaleb -75 0 -> -75
ddscb075 scaleb 7.50 0 -> 7.50
ddscb076 scaleb -7.50 0 -> -7.50
ddscb077 scaleb 7.500 0 -> 7.500
ddscb078 scaleb -7.500 0 -> -7.500
ddscb081 scaleb 7 1 -> 7E+1
ddscb082 scaleb -7 1 -> -7E+1
ddscb083 scaleb 75 1 -> 7.5E+2
ddscb084 scaleb -75 1 -> -7.5E+2
ddscb085 scaleb 7.50 1 -> 75.0
ddscb086 scaleb -7.50 1 -> -75.0
ddscb087 scaleb 7.500 1 -> 75.00
ddscb088 scaleb -7.500 1 -> -75.00
ddscb091 scaleb 7 2 -> 7E+2
ddscb092 scaleb -7 2 -> -7E+2
ddscb093 scaleb 75 2 -> 7.5E+3
ddscb094 scaleb -75 2 -> -7.5E+3
ddscb095 scaleb 7.50 2 -> 750
ddscb096 scaleb -7.50 2 -> -750
ddscb097 scaleb 7.500 2 -> 750.0
ddscb098 scaleb -7.500 2 -> -750.0
-- zeros
ddscb111 scaleb 0 1 -> 0E+1
ddscb112 scaleb -0 2 -> -0E+2
ddscb113 scaleb 0E+4 3 -> 0E+7
ddscb114 scaleb -0E+4 4 -> -0E+8
ddscb115 scaleb 0.0000 5 -> 0E+1
ddscb116 scaleb -0.0000 6 -> -0E+2
ddscb117 scaleb 0E-141 7 -> 0E-134
ddscb118 scaleb -0E-141 8 -> -0E-133
-- Nmax, Nmin, Ntiny
ddscb132 scaleb 9.999999999999999E+384 +384 -> Infinity Overflow Inexact Rounded
ddscb133 scaleb 9.999999999999999E+384 +10 -> Infinity Overflow Inexact Rounded
ddscb134 scaleb 9.999999999999999E+384 +1 -> Infinity Overflow Inexact Rounded
ddscb135 scaleb 9.999999999999999E+384 0 -> 9.999999999999999E+384
ddscb136 scaleb 9.999999999999999E+384 -1 -> 9.999999999999999E+383
ddscb137 scaleb 1E-383 +1 -> 1E-382
ddscb138 scaleb 1E-383 -0 -> 1E-383
ddscb139 scaleb 1E-383 -1 -> 1E-384 Subnormal
ddscb140 scaleb 1.000000000000000E-383 +1 -> 1.000000000000000E-382
ddscb141 scaleb 1.000000000000000E-383 0 -> 1.000000000000000E-383
ddscb142 scaleb 1.000000000000000E-383 -1 -> 1.00000000000000E-384 Subnormal Rounded
ddscb143 scaleb 1E-398 +1 -> 1E-397 Subnormal
ddscb144 scaleb 1E-398 -0 -> 1E-398 Subnormal
ddscb145 scaleb 1E-398 -1 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddscb150 scaleb -1E-398 +1 -> -1E-397 Subnormal
ddscb151 scaleb -1E-398 -0 -> -1E-398 Subnormal
ddscb152 scaleb -1E-398 -1 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
ddscb153 scaleb -1.000000000000000E-383 +1 -> -1.000000000000000E-382
ddscb154 scaleb -1.000000000000000E-383 +0 -> -1.000000000000000E-383
ddscb155 scaleb -1.000000000000000E-383 -1 -> -1.00000000000000E-384 Subnormal Rounded
ddscb156 scaleb -1E-383 +1 -> -1E-382
ddscb157 scaleb -1E-383 -0 -> -1E-383
ddscb158 scaleb -1E-383 -1 -> -1E-384 Subnormal
ddscb159 scaleb -9.999999999999999E+384 +1 -> -Infinity Overflow Inexact Rounded
ddscb160 scaleb -9.999999999999999E+384 +0 -> -9.999999999999999E+384
ddscb161 scaleb -9.999999999999999E+384 -1 -> -9.999999999999999E+383
ddscb162 scaleb -9E+384 +1 -> -Infinity Overflow Inexact Rounded
ddscb163 scaleb -1E+384 +1 -> -Infinity Overflow Inexact Rounded
-- some Origami
-- (these check that overflow is being done correctly)
ddscb171 scaleb 1000E+365 +1 -> 1.000E+369
ddscb172 scaleb 1000E+366 +1 -> 1.000E+370
ddscb173 scaleb 1000E+367 +1 -> 1.000E+371
ddscb174 scaleb 1000E+368 +1 -> 1.000E+372
ddscb175 scaleb 1000E+369 +1 -> 1.0000E+373 Clamped
ddscb176 scaleb 1000E+370 +1 -> 1.00000E+374 Clamped
ddscb177 scaleb 1000E+371 +1 -> 1.000000E+375 Clamped
ddscb178 scaleb 1000E+372 +1 -> 1.0000000E+376 Clamped
ddscb179 scaleb 1000E+373 +1 -> 1.00000000E+377 Clamped
ddscb180 scaleb 1000E+374 +1 -> 1.000000000E+378 Clamped
ddscb181 scaleb 1000E+375 +1 -> 1.0000000000E+379 Clamped
ddscb182 scaleb 1000E+376 +1 -> 1.00000000000E+380 Clamped
ddscb183 scaleb 1000E+377 +1 -> 1.000000000000E+381 Clamped
ddscb184 scaleb 1000E+378 +1 -> 1.0000000000000E+382 Clamped
ddscb185 scaleb 1000E+379 +1 -> 1.00000000000000E+383 Clamped
ddscb186 scaleb 1000E+380 +1 -> 1.000000000000000E+384 Clamped
ddscb187 scaleb 1000E+381 +1 -> Infinity Overflow Inexact Rounded
-- and a few more subnormal truncations
-- (these check that underflow is being done correctly)
ddscb201 scaleb 1.000000000000000E-383 0 -> 1.000000000000000E-383
ddscb202 scaleb 1.000000000000000E-383 -1 -> 1.00000000000000E-384 Subnormal Rounded
ddscb203 scaleb 1.000000000000000E-383 -2 -> 1.0000000000000E-385 Subnormal Rounded
ddscb204 scaleb 1.000000000000000E-383 -3 -> 1.000000000000E-386 Subnormal Rounded
ddscb205 scaleb 1.000000000000000E-383 -4 -> 1.00000000000E-387 Subnormal Rounded
ddscb206 scaleb 1.000000000000000E-383 -5 -> 1.0000000000E-388 Subnormal Rounded
ddscb207 scaleb 1.000000000000000E-383 -6 -> 1.000000000E-389 Subnormal Rounded
ddscb208 scaleb 1.000000000000000E-383 -7 -> 1.00000000E-390 Subnormal Rounded
ddscb209 scaleb 1.000000000000000E-383 -8 -> 1.0000000E-391 Subnormal Rounded
ddscb210 scaleb 1.000000000000000E-383 -9 -> 1.000000E-392 Subnormal Rounded
ddscb211 scaleb 1.000000000000000E-383 -10 -> 1.00000E-393 Subnormal Rounded
ddscb212 scaleb 1.000000000000000E-383 -11 -> 1.0000E-394 Subnormal Rounded
ddscb213 scaleb 1.000000000000000E-383 -12 -> 1.000E-395 Subnormal Rounded
ddscb214 scaleb 1.000000000000000E-383 -13 -> 1.00E-396 Subnormal Rounded
ddscb215 scaleb 1.000000000000000E-383 -14 -> 1.0E-397 Subnormal Rounded
ddscb216 scaleb 1.000000000000000E-383 -15 -> 1E-398 Subnormal Rounded
ddscb217 scaleb 1.000000000000000E-383 -16 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
ddscb218 scaleb 1.000000000000000E-383 -17 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

View file

@ -0,0 +1,262 @@
------------------------------------------------------------------------
-- ddShift.decTest -- shift decDouble coefficient left or right --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check
ddshi001 shift 0 0 -> 0
ddshi002 shift 0 2 -> 0
ddshi003 shift 1 2 -> 100
ddshi004 shift 1 15 -> 1000000000000000
ddshi005 shift 1 16 -> 0
ddshi006 shift 1 -1 -> 0
ddshi007 shift 0 -2 -> 0
ddshi008 shift 1234567890123456 -1 -> 123456789012345
ddshi009 shift 1234567890123456 -15 -> 1
ddshi010 shift 1234567890123456 -16 -> 0
ddshi011 shift 9934567890123456 -15 -> 9
ddshi012 shift 9934567890123456 -16 -> 0
-- rhs must be an integer
ddshi015 shift 1 1.5 -> NaN Invalid_operation
ddshi016 shift 1 1.0 -> NaN Invalid_operation
ddshi017 shift 1 0.1 -> NaN Invalid_operation
ddshi018 shift 1 0.0 -> NaN Invalid_operation
ddshi019 shift 1 1E+1 -> NaN Invalid_operation
ddshi020 shift 1 1E+99 -> NaN Invalid_operation
ddshi021 shift 1 Inf -> NaN Invalid_operation
ddshi022 shift 1 -Inf -> NaN Invalid_operation
-- and |rhs| <= precision
ddshi025 shift 1 -1000 -> NaN Invalid_operation
ddshi026 shift 1 -17 -> NaN Invalid_operation
ddshi027 shift 1 17 -> NaN Invalid_operation
ddshi028 shift 1 1000 -> NaN Invalid_operation
-- full shifting pattern
ddshi030 shift 1234567890123456 -16 -> 0
ddshi031 shift 1234567890123456 -15 -> 1
ddshi032 shift 1234567890123456 -14 -> 12
ddshi033 shift 1234567890123456 -13 -> 123
ddshi034 shift 1234567890123456 -12 -> 1234
ddshi035 shift 1234567890123456 -11 -> 12345
ddshi036 shift 1234567890123456 -10 -> 123456
ddshi037 shift 1234567890123456 -9 -> 1234567
ddshi038 shift 1234567890123456 -8 -> 12345678
ddshi039 shift 1234567890123456 -7 -> 123456789
ddshi040 shift 1234567890123456 -6 -> 1234567890
ddshi041 shift 1234567890123456 -5 -> 12345678901
ddshi042 shift 1234567890123456 -4 -> 123456789012
ddshi043 shift 1234567890123456 -3 -> 1234567890123
ddshi044 shift 1234567890123456 -2 -> 12345678901234
ddshi045 shift 1234567890123456 -1 -> 123456789012345
ddshi046 shift 1234567890123456 -0 -> 1234567890123456
ddshi047 shift 1234567890123456 +0 -> 1234567890123456
ddshi048 shift 1234567890123456 +1 -> 2345678901234560
ddshi049 shift 1234567890123456 +2 -> 3456789012345600
ddshi050 shift 1234567890123456 +3 -> 4567890123456000
ddshi051 shift 1234567890123456 +4 -> 5678901234560000
ddshi052 shift 1234567890123456 +5 -> 6789012345600000
ddshi053 shift 1234567890123456 +6 -> 7890123456000000
ddshi054 shift 1234567890123456 +7 -> 8901234560000000
ddshi055 shift 1234567890123456 +8 -> 9012345600000000
ddshi056 shift 1234567890123456 +9 -> 123456000000000
ddshi057 shift 1234567890123456 +10 -> 1234560000000000
ddshi058 shift 1234567890123456 +11 -> 2345600000000000
ddshi059 shift 1234567890123456 +12 -> 3456000000000000
ddshi060 shift 1234567890123456 +13 -> 4560000000000000
ddshi061 shift 1234567890123456 +14 -> 5600000000000000
ddshi062 shift 1234567890123456 +15 -> 6000000000000000
ddshi063 shift 1234567890123456 +16 -> 0
-- zeros
ddshi070 shift 0E-10 +9 -> 0E-10
ddshi071 shift 0E-10 -9 -> 0E-10
ddshi072 shift 0.000 +9 -> 0.000
ddshi073 shift 0.000 -9 -> 0.000
ddshi074 shift 0E+10 +9 -> 0E+10
ddshi075 shift 0E+10 -9 -> 0E+10
ddshi076 shift -0E-10 +9 -> -0E-10
ddshi077 shift -0E-10 -9 -> -0E-10
ddshi078 shift -0.000 +9 -> -0.000
ddshi079 shift -0.000 -9 -> -0.000
ddshi080 shift -0E+10 +9 -> -0E+10
ddshi081 shift -0E+10 -9 -> -0E+10
-- Nmax, Nmin, Ntiny
ddshi141 shift 9.999999999999999E+384 -1 -> 9.99999999999999E+383
ddshi142 shift 9.999999999999999E+384 -15 -> 9E+369
ddshi143 shift 9.999999999999999E+384 1 -> 9.999999999999990E+384
ddshi144 shift 9.999999999999999E+384 15 -> 9.000000000000000E+384
ddshi145 shift 1E-383 -1 -> 0E-383
ddshi146 shift 1E-383 -15 -> 0E-383
ddshi147 shift 1E-383 1 -> 1.0E-382
ddshi148 shift 1E-383 15 -> 1.000000000000000E-368
ddshi151 shift 1.000000000000000E-383 -1 -> 1.00000000000000E-384
ddshi152 shift 1.000000000000000E-383 -15 -> 1E-398
ddshi153 shift 1.000000000000000E-383 1 -> 0E-398
ddshi154 shift 1.000000000000000E-383 15 -> 0E-398
ddshi155 shift 9.000000000000000E-383 -1 -> 9.00000000000000E-384
ddshi156 shift 9.000000000000000E-383 -15 -> 9E-398
ddshi157 shift 9.000000000000000E-383 1 -> 0E-398
ddshi158 shift 9.000000000000000E-383 15 -> 0E-398
ddshi160 shift 1E-398 -1 -> 0E-398
ddshi161 shift 1E-398 -15 -> 0E-398
ddshi162 shift 1E-398 1 -> 1.0E-397
ddshi163 shift 1E-398 15 -> 1.000000000000000E-383
-- negatives
ddshi171 shift -9.999999999999999E+384 -1 -> -9.99999999999999E+383
ddshi172 shift -9.999999999999999E+384 -15 -> -9E+369
ddshi173 shift -9.999999999999999E+384 1 -> -9.999999999999990E+384
ddshi174 shift -9.999999999999999E+384 15 -> -9.000000000000000E+384
ddshi175 shift -1E-383 -1 -> -0E-383
ddshi176 shift -1E-383 -15 -> -0E-383
ddshi177 shift -1E-383 1 -> -1.0E-382
ddshi178 shift -1E-383 15 -> -1.000000000000000E-368
ddshi181 shift -1.000000000000000E-383 -1 -> -1.00000000000000E-384
ddshi182 shift -1.000000000000000E-383 -15 -> -1E-398
ddshi183 shift -1.000000000000000E-383 1 -> -0E-398
ddshi184 shift -1.000000000000000E-383 15 -> -0E-398
ddshi185 shift -9.000000000000000E-383 -1 -> -9.00000000000000E-384
ddshi186 shift -9.000000000000000E-383 -15 -> -9E-398
ddshi187 shift -9.000000000000000E-383 1 -> -0E-398
ddshi188 shift -9.000000000000000E-383 15 -> -0E-398
ddshi190 shift -1E-398 -1 -> -0E-398
ddshi191 shift -1E-398 -15 -> -0E-398
ddshi192 shift -1E-398 1 -> -1.0E-397
ddshi193 shift -1E-398 15 -> -1.000000000000000E-383
-- more negatives (of sanities)
ddshi201 shift -0 0 -> -0
ddshi202 shift -0 2 -> -0
ddshi203 shift -1 2 -> -100
ddshi204 shift -1 15 -> -1000000000000000
ddshi205 shift -1 16 -> -0
ddshi206 shift -1 -1 -> -0
ddshi207 shift -0 -2 -> -0
ddshi208 shift -1234567890123456 -1 -> -123456789012345
ddshi209 shift -1234567890123456 -15 -> -1
ddshi210 shift -1234567890123456 -16 -> -0
ddshi211 shift -9934567890123456 -15 -> -9
ddshi212 shift -9934567890123456 -16 -> -0
-- Specials; NaNs are handled as usual
ddshi781 shift -Inf -8 -> -Infinity
ddshi782 shift -Inf -1 -> -Infinity
ddshi783 shift -Inf -0 -> -Infinity
ddshi784 shift -Inf 0 -> -Infinity
ddshi785 shift -Inf 1 -> -Infinity
ddshi786 shift -Inf 8 -> -Infinity
ddshi787 shift -1000 -Inf -> NaN Invalid_operation
ddshi788 shift -Inf -Inf -> NaN Invalid_operation
ddshi789 shift -1 -Inf -> NaN Invalid_operation
ddshi790 shift -0 -Inf -> NaN Invalid_operation
ddshi791 shift 0 -Inf -> NaN Invalid_operation
ddshi792 shift 1 -Inf -> NaN Invalid_operation
ddshi793 shift 1000 -Inf -> NaN Invalid_operation
ddshi794 shift Inf -Inf -> NaN Invalid_operation
ddshi800 shift Inf -Inf -> NaN Invalid_operation
ddshi801 shift Inf -8 -> Infinity
ddshi802 shift Inf -1 -> Infinity
ddshi803 shift Inf -0 -> Infinity
ddshi804 shift Inf 0 -> Infinity
ddshi805 shift Inf 1 -> Infinity
ddshi806 shift Inf 8 -> Infinity
ddshi807 shift Inf Inf -> NaN Invalid_operation
ddshi808 shift -1000 Inf -> NaN Invalid_operation
ddshi809 shift -Inf Inf -> NaN Invalid_operation
ddshi810 shift -1 Inf -> NaN Invalid_operation
ddshi811 shift -0 Inf -> NaN Invalid_operation
ddshi812 shift 0 Inf -> NaN Invalid_operation
ddshi813 shift 1 Inf -> NaN Invalid_operation
ddshi814 shift 1000 Inf -> NaN Invalid_operation
ddshi815 shift Inf Inf -> NaN Invalid_operation
ddshi821 shift NaN -Inf -> NaN
ddshi822 shift NaN -1000 -> NaN
ddshi823 shift NaN -1 -> NaN
ddshi824 shift NaN -0 -> NaN
ddshi825 shift NaN 0 -> NaN
ddshi826 shift NaN 1 -> NaN
ddshi827 shift NaN 1000 -> NaN
ddshi828 shift NaN Inf -> NaN
ddshi829 shift NaN NaN -> NaN
ddshi830 shift -Inf NaN -> NaN
ddshi831 shift -1000 NaN -> NaN
ddshi832 shift -1 NaN -> NaN
ddshi833 shift -0 NaN -> NaN
ddshi834 shift 0 NaN -> NaN
ddshi835 shift 1 NaN -> NaN
ddshi836 shift 1000 NaN -> NaN
ddshi837 shift Inf NaN -> NaN
ddshi841 shift sNaN -Inf -> NaN Invalid_operation
ddshi842 shift sNaN -1000 -> NaN Invalid_operation
ddshi843 shift sNaN -1 -> NaN Invalid_operation
ddshi844 shift sNaN -0 -> NaN Invalid_operation
ddshi845 shift sNaN 0 -> NaN Invalid_operation
ddshi846 shift sNaN 1 -> NaN Invalid_operation
ddshi847 shift sNaN 1000 -> NaN Invalid_operation
ddshi848 shift sNaN NaN -> NaN Invalid_operation
ddshi849 shift sNaN sNaN -> NaN Invalid_operation
ddshi850 shift NaN sNaN -> NaN Invalid_operation
ddshi851 shift -Inf sNaN -> NaN Invalid_operation
ddshi852 shift -1000 sNaN -> NaN Invalid_operation
ddshi853 shift -1 sNaN -> NaN Invalid_operation
ddshi854 shift -0 sNaN -> NaN Invalid_operation
ddshi855 shift 0 sNaN -> NaN Invalid_operation
ddshi856 shift 1 sNaN -> NaN Invalid_operation
ddshi857 shift 1000 sNaN -> NaN Invalid_operation
ddshi858 shift Inf sNaN -> NaN Invalid_operation
ddshi859 shift NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddshi861 shift NaN1 -Inf -> NaN1
ddshi862 shift +NaN2 -1000 -> NaN2
ddshi863 shift NaN3 1000 -> NaN3
ddshi864 shift NaN4 Inf -> NaN4
ddshi865 shift NaN5 +NaN6 -> NaN5
ddshi866 shift -Inf NaN7 -> NaN7
ddshi867 shift -1000 NaN8 -> NaN8
ddshi868 shift 1000 NaN9 -> NaN9
ddshi869 shift Inf +NaN10 -> NaN10
ddshi871 shift sNaN11 -Inf -> NaN11 Invalid_operation
ddshi872 shift sNaN12 -1000 -> NaN12 Invalid_operation
ddshi873 shift sNaN13 1000 -> NaN13 Invalid_operation
ddshi874 shift sNaN14 NaN17 -> NaN14 Invalid_operation
ddshi875 shift sNaN15 sNaN18 -> NaN15 Invalid_operation
ddshi876 shift NaN16 sNaN19 -> NaN19 Invalid_operation
ddshi877 shift -Inf +sNaN20 -> NaN20 Invalid_operation
ddshi878 shift -1000 sNaN21 -> NaN21 Invalid_operation
ddshi879 shift 1000 sNaN22 -> NaN22 Invalid_operation
ddshi880 shift Inf sNaN23 -> NaN23 Invalid_operation
ddshi881 shift +NaN25 +sNaN24 -> NaN24 Invalid_operation
ddshi882 shift -NaN26 NaN28 -> -NaN26
ddshi883 shift -sNaN27 sNaN29 -> -NaN27 Invalid_operation
ddshi884 shift 1000 -NaN30 -> -NaN30
ddshi885 shift 1000 -sNaN31 -> -NaN31 Invalid_operation

View file

@ -0,0 +1,629 @@
------------------------------------------------------------------------
-- ddSubtract.decTest -- decDouble subtraction --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- This set of tests are for decDoubles only; all arguments are
-- representable in a decDouble
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- [first group are 'quick confidence check']
ddsub001 subtract 0 0 -> '0'
ddsub002 subtract 1 1 -> '0'
ddsub003 subtract 1 2 -> '-1'
ddsub004 subtract 2 1 -> '1'
ddsub005 subtract 2 2 -> '0'
ddsub006 subtract 3 2 -> '1'
ddsub007 subtract 2 3 -> '-1'
ddsub011 subtract -0 0 -> '-0'
ddsub012 subtract -1 1 -> '-2'
ddsub013 subtract -1 2 -> '-3'
ddsub014 subtract -2 1 -> '-3'
ddsub015 subtract -2 2 -> '-4'
ddsub016 subtract -3 2 -> '-5'
ddsub017 subtract -2 3 -> '-5'
ddsub021 subtract 0 -0 -> '0'
ddsub022 subtract 1 -1 -> '2'
ddsub023 subtract 1 -2 -> '3'
ddsub024 subtract 2 -1 -> '3'
ddsub025 subtract 2 -2 -> '4'
ddsub026 subtract 3 -2 -> '5'
ddsub027 subtract 2 -3 -> '5'
ddsub030 subtract 11 1 -> 10
ddsub031 subtract 10 1 -> 9
ddsub032 subtract 9 1 -> 8
ddsub033 subtract 1 1 -> 0
ddsub034 subtract 0 1 -> -1
ddsub035 subtract -1 1 -> -2
ddsub036 subtract -9 1 -> -10
ddsub037 subtract -10 1 -> -11
ddsub038 subtract -11 1 -> -12
ddsub040 subtract '5.75' '3.3' -> '2.45'
ddsub041 subtract '5' '-3' -> '8'
ddsub042 subtract '-5' '-3' -> '-2'
ddsub043 subtract '-7' '2.5' -> '-9.5'
ddsub044 subtract '0.7' '0.3' -> '0.4'
ddsub045 subtract '1.3' '0.3' -> '1.0'
ddsub046 subtract '1.25' '1.25' -> '0.00'
ddsub050 subtract '1.23456789' '1.00000000' -> '0.23456789'
ddsub051 subtract '1.23456789' '1.00000089' -> '0.23456700'
ddsub060 subtract '70' '10000e+16' -> '-1.000000000000000E+20' Inexact Rounded
ddsub061 subtract '700' '10000e+16' -> '-1.000000000000000E+20' Inexact Rounded
ddsub062 subtract '7000' '10000e+16' -> '-9.999999999999999E+19' Inexact Rounded
ddsub063 subtract '70000' '10000e+16' -> '-9.999999999999993E+19' Rounded
ddsub064 subtract '700000' '10000e+16' -> '-9.999999999999930E+19' Rounded
-- symmetry:
ddsub065 subtract '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded
ddsub066 subtract '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded
ddsub067 subtract '10000e+16' '7000' -> '9.999999999999999E+19' Inexact Rounded
ddsub068 subtract '10000e+16' '70000' -> '9.999999999999993E+19' Rounded
ddsub069 subtract '10000e+16' '700000' -> '9.999999999999930E+19' Rounded
-- some of the next group are really constructor tests
ddsub090 subtract '00.0' '0.0' -> '0.0'
ddsub091 subtract '00.0' '0.00' -> '0.00'
ddsub092 subtract '0.00' '00.0' -> '0.00'
ddsub093 subtract '00.0' '0.00' -> '0.00'
ddsub094 subtract '0.00' '00.0' -> '0.00'
ddsub095 subtract '3' '.3' -> '2.7'
ddsub096 subtract '3.' '.3' -> '2.7'
ddsub097 subtract '3.0' '.3' -> '2.7'
ddsub098 subtract '3.00' '.3' -> '2.70'
ddsub099 subtract '3' '3' -> '0'
ddsub100 subtract '3' '+3' -> '0'
ddsub101 subtract '3' '-3' -> '6'
ddsub102 subtract '3' '0.3' -> '2.7'
ddsub103 subtract '3.' '0.3' -> '2.7'
ddsub104 subtract '3.0' '0.3' -> '2.7'
ddsub105 subtract '3.00' '0.3' -> '2.70'
ddsub106 subtract '3' '3.0' -> '0.0'
ddsub107 subtract '3' '+3.0' -> '0.0'
ddsub108 subtract '3' '-3.0' -> '6.0'
-- the above all from add; massaged and extended. Now some new ones...
-- [particularly important for comparisons]
-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7
-- with input rounding.
ddsub120 subtract '10.23456784' '10.23456789' -> '-5E-8'
ddsub121 subtract '10.23456785' '10.23456789' -> '-4E-8'
ddsub122 subtract '10.23456786' '10.23456789' -> '-3E-8'
ddsub123 subtract '10.23456787' '10.23456789' -> '-2E-8'
ddsub124 subtract '10.23456788' '10.23456789' -> '-1E-8'
ddsub125 subtract '10.23456789' '10.23456789' -> '0E-8'
ddsub126 subtract '10.23456790' '10.23456789' -> '1E-8'
ddsub127 subtract '10.23456791' '10.23456789' -> '2E-8'
ddsub128 subtract '10.23456792' '10.23456789' -> '3E-8'
ddsub129 subtract '10.23456793' '10.23456789' -> '4E-8'
ddsub130 subtract '10.23456794' '10.23456789' -> '5E-8'
ddsub131 subtract '10.23456781' '10.23456786' -> '-5E-8'
ddsub132 subtract '10.23456782' '10.23456786' -> '-4E-8'
ddsub133 subtract '10.23456783' '10.23456786' -> '-3E-8'
ddsub134 subtract '10.23456784' '10.23456786' -> '-2E-8'
ddsub135 subtract '10.23456785' '10.23456786' -> '-1E-8'
ddsub136 subtract '10.23456786' '10.23456786' -> '0E-8'
ddsub137 subtract '10.23456787' '10.23456786' -> '1E-8'
ddsub138 subtract '10.23456788' '10.23456786' -> '2E-8'
ddsub139 subtract '10.23456789' '10.23456786' -> '3E-8'
ddsub140 subtract '10.23456790' '10.23456786' -> '4E-8'
ddsub141 subtract '10.23456791' '10.23456786' -> '5E-8'
ddsub142 subtract '1' '0.999999999' -> '1E-9'
ddsub143 subtract '0.999999999' '1' -> '-1E-9'
ddsub144 subtract '-10.23456780' '-10.23456786' -> '6E-8'
ddsub145 subtract '-10.23456790' '-10.23456786' -> '-4E-8'
ddsub146 subtract '-10.23456791' '-10.23456786' -> '-5E-8'
-- additional scaled arithmetic tests [0.97 problem]
ddsub160 subtract '0' '.1' -> '-0.1'
ddsub161 subtract '00' '.97983' -> '-0.97983'
ddsub162 subtract '0' '.9' -> '-0.9'
ddsub163 subtract '0' '0.102' -> '-0.102'
ddsub164 subtract '0' '.4' -> '-0.4'
ddsub165 subtract '0' '.307' -> '-0.307'
ddsub166 subtract '0' '.43822' -> '-0.43822'
ddsub167 subtract '0' '.911' -> '-0.911'
ddsub168 subtract '.0' '.02' -> '-0.02'
ddsub169 subtract '00' '.392' -> '-0.392'
ddsub170 subtract '0' '.26' -> '-0.26'
ddsub171 subtract '0' '0.51' -> '-0.51'
ddsub172 subtract '0' '.2234' -> '-0.2234'
ddsub173 subtract '0' '.2' -> '-0.2'
ddsub174 subtract '.0' '.0008' -> '-0.0008'
-- 0. on left
ddsub180 subtract '0.0' '-.1' -> '0.1'
ddsub181 subtract '0.00' '-.97983' -> '0.97983'
ddsub182 subtract '0.0' '-.9' -> '0.9'
ddsub183 subtract '0.0' '-0.102' -> '0.102'
ddsub184 subtract '0.0' '-.4' -> '0.4'
ddsub185 subtract '0.0' '-.307' -> '0.307'
ddsub186 subtract '0.0' '-.43822' -> '0.43822'
ddsub187 subtract '0.0' '-.911' -> '0.911'
ddsub188 subtract '0.0' '-.02' -> '0.02'
ddsub189 subtract '0.00' '-.392' -> '0.392'
ddsub190 subtract '0.0' '-.26' -> '0.26'
ddsub191 subtract '0.0' '-0.51' -> '0.51'
ddsub192 subtract '0.0' '-.2234' -> '0.2234'
ddsub193 subtract '0.0' '-.2' -> '0.2'
ddsub194 subtract '0.0' '-.0008' -> '0.0008'
-- negatives of same
ddsub200 subtract '0' '-.1' -> '0.1'
ddsub201 subtract '00' '-.97983' -> '0.97983'
ddsub202 subtract '0' '-.9' -> '0.9'
ddsub203 subtract '0' '-0.102' -> '0.102'
ddsub204 subtract '0' '-.4' -> '0.4'
ddsub205 subtract '0' '-.307' -> '0.307'
ddsub206 subtract '0' '-.43822' -> '0.43822'
ddsub207 subtract '0' '-.911' -> '0.911'
ddsub208 subtract '.0' '-.02' -> '0.02'
ddsub209 subtract '00' '-.392' -> '0.392'
ddsub210 subtract '0' '-.26' -> '0.26'
ddsub211 subtract '0' '-0.51' -> '0.51'
ddsub212 subtract '0' '-.2234' -> '0.2234'
ddsub213 subtract '0' '-.2' -> '0.2'
ddsub214 subtract '.0' '-.0008' -> '0.0008'
-- more fixed, LHS swaps [really the same as testcases under add]
ddsub220 subtract '-56267E-12' 0 -> '-5.6267E-8'
ddsub221 subtract '-56267E-11' 0 -> '-5.6267E-7'
ddsub222 subtract '-56267E-10' 0 -> '-0.0000056267'
ddsub223 subtract '-56267E-9' 0 -> '-0.000056267'
ddsub224 subtract '-56267E-8' 0 -> '-0.00056267'
ddsub225 subtract '-56267E-7' 0 -> '-0.0056267'
ddsub226 subtract '-56267E-6' 0 -> '-0.056267'
ddsub227 subtract '-56267E-5' 0 -> '-0.56267'
ddsub228 subtract '-56267E-2' 0 -> '-562.67'
ddsub229 subtract '-56267E-1' 0 -> '-5626.7'
ddsub230 subtract '-56267E-0' 0 -> '-56267'
-- symmetry ...
ddsub240 subtract 0 '-56267E-12' -> '5.6267E-8'
ddsub241 subtract 0 '-56267E-11' -> '5.6267E-7'
ddsub242 subtract 0 '-56267E-10' -> '0.0000056267'
ddsub243 subtract 0 '-56267E-9' -> '0.000056267'
ddsub244 subtract 0 '-56267E-8' -> '0.00056267'
ddsub245 subtract 0 '-56267E-7' -> '0.0056267'
ddsub246 subtract 0 '-56267E-6' -> '0.056267'
ddsub247 subtract 0 '-56267E-5' -> '0.56267'
ddsub248 subtract 0 '-56267E-2' -> '562.67'
ddsub249 subtract 0 '-56267E-1' -> '5626.7'
ddsub250 subtract 0 '-56267E-0' -> '56267'
-- now some more from the 'new' add
ddsub301 subtract '1.23456789' '1.00000000' -> '0.23456789'
ddsub302 subtract '1.23456789' '1.00000011' -> '0.23456778'
-- some carrying effects
ddsub321 subtract '0.9998' '0.0000' -> '0.9998'
ddsub322 subtract '0.9998' '0.0001' -> '0.9997'
ddsub323 subtract '0.9998' '0.0002' -> '0.9996'
ddsub324 subtract '0.9998' '0.0003' -> '0.9995'
ddsub325 subtract '0.9998' '-0.0000' -> '0.9998'
ddsub326 subtract '0.9998' '-0.0001' -> '0.9999'
ddsub327 subtract '0.9998' '-0.0002' -> '1.0000'
ddsub328 subtract '0.9998' '-0.0003' -> '1.0001'
-- internal boundaries
ddsub346 subtract '10000e+9' '7' -> '9999999999993'
ddsub347 subtract '10000e+9' '70' -> '9999999999930'
ddsub348 subtract '10000e+9' '700' -> '9999999999300'
ddsub349 subtract '10000e+9' '7000' -> '9999999993000'
ddsub350 subtract '10000e+9' '70000' -> '9999999930000'
ddsub351 subtract '10000e+9' '700000' -> '9999999300000'
ddsub352 subtract '7' '10000e+9' -> '-9999999999993'
ddsub353 subtract '70' '10000e+9' -> '-9999999999930'
ddsub354 subtract '700' '10000e+9' -> '-9999999999300'
ddsub355 subtract '7000' '10000e+9' -> '-9999999993000'
ddsub356 subtract '70000' '10000e+9' -> '-9999999930000'
ddsub357 subtract '700000' '10000e+9' -> '-9999999300000'
-- zero preservation
ddsub361 subtract 1 '0.0001' -> '0.9999'
ddsub362 subtract 1 '0.00001' -> '0.99999'
ddsub363 subtract 1 '0.000001' -> '0.999999'
ddsub364 subtract 1 '0.0000000000000001' -> '0.9999999999999999'
ddsub365 subtract 1 '0.00000000000000001' -> '1.000000000000000' Inexact Rounded
ddsub366 subtract 1 '0.000000000000000001' -> '1.000000000000000' Inexact Rounded
-- some funny zeros [in case of bad signum]
ddsub370 subtract 1 0 -> 1
ddsub371 subtract 1 0. -> 1
ddsub372 subtract 1 .0 -> 1.0
ddsub373 subtract 1 0.0 -> 1.0
ddsub374 subtract 0 1 -> -1
ddsub375 subtract 0. 1 -> -1
ddsub376 subtract .0 1 -> -1.0
ddsub377 subtract 0.0 1 -> -1.0
-- leading 0 digit before round
ddsub910 subtract -103519362 -51897955.3 -> -51621406.7
ddsub911 subtract 159579.444 89827.5229 -> 69751.9211
ddsub920 subtract 333.0000000123456 33.00000001234566 -> 299.9999999999999 Inexact Rounded
ddsub921 subtract 333.0000000123456 33.00000001234565 -> 300.0000000000000 Inexact Rounded
ddsub922 subtract 133.0000000123456 33.00000001234565 -> 99.99999999999995
ddsub923 subtract 133.0000000123456 33.00000001234564 -> 99.99999999999996
ddsub924 subtract 133.0000000123456 33.00000001234540 -> 100.0000000000002 Rounded
ddsub925 subtract 133.0000000123456 43.00000001234560 -> 90.00000000000000
ddsub926 subtract 133.0000000123456 43.00000001234561 -> 89.99999999999999
ddsub927 subtract 133.0000000123456 43.00000001234566 -> 89.99999999999994
ddsub928 subtract 101.0000000123456 91.00000001234566 -> 9.99999999999994
ddsub929 subtract 101.0000000123456 99.00000001234566 -> 1.99999999999994
-- more LHS swaps [were fixed]
ddsub390 subtract '-56267E-10' 0 -> '-0.0000056267'
ddsub391 subtract '-56267E-6' 0 -> '-0.056267'
ddsub392 subtract '-56267E-5' 0 -> '-0.56267'
ddsub393 subtract '-56267E-4' 0 -> '-5.6267'
ddsub394 subtract '-56267E-3' 0 -> '-56.267'
ddsub395 subtract '-56267E-2' 0 -> '-562.67'
ddsub396 subtract '-56267E-1' 0 -> '-5626.7'
ddsub397 subtract '-56267E-0' 0 -> '-56267'
ddsub398 subtract '-5E-10' 0 -> '-5E-10'
ddsub399 subtract '-5E-7' 0 -> '-5E-7'
ddsub400 subtract '-5E-6' 0 -> '-0.000005'
ddsub401 subtract '-5E-5' 0 -> '-0.00005'
ddsub402 subtract '-5E-4' 0 -> '-0.0005'
ddsub403 subtract '-5E-1' 0 -> '-0.5'
ddsub404 subtract '-5E0' 0 -> '-5'
ddsub405 subtract '-5E1' 0 -> '-50'
ddsub406 subtract '-5E5' 0 -> '-500000'
ddsub407 subtract '-5E15' 0 -> '-5000000000000000'
ddsub408 subtract '-5E16' 0 -> '-5.000000000000000E+16' Rounded
ddsub409 subtract '-5E17' 0 -> '-5.000000000000000E+17' Rounded
ddsub410 subtract '-5E18' 0 -> '-5.000000000000000E+18' Rounded
ddsub411 subtract '-5E100' 0 -> '-5.000000000000000E+100' Rounded
-- more RHS swaps [were fixed]
ddsub420 subtract 0 '-56267E-10' -> '0.0000056267'
ddsub421 subtract 0 '-56267E-6' -> '0.056267'
ddsub422 subtract 0 '-56267E-5' -> '0.56267'
ddsub423 subtract 0 '-56267E-4' -> '5.6267'
ddsub424 subtract 0 '-56267E-3' -> '56.267'
ddsub425 subtract 0 '-56267E-2' -> '562.67'
ddsub426 subtract 0 '-56267E-1' -> '5626.7'
ddsub427 subtract 0 '-56267E-0' -> '56267'
ddsub428 subtract 0 '-5E-10' -> '5E-10'
ddsub429 subtract 0 '-5E-7' -> '5E-7'
ddsub430 subtract 0 '-5E-6' -> '0.000005'
ddsub431 subtract 0 '-5E-5' -> '0.00005'
ddsub432 subtract 0 '-5E-4' -> '0.0005'
ddsub433 subtract 0 '-5E-1' -> '0.5'
ddsub434 subtract 0 '-5E0' -> '5'
ddsub435 subtract 0 '-5E1' -> '50'
ddsub436 subtract 0 '-5E5' -> '500000'
ddsub437 subtract 0 '-5E15' -> '5000000000000000'
ddsub438 subtract 0 '-5E16' -> '5.000000000000000E+16' Rounded
ddsub439 subtract 0 '-5E17' -> '5.000000000000000E+17' Rounded
ddsub440 subtract 0 '-5E18' -> '5.000000000000000E+18' Rounded
ddsub441 subtract 0 '-5E100' -> '5.000000000000000E+100' Rounded
-- try borderline precision, with carries, etc.
ddsub461 subtract '1E+16' '1' -> '9999999999999999'
ddsub462 subtract '1E+12' '-1.111' -> '1000000000001.111'
ddsub463 subtract '1.111' '-1E+12' -> '1000000000001.111'
ddsub464 subtract '-1' '-1E+16' -> '9999999999999999'
ddsub465 subtract '7E+15' '1' -> '6999999999999999'
ddsub466 subtract '7E+12' '-1.111' -> '7000000000001.111'
ddsub467 subtract '1.111' '-7E+12' -> '7000000000001.111'
ddsub468 subtract '-1' '-7E+15' -> '6999999999999999'
-- 1234567890123456 1234567890123456 1 23456789012345
ddsub470 subtract '0.4444444444444444' '-0.5555555555555563' -> '1.000000000000001' Inexact Rounded
ddsub471 subtract '0.4444444444444444' '-0.5555555555555562' -> '1.000000000000001' Inexact Rounded
ddsub472 subtract '0.4444444444444444' '-0.5555555555555561' -> '1.000000000000000' Inexact Rounded
ddsub473 subtract '0.4444444444444444' '-0.5555555555555560' -> '1.000000000000000' Inexact Rounded
ddsub474 subtract '0.4444444444444444' '-0.5555555555555559' -> '1.000000000000000' Inexact Rounded
ddsub475 subtract '0.4444444444444444' '-0.5555555555555558' -> '1.000000000000000' Inexact Rounded
ddsub476 subtract '0.4444444444444444' '-0.5555555555555557' -> '1.000000000000000' Inexact Rounded
ddsub477 subtract '0.4444444444444444' '-0.5555555555555556' -> '1.000000000000000' Rounded
ddsub478 subtract '0.4444444444444444' '-0.5555555555555555' -> '0.9999999999999999'
ddsub479 subtract '0.4444444444444444' '-0.5555555555555554' -> '0.9999999999999998'
ddsub480 subtract '0.4444444444444444' '-0.5555555555555553' -> '0.9999999999999997'
ddsub481 subtract '0.4444444444444444' '-0.5555555555555552' -> '0.9999999999999996'
ddsub482 subtract '0.4444444444444444' '-0.5555555555555551' -> '0.9999999999999995'
ddsub483 subtract '0.4444444444444444' '-0.5555555555555550' -> '0.9999999999999994'
-- and some more, including residue effects and different roundings
rounding: half_up
ddsub500 subtract '1231234567456789' 0 -> '1231234567456789'
ddsub501 subtract '1231234567456789' 0.000000001 -> '1231234567456789' Inexact Rounded
ddsub502 subtract '1231234567456789' 0.000001 -> '1231234567456789' Inexact Rounded
ddsub503 subtract '1231234567456789' 0.1 -> '1231234567456789' Inexact Rounded
ddsub504 subtract '1231234567456789' 0.4 -> '1231234567456789' Inexact Rounded
ddsub505 subtract '1231234567456789' 0.49 -> '1231234567456789' Inexact Rounded
ddsub506 subtract '1231234567456789' 0.499999 -> '1231234567456789' Inexact Rounded
ddsub507 subtract '1231234567456789' 0.499999999 -> '1231234567456789' Inexact Rounded
ddsub508 subtract '1231234567456789' 0.5 -> '1231234567456789' Inexact Rounded
ddsub509 subtract '1231234567456789' 0.500000001 -> '1231234567456788' Inexact Rounded
ddsub510 subtract '1231234567456789' 0.500001 -> '1231234567456788' Inexact Rounded
ddsub511 subtract '1231234567456789' 0.51 -> '1231234567456788' Inexact Rounded
ddsub512 subtract '1231234567456789' 0.6 -> '1231234567456788' Inexact Rounded
ddsub513 subtract '1231234567456789' 0.9 -> '1231234567456788' Inexact Rounded
ddsub514 subtract '1231234567456789' 0.99999 -> '1231234567456788' Inexact Rounded
ddsub515 subtract '1231234567456789' 0.999999999 -> '1231234567456788' Inexact Rounded
ddsub516 subtract '1231234567456789' 1 -> '1231234567456788'
ddsub517 subtract '1231234567456789' 1.000000001 -> '1231234567456788' Inexact Rounded
ddsub518 subtract '1231234567456789' 1.00001 -> '1231234567456788' Inexact Rounded
ddsub519 subtract '1231234567456789' 1.1 -> '1231234567456788' Inexact Rounded
rounding: half_even
ddsub520 subtract '1231234567456789' 0 -> '1231234567456789'
ddsub521 subtract '1231234567456789' 0.000000001 -> '1231234567456789' Inexact Rounded
ddsub522 subtract '1231234567456789' 0.000001 -> '1231234567456789' Inexact Rounded
ddsub523 subtract '1231234567456789' 0.1 -> '1231234567456789' Inexact Rounded
ddsub524 subtract '1231234567456789' 0.4 -> '1231234567456789' Inexact Rounded
ddsub525 subtract '1231234567456789' 0.49 -> '1231234567456789' Inexact Rounded
ddsub526 subtract '1231234567456789' 0.499999 -> '1231234567456789' Inexact Rounded
ddsub527 subtract '1231234567456789' 0.499999999 -> '1231234567456789' Inexact Rounded
ddsub528 subtract '1231234567456789' 0.5 -> '1231234567456788' Inexact Rounded
ddsub529 subtract '1231234567456789' 0.500000001 -> '1231234567456788' Inexact Rounded
ddsub530 subtract '1231234567456789' 0.500001 -> '1231234567456788' Inexact Rounded
ddsub531 subtract '1231234567456789' 0.51 -> '1231234567456788' Inexact Rounded
ddsub532 subtract '1231234567456789' 0.6 -> '1231234567456788' Inexact Rounded
ddsub533 subtract '1231234567456789' 0.9 -> '1231234567456788' Inexact Rounded
ddsub534 subtract '1231234567456789' 0.99999 -> '1231234567456788' Inexact Rounded
ddsub535 subtract '1231234567456789' 0.999999999 -> '1231234567456788' Inexact Rounded
ddsub536 subtract '1231234567456789' 1 -> '1231234567456788'
ddsub537 subtract '1231234567456789' 1.00000001 -> '1231234567456788' Inexact Rounded
ddsub538 subtract '1231234567456789' 1.00001 -> '1231234567456788' Inexact Rounded
ddsub539 subtract '1231234567456789' 1.1 -> '1231234567456788' Inexact Rounded
-- critical few with even bottom digit...
ddsub540 subtract '1231234567456788' 0.499999999 -> '1231234567456788' Inexact Rounded
ddsub541 subtract '1231234567456788' 0.5 -> '1231234567456788' Inexact Rounded
ddsub542 subtract '1231234567456788' 0.500000001 -> '1231234567456787' Inexact Rounded
rounding: down
ddsub550 subtract '1231234567456789' 0 -> '1231234567456789'
ddsub551 subtract '1231234567456789' 0.000000001 -> '1231234567456788' Inexact Rounded
ddsub552 subtract '1231234567456789' 0.000001 -> '1231234567456788' Inexact Rounded
ddsub553 subtract '1231234567456789' 0.1 -> '1231234567456788' Inexact Rounded
ddsub554 subtract '1231234567456789' 0.4 -> '1231234567456788' Inexact Rounded
ddsub555 subtract '1231234567456789' 0.49 -> '1231234567456788' Inexact Rounded
ddsub556 subtract '1231234567456789' 0.499999 -> '1231234567456788' Inexact Rounded
ddsub557 subtract '1231234567456789' 0.499999999 -> '1231234567456788' Inexact Rounded
ddsub558 subtract '1231234567456789' 0.5 -> '1231234567456788' Inexact Rounded
ddsub559 subtract '1231234567456789' 0.500000001 -> '1231234567456788' Inexact Rounded
ddsub560 subtract '1231234567456789' 0.500001 -> '1231234567456788' Inexact Rounded
ddsub561 subtract '1231234567456789' 0.51 -> '1231234567456788' Inexact Rounded
ddsub562 subtract '1231234567456789' 0.6 -> '1231234567456788' Inexact Rounded
ddsub563 subtract '1231234567456789' 0.9 -> '1231234567456788' Inexact Rounded
ddsub564 subtract '1231234567456789' 0.99999 -> '1231234567456788' Inexact Rounded
ddsub565 subtract '1231234567456789' 0.999999999 -> '1231234567456788' Inexact Rounded
ddsub566 subtract '1231234567456789' 1 -> '1231234567456788'
ddsub567 subtract '1231234567456789' 1.00000001 -> '1231234567456787' Inexact Rounded
ddsub568 subtract '1231234567456789' 1.00001 -> '1231234567456787' Inexact Rounded
ddsub569 subtract '1231234567456789' 1.1 -> '1231234567456787' Inexact Rounded
-- symmetry...
rounding: half_up
ddsub600 subtract 0 '1231234567456789' -> '-1231234567456789'
ddsub601 subtract 0.000000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub602 subtract 0.000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub603 subtract 0.1 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub604 subtract 0.4 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub605 subtract 0.49 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub606 subtract 0.499999 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub607 subtract 0.499999999 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub608 subtract 0.5 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub609 subtract 0.500000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub610 subtract 0.500001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub611 subtract 0.51 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub612 subtract 0.6 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub613 subtract 0.9 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub614 subtract 0.99999 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub615 subtract 0.999999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub616 subtract 1 '1231234567456789' -> '-1231234567456788'
ddsub617 subtract 1.000000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub618 subtract 1.00001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub619 subtract 1.1 '1231234567456789' -> '-1231234567456788' Inexact Rounded
rounding: half_even
ddsub620 subtract 0 '1231234567456789' -> '-1231234567456789'
ddsub621 subtract 0.000000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub622 subtract 0.000001 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub623 subtract 0.1 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub624 subtract 0.4 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub625 subtract 0.49 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub626 subtract 0.499999 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub627 subtract 0.499999999 '1231234567456789' -> '-1231234567456789' Inexact Rounded
ddsub628 subtract 0.5 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub629 subtract 0.500000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub630 subtract 0.500001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub631 subtract 0.51 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub632 subtract 0.6 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub633 subtract 0.9 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub634 subtract 0.99999 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub635 subtract 0.999999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub636 subtract 1 '1231234567456789' -> '-1231234567456788'
ddsub637 subtract 1.00000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub638 subtract 1.00001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub639 subtract 1.1 '1231234567456789' -> '-1231234567456788' Inexact Rounded
-- critical few with even bottom digit...
ddsub640 subtract 0.499999999 '1231234567456788' -> '-1231234567456788' Inexact Rounded
ddsub641 subtract 0.5 '1231234567456788' -> '-1231234567456788' Inexact Rounded
ddsub642 subtract 0.500000001 '1231234567456788' -> '-1231234567456787' Inexact Rounded
rounding: down
ddsub650 subtract 0 '1231234567456789' -> '-1231234567456789'
ddsub651 subtract 0.000000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub652 subtract 0.000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub653 subtract 0.1 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub654 subtract 0.4 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub655 subtract 0.49 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub656 subtract 0.499999 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub657 subtract 0.499999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub658 subtract 0.5 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub659 subtract 0.500000001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub660 subtract 0.500001 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub661 subtract 0.51 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub662 subtract 0.6 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub663 subtract 0.9 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub664 subtract 0.99999 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub665 subtract 0.999999999 '1231234567456789' -> '-1231234567456788' Inexact Rounded
ddsub666 subtract 1 '1231234567456789' -> '-1231234567456788'
ddsub667 subtract 1.00000001 '1231234567456789' -> '-1231234567456787' Inexact Rounded
ddsub668 subtract 1.00001 '1231234567456789' -> '-1231234567456787' Inexact Rounded
ddsub669 subtract 1.1 '1231234567456789' -> '-1231234567456787' Inexact Rounded
-- lots of leading zeros in intermediate result, and showing effects of
-- input rounding would have affected the following
rounding: half_up
ddsub670 subtract '1234567456789' '1234567456788.1' -> 0.9
ddsub671 subtract '1234567456789' '1234567456788.9' -> 0.1
ddsub672 subtract '1234567456789' '1234567456789.1' -> -0.1
ddsub673 subtract '1234567456789' '1234567456789.5' -> -0.5
ddsub674 subtract '1234567456789' '1234567456789.9' -> -0.9
rounding: half_even
ddsub680 subtract '1234567456789' '1234567456788.1' -> 0.9
ddsub681 subtract '1234567456789' '1234567456788.9' -> 0.1
ddsub682 subtract '1234567456789' '1234567456789.1' -> -0.1
ddsub683 subtract '1234567456789' '1234567456789.5' -> -0.5
ddsub684 subtract '1234567456789' '1234567456789.9' -> -0.9
ddsub685 subtract '1234567456788' '1234567456787.1' -> 0.9
ddsub686 subtract '1234567456788' '1234567456787.9' -> 0.1
ddsub687 subtract '1234567456788' '1234567456788.1' -> -0.1
ddsub688 subtract '1234567456788' '1234567456788.5' -> -0.5
ddsub689 subtract '1234567456788' '1234567456788.9' -> -0.9
rounding: down
ddsub690 subtract '1234567456789' '1234567456788.1' -> 0.9
ddsub691 subtract '1234567456789' '1234567456788.9' -> 0.1
ddsub692 subtract '1234567456789' '1234567456789.1' -> -0.1
ddsub693 subtract '1234567456789' '1234567456789.5' -> -0.5
ddsub694 subtract '1234567456789' '1234567456789.9' -> -0.9
-- Specials
ddsub780 subtract -Inf Inf -> -Infinity
ddsub781 subtract -Inf 1000 -> -Infinity
ddsub782 subtract -Inf 1 -> -Infinity
ddsub783 subtract -Inf -0 -> -Infinity
ddsub784 subtract -Inf -1 -> -Infinity
ddsub785 subtract -Inf -1000 -> -Infinity
ddsub787 subtract -1000 Inf -> -Infinity
ddsub788 subtract -Inf Inf -> -Infinity
ddsub789 subtract -1 Inf -> -Infinity
ddsub790 subtract 0 Inf -> -Infinity
ddsub791 subtract 1 Inf -> -Infinity
ddsub792 subtract 1000 Inf -> -Infinity
ddsub800 subtract Inf Inf -> NaN Invalid_operation
ddsub801 subtract Inf 1000 -> Infinity
ddsub802 subtract Inf 1 -> Infinity
ddsub803 subtract Inf 0 -> Infinity
ddsub804 subtract Inf -0 -> Infinity
ddsub805 subtract Inf -1 -> Infinity
ddsub806 subtract Inf -1000 -> Infinity
ddsub807 subtract Inf -Inf -> Infinity
ddsub808 subtract -1000 -Inf -> Infinity
ddsub809 subtract -Inf -Inf -> NaN Invalid_operation
ddsub810 subtract -1 -Inf -> Infinity
ddsub811 subtract -0 -Inf -> Infinity
ddsub812 subtract 0 -Inf -> Infinity
ddsub813 subtract 1 -Inf -> Infinity
ddsub814 subtract 1000 -Inf -> Infinity
ddsub815 subtract Inf -Inf -> Infinity
ddsub821 subtract NaN Inf -> NaN
ddsub822 subtract -NaN 1000 -> -NaN
ddsub823 subtract NaN 1 -> NaN
ddsub824 subtract NaN 0 -> NaN
ddsub825 subtract NaN -0 -> NaN
ddsub826 subtract NaN -1 -> NaN
ddsub827 subtract NaN -1000 -> NaN
ddsub828 subtract NaN -Inf -> NaN
ddsub829 subtract -NaN NaN -> -NaN
ddsub830 subtract -Inf NaN -> NaN
ddsub831 subtract -1000 NaN -> NaN
ddsub832 subtract -1 NaN -> NaN
ddsub833 subtract -0 NaN -> NaN
ddsub834 subtract 0 NaN -> NaN
ddsub835 subtract 1 NaN -> NaN
ddsub836 subtract 1000 -NaN -> -NaN
ddsub837 subtract Inf NaN -> NaN
ddsub841 subtract sNaN Inf -> NaN Invalid_operation
ddsub842 subtract -sNaN 1000 -> -NaN Invalid_operation
ddsub843 subtract sNaN 1 -> NaN Invalid_operation
ddsub844 subtract sNaN 0 -> NaN Invalid_operation
ddsub845 subtract sNaN -0 -> NaN Invalid_operation
ddsub846 subtract sNaN -1 -> NaN Invalid_operation
ddsub847 subtract sNaN -1000 -> NaN Invalid_operation
ddsub848 subtract sNaN NaN -> NaN Invalid_operation
ddsub849 subtract sNaN sNaN -> NaN Invalid_operation
ddsub850 subtract NaN sNaN -> NaN Invalid_operation
ddsub851 subtract -Inf -sNaN -> -NaN Invalid_operation
ddsub852 subtract -1000 sNaN -> NaN Invalid_operation
ddsub853 subtract -1 sNaN -> NaN Invalid_operation
ddsub854 subtract -0 sNaN -> NaN Invalid_operation
ddsub855 subtract 0 sNaN -> NaN Invalid_operation
ddsub856 subtract 1 sNaN -> NaN Invalid_operation
ddsub857 subtract 1000 sNaN -> NaN Invalid_operation
ddsub858 subtract Inf sNaN -> NaN Invalid_operation
ddsub859 subtract NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddsub861 subtract NaN01 -Inf -> NaN1
ddsub862 subtract -NaN02 -1000 -> -NaN2
ddsub863 subtract NaN03 1000 -> NaN3
ddsub864 subtract NaN04 Inf -> NaN4
ddsub865 subtract NaN05 NaN61 -> NaN5
ddsub866 subtract -Inf -NaN71 -> -NaN71
ddsub867 subtract -1000 NaN81 -> NaN81
ddsub868 subtract 1000 NaN91 -> NaN91
ddsub869 subtract Inf NaN101 -> NaN101
ddsub871 subtract sNaN011 -Inf -> NaN11 Invalid_operation
ddsub872 subtract sNaN012 -1000 -> NaN12 Invalid_operation
ddsub873 subtract -sNaN013 1000 -> -NaN13 Invalid_operation
ddsub874 subtract sNaN014 NaN171 -> NaN14 Invalid_operation
ddsub875 subtract sNaN015 sNaN181 -> NaN15 Invalid_operation
ddsub876 subtract NaN016 sNaN191 -> NaN191 Invalid_operation
ddsub877 subtract -Inf sNaN201 -> NaN201 Invalid_operation
ddsub878 subtract -1000 sNaN211 -> NaN211 Invalid_operation
ddsub879 subtract 1000 -sNaN221 -> -NaN221 Invalid_operation
ddsub880 subtract Inf sNaN231 -> NaN231 Invalid_operation
ddsub881 subtract NaN025 sNaN241 -> NaN241 Invalid_operation
-- edge case spills
ddsub901 subtract 2.E-3 1.002 -> -1.000
ddsub902 subtract 2.0E-3 1.002 -> -1.0000
ddsub903 subtract 2.00E-3 1.0020 -> -1.00000
ddsub904 subtract 2.000E-3 1.00200 -> -1.000000
ddsub905 subtract 2.0000E-3 1.002000 -> -1.0000000
ddsub906 subtract 2.00000E-3 1.0020000 -> -1.00000000
ddsub907 subtract 2.000000E-3 1.00200000 -> -1.000000000
ddsub908 subtract 2.0000000E-3 1.002000000 -> -1.0000000000
-- subnormals and overflows covered under Add
-- Null tests
ddsub9990 subtract 10 # -> NaN Invalid_operation
ddsub9991 subtract # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,257 @@
------------------------------------------------------------------------
-- ddToIntegral.decTest -- round Double to integral value --
-- Copyright (c) IBM Corporation, 2001, 2008. 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.59
-- This set of tests tests the extended specification 'round-to-integral
-- value-exact' operations (from IEEE 854, later modified in 754r).
-- All non-zero results are defined as being those from either copy or
-- quantize, so those are assumed to have been tested extensively
-- elsewhere; the tests here are for integrity, rounding mode, etc.
-- Also, it is assumed the test harness will use these tests for both
-- ToIntegralExact (which does set Inexact) and the fixed-name
-- functions (which do not set Inexact).
-- Note that decNumber implements an earlier definition of toIntegral
-- which never sets Inexact; the decTest operator for that is called
-- 'tointegral' instead of 'tointegralx'.
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
ddintx001 tointegralx 0 -> 0
ddintx002 tointegralx 0.0 -> 0
ddintx003 tointegralx 0.1 -> 0 Inexact Rounded
ddintx004 tointegralx 0.2 -> 0 Inexact Rounded
ddintx005 tointegralx 0.3 -> 0 Inexact Rounded
ddintx006 tointegralx 0.4 -> 0 Inexact Rounded
ddintx007 tointegralx 0.5 -> 0 Inexact Rounded
ddintx008 tointegralx 0.6 -> 1 Inexact Rounded
ddintx009 tointegralx 0.7 -> 1 Inexact Rounded
ddintx010 tointegralx 0.8 -> 1 Inexact Rounded
ddintx011 tointegralx 0.9 -> 1 Inexact Rounded
ddintx012 tointegralx 1 -> 1
ddintx013 tointegralx 1.0 -> 1 Rounded
ddintx014 tointegralx 1.1 -> 1 Inexact Rounded
ddintx015 tointegralx 1.2 -> 1 Inexact Rounded
ddintx016 tointegralx 1.3 -> 1 Inexact Rounded
ddintx017 tointegralx 1.4 -> 1 Inexact Rounded
ddintx018 tointegralx 1.5 -> 2 Inexact Rounded
ddintx019 tointegralx 1.6 -> 2 Inexact Rounded
ddintx020 tointegralx 1.7 -> 2 Inexact Rounded
ddintx021 tointegralx 1.8 -> 2 Inexact Rounded
ddintx022 tointegralx 1.9 -> 2 Inexact Rounded
-- negatives
ddintx031 tointegralx -0 -> -0
ddintx032 tointegralx -0.0 -> -0
ddintx033 tointegralx -0.1 -> -0 Inexact Rounded
ddintx034 tointegralx -0.2 -> -0 Inexact Rounded
ddintx035 tointegralx -0.3 -> -0 Inexact Rounded
ddintx036 tointegralx -0.4 -> -0 Inexact Rounded
ddintx037 tointegralx -0.5 -> -0 Inexact Rounded
ddintx038 tointegralx -0.6 -> -1 Inexact Rounded
ddintx039 tointegralx -0.7 -> -1 Inexact Rounded
ddintx040 tointegralx -0.8 -> -1 Inexact Rounded
ddintx041 tointegralx -0.9 -> -1 Inexact Rounded
ddintx042 tointegralx -1 -> -1
ddintx043 tointegralx -1.0 -> -1 Rounded
ddintx044 tointegralx -1.1 -> -1 Inexact Rounded
ddintx045 tointegralx -1.2 -> -1 Inexact Rounded
ddintx046 tointegralx -1.3 -> -1 Inexact Rounded
ddintx047 tointegralx -1.4 -> -1 Inexact Rounded
ddintx048 tointegralx -1.5 -> -2 Inexact Rounded
ddintx049 tointegralx -1.6 -> -2 Inexact Rounded
ddintx050 tointegralx -1.7 -> -2 Inexact Rounded
ddintx051 tointegralx -1.8 -> -2 Inexact Rounded
ddintx052 tointegralx -1.9 -> -2 Inexact Rounded
-- next two would be NaN using quantize(x, 0)
ddintx053 tointegralx 10E+60 -> 1.0E+61
ddintx054 tointegralx -10E+60 -> -1.0E+61
-- numbers around precision
ddintx060 tointegralx '56267E-17' -> '0' Inexact Rounded
ddintx061 tointegralx '56267E-5' -> '1' Inexact Rounded
ddintx062 tointegralx '56267E-2' -> '563' Inexact Rounded
ddintx063 tointegralx '56267E-1' -> '5627' Inexact Rounded
ddintx065 tointegralx '56267E-0' -> '56267'
ddintx066 tointegralx '56267E+0' -> '56267'
ddintx067 tointegralx '56267E+1' -> '5.6267E+5'
ddintx068 tointegralx '56267E+9' -> '5.6267E+13'
ddintx069 tointegralx '56267E+10' -> '5.6267E+14'
ddintx070 tointegralx '56267E+11' -> '5.6267E+15'
ddintx071 tointegralx '56267E+12' -> '5.6267E+16'
ddintx072 tointegralx '56267E+13' -> '5.6267E+17'
ddintx073 tointegralx '1.23E+96' -> '1.23E+96'
ddintx074 tointegralx '1.23E+384' -> #47fd300000000000 Clamped
ddintx080 tointegralx '-56267E-10' -> '-0' Inexact Rounded
ddintx081 tointegralx '-56267E-5' -> '-1' Inexact Rounded
ddintx082 tointegralx '-56267E-2' -> '-563' Inexact Rounded
ddintx083 tointegralx '-56267E-1' -> '-5627' Inexact Rounded
ddintx085 tointegralx '-56267E-0' -> '-56267'
ddintx086 tointegralx '-56267E+0' -> '-56267'
ddintx087 tointegralx '-56267E+1' -> '-5.6267E+5'
ddintx088 tointegralx '-56267E+9' -> '-5.6267E+13'
ddintx089 tointegralx '-56267E+10' -> '-5.6267E+14'
ddintx090 tointegralx '-56267E+11' -> '-5.6267E+15'
ddintx091 tointegralx '-56267E+12' -> '-5.6267E+16'
ddintx092 tointegralx '-56267E+13' -> '-5.6267E+17'
ddintx093 tointegralx '-1.23E+96' -> '-1.23E+96'
ddintx094 tointegralx '-1.23E+384' -> #c7fd300000000000 Clamped
-- subnormal inputs
ddintx100 tointegralx 1E-299 -> 0 Inexact Rounded
ddintx101 tointegralx 0.1E-299 -> 0 Inexact Rounded
ddintx102 tointegralx 0.01E-299 -> 0 Inexact Rounded
ddintx103 tointegralx 0E-299 -> 0
-- specials and zeros
ddintx120 tointegralx 'Inf' -> Infinity
ddintx121 tointegralx '-Inf' -> -Infinity
ddintx122 tointegralx NaN -> NaN
ddintx123 tointegralx sNaN -> NaN Invalid_operation
ddintx124 tointegralx 0 -> 0
ddintx125 tointegralx -0 -> -0
ddintx126 tointegralx 0.000 -> 0
ddintx127 tointegralx 0.00 -> 0
ddintx128 tointegralx 0.0 -> 0
ddintx129 tointegralx 0 -> 0
ddintx130 tointegralx 0E-3 -> 0
ddintx131 tointegralx 0E-2 -> 0
ddintx132 tointegralx 0E-1 -> 0
ddintx133 tointegralx 0E-0 -> 0
ddintx134 tointegralx 0E+1 -> 0E+1
ddintx135 tointegralx 0E+2 -> 0E+2
ddintx136 tointegralx 0E+3 -> 0E+3
ddintx137 tointegralx 0E+4 -> 0E+4
ddintx138 tointegralx 0E+5 -> 0E+5
ddintx139 tointegralx -0.000 -> -0
ddintx140 tointegralx -0.00 -> -0
ddintx141 tointegralx -0.0 -> -0
ddintx142 tointegralx -0 -> -0
ddintx143 tointegralx -0E-3 -> -0
ddintx144 tointegralx -0E-2 -> -0
ddintx145 tointegralx -0E-1 -> -0
ddintx146 tointegralx -0E-0 -> -0
ddintx147 tointegralx -0E+1 -> -0E+1
ddintx148 tointegralx -0E+2 -> -0E+2
ddintx149 tointegralx -0E+3 -> -0E+3
ddintx150 tointegralx -0E+4 -> -0E+4
ddintx151 tointegralx -0E+5 -> -0E+5
-- propagating NaNs
ddintx152 tointegralx NaN808 -> NaN808
ddintx153 tointegralx sNaN080 -> NaN80 Invalid_operation
ddintx154 tointegralx -NaN808 -> -NaN808
ddintx155 tointegralx -sNaN080 -> -NaN80 Invalid_operation
ddintx156 tointegralx -NaN -> -NaN
ddintx157 tointegralx -sNaN -> -NaN Invalid_operation
-- examples
rounding: half_up
ddintx200 tointegralx 2.1 -> 2 Inexact Rounded
ddintx201 tointegralx 100 -> 100
ddintx202 tointegralx 100.0 -> 100 Rounded
ddintx203 tointegralx 101.5 -> 102 Inexact Rounded
ddintx204 tointegralx -101.5 -> -102 Inexact Rounded
ddintx205 tointegralx 10E+5 -> 1.0E+6
ddintx206 tointegralx 7.89E+77 -> 7.89E+77
ddintx207 tointegralx -Inf -> -Infinity
-- all rounding modes
rounding: half_even
ddintx210 tointegralx 55.5 -> 56 Inexact Rounded
ddintx211 tointegralx 56.5 -> 56 Inexact Rounded
ddintx212 tointegralx 57.5 -> 58 Inexact Rounded
ddintx213 tointegralx -55.5 -> -56 Inexact Rounded
ddintx214 tointegralx -56.5 -> -56 Inexact Rounded
ddintx215 tointegralx -57.5 -> -58 Inexact Rounded
rounding: half_up
ddintx220 tointegralx 55.5 -> 56 Inexact Rounded
ddintx221 tointegralx 56.5 -> 57 Inexact Rounded
ddintx222 tointegralx 57.5 -> 58 Inexact Rounded
ddintx223 tointegralx -55.5 -> -56 Inexact Rounded
ddintx224 tointegralx -56.5 -> -57 Inexact Rounded
ddintx225 tointegralx -57.5 -> -58 Inexact Rounded
rounding: half_down
ddintx230 tointegralx 55.5 -> 55 Inexact Rounded
ddintx231 tointegralx 56.5 -> 56 Inexact Rounded
ddintx232 tointegralx 57.5 -> 57 Inexact Rounded
ddintx233 tointegralx -55.5 -> -55 Inexact Rounded
ddintx234 tointegralx -56.5 -> -56 Inexact Rounded
ddintx235 tointegralx -57.5 -> -57 Inexact Rounded
rounding: up
ddintx240 tointegralx 55.3 -> 56 Inexact Rounded
ddintx241 tointegralx 56.3 -> 57 Inexact Rounded
ddintx242 tointegralx 57.3 -> 58 Inexact Rounded
ddintx243 tointegralx -55.3 -> -56 Inexact Rounded
ddintx244 tointegralx -56.3 -> -57 Inexact Rounded
ddintx245 tointegralx -57.3 -> -58 Inexact Rounded
rounding: down
ddintx250 tointegralx 55.7 -> 55 Inexact Rounded
ddintx251 tointegralx 56.7 -> 56 Inexact Rounded
ddintx252 tointegralx 57.7 -> 57 Inexact Rounded
ddintx253 tointegralx -55.7 -> -55 Inexact Rounded
ddintx254 tointegralx -56.7 -> -56 Inexact Rounded
ddintx255 tointegralx -57.7 -> -57 Inexact Rounded
rounding: ceiling
ddintx260 tointegralx 55.3 -> 56 Inexact Rounded
ddintx261 tointegralx 56.3 -> 57 Inexact Rounded
ddintx262 tointegralx 57.3 -> 58 Inexact Rounded
ddintx263 tointegralx -55.3 -> -55 Inexact Rounded
ddintx264 tointegralx -56.3 -> -56 Inexact Rounded
ddintx265 tointegralx -57.3 -> -57 Inexact Rounded
rounding: floor
ddintx270 tointegralx 55.7 -> 55 Inexact Rounded
ddintx271 tointegralx 56.7 -> 56 Inexact Rounded
ddintx272 tointegralx 57.7 -> 57 Inexact Rounded
ddintx273 tointegralx -55.7 -> -56 Inexact Rounded
ddintx274 tointegralx -56.7 -> -57 Inexact Rounded
ddintx275 tointegralx -57.7 -> -58 Inexact Rounded
-- Int and uInt32 edge values for testing conversions
ddintx300 tointegralx -2147483646 -> -2147483646
ddintx301 tointegralx -2147483647 -> -2147483647
ddintx302 tointegralx -2147483648 -> -2147483648
ddintx303 tointegralx -2147483649 -> -2147483649
ddintx304 tointegralx 2147483646 -> 2147483646
ddintx305 tointegralx 2147483647 -> 2147483647
ddintx306 tointegralx 2147483648 -> 2147483648
ddintx307 tointegralx 2147483649 -> 2147483649
ddintx308 tointegralx 4294967294 -> 4294967294
ddintx309 tointegralx 4294967295 -> 4294967295
ddintx310 tointegralx 4294967296 -> 4294967296
ddintx311 tointegralx 4294967297 -> 4294967297

View file

@ -0,0 +1,337 @@
------------------------------------------------------------------------
-- ddXor.decTest -- digitwise logical XOR for decDoubles --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
precision: 16
maxExponent: 384
minExponent: -383
extended: 1
clamp: 1
rounding: half_even
-- Sanity check (truth table)
ddxor001 xor 0 0 -> 0
ddxor002 xor 0 1 -> 1
ddxor003 xor 1 0 -> 1
ddxor004 xor 1 1 -> 0
ddxor005 xor 1100 1010 -> 110
-- and at msd and msd-1
ddxor006 xor 0000000000000000 0000000000000000 -> 0
ddxor007 xor 0000000000000000 1000000000000000 -> 1000000000000000
ddxor008 xor 1000000000000000 0000000000000000 -> 1000000000000000
ddxor009 xor 1000000000000000 1000000000000000 -> 0
ddxor010 xor 0000000000000000 0000000000000000 -> 0
ddxor011 xor 0000000000000000 0100000000000000 -> 100000000000000
ddxor012 xor 0100000000000000 0000000000000000 -> 100000000000000
ddxor013 xor 0100000000000000 0100000000000000 -> 0
-- Various lengths
-- 1234567890123456 1234567890123456 1234567890123456
ddxor021 xor 1111111110000000 1111111110000000 -> 0
ddxor022 xor 111111110000000 111111110000000 -> 0
ddxor023 xor 11111110000000 11111110000000 -> 0
ddxor024 xor 1111110000000 1111110000000 -> 0
ddxor025 xor 111110000000 111110000000 -> 0
ddxor026 xor 11110000000 11110000000 -> 0
ddxor027 xor 1110000000 1110000000 -> 0
ddxor028 xor 110000000 110000000 -> 0
ddxor029 xor 10000000 10000000 -> 0
ddxor030 xor 1000000 1000000 -> 0
ddxor031 xor 100000 100000 -> 0
ddxor032 xor 10000 10000 -> 0
ddxor033 xor 1000 1000 -> 0
ddxor034 xor 100 100 -> 0
ddxor035 xor 10 10 -> 0
ddxor036 xor 1 1 -> 0
ddxor040 xor 111111111 111111111111 -> 111000000000
ddxor041 xor 11111111 111111111111 -> 111100000000
ddxor042 xor 11111111 111111111 -> 100000000
ddxor043 xor 1111111 100000010 -> 101111101
ddxor044 xor 111111 100000100 -> 100111011
ddxor045 xor 11111 100001000 -> 100010111
ddxor046 xor 1111 100010000 -> 100011111
ddxor047 xor 111 100100000 -> 100100111
ddxor048 xor 11 101000000 -> 101000011
ddxor049 xor 1 110000000 -> 110000001
ddxor050 xor 1111111111 1 -> 1111111110
ddxor051 xor 111111111 1 -> 111111110
ddxor052 xor 11111111 1 -> 11111110
ddxor053 xor 1111111 1 -> 1111110
ddxor054 xor 111111 1 -> 111110
ddxor055 xor 11111 1 -> 11110
ddxor056 xor 1111 1 -> 1110
ddxor057 xor 111 1 -> 110
ddxor058 xor 11 1 -> 10
ddxor059 xor 1 1 -> 0
ddxor060 xor 1111111111 0 -> 1111111111
ddxor061 xor 111111111 0 -> 111111111
ddxor062 xor 11111111 0 -> 11111111
ddxor063 xor 1111111 0 -> 1111111
ddxor064 xor 111111 0 -> 111111
ddxor065 xor 11111 0 -> 11111
ddxor066 xor 1111 0 -> 1111
ddxor067 xor 111 0 -> 111
ddxor068 xor 11 0 -> 11
ddxor069 xor 1 0 -> 1
ddxor070 xor 1 1111111111 -> 1111111110
ddxor071 xor 1 111111111 -> 111111110
ddxor072 xor 1 11111111 -> 11111110
ddxor073 xor 1 1111111 -> 1111110
ddxor074 xor 1 111111 -> 111110
ddxor075 xor 1 11111 -> 11110
ddxor076 xor 1 1111 -> 1110
ddxor077 xor 1 111 -> 110
ddxor078 xor 1 11 -> 10
ddxor079 xor 1 1 -> 0
ddxor080 xor 0 1111111111 -> 1111111111
ddxor081 xor 0 111111111 -> 111111111
ddxor082 xor 0 11111111 -> 11111111
ddxor083 xor 0 1111111 -> 1111111
ddxor084 xor 0 111111 -> 111111
ddxor085 xor 0 11111 -> 11111
ddxor086 xor 0 1111 -> 1111
ddxor087 xor 0 111 -> 111
ddxor088 xor 0 11 -> 11
ddxor089 xor 0 1 -> 1
ddxor090 xor 011111111 111101111 -> 100010000
ddxor091 xor 101111111 111101111 -> 10010000
ddxor092 xor 110111111 111101111 -> 1010000
ddxor093 xor 111011111 111101111 -> 110000
ddxor094 xor 111101111 111101111 -> 0
ddxor095 xor 111110111 111101111 -> 11000
ddxor096 xor 111111011 111101111 -> 10100
ddxor097 xor 111111101 111101111 -> 10010
ddxor098 xor 111111110 111101111 -> 10001
ddxor100 xor 111101111 011111111 -> 100010000
ddxor101 xor 111101111 101111111 -> 10010000
ddxor102 xor 111101111 110111111 -> 1010000
ddxor103 xor 111101111 111011111 -> 110000
ddxor104 xor 111101111 111101111 -> 0
ddxor105 xor 111101111 111110111 -> 11000
ddxor106 xor 111101111 111111011 -> 10100
ddxor107 xor 111101111 111111101 -> 10010
ddxor108 xor 111101111 111111110 -> 10001
-- non-0/1 should not be accepted, nor should signs
ddxor220 xor 111111112 111111111 -> NaN Invalid_operation
ddxor221 xor 333333333 333333333 -> NaN Invalid_operation
ddxor222 xor 555555555 555555555 -> NaN Invalid_operation
ddxor223 xor 777777777 777777777 -> NaN Invalid_operation
ddxor224 xor 999999999 999999999 -> NaN Invalid_operation
ddxor225 xor 222222222 999999999 -> NaN Invalid_operation
ddxor226 xor 444444444 999999999 -> NaN Invalid_operation
ddxor227 xor 666666666 999999999 -> NaN Invalid_operation
ddxor228 xor 888888888 999999999 -> NaN Invalid_operation
ddxor229 xor 999999999 222222222 -> NaN Invalid_operation
ddxor230 xor 999999999 444444444 -> NaN Invalid_operation
ddxor231 xor 999999999 666666666 -> NaN Invalid_operation
ddxor232 xor 999999999 888888888 -> NaN Invalid_operation
-- a few randoms
ddxor240 xor 567468689 -934981942 -> NaN Invalid_operation
ddxor241 xor 567367689 934981942 -> NaN Invalid_operation
ddxor242 xor -631917772 -706014634 -> NaN Invalid_operation
ddxor243 xor -756253257 138579234 -> NaN Invalid_operation
ddxor244 xor 835590149 567435400 -> NaN Invalid_operation
-- test MSD
ddxor250 xor 2000000000000000 1000000000000000 -> NaN Invalid_operation
ddxor251 xor 7000000000000000 1000000000000000 -> NaN Invalid_operation
ddxor252 xor 8000000000000000 1000000000000000 -> NaN Invalid_operation
ddxor253 xor 9000000000000000 1000000000000000 -> NaN Invalid_operation
ddxor254 xor 2000000000000000 0000000000000000 -> NaN Invalid_operation
ddxor255 xor 7000000000000000 0000000000000000 -> NaN Invalid_operation
ddxor256 xor 8000000000000000 0000000000000000 -> NaN Invalid_operation
ddxor257 xor 9000000000000000 0000000000000000 -> NaN Invalid_operation
ddxor258 xor 1000000000000000 2000000000000000 -> NaN Invalid_operation
ddxor259 xor 1000000000000000 7000000000000000 -> NaN Invalid_operation
ddxor260 xor 1000000000000000 8000000000000000 -> NaN Invalid_operation
ddxor261 xor 1000000000000000 9000000000000000 -> NaN Invalid_operation
ddxor262 xor 0000000000000000 2000000000000000 -> NaN Invalid_operation
ddxor263 xor 0000000000000000 7000000000000000 -> NaN Invalid_operation
ddxor264 xor 0000000000000000 8000000000000000 -> NaN Invalid_operation
ddxor265 xor 0000000000000000 9000000000000000 -> NaN Invalid_operation
-- test MSD-1
ddxor270 xor 0200001000000000 1000100000000010 -> NaN Invalid_operation
ddxor271 xor 0700000100000000 1000010000000100 -> NaN Invalid_operation
ddxor272 xor 0800000010000000 1000001000001000 -> NaN Invalid_operation
ddxor273 xor 0900000001000000 1000000100010000 -> NaN Invalid_operation
ddxor274 xor 1000000000100000 0200000010100000 -> NaN Invalid_operation
ddxor275 xor 1000000000010000 0700000001000000 -> NaN Invalid_operation
ddxor276 xor 1000000000001000 0800000010100000 -> NaN Invalid_operation
ddxor277 xor 1000000000000100 0900000000010000 -> NaN Invalid_operation
-- test LSD
ddxor280 xor 0010000000000002 1000000100000001 -> NaN Invalid_operation
ddxor281 xor 0001000000000007 1000001000000011 -> NaN Invalid_operation
ddxor282 xor 0000100000000008 1000010000000001 -> NaN Invalid_operation
ddxor283 xor 0000010000000009 1000100000000001 -> NaN Invalid_operation
ddxor284 xor 1000001000000000 0001000000000002 -> NaN Invalid_operation
ddxor285 xor 1000000100000000 0010000000000007 -> NaN Invalid_operation
ddxor286 xor 1000000010000000 0100000000000008 -> NaN Invalid_operation
ddxor287 xor 1000000001000000 1000000000000009 -> NaN Invalid_operation
-- test Middie
ddxor288 xor 0010000020000000 1000001000000000 -> NaN Invalid_operation
ddxor289 xor 0001000070000001 1000000100000000 -> NaN Invalid_operation
ddxor290 xor 0000100080000010 1000000010000000 -> NaN Invalid_operation
ddxor291 xor 0000010090000100 1000000001000000 -> NaN Invalid_operation
ddxor292 xor 1000001000001000 0000000020100000 -> NaN Invalid_operation
ddxor293 xor 1000000100010000 0000000070010000 -> NaN Invalid_operation
ddxor294 xor 1000000010100000 0000000080001000 -> NaN Invalid_operation
ddxor295 xor 1000000001000000 0000000090000100 -> NaN Invalid_operation
-- signs
ddxor296 xor -1000000001000000 -0000010000000100 -> NaN Invalid_operation
ddxor297 xor -1000000001000000 0000000010000100 -> NaN Invalid_operation
ddxor298 xor 1000000001000000 -0000001000000100 -> NaN Invalid_operation
ddxor299 xor 1000000001000000 0000000011000100 -> 1000000010000100
-- Nmax, Nmin, Ntiny-like
ddxor331 xor 2 9.99999999E+299 -> NaN Invalid_operation
ddxor332 xor 3 1E-299 -> NaN Invalid_operation
ddxor333 xor 4 1.00000000E-299 -> NaN Invalid_operation
ddxor334 xor 5 1E-200 -> NaN Invalid_operation
ddxor335 xor 6 -1E-200 -> NaN Invalid_operation
ddxor336 xor 7 -1.00000000E-299 -> NaN Invalid_operation
ddxor337 xor 8 -1E-299 -> NaN Invalid_operation
ddxor338 xor 9 -9.99999999E+299 -> NaN Invalid_operation
ddxor341 xor 9.99999999E+299 -18 -> NaN Invalid_operation
ddxor342 xor 1E-299 01 -> NaN Invalid_operation
ddxor343 xor 1.00000000E-299 -18 -> NaN Invalid_operation
ddxor344 xor 1E-208 18 -> NaN Invalid_operation
ddxor345 xor -1E-207 -10 -> NaN Invalid_operation
ddxor346 xor -1.00000000E-299 18 -> NaN Invalid_operation
ddxor347 xor -1E-299 10 -> NaN Invalid_operation
ddxor348 xor -9.99999999E+299 -18 -> NaN Invalid_operation
-- A few other non-integers
ddxor361 xor 1.0 1 -> NaN Invalid_operation
ddxor362 xor 1E+1 1 -> NaN Invalid_operation
ddxor363 xor 0.0 1 -> NaN Invalid_operation
ddxor364 xor 0E+1 1 -> NaN Invalid_operation
ddxor365 xor 9.9 1 -> NaN Invalid_operation
ddxor366 xor 9E+1 1 -> NaN Invalid_operation
ddxor371 xor 0 1.0 -> NaN Invalid_operation
ddxor372 xor 0 1E+1 -> NaN Invalid_operation
ddxor373 xor 0 0.0 -> NaN Invalid_operation
ddxor374 xor 0 0E+1 -> NaN Invalid_operation
ddxor375 xor 0 9.9 -> NaN Invalid_operation
ddxor376 xor 0 9E+1 -> NaN Invalid_operation
-- All Specials are in error
ddxor780 xor -Inf -Inf -> NaN Invalid_operation
ddxor781 xor -Inf -1000 -> NaN Invalid_operation
ddxor782 xor -Inf -1 -> NaN Invalid_operation
ddxor783 xor -Inf -0 -> NaN Invalid_operation
ddxor784 xor -Inf 0 -> NaN Invalid_operation
ddxor785 xor -Inf 1 -> NaN Invalid_operation
ddxor786 xor -Inf 1000 -> NaN Invalid_operation
ddxor787 xor -1000 -Inf -> NaN Invalid_operation
ddxor788 xor -Inf -Inf -> NaN Invalid_operation
ddxor789 xor -1 -Inf -> NaN Invalid_operation
ddxor790 xor -0 -Inf -> NaN Invalid_operation
ddxor791 xor 0 -Inf -> NaN Invalid_operation
ddxor792 xor 1 -Inf -> NaN Invalid_operation
ddxor793 xor 1000 -Inf -> NaN Invalid_operation
ddxor794 xor Inf -Inf -> NaN Invalid_operation
ddxor800 xor Inf -Inf -> NaN Invalid_operation
ddxor801 xor Inf -1000 -> NaN Invalid_operation
ddxor802 xor Inf -1 -> NaN Invalid_operation
ddxor803 xor Inf -0 -> NaN Invalid_operation
ddxor804 xor Inf 0 -> NaN Invalid_operation
ddxor805 xor Inf 1 -> NaN Invalid_operation
ddxor806 xor Inf 1000 -> NaN Invalid_operation
ddxor807 xor Inf Inf -> NaN Invalid_operation
ddxor808 xor -1000 Inf -> NaN Invalid_operation
ddxor809 xor -Inf Inf -> NaN Invalid_operation
ddxor810 xor -1 Inf -> NaN Invalid_operation
ddxor811 xor -0 Inf -> NaN Invalid_operation
ddxor812 xor 0 Inf -> NaN Invalid_operation
ddxor813 xor 1 Inf -> NaN Invalid_operation
ddxor814 xor 1000 Inf -> NaN Invalid_operation
ddxor815 xor Inf Inf -> NaN Invalid_operation
ddxor821 xor NaN -Inf -> NaN Invalid_operation
ddxor822 xor NaN -1000 -> NaN Invalid_operation
ddxor823 xor NaN -1 -> NaN Invalid_operation
ddxor824 xor NaN -0 -> NaN Invalid_operation
ddxor825 xor NaN 0 -> NaN Invalid_operation
ddxor826 xor NaN 1 -> NaN Invalid_operation
ddxor827 xor NaN 1000 -> NaN Invalid_operation
ddxor828 xor NaN Inf -> NaN Invalid_operation
ddxor829 xor NaN NaN -> NaN Invalid_operation
ddxor830 xor -Inf NaN -> NaN Invalid_operation
ddxor831 xor -1000 NaN -> NaN Invalid_operation
ddxor832 xor -1 NaN -> NaN Invalid_operation
ddxor833 xor -0 NaN -> NaN Invalid_operation
ddxor834 xor 0 NaN -> NaN Invalid_operation
ddxor835 xor 1 NaN -> NaN Invalid_operation
ddxor836 xor 1000 NaN -> NaN Invalid_operation
ddxor837 xor Inf NaN -> NaN Invalid_operation
ddxor841 xor sNaN -Inf -> NaN Invalid_operation
ddxor842 xor sNaN -1000 -> NaN Invalid_operation
ddxor843 xor sNaN -1 -> NaN Invalid_operation
ddxor844 xor sNaN -0 -> NaN Invalid_operation
ddxor845 xor sNaN 0 -> NaN Invalid_operation
ddxor846 xor sNaN 1 -> NaN Invalid_operation
ddxor847 xor sNaN 1000 -> NaN Invalid_operation
ddxor848 xor sNaN NaN -> NaN Invalid_operation
ddxor849 xor sNaN sNaN -> NaN Invalid_operation
ddxor850 xor NaN sNaN -> NaN Invalid_operation
ddxor851 xor -Inf sNaN -> NaN Invalid_operation
ddxor852 xor -1000 sNaN -> NaN Invalid_operation
ddxor853 xor -1 sNaN -> NaN Invalid_operation
ddxor854 xor -0 sNaN -> NaN Invalid_operation
ddxor855 xor 0 sNaN -> NaN Invalid_operation
ddxor856 xor 1 sNaN -> NaN Invalid_operation
ddxor857 xor 1000 sNaN -> NaN Invalid_operation
ddxor858 xor Inf sNaN -> NaN Invalid_operation
ddxor859 xor NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
ddxor861 xor NaN1 -Inf -> NaN Invalid_operation
ddxor862 xor +NaN2 -1000 -> NaN Invalid_operation
ddxor863 xor NaN3 1000 -> NaN Invalid_operation
ddxor864 xor NaN4 Inf -> NaN Invalid_operation
ddxor865 xor NaN5 +NaN6 -> NaN Invalid_operation
ddxor866 xor -Inf NaN7 -> NaN Invalid_operation
ddxor867 xor -1000 NaN8 -> NaN Invalid_operation
ddxor868 xor 1000 NaN9 -> NaN Invalid_operation
ddxor869 xor Inf +NaN10 -> NaN Invalid_operation
ddxor871 xor sNaN11 -Inf -> NaN Invalid_operation
ddxor872 xor sNaN12 -1000 -> NaN Invalid_operation
ddxor873 xor sNaN13 1000 -> NaN Invalid_operation
ddxor874 xor sNaN14 NaN17 -> NaN Invalid_operation
ddxor875 xor sNaN15 sNaN18 -> NaN Invalid_operation
ddxor876 xor NaN16 sNaN19 -> NaN Invalid_operation
ddxor877 xor -Inf +sNaN20 -> NaN Invalid_operation
ddxor878 xor -1000 sNaN21 -> NaN Invalid_operation
ddxor879 xor 1000 sNaN22 -> NaN Invalid_operation
ddxor880 xor Inf sNaN23 -> NaN Invalid_operation
ddxor881 xor +NaN25 +sNaN24 -> NaN Invalid_operation
ddxor882 xor -NaN26 NaN28 -> NaN Invalid_operation
ddxor883 xor -sNaN27 sNaN29 -> NaN Invalid_operation
ddxor884 xor 1000 -NaN30 -> NaN Invalid_operation
ddxor885 xor 1000 -sNaN31 -> NaN Invalid_operation

View file

@ -0,0 +1,65 @@
------------------------------------------------------------------------
-- decDouble.decTest -- run all decDouble decimal arithmetic tests --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- decDouble tests
dectest: ddAbs
dectest: ddAdd
dectest: ddAnd
dectest: ddBase
dectest: ddCanonical
dectest: ddClass
dectest: ddCompare
dectest: ddCompareSig
dectest: ddCompareTotal
dectest: ddCompareTotalMag
dectest: ddCopy
dectest: ddCopyAbs
dectest: ddCopyNegate
dectest: ddCopySign
dectest: ddDivide
dectest: ddDivideInt
dectest: ddEncode
dectest: ddFMA
dectest: ddInvert
dectest: ddLogB
dectest: ddMax
dectest: ddMaxMag
dectest: ddMin
dectest: ddMinMag
dectest: ddMinus
dectest: ddMultiply
dectest: ddNextMinus
dectest: ddNextPlus
dectest: ddNextToward
dectest: ddOr
dectest: ddPlus
dectest: ddQuantize
dectest: ddReduce
dectest: ddRemainder
dectest: ddRemainderNear
dectest: ddRotate
dectest: ddSameQuantum
dectest: ddScaleB
dectest: ddShift
dectest: ddSubtract
dectest: ddToIntegral
dectest: ddXor

View file

@ -0,0 +1,65 @@
------------------------------------------------------------------------
-- decQuad.decTest -- run all decQuad decimal arithmetic tests --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- decQuad tests
dectest: dqAbs
dectest: dqAdd
dectest: dqAnd
dectest: dqBase
dectest: dqCanonical
dectest: dqClass
dectest: dqCompare
dectest: dqCompareSig
dectest: dqCompareTotal
dectest: dqCompareTotalMag
dectest: dqCopy
dectest: dqCopyAbs
dectest: dqCopyNegate
dectest: dqCopySign
dectest: dqDivide
dectest: dqDivideInt
dectest: dqEncode
dectest: dqFMA
dectest: dqInvert
dectest: dqLogB
dectest: dqMax
dectest: dqMaxMag
dectest: dqMin
dectest: dqMinMag
dectest: dqMinus
dectest: dqMultiply
dectest: dqNextMinus
dectest: dqNextPlus
dectest: dqNextToward
dectest: dqOr
dectest: dqPlus
dectest: dqQuantize
dectest: dqReduce
dectest: dqRemainder
dectest: dqRemainderNear
dectest: dqRotate
dectest: dqSameQuantum
dectest: dqScaleB
dectest: dqShift
dectest: dqSubtract
dectest: dqToIntegral
dectest: dqXor

View file

@ -0,0 +1,25 @@
------------------------------------------------------------------------
-- decSingle.decTest -- run all decSingle decimal arithmetic tests --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- decSingle tests
dectest: dsBase
dectest: dsEncode

View file

@ -0,0 +1,854 @@
------------------------------------------------------------------------
-- divide.decTest -- decimal division --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
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 50 20 -> 2.5
divx023 divide 500 200 -> 2.5
divx024 divide 50.0 20.0 -> 2.5
divx025 divide 5.00 2.00 -> 2.5
divx026 divide 5 2.0 -> 2.5
divx027 divide 5 2.000 -> 2.5
divx028 divide 5 0.20 -> 25
divx029 divide 5 0.200 -> 25
divx030 divide 10 1 -> 10
divx031 divide 100 1 -> 100
divx032 divide 1000 1 -> 1000
divx033 divide 1000 100 -> 10
divx035 divide 1 2 -> 0.5
divx036 divide 1 4 -> 0.25
divx037 divide 1 8 -> 0.125
divx038 divide 1 16 -> 0.0625
divx039 divide 1 32 -> 0.03125
divx040 divide 1 64 -> 0.015625
divx041 divide 1 -2 -> -0.5
divx042 divide 1 -4 -> -0.25
divx043 divide 1 -8 -> -0.125
divx044 divide 1 -16 -> -0.0625
divx045 divide 1 -32 -> -0.03125
divx046 divide 1 -64 -> -0.015625
divx047 divide -1 2 -> -0.5
divx048 divide -1 4 -> -0.25
divx049 divide -1 8 -> -0.125
divx050 divide -1 16 -> -0.0625
divx051 divide -1 32 -> -0.03125
divx052 divide -1 64 -> -0.015625
divx053 divide -1 -2 -> 0.5
divx054 divide -1 -4 -> 0.25
divx055 divide -1 -8 -> 0.125
divx056 divide -1 -16 -> 0.0625
divx057 divide -1 -32 -> 0.03125
divx058 divide -1 -64 -> 0.015625
divx070 divide 999999999 1 -> 999999999
divx071 divide 999999999.4 1 -> 999999999 Inexact Rounded
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 Clamped
divx968 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
divx969 divide 1e-600000000 1e+400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-- [no equivalent of 'subnormal' for overflow]
divx970 divide 1e+600000000 1e-400000001 -> Infinity Overflow Inexact Rounded
divx971 divide 1e+600000000 1e-400000002 -> Infinity Overflow Inexact Rounded
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 Clamped
divx981 divide 1e-600000000 -1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
divx982 divide -1e-600000000 1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
divx983 divide -1e-600000000 -1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
divx984 divide 1e+600000000 1e-400000009 -> Infinity Overflow Inexact Rounded
divx985 divide 1e+600000000 -1e-400000009 -> -Infinity Overflow Inexact Rounded
divx986 divide -1e+600000000 1e-400000009 -> -Infinity Overflow Inexact Rounded
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
precision: 34
rounding: half_up
maxExponent: 6144
minExponent: -6143
-- Examples from SQL proposal (Krishna Kulkarni)
precision: 7
divx1021 divide 1E0 1E0 -> 1
divx1022 divide 1E0 2E0 -> 0.5
divx1023 divide 1E0 3E0 -> 0.3333333 Inexact Rounded
divx1024 divide 100E-2 1000E-3 -> 1
divx1025 divide 24E-1 2E0 -> 1.2
divx1026 divide 2400E-3 2E0 -> 1.200
divx1027 divide 5E0 2E0 -> 2.5
divx1028 divide 5E0 20E-1 -> 2.5
divx1029 divide 5E0 2000E-3 -> 2.5
divx1030 divide 5E0 2E-1 -> 25
divx1031 divide 5E0 20E-2 -> 25
divx1032 divide 480E-2 3E0 -> 1.60
divx1033 divide 47E-1 2E0 -> 2.35
-- ECMAScript bad examples
rounding: half_down
precision: 7
divx1050 divide 5 9 -> 0.5555556 Inexact Rounded
rounding: half_even
divx1051 divide 5 11 -> 0.4545455 Inexact Rounded
-- payload decapitate
precision: 5
divx1055 divide sNaN987654321 1 -> NaN54321 Invalid_operation
-- Null tests
divx9998 divide 10 # -> NaN Invalid_operation
divx9999 divide # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,486 @@
------------------------------------------------------------------------
-- divideint.decTest -- decimal integer division --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
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
-- GD edge cases: lhs smaller than rhs but more digits
dvix301 divideint 0.9 2 -> 0
dvix302 divideint 0.9 2.0 -> 0
dvix303 divideint 0.9 2.1 -> 0
dvix304 divideint 0.9 2.00 -> 0
dvix305 divideint 0.9 2.01 -> 0
dvix306 divideint 0.12 1 -> 0
dvix307 divideint 0.12 1.0 -> 0
dvix308 divideint 0.12 1.00 -> 0
dvix309 divideint 0.12 1.0 -> 0
dvix310 divideint 0.12 1.00 -> 0
dvix311 divideint 0.12 2 -> 0
dvix312 divideint 0.12 2.0 -> 0
dvix313 divideint 0.12 2.1 -> 0
dvix314 divideint 0.12 2.00 -> 0
dvix315 divideint 0.12 2.01 -> 0
-- overflow and underflow tests [from divide]
maxexponent: 999999999
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

@ -0,0 +1,126 @@
------------------------------------------------------------------------
-- dqAbs.decTest -- decQuad absolute value, heeding sNaN --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
dqabs001 abs '1' -> '1'
dqabs002 abs '-1' -> '1'
dqabs003 abs '1.00' -> '1.00'
dqabs004 abs '-1.00' -> '1.00'
dqabs005 abs '0' -> '0'
dqabs006 abs '0.00' -> '0.00'
dqabs007 abs '00.0' -> '0.0'
dqabs008 abs '00.00' -> '0.00'
dqabs009 abs '00' -> '0'
dqabs010 abs '-2' -> '2'
dqabs011 abs '2' -> '2'
dqabs012 abs '-2.00' -> '2.00'
dqabs013 abs '2.00' -> '2.00'
dqabs014 abs '-0' -> '0'
dqabs015 abs '-0.00' -> '0.00'
dqabs016 abs '-00.0' -> '0.0'
dqabs017 abs '-00.00' -> '0.00'
dqabs018 abs '-00' -> '0'
dqabs020 abs '-2000000' -> '2000000'
dqabs021 abs '2000000' -> '2000000'
dqabs030 abs '+0.1' -> '0.1'
dqabs031 abs '-0.1' -> '0.1'
dqabs032 abs '+0.01' -> '0.01'
dqabs033 abs '-0.01' -> '0.01'
dqabs034 abs '+0.001' -> '0.001'
dqabs035 abs '-0.001' -> '0.001'
dqabs036 abs '+0.000001' -> '0.000001'
dqabs037 abs '-0.000001' -> '0.000001'
dqabs038 abs '+0.000000000001' -> '1E-12'
dqabs039 abs '-0.000000000001' -> '1E-12'
-- examples from decArith
dqabs040 abs '2.1' -> '2.1'
dqabs041 abs '-100' -> '100'
dqabs042 abs '101.5' -> '101.5'
dqabs043 abs '-101.5' -> '101.5'
-- more fixed, potential LHS swaps/overlays if done by subtract 0
dqabs060 abs '-56267E-10' -> '0.0000056267'
dqabs061 abs '-56267E-5' -> '0.56267'
dqabs062 abs '-56267E-2' -> '562.67'
dqabs063 abs '-56267E-1' -> '5626.7'
dqabs065 abs '-56267E-0' -> '56267'
-- subnormals and underflow
-- long operand tests
dqabs321 abs 1234567890123456 -> 1234567890123456
dqabs322 abs 12345678000 -> 12345678000
dqabs323 abs 1234567800 -> 1234567800
dqabs324 abs 1234567890 -> 1234567890
dqabs325 abs 1234567891 -> 1234567891
dqabs326 abs 12345678901 -> 12345678901
dqabs327 abs 1234567896 -> 1234567896
-- zeros
dqabs111 abs 0 -> 0
dqabs112 abs -0 -> 0
dqabs113 abs 0E+6 -> 0E+6
dqabs114 abs -0E+6 -> 0E+6
dqabs115 abs 0.0000 -> 0.0000
dqabs116 abs -0.0000 -> 0.0000
dqabs117 abs 0E-141 -> 0E-141
dqabs118 abs -0E-141 -> 0E-141
-- full coefficients, alternating bits
dqabs121 abs 2682682682682682682682682682682682 -> 2682682682682682682682682682682682
dqabs122 abs -2682682682682682682682682682682682 -> 2682682682682682682682682682682682
dqabs123 abs 1341341341341341341341341341341341 -> 1341341341341341341341341341341341
dqabs124 abs -1341341341341341341341341341341341 -> 1341341341341341341341341341341341
-- Nmax, Nmin, Ntiny
dqabs131 abs 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144
dqabs132 abs 1E-6143 -> 1E-6143
dqabs133 abs 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143
dqabs134 abs 1E-6176 -> 1E-6176 Subnormal
dqabs135 abs -1E-6176 -> 1E-6176 Subnormal
dqabs136 abs -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143
dqabs137 abs -1E-6143 -> 1E-6143
dqabs138 abs -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144
-- specials
dqabs520 abs 'Inf' -> 'Infinity'
dqabs521 abs '-Inf' -> 'Infinity'
dqabs522 abs NaN -> NaN
dqabs523 abs sNaN -> NaN Invalid_operation
dqabs524 abs NaN22 -> NaN22
dqabs525 abs sNaN33 -> NaN33 Invalid_operation
dqabs526 abs -NaN22 -> -NaN22
dqabs527 abs -sNaN33 -> -NaN33 Invalid_operation
-- Null tests
dqabs900 abs # -> NaN Invalid_operation

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,420 @@
------------------------------------------------------------------------
-- dqAnd.decTest -- digitwise logical AND for decQuads --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check (truth table)
dqand001 and 0 0 -> 0
dqand002 and 0 1 -> 0
dqand003 and 1 0 -> 0
dqand004 and 1 1 -> 1
dqand005 and 1100 1010 -> 1000
-- and at msd and msd-1
-- 1234567890123456789012345678901234
dqand006 and 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0
dqand007 and 0000000000000000000000000000000000 1000000000000000000000000000000000 -> 0
dqand008 and 1000000000000000000000000000000000 0000000000000000000000000000000000 -> 0
dqand009 and 1000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000
dqand010 and 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0
dqand011 and 0000000000000000000000000000000000 0100000000000000000000000000000000 -> 0
dqand012 and 0100000000000000000000000000000000 0000000000000000000000000000000000 -> 0
dqand013 and 0100000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000
-- Various lengths
-- 1234567890123456789012345678901234
dqand601 and 0111111111111111111111111111111111 1111111111111111111111111111111111 -> 111111111111111111111111111111111
dqand602 and 1011111111111111111111111111111111 1111111111111111111111111111111111 -> 1011111111111111111111111111111111
dqand603 and 1101111111111111111111111111111111 1111111111111111111111111111111111 -> 1101111111111111111111111111111111
dqand604 and 1110111111111111111111111111111111 1111111111111111111111111111111111 -> 1110111111111111111111111111111111
dqand605 and 1111011111111111111111111111111111 1111111111111111111111111111111111 -> 1111011111111111111111111111111111
dqand606 and 1111101111111111111111111111111111 1111111111111111111111111111111111 -> 1111101111111111111111111111111111
dqand607 and 1111110111111111111111111111111111 1111111111111111111111111111111111 -> 1111110111111111111111111111111111
dqand608 and 1111111011111111111111111111111111 1111111111111111111111111111111111 -> 1111111011111111111111111111111111
dqand609 and 1111111101111111111111111111111111 1111111111111111111111111111111111 -> 1111111101111111111111111111111111
dqand610 and 1111111110111111111111111111111111 1111111111111111111111111111111111 -> 1111111110111111111111111111111111
dqand611 and 1111111111011111111111111111111111 1111111111111111111111111111111111 -> 1111111111011111111111111111111111
dqand612 and 1111111111101111111111111111111111 1111111111111111111111111111111111 -> 1111111111101111111111111111111111
dqand613 and 1111111111110111111111111111111111 1111111111111111111111111111111111 -> 1111111111110111111111111111111111
dqand614 and 1111111111111011111111111111111111 1111111111111111111111111111111111 -> 1111111111111011111111111111111111
dqand615 and 1111111111111101111111111111111111 1111111111111111111111111111111111 -> 1111111111111101111111111111111111
dqand616 and 1111111111111110111111111111111111 1111111111111111111111111111111111 -> 1111111111111110111111111111111111
dqand617 and 1111111111111111011111111111111111 1111111111111111111111111111111111 -> 1111111111111111011111111111111111
dqand618 and 1111111111111111101111111111111111 1111111111111111111111111111111111 -> 1111111111111111101111111111111111
dqand619 and 1111111111111111110111111111111111 1111111111111111111111111111111111 -> 1111111111111111110111111111111111
dqand620 and 1111111111111111111011111111111111 1111111111111111111111111111111111 -> 1111111111111111111011111111111111
dqand621 and 1111111111111111111101111111111111 1111111111111111111111111111111111 -> 1111111111111111111101111111111111
dqand622 and 1111111111111111111110111111111111 1111111111111111111111111111111111 -> 1111111111111111111110111111111111
dqand623 and 1111111111111111111111011111111111 1111111111111111111111111111111111 -> 1111111111111111111111011111111111
dqand624 and 1111111111111111111111101111111111 1111111111111111111111111111111111 -> 1111111111111111111111101111111111
dqand625 and 1111111111111111111111110111111111 1111111111111111111111111111111111 -> 1111111111111111111111110111111111
dqand626 and 1111111111111111111111111011111111 1111111111111111111111111111111111 -> 1111111111111111111111111011111111
dqand627 and 1111111111111111111111111101111111 1111111111111111111111111111111111 -> 1111111111111111111111111101111111
dqand628 and 1111111111111111111111111110111111 1111111111111111111111111111111111 -> 1111111111111111111111111110111111
dqand629 and 1111111111111111111111111111011111 1111111111111111111111111111111111 -> 1111111111111111111111111111011111
dqand630 and 1111111111111111111111111111101111 1111111111111111111111111111111111 -> 1111111111111111111111111111101111
dqand631 and 1111111111111111111111111111110111 1111111111111111111111111111111111 -> 1111111111111111111111111111110111
dqand632 and 1111111111111111111111111111111011 1111111111111111111111111111111111 -> 1111111111111111111111111111111011
dqand633 and 1111111111111111111111111111111101 1111111111111111111111111111111111 -> 1111111111111111111111111111111101
dqand634 and 1111111111111111111111111111111110 1111111111111111111111111111111111 -> 1111111111111111111111111111111110
dqand641 and 1111111111111111111111111111111111 0111111111111111111111111111111111 -> 111111111111111111111111111111111
dqand642 and 1111111111111111111111111111111111 1011111111111111111111111111111111 -> 1011111111111111111111111111111111
dqand643 and 1111111111111111111111111111111111 1101111111111111111111111111111111 -> 1101111111111111111111111111111111
dqand644 and 1111111111111111111111111111111111 1110111111111111111111111111111111 -> 1110111111111111111111111111111111
dqand645 and 1111111111111111111111111111111111 1111011111111111111111111111111111 -> 1111011111111111111111111111111111
dqand646 and 1111111111111111111111111111111111 1111101111111111111111111111111111 -> 1111101111111111111111111111111111
dqand647 and 1111111111111111111111111111111111 1111110111111111111111111111111111 -> 1111110111111111111111111111111111
dqand648 and 1111111111111111111111111111111111 1111111011111111111111111111111111 -> 1111111011111111111111111111111111
dqand649 and 1111111111111111111111111111111111 1111111101111111111111111111111111 -> 1111111101111111111111111111111111
dqand650 and 1111111111111111111111111111111111 1111111110111111111111111111111111 -> 1111111110111111111111111111111111
dqand651 and 1111111111111111111111111111111111 1111111111011111111111111111111111 -> 1111111111011111111111111111111111
dqand652 and 1111111111111111111111111111111111 1111111111101111111111111111111111 -> 1111111111101111111111111111111111
dqand653 and 1111111111111111111111111111111111 1111111111110111111111111111111111 -> 1111111111110111111111111111111111
dqand654 and 1111111111111111111111111111111111 1111111111111011111111111111111111 -> 1111111111111011111111111111111111
dqand655 and 1111111111111111111111111111111111 1111111111111101111111111111111111 -> 1111111111111101111111111111111111
dqand656 and 1111111111111111111111111111111111 1111111111111110111111111111111111 -> 1111111111111110111111111111111111
dqand657 and 1111111111111111111111111111111111 1111111111111111011111111111111111 -> 1111111111111111011111111111111111
dqand658 and 1111111111111111111111111111111111 1111111111111111101111111111111111 -> 1111111111111111101111111111111111
dqand659 and 1111111111111111111111111111111111 1111111111111111110111111111111111 -> 1111111111111111110111111111111111
dqand660 and 1111111111111111111111111111111111 1111111111111111111011111111111111 -> 1111111111111111111011111111111111
dqand661 and 1111111111111111111111111111111111 1111111111111111111101111111111111 -> 1111111111111111111101111111111111
dqand662 and 1111111111111111111111111111111111 1111111111111111111110111111111111 -> 1111111111111111111110111111111111
dqand663 and 1111111111111111111111111111111111 1111111111111111111111011111111111 -> 1111111111111111111111011111111111
dqand664 and 1111111111111111111111111111111111 1111111111111111111111101111111111 -> 1111111111111111111111101111111111
dqand665 and 1111111111111111111111111111111111 1111111111111111111111110111111111 -> 1111111111111111111111110111111111
dqand666 and 1111111111111111111111111111111111 1111111111111111111111111011111111 -> 1111111111111111111111111011111111
dqand667 and 1111111111111111111111111111111111 1111111111111111111111111101111111 -> 1111111111111111111111111101111111
dqand668 and 1111111111111111111111111111111111 1111111111111111111111111110111111 -> 1111111111111111111111111110111111
dqand669 and 1111111111111111111111111111111111 1111111111111111111111111111011111 -> 1111111111111111111111111111011111
dqand670 and 1111111111111111111111111111111111 1111111111111111111111111111101111 -> 1111111111111111111111111111101111
dqand671 and 1111111111111111111111111111111111 1111111111111111111111111111110111 -> 1111111111111111111111111111110111
dqand672 and 1111111111111111111111111111111111 1111111111111111111111111111111011 -> 1111111111111111111111111111111011
dqand673 and 1111111111111111111111111111111111 1111111111111111111111111111111101 -> 1111111111111111111111111111111101
dqand674 and 1111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111110
dqand675 and 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 111111111111111111111111111111110
dqand676 and 1111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111110
dqand021 and 1111111111111111 1111111111111111 -> 1111111111111111
dqand024 and 1111111111111111 111111111111111 -> 111111111111111
dqand025 and 1111111111111111 11111111111111 -> 11111111111111
dqand026 and 1111111111111111 1111111111111 -> 1111111111111
dqand027 and 1111111111111111 111111111111 -> 111111111111
dqand028 and 1111111111111111 11111111111 -> 11111111111
dqand029 and 1111111111111111 1111111111 -> 1111111111
dqand030 and 1111111111111111 111111111 -> 111111111
dqand031 and 1111111111111111 11111111 -> 11111111
dqand032 and 1111111111111111 1111111 -> 1111111
dqand033 and 1111111111111111 111111 -> 111111
dqand034 and 1111111111111111 11111 -> 11111
dqand035 and 1111111111111111 1111 -> 1111
dqand036 and 1111111111111111 111 -> 111
dqand037 and 1111111111111111 11 -> 11
dqand038 and 1111111111111111 1 -> 1
dqand039 and 1111111111111111 0 -> 0
dqand040 and 1111111111111111 1111111111111111 -> 1111111111111111
dqand041 and 111111111111111 1111111111111111 -> 111111111111111
dqand042 and 111111111111111 1111111111111111 -> 111111111111111
dqand043 and 11111111111111 1111111111111111 -> 11111111111111
dqand044 and 1111111111111 1111111111111111 -> 1111111111111
dqand045 and 111111111111 1111111111111111 -> 111111111111
dqand046 and 11111111111 1111111111111111 -> 11111111111
dqand047 and 1111111111 1111111111111111 -> 1111111111
dqand048 and 111111111 1111111111111111 -> 111111111
dqand049 and 11111111 1111111111111111 -> 11111111
dqand050 and 1111111 1111111111111111 -> 1111111
dqand051 and 111111 1111111111111111 -> 111111
dqand052 and 11111 1111111111111111 -> 11111
dqand053 and 1111 1111111111111111 -> 1111
dqand054 and 111 1111111111111111 -> 111
dqand055 and 11 1111111111111111 -> 11
dqand056 and 1 1111111111111111 -> 1
dqand057 and 0 1111111111111111 -> 0
dqand150 and 1111111111 1 -> 1
dqand151 and 111111111 1 -> 1
dqand152 and 11111111 1 -> 1
dqand153 and 1111111 1 -> 1
dqand154 and 111111 1 -> 1
dqand155 and 11111 1 -> 1
dqand156 and 1111 1 -> 1
dqand157 and 111 1 -> 1
dqand158 and 11 1 -> 1
dqand159 and 1 1 -> 1
dqand160 and 1111111111 0 -> 0
dqand161 and 111111111 0 -> 0
dqand162 and 11111111 0 -> 0
dqand163 and 1111111 0 -> 0
dqand164 and 111111 0 -> 0
dqand165 and 11111 0 -> 0
dqand166 and 1111 0 -> 0
dqand167 and 111 0 -> 0
dqand168 and 11 0 -> 0
dqand169 and 1 0 -> 0
dqand170 and 1 1111111111 -> 1
dqand171 and 1 111111111 -> 1
dqand172 and 1 11111111 -> 1
dqand173 and 1 1111111 -> 1
dqand174 and 1 111111 -> 1
dqand175 and 1 11111 -> 1
dqand176 and 1 1111 -> 1
dqand177 and 1 111 -> 1
dqand178 and 1 11 -> 1
dqand179 and 1 1 -> 1
dqand180 and 0 1111111111 -> 0
dqand181 and 0 111111111 -> 0
dqand182 and 0 11111111 -> 0
dqand183 and 0 1111111 -> 0
dqand184 and 0 111111 -> 0
dqand185 and 0 11111 -> 0
dqand186 and 0 1111 -> 0
dqand187 and 0 111 -> 0
dqand188 and 0 11 -> 0
dqand189 and 0 1 -> 0
dqand090 and 011111111 111111111 -> 11111111
dqand091 and 101111111 111111111 -> 101111111
dqand092 and 110111111 111111111 -> 110111111
dqand093 and 111011111 111111111 -> 111011111
dqand094 and 111101111 111111111 -> 111101111
dqand095 and 111110111 111111111 -> 111110111
dqand096 and 111111011 111111111 -> 111111011
dqand097 and 111111101 111111111 -> 111111101
dqand098 and 111111110 111111111 -> 111111110
dqand100 and 111111111 011111111 -> 11111111
dqand101 and 111111111 101111111 -> 101111111
dqand102 and 111111111 110111111 -> 110111111
dqand103 and 111111111 111011111 -> 111011111
dqand104 and 111111111 111101111 -> 111101111
dqand105 and 111111111 111110111 -> 111110111
dqand106 and 111111111 111111011 -> 111111011
dqand107 and 111111111 111111101 -> 111111101
dqand108 and 111111111 111111110 -> 111111110
-- non-0/1 should not be accepted, nor should signs
dqand220 and 111111112 111111111 -> NaN Invalid_operation
dqand221 and 333333333 333333333 -> NaN Invalid_operation
dqand222 and 555555555 555555555 -> NaN Invalid_operation
dqand223 and 777777777 777777777 -> NaN Invalid_operation
dqand224 and 999999999 999999999 -> NaN Invalid_operation
dqand225 and 222222222 999999999 -> NaN Invalid_operation
dqand226 and 444444444 999999999 -> NaN Invalid_operation
dqand227 and 666666666 999999999 -> NaN Invalid_operation
dqand228 and 888888888 999999999 -> NaN Invalid_operation
dqand229 and 999999999 222222222 -> NaN Invalid_operation
dqand230 and 999999999 444444444 -> NaN Invalid_operation
dqand231 and 999999999 666666666 -> NaN Invalid_operation
dqand232 and 999999999 888888888 -> NaN Invalid_operation
-- a few randoms
dqand240 and 567468689 -934981942 -> NaN Invalid_operation
dqand241 and 567367689 934981942 -> NaN Invalid_operation
dqand242 and -631917772 -706014634 -> NaN Invalid_operation
dqand243 and -756253257 138579234 -> NaN Invalid_operation
dqand244 and 835590149 567435400 -> NaN Invalid_operation
-- test MSD
dqand250 and 2000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation
dqand251 and 7000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation
dqand252 and 8000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation
dqand253 and 9000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation
dqand254 and 2000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation
dqand255 and 7000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation
dqand256 and 8000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation
dqand257 and 9000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation
dqand258 and 1000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation
dqand259 and 1000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation
dqand260 and 1000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation
dqand261 and 1000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation
dqand262 and 0000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation
dqand263 and 0000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation
dqand264 and 0000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation
dqand265 and 0000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation
-- test MSD-1
dqand270 and 0200000111000111000111001000000000 1000000111000111000111100000000010 -> NaN Invalid_operation
dqand271 and 0700000111000111000111000100000000 1000000111000111000111010000000100 -> NaN Invalid_operation
dqand272 and 0800000111000111000111000010000000 1000000111000111000111001000001000 -> NaN Invalid_operation
dqand273 and 0900000111000111000111000001000000 1000000111000111000111000100010000 -> NaN Invalid_operation
dqand274 and 1000000111000111000111000000100000 0200000111000111000111000010100000 -> NaN Invalid_operation
dqand275 and 1000000111000111000111000000010000 0700000111000111000111000001000000 -> NaN Invalid_operation
dqand276 and 1000000111000111000111000000001000 0800000111000111000111000010100000 -> NaN Invalid_operation
dqand277 and 1000000111000111000111000000000100 0900000111000111000111000000010000 -> NaN Invalid_operation
-- test LSD
dqand280 and 0010000111000111000111000000000002 1000000111000111000111000100000001 -> NaN Invalid_operation
dqand281 and 0001000111000111000111000000000007 1000000111000111000111001000000011 -> NaN Invalid_operation
dqand282 and 0000000111000111000111100000000008 1000000111000111000111010000000001 -> NaN Invalid_operation
dqand283 and 0000000111000111000111010000000009 1000000111000111000111100000000001 -> NaN Invalid_operation
dqand284 and 1000000111000111000111001000000000 0001000111000111000111000000000002 -> NaN Invalid_operation
dqand285 and 1000000111000111000111000100000000 0010000111000111000111000000000007 -> NaN Invalid_operation
dqand286 and 1000000111000111000111000010000000 0100000111000111000111000000000008 -> NaN Invalid_operation
dqand287 and 1000000111000111000111000001000000 1000000111000111000111000000000009 -> NaN Invalid_operation
-- test Middie
dqand288 and 0010000111000111000111000020000000 1000000111000111000111001000000000 -> NaN Invalid_operation
dqand289 and 0001000111000111000111000070000001 1000000111000111000111000100000000 -> NaN Invalid_operation
dqand290 and 0000000111000111000111100080000010 1000000111000111000111000010000000 -> NaN Invalid_operation
dqand291 and 0000000111000111000111010090000100 1000000111000111000111000001000000 -> NaN Invalid_operation
dqand292 and 1000000111000111000111001000001000 0000000111000111000111000020100000 -> NaN Invalid_operation
dqand293 and 1000000111000111000111000100010000 0000000111000111000111000070010000 -> NaN Invalid_operation
dqand294 and 1000000111000111000111000010100000 0000000111000111000111000080001000 -> NaN Invalid_operation
dqand295 and 1000000111000111000111000001000000 0000000111000111000111000090000100 -> NaN Invalid_operation
-- signs
dqand296 and -1000000111000111000111000001000000 -0000001110001110001110010000000100 -> NaN Invalid_operation
dqand297 and -1000000111000111000111000001000000 0000001110001110001110000010000100 -> NaN Invalid_operation
dqand298 and 1000000111000111000111000001000000 -0000001110001110001110001000000100 -> NaN Invalid_operation
dqand299 and 1000000111000111000111000001000000 0000001110001110001110000011000100 -> 110000110000110000001000000
-- Nmax, Nmin, Ntiny-like
dqand331 and 2 9.99999999E+999 -> NaN Invalid_operation
dqand332 and 3 1E-999 -> NaN Invalid_operation
dqand333 and 4 1.00000000E-999 -> NaN Invalid_operation
dqand334 and 5 1E-900 -> NaN Invalid_operation
dqand335 and 6 -1E-900 -> NaN Invalid_operation
dqand336 and 7 -1.00000000E-999 -> NaN Invalid_operation
dqand337 and 8 -1E-999 -> NaN Invalid_operation
dqand338 and 9 -9.99999999E+999 -> NaN Invalid_operation
dqand341 and 9.99999999E+999 -18 -> NaN Invalid_operation
dqand342 and 1E-999 01 -> NaN Invalid_operation
dqand343 and 1.00000000E-999 -18 -> NaN Invalid_operation
dqand344 and 1E-900 18 -> NaN Invalid_operation
dqand345 and -1E-900 -10 -> NaN Invalid_operation
dqand346 and -1.00000000E-999 18 -> NaN Invalid_operation
dqand347 and -1E-999 10 -> NaN Invalid_operation
dqand348 and -9.99999999E+999 -18 -> NaN Invalid_operation
-- A few other non-integers
dqand361 and 1.0 1 -> NaN Invalid_operation
dqand362 and 1E+1 1 -> NaN Invalid_operation
dqand363 and 0.0 1 -> NaN Invalid_operation
dqand364 and 0E+1 1 -> NaN Invalid_operation
dqand365 and 9.9 1 -> NaN Invalid_operation
dqand366 and 9E+1 1 -> NaN Invalid_operation
dqand371 and 0 1.0 -> NaN Invalid_operation
dqand372 and 0 1E+1 -> NaN Invalid_operation
dqand373 and 0 0.0 -> NaN Invalid_operation
dqand374 and 0 0E+1 -> NaN Invalid_operation
dqand375 and 0 9.9 -> NaN Invalid_operation
dqand376 and 0 9E+1 -> NaN Invalid_operation
-- All Specials are in error
dqand780 and -Inf -Inf -> NaN Invalid_operation
dqand781 and -Inf -1000 -> NaN Invalid_operation
dqand782 and -Inf -1 -> NaN Invalid_operation
dqand783 and -Inf -0 -> NaN Invalid_operation
dqand784 and -Inf 0 -> NaN Invalid_operation
dqand785 and -Inf 1 -> NaN Invalid_operation
dqand786 and -Inf 1000 -> NaN Invalid_operation
dqand787 and -1000 -Inf -> NaN Invalid_operation
dqand788 and -Inf -Inf -> NaN Invalid_operation
dqand789 and -1 -Inf -> NaN Invalid_operation
dqand790 and -0 -Inf -> NaN Invalid_operation
dqand791 and 0 -Inf -> NaN Invalid_operation
dqand792 and 1 -Inf -> NaN Invalid_operation
dqand793 and 1000 -Inf -> NaN Invalid_operation
dqand794 and Inf -Inf -> NaN Invalid_operation
dqand800 and Inf -Inf -> NaN Invalid_operation
dqand801 and Inf -1000 -> NaN Invalid_operation
dqand802 and Inf -1 -> NaN Invalid_operation
dqand803 and Inf -0 -> NaN Invalid_operation
dqand804 and Inf 0 -> NaN Invalid_operation
dqand805 and Inf 1 -> NaN Invalid_operation
dqand806 and Inf 1000 -> NaN Invalid_operation
dqand807 and Inf Inf -> NaN Invalid_operation
dqand808 and -1000 Inf -> NaN Invalid_operation
dqand809 and -Inf Inf -> NaN Invalid_operation
dqand810 and -1 Inf -> NaN Invalid_operation
dqand811 and -0 Inf -> NaN Invalid_operation
dqand812 and 0 Inf -> NaN Invalid_operation
dqand813 and 1 Inf -> NaN Invalid_operation
dqand814 and 1000 Inf -> NaN Invalid_operation
dqand815 and Inf Inf -> NaN Invalid_operation
dqand821 and NaN -Inf -> NaN Invalid_operation
dqand822 and NaN -1000 -> NaN Invalid_operation
dqand823 and NaN -1 -> NaN Invalid_operation
dqand824 and NaN -0 -> NaN Invalid_operation
dqand825 and NaN 0 -> NaN Invalid_operation
dqand826 and NaN 1 -> NaN Invalid_operation
dqand827 and NaN 1000 -> NaN Invalid_operation
dqand828 and NaN Inf -> NaN Invalid_operation
dqand829 and NaN NaN -> NaN Invalid_operation
dqand830 and -Inf NaN -> NaN Invalid_operation
dqand831 and -1000 NaN -> NaN Invalid_operation
dqand832 and -1 NaN -> NaN Invalid_operation
dqand833 and -0 NaN -> NaN Invalid_operation
dqand834 and 0 NaN -> NaN Invalid_operation
dqand835 and 1 NaN -> NaN Invalid_operation
dqand836 and 1000 NaN -> NaN Invalid_operation
dqand837 and Inf NaN -> NaN Invalid_operation
dqand841 and sNaN -Inf -> NaN Invalid_operation
dqand842 and sNaN -1000 -> NaN Invalid_operation
dqand843 and sNaN -1 -> NaN Invalid_operation
dqand844 and sNaN -0 -> NaN Invalid_operation
dqand845 and sNaN 0 -> NaN Invalid_operation
dqand846 and sNaN 1 -> NaN Invalid_operation
dqand847 and sNaN 1000 -> NaN Invalid_operation
dqand848 and sNaN NaN -> NaN Invalid_operation
dqand849 and sNaN sNaN -> NaN Invalid_operation
dqand850 and NaN sNaN -> NaN Invalid_operation
dqand851 and -Inf sNaN -> NaN Invalid_operation
dqand852 and -1000 sNaN -> NaN Invalid_operation
dqand853 and -1 sNaN -> NaN Invalid_operation
dqand854 and -0 sNaN -> NaN Invalid_operation
dqand855 and 0 sNaN -> NaN Invalid_operation
dqand856 and 1 sNaN -> NaN Invalid_operation
dqand857 and 1000 sNaN -> NaN Invalid_operation
dqand858 and Inf sNaN -> NaN Invalid_operation
dqand859 and NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqand861 and NaN1 -Inf -> NaN Invalid_operation
dqand862 and +NaN2 -1000 -> NaN Invalid_operation
dqand863 and NaN3 1000 -> NaN Invalid_operation
dqand864 and NaN4 Inf -> NaN Invalid_operation
dqand865 and NaN5 +NaN6 -> NaN Invalid_operation
dqand866 and -Inf NaN7 -> NaN Invalid_operation
dqand867 and -1000 NaN8 -> NaN Invalid_operation
dqand868 and 1000 NaN9 -> NaN Invalid_operation
dqand869 and Inf +NaN10 -> NaN Invalid_operation
dqand871 and sNaN11 -Inf -> NaN Invalid_operation
dqand872 and sNaN12 -1000 -> NaN Invalid_operation
dqand873 and sNaN13 1000 -> NaN Invalid_operation
dqand874 and sNaN14 NaN17 -> NaN Invalid_operation
dqand875 and sNaN15 sNaN18 -> NaN Invalid_operation
dqand876 and NaN16 sNaN19 -> NaN Invalid_operation
dqand877 and -Inf +sNaN20 -> NaN Invalid_operation
dqand878 and -1000 sNaN21 -> NaN Invalid_operation
dqand879 and 1000 sNaN22 -> NaN Invalid_operation
dqand880 and Inf sNaN23 -> NaN Invalid_operation
dqand881 and +NaN25 +sNaN24 -> NaN Invalid_operation
dqand882 and -NaN26 NaN28 -> NaN Invalid_operation
dqand883 and -sNaN27 sNaN29 -> NaN Invalid_operation
dqand884 and 1000 -NaN30 -> NaN Invalid_operation
dqand885 and 1000 -sNaN31 -> NaN Invalid_operation

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,372 @@
------------------------------------------------------------------------
-- dqCanonical.decTest -- test decQuad canonical results --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- This file tests that copy operations leave uncanonical operands
-- unchanged, and vice versa
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Uncanonical declets are: abc, where:
-- a=1,2,3
-- b=6,7,e,f
-- c=e,f
-- assert some standard (canonical) values; this tests that FromString
-- produces canonical results (many more in decimalNN)
dqcan001 apply 9.999999999999999999999999999999999E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan002 apply 0 -> #22080000000000000000000000000000
dqcan003 apply 1 -> #22080000000000000000000000000001
dqcan004 apply -1 -> #a2080000000000000000000000000001
dqcan005 apply Infinity -> #78000000000000000000000000000000
dqcan006 apply -Infinity -> #f8000000000000000000000000000000
dqcan007 apply -NaN -> #fc000000000000000000000000000000
dqcan008 apply -sNaN -> #fe000000000000000000000000000000
dqcan009 apply NaN999999999999999999999999999999999 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan010 apply sNaN999999999999999999999999999999999 -> #7e000ff3fcff3fcff3fcff3fcff3fcff
decan011 apply 9999999999999999999999999999999999 -> #6e080ff3fcff3fcff3fcff3fcff3fcff
dqcan012 apply 7.50 -> #220780000000000000000000000003d0
dqcan013 apply 9.99 -> #220780000000000000000000000000ff
-- Base tests for canonical encodings (individual operator
-- propagation is tested later)
-- Finites: declets in coefficient
dqcan021 canonical #77ffcff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan022 canonical #77fffff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan023 canonical #77ffcffffcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan024 canonical #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan025 canonical #77ffcff3fcffffcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan026 canonical #77ffcff3fcff3ffff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan027 canonical #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan028 canonical #77ffcff3fcff3fcff3ffff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan029 canonical #77ffcff3fcff3fcff3fcffffcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan030 canonical #77ffcff3fcff3fcff3fcff3ffff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan031 canonical #77ffcff3fcff3fcff3fcff3fcffffcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan032 canonical #77ffcff3fcff3fcff3fcff3fcff3ffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-- NaN: declets in payload
dqcan061 canonical #7c000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan062 canonical #7c000ffffcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan063 canonical #7c000ff3ffff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan064 canonical #7c000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan065 canonical #7c000ff3fcff3ffff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan066 canonical #7c000ff3fcff3fcffffcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan067 canonical #7c000ff3fcff3fcff3ffff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan068 canonical #7c000ff3fcff3fcff3fcffffcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan069 canonical #7c000ff3fcff3fcff3fcff3ffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan070 canonical #7c000ff3fcff3fcff3fcff3fcffffcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan071 canonical #7c000ff3fcff3fcff3fcff3fcff3ffff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-- NaN: exponent continuation bits [excluding sNaN selector]
dqcan081 canonical #7d000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan082 canonical #7c800ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan083 canonical #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan084 canonical #7c200ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan085 canonical #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan086 canonical #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan087 canonical #7c040ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan088 canonical #7c020ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan089 canonical #7c010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan090 canonical #7c008ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan091 canonical #7c004ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-- sNaN: declets in payload
dqcan101 canonical #7e000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan102 canonical #7e000ffffcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan103 canonical #7e000ff3ffff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan104 canonical #7e000ff3fcffffcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan105 canonical #7e000ff3fcff3ffff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan106 canonical #7e000ff3fcff3fcffffcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan107 canonical #7e000ff3fcff3fcff3ffff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan108 canonical #7e000ff3fcff3fcff3fcffffcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan109 canonical #7e000ff3fcff3fcff3fcff3ffff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan100 canonical #7e000ff3fcff3fcff3fcff3fcffffcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan111 canonical #7e000ff3fcff3fcff3fcff3fcff3ffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-- sNaN: exponent continuation bits [excluding sNaN selector]
dqcan121 canonical #7f000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan122 canonical #7e800ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan123 canonical #7e400ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan124 canonical #7e200ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan125 canonical #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan126 canonical #7e080ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan127 canonical #7e040ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan128 canonical #7e020ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan129 canonical #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan130 canonical #7e008ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
dqcan131 canonical #7e004ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-- Inf: exponent continuation bits
dqcan137 canonical #78000000000000000000000000000000 -> #78000000000000000000000000000000
dqcan138 canonical #79000000000000000000000000000000 -> #78000000000000000000000000000000
dqcan139 canonical #7a000000000000000000000000000000 -> #78000000000000000000000000000000
dqcan140 canonical #78800000000000000000000000000000 -> #78000000000000000000000000000000
dqcan141 canonical #78400000000000000000000000000000 -> #78000000000000000000000000000000
dqcan142 canonical #78200000000000000000000000000000 -> #78000000000000000000000000000000
dqcan143 canonical #78100000000000000000000000000000 -> #78000000000000000000000000000000
dqcan144 canonical #78080000000000000000000000000000 -> #78000000000000000000000000000000
dqcan145 canonical #78040000000000000000000000000000 -> #78000000000000000000000000000000
dqcan146 canonical #78020000000000000000000000000000 -> #78000000000000000000000000000000
dqcan147 canonical #78010000000000000000000000000000 -> #78000000000000000000000000000000
dqcan148 canonical #78008000000000000000000000000000 -> #78000000000000000000000000000000
dqcan149 canonical #78004000000000000000000000000000 -> #78000000000000000000000000000000
-- Inf: coefficient continuation bits (first, last, and a few others)
dqcan150 canonical #78000000000000000000000000000000 -> #78000000000000000000000000000000
dqcan151 canonical #78020000000000000000000000000000 -> #78000000000000000000000000000000
dqcan152 canonical #78000000000000000000000000000001 -> #78000000000000000000000000000000
dqcan153 canonical #78010000000000000000000000000000 -> #78000000000000000000000000000000
dqcan154 canonical #78002000000000000000000000000000 -> #78000000000000000000000000000000
dqcan155 canonical #78000800000000000000000000000000 -> #78000000000000000000000000000000
dqcan156 canonical #78000020000000000000000000000000 -> #78000000000000000000000000000000
dqcan157 canonical #78000004000000000000000000000000 -> #78000000000000000000000000000000
dqcan158 canonical #78000000400000000000000000000000 -> #78000000000000000000000000000000
dqcan159 canonical #78000000080000000000000000000000 -> #78000000000000000000000000000000
dqcan160 canonical #78000000004000000000000000000000 -> #78000000000000000000000000000000
dqcan161 canonical #78000000000200000000000000000000 -> #78000000000000000000000000000000
dqcan162 canonical #78000000000080000000000000000000 -> #78000000000000000000000000000000
dqcan163 canonical #78000000000002000000000000000000 -> #78000000000000000000000000000000
dqcan164 canonical #78000000000000400000000000000000 -> #78000000000000000000000000000000
dqcan165 canonical #78000000000000080000000000000000 -> #78000000000000000000000000000000
dqcan166 canonical #78000000000000001000000000000000 -> #78000000000000000000000000000000
dqcan167 canonical #78000000000000000200000000000000 -> #78000000000000000000000000000000
dqcan168 canonical #78000000000000000080000000000000 -> #78000000000000000000000000000000
dqcan169 canonical #78000000000000000004000000000000 -> #78000000000000000000000000000000
dqcan170 canonical #78000000000000000000400000000000 -> #78000000000000000000000000000000
dqcan171 canonical #78000000000000000000010000000000 -> #78000000000000000000000000000000
dqcan172 canonical #78000000000000000000002000000000 -> #78000000000000000000000000000000
dqcan173 canonical #78000000000000000000000400000000 -> #78000000000000000000000000000000
dqcan174 canonical #78000000000000000000000080000000 -> #78000000000000000000000000000000
dqcan175 canonical #78000000000000000000000002000000 -> #78000000000000000000000000000000
dqcan176 canonical #78000000000000000000000000400000 -> #78000000000000000000000000000000
dqcan177 canonical #78000000000000000000000000020000 -> #78000000000000000000000000000000
dqcan178 canonical #78000000000000000000000000001000 -> #78000000000000000000000000000000
dqcan179 canonical #78000000000000000000000000000400 -> #78000000000000000000000000000000
dqcan180 canonical #78000000000000000000000000000020 -> #78000000000000000000000000000000
dqcan181 canonical #78000000000000000000000000000008 -> #78000000000000000000000000000000
-- Now the operators -- trying to check paths that might fail to
-- canonicalize propagated operands
----- Add:
-- Finites: neutral 0
dqcan202 add 0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
dqcan203 add #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-- tiny zero
dqcan204 add 0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded
dqcan205 add #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded
-- tiny non zero
dqcan206 add -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded
dqcan207 add #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded
-- NaN: declets in payload
dqcan211 add 0 #7c000ff3fcff3fcff3fcfffffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan212 add #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-- NaN: exponent continuation bits [excluding sNaN selector]
dqcan213 add 0 #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan214 add #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-- sNaN: declets in payload
dqcan215 add 0 #7e000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
dqcan216 add #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
-- sNaN: exponent continuation bits [excluding sNaN selector]
dqcan217 add 0 #7e500ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
dqcan218 add #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
-- Inf: exponent continuation bits
dqcan220 add 0 #78010000000000000000000000000000 -> #78000000000000000000000000000000
dqcan221 add #78680000000000000000000000000000 0 -> #78000000000000000000000000000000
-- Inf: coefficient continuation bits
dqcan222 add 0 #78002000000000000000000000000000 -> #78000000000000000000000000000000
dqcan223 add #78000000000000000000000000000001 0 -> #78000000000000000000000000000000
dqcan224 add 0 #78000002000000000000000000000000 -> #78000000000000000000000000000000
dqcan225 add #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000
dqcan226 add 0 #78000000000000000005000000000000 -> #78000000000000000000000000000000
dqcan227 add #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000
----- Class: [does not return encoded]
----- Compare:
dqcan231 compare -Inf 1 -> #a2080000000000000000000000000001
dqcan232 compare -Inf -Inf -> #22080000000000000000000000000000
dqcan233 compare 1 -Inf -> #22080000000000000000000000000001
dqcan234 compare #7c010ff3fcff3fcff3fcff3ffffffcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan235 compare #7e004ff3fcff3fcff3ffffffcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
----- CompareSig:
dqcan241 comparesig -Inf 1 -> #a2080000000000000000000000000001
dqcan242 comparesig -Inf -Inf -> #22080000000000000000000000000000
dqcan243 comparesig 1 -Inf -> #22080000000000000000000000000001
dqcan244 comparesig #7c400ff3ffff3fcff3fcff3fcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
dqcan245 comparesig #7e050ff3fcfffffff3fcff3fcff3fcff -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
----- Copy: [does not usually canonicalize]
-- finites
dqcan250 copy #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff
dqcan251 copy #ee080ff3fcff3ffff3fcff3ffff3fcff -> #ee080ff3fcff3ffff3fcff3ffff3fcff
-- NaNs
dqcan252 copy #7c000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff
dqcan253 copy #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff
-- sNaN
dqcan254 copy #7e003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff
dqcan255 copy #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff
-- Inf
dqcan258 copy #78002000000000000000000000000000 -> #78002000000000000000000000000000
dqcan259 copy #78000000000010000000000000100000 -> #78000000000010000000000000100000
----- CopyAbs: [does not usually canonicalize]
-- finites
dqcan260 copyabs #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff
dqcan261 copyabs #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff
-- NaNs
dqcan262 copyabs #fc000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff
dqcan263 copyabs #fc080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff
-- sNaN
dqcan264 copyabs #fe003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff
dqcan265 copyabs #fe100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff
-- Inf
dqcan268 copyabs #f8002000000000000000000000000000 -> #78002000000000000000000000000000
dqcan269 copyabs #f8000000000000700700700000000000 -> #78000000000000700700700000000000
----- CopyNegate: [does not usually canonicalize]
-- finites
dqcan270 copynegate #6e080ff3fcff3fcfffffff3fcfffffff -> #ee080ff3fcff3fcfffffff3fcfffffff
dqcan271 copynegate #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff
-- NaNs
dqcan272 copynegate #7c000ff3fcffffffffffff3fcff3fcff -> #fc000ff3fcffffffffffff3fcff3fcff
dqcan273 copynegate #7c080ff3fcff3fcff3fcff3fcff3fcff -> #fc080ff3fcff3fcff3fcff3fcff3fcff
-- sNaN
dqcan274 copynegate #7e003ff3fcffffffffffffffcff3fcff -> #fe003ff3fcffffffffffffffcff3fcff
dqcan275 copynegate #7e100ff3fcff3fcff3fcff3fcff3fcff -> #fe100ff3fcff3fcff3fcff3fcff3fcff
-- Inf
dqcan278 copynegate #78002000000000000000000000000000 -> #f8002000000000000000000000000000
dqcan279 copynegate #78000000000010000000000000100000 -> #f8000000000010000000000000100000
----- CopySign: [does not usually canonicalize]
-- finites
dqcan280 copysign #6e080ff3fcff3fcfffffff3fcfffffff -1 -> #ee080ff3fcff3fcfffffff3fcfffffff
dqcan281 copysign #ee080ff3fcff3ffff3fcff3ffff3fcff 1 -> #6e080ff3fcff3ffff3fcff3ffff3fcff
-- NaNs
dqcan282 copysign #7c000ff3fcffffffffffffffcff3fcff -1 -> #fc000ff3fcffffffffffffffcff3fcff
dqcan283 copysign #7c080ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c080ff3fcff3fcff3fcff3fcff3fcff
-- sNaN
dqcan284 copysign #7e003ff3fcffffffffffffffcff3fcff -1 -> #fe003ff3fcffffffffffffffcff3fcff
dqcan285 copysign #7e100ff3fcff3fcff3fcff3fcff3fcff 1 -> #7e100ff3fcff3fcff3fcff3fcff3fcff
-- Inf
dqcan288 copysign #78002000000000000000000000000000 -1 -> #f8002000000000000000000000000000
dqcan289 copysign #78000000000010000000000000100000 1 -> #78000000000010000000000000100000
----- Multiply:
-- Finites: neutral 0
dqcan302 multiply 1 #77ffff3fcff3fcff0000000000000000 -> #77ffff3fcff3fcff0000000000000000
dqcan303 multiply #77fcffffcff3fcff0000000000000000 1 -> #77fccfffcff3fcff0000000000000000
-- negative
dqcan306 multiply -1 #77ffff3fcff3fcff0000000000000000 -> #f7ffff3fcff3fcff0000000000000000
dqcan307 multiply #77fcffffcff3fcff0000000000000000 -1 -> #f7fccfffcff3fcff0000000000000000
-- NaN: declets in payload
dqcan311 multiply 1 #7c03ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000
dqcan312 multiply #7c03ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000
-- NaN: exponent continuation bits [excluding sNaN selector]
dqcan313 multiply 1 #7c40ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000
dqcan314 multiply #7c40ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000
-- sNaN: declets in payload
dqcan315 multiply 1 #7e00ffffcff3fcff0000000000000000 -> #7c000fffcff3fcff0000000000000000 Invalid_operation
dqcan316 multiply #7e00ffffcff3fcff0000000000000000 1 -> #7c000fffcff3fcff0000000000000000 Invalid_operation
-- sNaN: exponent continuation bits [excluding sNaN selector]
dqcan317 multiply 1 #7e80ff3fcff3fcff0000000000000000 -> #7c003f3fcff3fcff0000000000000000 Invalid_operation
dqcan318 multiply #7e80ff3fcff3fcff0000000000000000 1 -> #7c003f3fcff3fcff0000000000000000 Invalid_operation
-- Inf: exponent continuation bits
dqcan320 multiply 1 #78800000000000000000000000000000 -> #78000000000000000000000000000000
dqcan321 multiply #78800000000000000000000000000000 1 -> #78000000000000000000000000000000
-- Inf: coefficient continuation bits
dqcan322 multiply 1 #78020000000000000000000000000000 -> #78000000000000000000000000000000
dqcan323 multiply #78020000000000000000000000000000 1 -> #78000000000000000000000000000000
dqcan324 multiply 1 #78000000000000010000000000000000 -> #78000000000000000000000000000000
dqcan325 multiply #78000000000000010000000000000000 1 -> #78000000000000000000000000000000
dqcan326 multiply 1 #78000020000000000000000000000000 -> #78000000000000000000000000000000
dqcan327 multiply #78000020000000000000000000000000 1 -> #78000000000000000000000000000000
----- Quantize:
dqcan401 quantize #ee080ff3fcff3fcff3fffffffff3fcff 0 -> #ee080ff3fcff3fcff3fcff3fcff3fcff
dqcan402 quantize #ee080ff3fffffffffffcff3fcff3fcff 0 -> #ee080ff3fcff3fcff3fcff3fcff3fcff
dqcan403 quantize #78800000000000000000000000000000 Inf -> #78000000000000000000000000000000
dqcan404 quantize #78020000000000000000000000000000 -Inf -> #78000000000000000000000000000000
dqcan410 quantize #7c080ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan411 quantize #fc000ff3fcfffffff3fcff3fcff3fcff 1 -> #fc000ff3fcff3fcff3fcff3fcff3fcff
dqcan412 quantize #7e100ff3fcff3fcff3fcff3fcff3fcff 1 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
dqcan413 quantize #fe000ff3fcff3fcff3ffffffcff3fcff 1 -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
----- Subtract:
-- Finites: neutral 0
dqcan502 subtract 0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff
dqcan503 subtract #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-- tiny zero
dqcan504 subtract 0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Rounded
dqcan505 subtract #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded
-- tiny non zero
dqcan506 subtract -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded
dqcan507 subtract #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded
-- NaN: declets in payload
dqcan511 subtract 0 #7c000ff3fcff3fcff3fcfffffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan512 subtract #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-- NaN: exponent continuation bits [excluding sNaN selector]
dqcan513 subtract 0 #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan514 subtract #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-- sNaN: declets in payload
dqcan515 subtract 0 #7e000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
dqcan516 subtract #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
-- sNaN: exponent continuation bits [excluding sNaN selector]
dqcan517 subtract 0 #7e500ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
dqcan518 subtract #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
-- Inf: exponent continuation bits
dqcan520 subtract 0 #78010000000000000000000000000000 -> #f8000000000000000000000000000000
dqcan521 subtract #78680000000000000000000000000000 0 -> #78000000000000000000000000000000
-- Inf: coefficient continuation bits
dqcan522 subtract 0 #78002000000000000000000000000000 -> #f8000000000000000000000000000000
dqcan523 subtract #78000000000000000000000000000001 0 -> #78000000000000000000000000000000
dqcan524 subtract 0 #78000002000000000000000000000000 -> #f8000000000000000000000000000000
dqcan525 subtract #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000
dqcan526 subtract 0 #78000000000000000005000000000000 -> #f8000000000000000000000000000000
dqcan527 subtract #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000
----- ToIntegral:
dqcan601 tointegralx #6e080ff3fdff3fcff3fcff3fcff3fcff -> #6e080ff3fcff3fcff3fcff3fcff3fcff
dqcan602 tointegralx #ee080ff3fcff3ffff3fcff3fcff3fcff -> #ee080ff3fcff3fcff3fcff3fcff3fcff
dqcan603 tointegralx #78800000000000000000000000000000 -> #78000000000000000000000000000000
dqcan604 tointegralx #78020000000000000000000000000000 -> #78000000000000000000000000000000
dqcan614 tointegralx #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
dqcan615 tointegralx #fc000ff3fcff3fcff3fcffffcff3fcff -> #fc000ff3fcff3fcff3fcff3fcff3fcff
dqcan616 tointegralx #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
dqcan617 tointegralx #fe000ff3fcff3fcff3fdff3fcff3fcff -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
-- uncanonical 3999, 39.99, 3.99, 0.399, and negatives
dqcan618 tointegralx #22080000000000000000000000000fff -> #22080000000000000000000000000cff
dqcan619 tointegralx #22078000000000000000000000000fff -> #22080000000000000000000000000040 Inexact Rounded
dqcan620 tointegralx #22074000000000000000000000000fff -> #22080000000000000000000000000004 Inexact Rounded
dqcan621 tointegralx #22070000000000000000000000000fff -> #22080000000000000000000000000000 Inexact Rounded
dqcan622 tointegralx #a2080000000000000000000000000fff -> #a2080000000000000000000000000cff
dqcan623 tointegralx #a2078000000000000000000000000fff -> #a2080000000000000000000000000040 Inexact Rounded
dqcan624 tointegralx #a2074000000000000000000000000fff -> #a2080000000000000000000000000004 Inexact Rounded
dqcan625 tointegralx #a2070000000000000000000000000fff -> #a2080000000000000000000000000000 Inexact Rounded

View file

@ -0,0 +1,77 @@
------------------------------------------------------------------------
-- dqClass.decTest -- decQuad Class operations --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- [New 2006.11.27]
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
dqcla001 class 0 -> +Zero
dqcla002 class 0.00 -> +Zero
dqcla003 class 0E+5 -> +Zero
dqcla004 class 1E-6176 -> +Subnormal
dqcla005 class 0.1E-6143 -> +Subnormal
dqcla006 class 0.99999999999999999999999999999999E-6143 -> +Subnormal
dqcla007 class 1.00000000000000000000000000000000E-6143 -> +Normal
dqcla008 class 1E-6143 -> +Normal
dqcla009 class 1E-100 -> +Normal
dqcla010 class 1E-10 -> +Normal
dqcla012 class 1E-1 -> +Normal
dqcla013 class 1 -> +Normal
dqcla014 class 2.50 -> +Normal
dqcla015 class 100.100 -> +Normal
dqcla016 class 1E+30 -> +Normal
dqcla017 class 1E+6144 -> +Normal
dqcla018 class 9.99999999999999999999999999999999E+6144 -> +Normal
dqcla019 class Inf -> +Infinity
dqcla021 class -0 -> -Zero
dqcla022 class -0.00 -> -Zero
dqcla023 class -0E+5 -> -Zero
dqcla024 class -1E-6176 -> -Subnormal
dqcla025 class -0.1E-6143 -> -Subnormal
dqcla026 class -0.99999999999999999999999999999999E-6143 -> -Subnormal
dqcla027 class -1.00000000000000000000000000000000E-6143 -> -Normal
dqcla028 class -1E-6143 -> -Normal
dqcla029 class -1E-100 -> -Normal
dqcla030 class -1E-10 -> -Normal
dqcla032 class -1E-1 -> -Normal
dqcla033 class -1 -> -Normal
dqcla034 class -2.50 -> -Normal
dqcla035 class -100.100 -> -Normal
dqcla036 class -1E+30 -> -Normal
dqcla037 class -1E+6144 -> -Normal
dqcla0614 class -9.99999999999999999999999999999999E+6144 -> -Normal
dqcla039 class -Inf -> -Infinity
dqcla041 class NaN -> NaN
dqcla042 class -NaN -> NaN
dqcla043 class +NaN12345 -> NaN
dqcla044 class sNaN -> sNaN
dqcla045 class -sNaN -> sNaN
dqcla046 class +sNaN12345 -> sNaN

View file

@ -0,0 +1,753 @@
------------------------------------------------------------------------
-- dqCompare.decTest -- decQuad comparison that allows quiet NaNs --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necessary).
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqcom001 compare -2 -2 -> 0
dqcom002 compare -2 -1 -> -1
dqcom003 compare -2 0 -> -1
dqcom004 compare -2 1 -> -1
dqcom005 compare -2 2 -> -1
dqcom006 compare -1 -2 -> 1
dqcom007 compare -1 -1 -> 0
dqcom008 compare -1 0 -> -1
dqcom009 compare -1 1 -> -1
dqcom010 compare -1 2 -> -1
dqcom011 compare 0 -2 -> 1
dqcom012 compare 0 -1 -> 1
dqcom013 compare 0 0 -> 0
dqcom014 compare 0 1 -> -1
dqcom015 compare 0 2 -> -1
dqcom016 compare 1 -2 -> 1
dqcom017 compare 1 -1 -> 1
dqcom018 compare 1 0 -> 1
dqcom019 compare 1 1 -> 0
dqcom020 compare 1 2 -> -1
dqcom021 compare 2 -2 -> 1
dqcom022 compare 2 -1 -> 1
dqcom023 compare 2 0 -> 1
dqcom025 compare 2 1 -> 1
dqcom026 compare 2 2 -> 0
dqcom031 compare -20 -20 -> 0
dqcom032 compare -20 -10 -> -1
dqcom033 compare -20 00 -> -1
dqcom034 compare -20 10 -> -1
dqcom035 compare -20 20 -> -1
dqcom036 compare -10 -20 -> 1
dqcom037 compare -10 -10 -> 0
dqcom038 compare -10 00 -> -1
dqcom039 compare -10 10 -> -1
dqcom040 compare -10 20 -> -1
dqcom041 compare 00 -20 -> 1
dqcom042 compare 00 -10 -> 1
dqcom043 compare 00 00 -> 0
dqcom044 compare 00 10 -> -1
dqcom045 compare 00 20 -> -1
dqcom046 compare 10 -20 -> 1
dqcom047 compare 10 -10 -> 1
dqcom048 compare 10 00 -> 1
dqcom049 compare 10 10 -> 0
dqcom050 compare 10 20 -> -1
dqcom051 compare 20 -20 -> 1
dqcom052 compare 20 -10 -> 1
dqcom053 compare 20 00 -> 1
dqcom055 compare 20 10 -> 1
dqcom056 compare 20 20 -> 0
dqcom061 compare -2.0 -2.0 -> 0
dqcom062 compare -2.0 -1.0 -> -1
dqcom063 compare -2.0 0.0 -> -1
dqcom064 compare -2.0 1.0 -> -1
dqcom065 compare -2.0 2.0 -> -1
dqcom066 compare -1.0 -2.0 -> 1
dqcom067 compare -1.0 -1.0 -> 0
dqcom068 compare -1.0 0.0 -> -1
dqcom069 compare -1.0 1.0 -> -1
dqcom070 compare -1.0 2.0 -> -1
dqcom071 compare 0.0 -2.0 -> 1
dqcom072 compare 0.0 -1.0 -> 1
dqcom073 compare 0.0 0.0 -> 0
dqcom074 compare 0.0 1.0 -> -1
dqcom075 compare 0.0 2.0 -> -1
dqcom076 compare 1.0 -2.0 -> 1
dqcom077 compare 1.0 -1.0 -> 1
dqcom078 compare 1.0 0.0 -> 1
dqcom079 compare 1.0 1.0 -> 0
dqcom080 compare 1.0 2.0 -> -1
dqcom081 compare 2.0 -2.0 -> 1
dqcom082 compare 2.0 -1.0 -> 1
dqcom083 compare 2.0 0.0 -> 1
dqcom085 compare 2.0 1.0 -> 1
dqcom086 compare 2.0 2.0 -> 0
-- now some cases which might overflow if subtract were used
dqcom090 compare 9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> 0
dqcom091 compare -9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> -1
dqcom092 compare 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 1
dqcom093 compare -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0
-- some differing length/exponent cases
dqcom100 compare 7.0 7.0 -> 0
dqcom101 compare 7.0 7 -> 0
dqcom102 compare 7 7.0 -> 0
dqcom103 compare 7E+0 7.0 -> 0
dqcom104 compare 70E-1 7.0 -> 0
dqcom105 compare 0.7E+1 7 -> 0
dqcom106 compare 70E-1 7 -> 0
dqcom107 compare 7.0 7E+0 -> 0
dqcom108 compare 7.0 70E-1 -> 0
dqcom109 compare 7 0.7E+1 -> 0
dqcom110 compare 7 70E-1 -> 0
dqcom120 compare 8.0 7.0 -> 1
dqcom121 compare 8.0 7 -> 1
dqcom122 compare 8 7.0 -> 1
dqcom123 compare 8E+0 7.0 -> 1
dqcom124 compare 80E-1 7.0 -> 1
dqcom125 compare 0.8E+1 7 -> 1
dqcom126 compare 80E-1 7 -> 1
dqcom127 compare 8.0 7E+0 -> 1
dqcom128 compare 8.0 70E-1 -> 1
dqcom129 compare 8 0.7E+1 -> 1
dqcom130 compare 8 70E-1 -> 1
dqcom140 compare 8.0 9.0 -> -1
dqcom141 compare 8.0 9 -> -1
dqcom142 compare 8 9.0 -> -1
dqcom143 compare 8E+0 9.0 -> -1
dqcom144 compare 80E-1 9.0 -> -1
dqcom145 compare 0.8E+1 9 -> -1
dqcom146 compare 80E-1 9 -> -1
dqcom147 compare 8.0 9E+0 -> -1
dqcom148 compare 8.0 90E-1 -> -1
dqcom149 compare 8 0.9E+1 -> -1
dqcom150 compare 8 90E-1 -> -1
-- and again, with sign changes -+ ..
dqcom200 compare -7.0 7.0 -> -1
dqcom201 compare -7.0 7 -> -1
dqcom202 compare -7 7.0 -> -1
dqcom203 compare -7E+0 7.0 -> -1
dqcom204 compare -70E-1 7.0 -> -1
dqcom205 compare -0.7E+1 7 -> -1
dqcom206 compare -70E-1 7 -> -1
dqcom207 compare -7.0 7E+0 -> -1
dqcom208 compare -7.0 70E-1 -> -1
dqcom209 compare -7 0.7E+1 -> -1
dqcom210 compare -7 70E-1 -> -1
dqcom220 compare -8.0 7.0 -> -1
dqcom221 compare -8.0 7 -> -1
dqcom222 compare -8 7.0 -> -1
dqcom223 compare -8E+0 7.0 -> -1
dqcom224 compare -80E-1 7.0 -> -1
dqcom225 compare -0.8E+1 7 -> -1
dqcom226 compare -80E-1 7 -> -1
dqcom227 compare -8.0 7E+0 -> -1
dqcom228 compare -8.0 70E-1 -> -1
dqcom229 compare -8 0.7E+1 -> -1
dqcom230 compare -8 70E-1 -> -1
dqcom240 compare -8.0 9.0 -> -1
dqcom241 compare -8.0 9 -> -1
dqcom242 compare -8 9.0 -> -1
dqcom243 compare -8E+0 9.0 -> -1
dqcom244 compare -80E-1 9.0 -> -1
dqcom245 compare -0.8E+1 9 -> -1
dqcom246 compare -80E-1 9 -> -1
dqcom247 compare -8.0 9E+0 -> -1
dqcom248 compare -8.0 90E-1 -> -1
dqcom249 compare -8 0.9E+1 -> -1
dqcom250 compare -8 90E-1 -> -1
-- and again, with sign changes +- ..
dqcom300 compare 7.0 -7.0 -> 1
dqcom301 compare 7.0 -7 -> 1
dqcom302 compare 7 -7.0 -> 1
dqcom303 compare 7E+0 -7.0 -> 1
dqcom304 compare 70E-1 -7.0 -> 1
dqcom305 compare .7E+1 -7 -> 1
dqcom306 compare 70E-1 -7 -> 1
dqcom307 compare 7.0 -7E+0 -> 1
dqcom308 compare 7.0 -70E-1 -> 1
dqcom309 compare 7 -.7E+1 -> 1
dqcom310 compare 7 -70E-1 -> 1
dqcom320 compare 8.0 -7.0 -> 1
dqcom321 compare 8.0 -7 -> 1
dqcom322 compare 8 -7.0 -> 1
dqcom323 compare 8E+0 -7.0 -> 1
dqcom324 compare 80E-1 -7.0 -> 1
dqcom325 compare .8E+1 -7 -> 1
dqcom326 compare 80E-1 -7 -> 1
dqcom327 compare 8.0 -7E+0 -> 1
dqcom328 compare 8.0 -70E-1 -> 1
dqcom329 compare 8 -.7E+1 -> 1
dqcom330 compare 8 -70E-1 -> 1
dqcom340 compare 8.0 -9.0 -> 1
dqcom341 compare 8.0 -9 -> 1
dqcom342 compare 8 -9.0 -> 1
dqcom343 compare 8E+0 -9.0 -> 1
dqcom344 compare 80E-1 -9.0 -> 1
dqcom345 compare .8E+1 -9 -> 1
dqcom346 compare 80E-1 -9 -> 1
dqcom347 compare 8.0 -9E+0 -> 1
dqcom348 compare 8.0 -90E-1 -> 1
dqcom349 compare 8 -.9E+1 -> 1
dqcom350 compare 8 -90E-1 -> 1
-- and again, with sign changes -- ..
dqcom400 compare -7.0 -7.0 -> 0
dqcom401 compare -7.0 -7 -> 0
dqcom402 compare -7 -7.0 -> 0
dqcom403 compare -7E+0 -7.0 -> 0
dqcom404 compare -70E-1 -7.0 -> 0
dqcom405 compare -.7E+1 -7 -> 0
dqcom406 compare -70E-1 -7 -> 0
dqcom407 compare -7.0 -7E+0 -> 0
dqcom408 compare -7.0 -70E-1 -> 0
dqcom409 compare -7 -.7E+1 -> 0
dqcom410 compare -7 -70E-1 -> 0
dqcom420 compare -8.0 -7.0 -> -1
dqcom421 compare -8.0 -7 -> -1
dqcom422 compare -8 -7.0 -> -1
dqcom423 compare -8E+0 -7.0 -> -1
dqcom424 compare -80E-1 -7.0 -> -1
dqcom425 compare -.8E+1 -7 -> -1
dqcom426 compare -80E-1 -7 -> -1
dqcom427 compare -8.0 -7E+0 -> -1
dqcom428 compare -8.0 -70E-1 -> -1
dqcom429 compare -8 -.7E+1 -> -1
dqcom430 compare -8 -70E-1 -> -1
dqcom440 compare -8.0 -9.0 -> 1
dqcom441 compare -8.0 -9 -> 1
dqcom442 compare -8 -9.0 -> 1
dqcom443 compare -8E+0 -9.0 -> 1
dqcom444 compare -80E-1 -9.0 -> 1
dqcom445 compare -.8E+1 -9 -> 1
dqcom446 compare -80E-1 -9 -> 1
dqcom447 compare -8.0 -9E+0 -> 1
dqcom448 compare -8.0 -90E-1 -> 1
dqcom449 compare -8 -.9E+1 -> 1
dqcom450 compare -8 -90E-1 -> 1
-- misalignment traps for little-endian
dqcom451 compare 1.0 0.1 -> 1
dqcom452 compare 0.1 1.0 -> -1
dqcom453 compare 10.0 0.1 -> 1
dqcom454 compare 0.1 10.0 -> -1
dqcom455 compare 100 1.0 -> 1
dqcom456 compare 1.0 100 -> -1
dqcom457 compare 1000 10.0 -> 1
dqcom458 compare 10.0 1000 -> -1
dqcom459 compare 10000 100.0 -> 1
dqcom460 compare 100.0 10000 -> -1
dqcom461 compare 100000 1000.0 -> 1
dqcom462 compare 1000.0 100000 -> -1
dqcom463 compare 1000000 10000.0 -> 1
dqcom464 compare 10000.0 1000000 -> -1
-- testcases that subtract to lots of zeros at boundaries [pgr]
dqcom473 compare 123.9999999999999999994560000000000E-89 123.999999999999999999456E-89 -> 0
dqcom474 compare 123.999999999999999999456000000000E+89 123.999999999999999999456E+89 -> 0
dqcom475 compare 123.99999999999999999945600000000E-89 123.999999999999999999456E-89 -> 0
dqcom476 compare 123.9999999999999999994560000000E+89 123.999999999999999999456E+89 -> 0
dqcom477 compare 123.999999999999999999456000000E-89 123.999999999999999999456E-89 -> 0
dqcom478 compare 123.99999999999999999945600000E+89 123.999999999999999999456E+89 -> 0
dqcom479 compare 123.9999999999999999994560000E-89 123.999999999999999999456E-89 -> 0
dqcom480 compare 123.999999999999999999456000E+89 123.999999999999999999456E+89 -> 0
dqcom481 compare 123.99999999999999999945600E-89 123.999999999999999999456E-89 -> 0
dqcom482 compare 123.9999999999999999994560E+89 123.999999999999999999456E+89 -> 0
dqcom483 compare 123.999999999999999999456E-89 123.999999999999999999456E-89 -> 0
dqcom487 compare 123.999999999999999999456E+89 123.9999999999999999994560000000000E+89 -> 0
dqcom488 compare 123.999999999999999999456E-89 123.999999999999999999456000000000E-89 -> 0
dqcom489 compare 123.999999999999999999456E+89 123.99999999999999999945600000000E+89 -> 0
dqcom490 compare 123.999999999999999999456E-89 123.9999999999999999994560000000E-89 -> 0
dqcom491 compare 123.999999999999999999456E+89 123.999999999999999999456000000E+89 -> 0
dqcom492 compare 123.999999999999999999456E-89 123.99999999999999999945600000E-89 -> 0
dqcom493 compare 123.999999999999999999456E+89 123.9999999999999999994560000E+89 -> 0
dqcom494 compare 123.999999999999999999456E-89 123.999999999999999999456000E-89 -> 0
dqcom495 compare 123.999999999999999999456E+89 123.99999999999999999945600E+89 -> 0
dqcom496 compare 123.999999999999999999456E-89 123.9999999999999999994560E-89 -> 0
dqcom497 compare 123.999999999999999999456E+89 123.999999999999999999456E+89 -> 0
-- wide-ranging, around precision; signs equal
dqcom500 compare 1 1E-15 -> 1
dqcom501 compare 1 1E-14 -> 1
dqcom502 compare 1 1E-13 -> 1
dqcom503 compare 1 1E-12 -> 1
dqcom504 compare 1 1E-11 -> 1
dqcom505 compare 1 1E-10 -> 1
dqcom506 compare 1 1E-9 -> 1
dqcom507 compare 1 1E-8 -> 1
dqcom508 compare 1 1E-7 -> 1
dqcom509 compare 1 1E-6 -> 1
dqcom510 compare 1 1E-5 -> 1
dqcom511 compare 1 1E-4 -> 1
dqcom512 compare 1 1E-3 -> 1
dqcom513 compare 1 1E-2 -> 1
dqcom514 compare 1 1E-1 -> 1
dqcom515 compare 1 1E-0 -> 0
dqcom516 compare 1 1E+1 -> -1
dqcom517 compare 1 1E+2 -> -1
dqcom518 compare 1 1E+3 -> -1
dqcom519 compare 1 1E+4 -> -1
dqcom521 compare 1 1E+5 -> -1
dqcom522 compare 1 1E+6 -> -1
dqcom523 compare 1 1E+7 -> -1
dqcom524 compare 1 1E+8 -> -1
dqcom525 compare 1 1E+9 -> -1
dqcom526 compare 1 1E+10 -> -1
dqcom527 compare 1 1E+11 -> -1
dqcom528 compare 1 1E+12 -> -1
dqcom529 compare 1 1E+13 -> -1
dqcom530 compare 1 1E+14 -> -1
dqcom531 compare 1 1E+15 -> -1
-- LR swap
dqcom540 compare 1E-15 1 -> -1
dqcom541 compare 1E-14 1 -> -1
dqcom542 compare 1E-13 1 -> -1
dqcom543 compare 1E-12 1 -> -1
dqcom544 compare 1E-11 1 -> -1
dqcom545 compare 1E-10 1 -> -1
dqcom546 compare 1E-9 1 -> -1
dqcom547 compare 1E-8 1 -> -1
dqcom548 compare 1E-7 1 -> -1
dqcom549 compare 1E-6 1 -> -1
dqcom550 compare 1E-5 1 -> -1
dqcom551 compare 1E-4 1 -> -1
dqcom552 compare 1E-3 1 -> -1
dqcom553 compare 1E-2 1 -> -1
dqcom554 compare 1E-1 1 -> -1
dqcom555 compare 1E-0 1 -> 0
dqcom556 compare 1E+1 1 -> 1
dqcom557 compare 1E+2 1 -> 1
dqcom558 compare 1E+3 1 -> 1
dqcom559 compare 1E+4 1 -> 1
dqcom561 compare 1E+5 1 -> 1
dqcom562 compare 1E+6 1 -> 1
dqcom563 compare 1E+7 1 -> 1
dqcom564 compare 1E+8 1 -> 1
dqcom565 compare 1E+9 1 -> 1
dqcom566 compare 1E+10 1 -> 1
dqcom567 compare 1E+11 1 -> 1
dqcom568 compare 1E+12 1 -> 1
dqcom569 compare 1E+13 1 -> 1
dqcom570 compare 1E+14 1 -> 1
dqcom571 compare 1E+15 1 -> 1
-- similar with a useful coefficient, one side only
dqcom580 compare 0.000000987654321 1E-15 -> 1
dqcom581 compare 0.000000987654321 1E-14 -> 1
dqcom582 compare 0.000000987654321 1E-13 -> 1
dqcom583 compare 0.000000987654321 1E-12 -> 1
dqcom584 compare 0.000000987654321 1E-11 -> 1
dqcom585 compare 0.000000987654321 1E-10 -> 1
dqcom586 compare 0.000000987654321 1E-9 -> 1
dqcom587 compare 0.000000987654321 1E-8 -> 1
dqcom588 compare 0.000000987654321 1E-7 -> 1
dqcom589 compare 0.000000987654321 1E-6 -> -1
dqcom590 compare 0.000000987654321 1E-5 -> -1
dqcom591 compare 0.000000987654321 1E-4 -> -1
dqcom592 compare 0.000000987654321 1E-3 -> -1
dqcom593 compare 0.000000987654321 1E-2 -> -1
dqcom594 compare 0.000000987654321 1E-1 -> -1
dqcom595 compare 0.000000987654321 1E-0 -> -1
dqcom596 compare 0.000000987654321 1E+1 -> -1
dqcom597 compare 0.000000987654321 1E+2 -> -1
dqcom598 compare 0.000000987654321 1E+3 -> -1
dqcom599 compare 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
dqcom600 compare 12 12.2345 -> -1
dqcom601 compare 12.0 12.2345 -> -1
dqcom602 compare 12.00 12.2345 -> -1
dqcom603 compare 12.000 12.2345 -> -1
dqcom604 compare 12.0000 12.2345 -> -1
dqcom605 compare 12.00000 12.2345 -> -1
dqcom606 compare 12.000000 12.2345 -> -1
dqcom607 compare 12.0000000 12.2345 -> -1
dqcom608 compare 12.00000000 12.2345 -> -1
dqcom609 compare 12.000000000 12.2345 -> -1
dqcom610 compare 12.1234 12 -> 1
dqcom611 compare 12.1234 12.0 -> 1
dqcom612 compare 12.1234 12.00 -> 1
dqcom613 compare 12.1234 12.000 -> 1
dqcom614 compare 12.1234 12.0000 -> 1
dqcom615 compare 12.1234 12.00000 -> 1
dqcom616 compare 12.1234 12.000000 -> 1
dqcom617 compare 12.1234 12.0000000 -> 1
dqcom618 compare 12.1234 12.00000000 -> 1
dqcom619 compare 12.1234 12.000000000 -> 1
dqcom620 compare -12 -12.2345 -> 1
dqcom621 compare -12.0 -12.2345 -> 1
dqcom622 compare -12.00 -12.2345 -> 1
dqcom623 compare -12.000 -12.2345 -> 1
dqcom624 compare -12.0000 -12.2345 -> 1
dqcom625 compare -12.00000 -12.2345 -> 1
dqcom626 compare -12.000000 -12.2345 -> 1
dqcom627 compare -12.0000000 -12.2345 -> 1
dqcom628 compare -12.00000000 -12.2345 -> 1
dqcom629 compare -12.000000000 -12.2345 -> 1
dqcom630 compare -12.1234 -12 -> -1
dqcom631 compare -12.1234 -12.0 -> -1
dqcom632 compare -12.1234 -12.00 -> -1
dqcom633 compare -12.1234 -12.000 -> -1
dqcom634 compare -12.1234 -12.0000 -> -1
dqcom635 compare -12.1234 -12.00000 -> -1
dqcom636 compare -12.1234 -12.000000 -> -1
dqcom637 compare -12.1234 -12.0000000 -> -1
dqcom638 compare -12.1234 -12.00000000 -> -1
dqcom639 compare -12.1234 -12.000000000 -> -1
-- extended zeros
dqcom640 compare 0 0 -> 0
dqcom641 compare 0 -0 -> 0
dqcom642 compare 0 -0.0 -> 0
dqcom643 compare 0 0.0 -> 0
dqcom644 compare -0 0 -> 0
dqcom645 compare -0 -0 -> 0
dqcom646 compare -0 -0.0 -> 0
dqcom647 compare -0 0.0 -> 0
dqcom648 compare 0.0 0 -> 0
dqcom649 compare 0.0 -0 -> 0
dqcom650 compare 0.0 -0.0 -> 0
dqcom651 compare 0.0 0.0 -> 0
dqcom652 compare -0.0 0 -> 0
dqcom653 compare -0.0 -0 -> 0
dqcom654 compare -0.0 -0.0 -> 0
dqcom655 compare -0.0 0.0 -> 0
dqcom656 compare -0E1 0.0 -> 0
dqcom657 compare -0E2 0.0 -> 0
dqcom658 compare 0E1 0.0 -> 0
dqcom659 compare 0E2 0.0 -> 0
dqcom660 compare -0E1 0 -> 0
dqcom661 compare -0E2 0 -> 0
dqcom662 compare 0E1 0 -> 0
dqcom663 compare 0E2 0 -> 0
dqcom664 compare -0E1 -0E1 -> 0
dqcom665 compare -0E2 -0E1 -> 0
dqcom666 compare 0E1 -0E1 -> 0
dqcom667 compare 0E2 -0E1 -> 0
dqcom668 compare -0E1 -0E2 -> 0
dqcom669 compare -0E2 -0E2 -> 0
dqcom670 compare 0E1 -0E2 -> 0
dqcom671 compare 0E2 -0E2 -> 0
dqcom672 compare -0E1 0E1 -> 0
dqcom673 compare -0E2 0E1 -> 0
dqcom674 compare 0E1 0E1 -> 0
dqcom675 compare 0E2 0E1 -> 0
dqcom676 compare -0E1 0E2 -> 0
dqcom677 compare -0E2 0E2 -> 0
dqcom678 compare 0E1 0E2 -> 0
dqcom679 compare 0E2 0E2 -> 0
-- trailing zeros; unit-y
dqcom680 compare 12 12 -> 0
dqcom681 compare 12 12.0 -> 0
dqcom682 compare 12 12.00 -> 0
dqcom683 compare 12 12.000 -> 0
dqcom684 compare 12 12.0000 -> 0
dqcom685 compare 12 12.00000 -> 0
dqcom686 compare 12 12.000000 -> 0
dqcom687 compare 12 12.0000000 -> 0
dqcom688 compare 12 12.00000000 -> 0
dqcom689 compare 12 12.000000000 -> 0
dqcom690 compare 12 12 -> 0
dqcom691 compare 12.0 12 -> 0
dqcom692 compare 12.00 12 -> 0
dqcom693 compare 12.000 12 -> 0
dqcom694 compare 12.0000 12 -> 0
dqcom695 compare 12.00000 12 -> 0
dqcom696 compare 12.000000 12 -> 0
dqcom697 compare 12.0000000 12 -> 0
dqcom698 compare 12.00000000 12 -> 0
dqcom699 compare 12.000000000 12 -> 0
-- first, second, & last digit
dqcom700 compare 1234567899999999999999999990123456 1234567899999999999999999990123455 -> 1
dqcom701 compare 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0
dqcom702 compare 1234567899999999999999999990123456 1234567899999999999999999990123457 -> -1
dqcom703 compare 1234567899999999999999999990123456 0234567899999999999999999990123456 -> 1
dqcom704 compare 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0
dqcom705 compare 1234567899999999999999999990123456 2234567899999999999999999990123456 -> -1
dqcom706 compare 1134567899999999999999999990123456 1034567899999999999999999990123456 -> 1
dqcom707 compare 1134567899999999999999999990123456 1134567899999999999999999990123456 -> 0
dqcom708 compare 1134567899999999999999999990123456 1234567899999999999999999990123456 -> -1
-- miscellaneous
dqcom721 compare 12345678000 1 -> 1
dqcom722 compare 1 12345678000 -> -1
dqcom723 compare 1234567800 1 -> 1
dqcom724 compare 1 1234567800 -> -1
dqcom725 compare 1234567890 1 -> 1
dqcom726 compare 1 1234567890 -> -1
dqcom727 compare 1234567891 1 -> 1
dqcom728 compare 1 1234567891 -> -1
dqcom729 compare 12345678901 1 -> 1
dqcom730 compare 1 12345678901 -> -1
dqcom731 compare 1234567896 1 -> 1
dqcom732 compare 1 1234567896 -> -1
-- residue cases at lower precision
dqcom740 compare 1 0.9999999 -> 1
dqcom741 compare 1 0.999999 -> 1
dqcom742 compare 1 0.99999 -> 1
dqcom743 compare 1 1.0000 -> 0
dqcom744 compare 1 1.00001 -> -1
dqcom745 compare 1 1.000001 -> -1
dqcom746 compare 1 1.0000001 -> -1
dqcom750 compare 0.9999999 1 -> -1
dqcom751 compare 0.999999 1 -> -1
dqcom752 compare 0.99999 1 -> -1
dqcom753 compare 1.0000 1 -> 0
dqcom754 compare 1.00001 1 -> 1
dqcom755 compare 1.000001 1 -> 1
dqcom756 compare 1.0000001 1 -> 1
-- Specials
dqcom780 compare Inf -Inf -> 1
dqcom781 compare Inf -1000 -> 1
dqcom782 compare Inf -1 -> 1
dqcom783 compare Inf -0 -> 1
dqcom784 compare Inf 0 -> 1
dqcom785 compare Inf 1 -> 1
dqcom786 compare Inf 1000 -> 1
dqcom787 compare Inf Inf -> 0
dqcom788 compare -1000 Inf -> -1
dqcom789 compare -Inf Inf -> -1
dqcom790 compare -1 Inf -> -1
dqcom791 compare -0 Inf -> -1
dqcom792 compare 0 Inf -> -1
dqcom793 compare 1 Inf -> -1
dqcom794 compare 1000 Inf -> -1
dqcom795 compare Inf Inf -> 0
dqcom800 compare -Inf -Inf -> 0
dqcom801 compare -Inf -1000 -> -1
dqcom802 compare -Inf -1 -> -1
dqcom803 compare -Inf -0 -> -1
dqcom804 compare -Inf 0 -> -1
dqcom805 compare -Inf 1 -> -1
dqcom806 compare -Inf 1000 -> -1
dqcom807 compare -Inf Inf -> -1
dqcom808 compare -Inf -Inf -> 0
dqcom809 compare -1000 -Inf -> 1
dqcom810 compare -1 -Inf -> 1
dqcom811 compare -0 -Inf -> 1
dqcom812 compare 0 -Inf -> 1
dqcom813 compare 1 -Inf -> 1
dqcom814 compare 1000 -Inf -> 1
dqcom815 compare Inf -Inf -> 1
dqcom821 compare NaN -Inf -> NaN
dqcom822 compare NaN -1000 -> NaN
dqcom823 compare NaN -1 -> NaN
dqcom824 compare NaN -0 -> NaN
dqcom825 compare NaN 0 -> NaN
dqcom826 compare NaN 1 -> NaN
dqcom827 compare NaN 1000 -> NaN
dqcom828 compare NaN Inf -> NaN
dqcom829 compare NaN NaN -> NaN
dqcom830 compare -Inf NaN -> NaN
dqcom831 compare -1000 NaN -> NaN
dqcom832 compare -1 NaN -> NaN
dqcom833 compare -0 NaN -> NaN
dqcom834 compare 0 NaN -> NaN
dqcom835 compare 1 NaN -> NaN
dqcom836 compare 1000 NaN -> NaN
dqcom837 compare Inf NaN -> NaN
dqcom838 compare -NaN -NaN -> -NaN
dqcom839 compare +NaN -NaN -> NaN
dqcom840 compare -NaN +NaN -> -NaN
dqcom841 compare sNaN -Inf -> NaN Invalid_operation
dqcom842 compare sNaN -1000 -> NaN Invalid_operation
dqcom843 compare sNaN -1 -> NaN Invalid_operation
dqcom844 compare sNaN -0 -> NaN Invalid_operation
dqcom845 compare sNaN 0 -> NaN Invalid_operation
dqcom846 compare sNaN 1 -> NaN Invalid_operation
dqcom847 compare sNaN 1000 -> NaN Invalid_operation
dqcom848 compare sNaN NaN -> NaN Invalid_operation
dqcom849 compare sNaN sNaN -> NaN Invalid_operation
dqcom850 compare NaN sNaN -> NaN Invalid_operation
dqcom851 compare -Inf sNaN -> NaN Invalid_operation
dqcom852 compare -1000 sNaN -> NaN Invalid_operation
dqcom853 compare -1 sNaN -> NaN Invalid_operation
dqcom854 compare -0 sNaN -> NaN Invalid_operation
dqcom855 compare 0 sNaN -> NaN Invalid_operation
dqcom856 compare 1 sNaN -> NaN Invalid_operation
dqcom857 compare 1000 sNaN -> NaN Invalid_operation
dqcom858 compare Inf sNaN -> NaN Invalid_operation
dqcom859 compare NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqcom860 compare NaN9 -Inf -> NaN9
dqcom861 compare NaN8 999 -> NaN8
dqcom862 compare NaN77 Inf -> NaN77
dqcom863 compare -NaN67 NaN5 -> -NaN67
dqcom864 compare -Inf -NaN4 -> -NaN4
dqcom865 compare -999 -NaN33 -> -NaN33
dqcom866 compare Inf NaN2 -> NaN2
dqcom867 compare -NaN41 -NaN42 -> -NaN41
dqcom868 compare +NaN41 -NaN42 -> NaN41
dqcom869 compare -NaN41 +NaN42 -> -NaN41
dqcom870 compare +NaN41 +NaN42 -> NaN41
dqcom871 compare -sNaN99 -Inf -> -NaN99 Invalid_operation
dqcom872 compare sNaN98 -11 -> NaN98 Invalid_operation
dqcom873 compare sNaN97 NaN -> NaN97 Invalid_operation
dqcom874 compare sNaN16 sNaN94 -> NaN16 Invalid_operation
dqcom875 compare NaN85 sNaN83 -> NaN83 Invalid_operation
dqcom876 compare -Inf sNaN92 -> NaN92 Invalid_operation
dqcom877 compare 088 sNaN81 -> NaN81 Invalid_operation
dqcom878 compare Inf sNaN90 -> NaN90 Invalid_operation
dqcom879 compare NaN -sNaN89 -> -NaN89 Invalid_operation
-- wide range
dqcom880 compare +1.23456789012345E-0 9E+6144 -> -1
dqcom881 compare 9E+6144 +1.23456789012345E-0 -> 1
dqcom882 compare +0.100 9E-6143 -> 1
dqcom883 compare 9E-6143 +0.100 -> -1
dqcom885 compare -1.23456789012345E-0 9E+6144 -> -1
dqcom886 compare 9E+6144 -1.23456789012345E-0 -> 1
dqcom887 compare -0.100 9E-6143 -> -1
dqcom888 compare 9E-6143 -0.100 -> 1
-- signs
dqcom901 compare 1e+77 1e+11 -> 1
dqcom902 compare 1e+77 -1e+11 -> 1
dqcom903 compare -1e+77 1e+11 -> -1
dqcom904 compare -1e+77 -1e+11 -> -1
dqcom905 compare 1e-77 1e-11 -> -1
dqcom906 compare 1e-77 -1e-11 -> 1
dqcom907 compare -1e-77 1e-11 -> -1
dqcom908 compare -1e-77 -1e-11 -> 1
-- full alignment range, both ways
dqcomp1001 compare 1 1.000000000000000000000000000000000 -> 0
dqcomp1002 compare 1 1.00000000000000000000000000000000 -> 0
dqcomp1003 compare 1 1.0000000000000000000000000000000 -> 0
dqcomp1004 compare 1 1.000000000000000000000000000000 -> 0
dqcomp1005 compare 1 1.00000000000000000000000000000 -> 0
dqcomp1006 compare 1 1.0000000000000000000000000000 -> 0
dqcomp1007 compare 1 1.000000000000000000000000000 -> 0
dqcomp1008 compare 1 1.00000000000000000000000000 -> 0
dqcomp1009 compare 1 1.0000000000000000000000000 -> 0
dqcomp1010 compare 1 1.000000000000000000000000 -> 0
dqcomp1011 compare 1 1.00000000000000000000000 -> 0
dqcomp1012 compare 1 1.0000000000000000000000 -> 0
dqcomp1013 compare 1 1.000000000000000000000 -> 0
dqcomp1014 compare 1 1.00000000000000000000 -> 0
dqcomp1015 compare 1 1.0000000000000000000 -> 0
dqcomp1016 compare 1 1.000000000000000000 -> 0
dqcomp1017 compare 1 1.00000000000000000 -> 0
dqcomp1018 compare 1 1.0000000000000000 -> 0
dqcomp1019 compare 1 1.000000000000000 -> 0
dqcomp1020 compare 1 1.00000000000000 -> 0
dqcomp1021 compare 1 1.0000000000000 -> 0
dqcomp1022 compare 1 1.000000000000 -> 0
dqcomp1023 compare 1 1.00000000000 -> 0
dqcomp1024 compare 1 1.0000000000 -> 0
dqcomp1025 compare 1 1.000000000 -> 0
dqcomp1026 compare 1 1.00000000 -> 0
dqcomp1027 compare 1 1.0000000 -> 0
dqcomp1028 compare 1 1.000000 -> 0
dqcomp1029 compare 1 1.00000 -> 0
dqcomp1030 compare 1 1.0000 -> 0
dqcomp1031 compare 1 1.000 -> 0
dqcomp1032 compare 1 1.00 -> 0
dqcomp1033 compare 1 1.0 -> 0
dqcomp1041 compare 1.000000000000000000000000000000000 1 -> 0
dqcomp1042 compare 1.00000000000000000000000000000000 1 -> 0
dqcomp1043 compare 1.0000000000000000000000000000000 1 -> 0
dqcomp1044 compare 1.000000000000000000000000000000 1 -> 0
dqcomp1045 compare 1.00000000000000000000000000000 1 -> 0
dqcomp1046 compare 1.0000000000000000000000000000 1 -> 0
dqcomp1047 compare 1.000000000000000000000000000 1 -> 0
dqcomp1048 compare 1.00000000000000000000000000 1 -> 0
dqcomp1049 compare 1.0000000000000000000000000 1 -> 0
dqcomp1050 compare 1.000000000000000000000000 1 -> 0
dqcomp1051 compare 1.00000000000000000000000 1 -> 0
dqcomp1052 compare 1.0000000000000000000000 1 -> 0
dqcomp1053 compare 1.000000000000000000000 1 -> 0
dqcomp1054 compare 1.00000000000000000000 1 -> 0
dqcomp1055 compare 1.0000000000000000000 1 -> 0
dqcomp1056 compare 1.000000000000000000 1 -> 0
dqcomp1057 compare 1.00000000000000000 1 -> 0
dqcomp1058 compare 1.0000000000000000 1 -> 0
dqcomp1059 compare 1.000000000000000 1 -> 0
dqcomp1060 compare 1.00000000000000 1 -> 0
dqcomp1061 compare 1.0000000000000 1 -> 0
dqcomp1062 compare 1.000000000000 1 -> 0
dqcomp1063 compare 1.00000000000 1 -> 0
dqcomp1064 compare 1.0000000000 1 -> 0
dqcomp1065 compare 1.000000000 1 -> 0
dqcomp1066 compare 1.00000000 1 -> 0
dqcomp1067 compare 1.0000000 1 -> 0
dqcomp1068 compare 1.000000 1 -> 0
dqcomp1069 compare 1.00000 1 -> 0
dqcomp1070 compare 1.0000 1 -> 0
dqcomp1071 compare 1.000 1 -> 0
dqcomp1072 compare 1.00 1 -> 0
dqcomp1073 compare 1.0 1 -> 0
-- check MSD always detected non-zero
dqcomp1080 compare 0 0.000000000000000000000000000000000 -> 0
dqcomp1081 compare 0 1.000000000000000000000000000000000 -> -1
dqcomp1082 compare 0 2.000000000000000000000000000000000 -> -1
dqcomp1083 compare 0 3.000000000000000000000000000000000 -> -1
dqcomp1084 compare 0 4.000000000000000000000000000000000 -> -1
dqcomp1085 compare 0 5.000000000000000000000000000000000 -> -1
dqcomp1086 compare 0 6.000000000000000000000000000000000 -> -1
dqcomp1087 compare 0 7.000000000000000000000000000000000 -> -1
dqcomp1088 compare 0 8.000000000000000000000000000000000 -> -1
dqcomp1089 compare 0 9.000000000000000000000000000000000 -> -1
dqcomp1090 compare 0.000000000000000000000000000000000 0 -> 0
dqcomp1091 compare 1.000000000000000000000000000000000 0 -> 1
dqcomp1092 compare 2.000000000000000000000000000000000 0 -> 1
dqcomp1093 compare 3.000000000000000000000000000000000 0 -> 1
dqcomp1094 compare 4.000000000000000000000000000000000 0 -> 1
dqcomp1095 compare 5.000000000000000000000000000000000 0 -> 1
dqcomp1096 compare 6.000000000000000000000000000000000 0 -> 1
dqcomp1097 compare 7.000000000000000000000000000000000 0 -> 1
dqcomp1098 compare 8.000000000000000000000000000000000 0 -> 1
dqcomp1099 compare 9.000000000000000000000000000000000 0 -> 1
-- Null tests
dqcom990 compare 10 # -> NaN Invalid_operation
dqcom991 compare # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,647 @@
------------------------------------------------------------------------
-- dqCompareSig.decTest -- decQuad comparison; all NaNs signal --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necessary).
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqcms001 comparesig -2 -2 -> 0
dqcms002 comparesig -2 -1 -> -1
dqcms003 comparesig -2 0 -> -1
dqcms004 comparesig -2 1 -> -1
dqcms005 comparesig -2 2 -> -1
dqcms006 comparesig -1 -2 -> 1
dqcms007 comparesig -1 -1 -> 0
dqcms008 comparesig -1 0 -> -1
dqcms009 comparesig -1 1 -> -1
dqcms010 comparesig -1 2 -> -1
dqcms011 comparesig 0 -2 -> 1
dqcms012 comparesig 0 -1 -> 1
dqcms013 comparesig 0 0 -> 0
dqcms014 comparesig 0 1 -> -1
dqcms015 comparesig 0 2 -> -1
dqcms016 comparesig 1 -2 -> 1
dqcms017 comparesig 1 -1 -> 1
dqcms018 comparesig 1 0 -> 1
dqcms019 comparesig 1 1 -> 0
dqcms020 comparesig 1 2 -> -1
dqcms021 comparesig 2 -2 -> 1
dqcms022 comparesig 2 -1 -> 1
dqcms023 comparesig 2 0 -> 1
dqcms025 comparesig 2 1 -> 1
dqcms026 comparesig 2 2 -> 0
dqcms031 comparesig -20 -20 -> 0
dqcms032 comparesig -20 -10 -> -1
dqcms033 comparesig -20 00 -> -1
dqcms034 comparesig -20 10 -> -1
dqcms035 comparesig -20 20 -> -1
dqcms036 comparesig -10 -20 -> 1
dqcms037 comparesig -10 -10 -> 0
dqcms038 comparesig -10 00 -> -1
dqcms039 comparesig -10 10 -> -1
dqcms040 comparesig -10 20 -> -1
dqcms041 comparesig 00 -20 -> 1
dqcms042 comparesig 00 -10 -> 1
dqcms043 comparesig 00 00 -> 0
dqcms044 comparesig 00 10 -> -1
dqcms045 comparesig 00 20 -> -1
dqcms046 comparesig 10 -20 -> 1
dqcms047 comparesig 10 -10 -> 1
dqcms048 comparesig 10 00 -> 1
dqcms049 comparesig 10 10 -> 0
dqcms050 comparesig 10 20 -> -1
dqcms051 comparesig 20 -20 -> 1
dqcms052 comparesig 20 -10 -> 1
dqcms053 comparesig 20 00 -> 1
dqcms055 comparesig 20 10 -> 1
dqcms056 comparesig 20 20 -> 0
dqcms061 comparesig -2.0 -2.0 -> 0
dqcms062 comparesig -2.0 -1.0 -> -1
dqcms063 comparesig -2.0 0.0 -> -1
dqcms064 comparesig -2.0 1.0 -> -1
dqcms065 comparesig -2.0 2.0 -> -1
dqcms066 comparesig -1.0 -2.0 -> 1
dqcms067 comparesig -1.0 -1.0 -> 0
dqcms068 comparesig -1.0 0.0 -> -1
dqcms069 comparesig -1.0 1.0 -> -1
dqcms070 comparesig -1.0 2.0 -> -1
dqcms071 comparesig 0.0 -2.0 -> 1
dqcms072 comparesig 0.0 -1.0 -> 1
dqcms073 comparesig 0.0 0.0 -> 0
dqcms074 comparesig 0.0 1.0 -> -1
dqcms075 comparesig 0.0 2.0 -> -1
dqcms076 comparesig 1.0 -2.0 -> 1
dqcms077 comparesig 1.0 -1.0 -> 1
dqcms078 comparesig 1.0 0.0 -> 1
dqcms079 comparesig 1.0 1.0 -> 0
dqcms080 comparesig 1.0 2.0 -> -1
dqcms081 comparesig 2.0 -2.0 -> 1
dqcms082 comparesig 2.0 -1.0 -> 1
dqcms083 comparesig 2.0 0.0 -> 1
dqcms085 comparesig 2.0 1.0 -> 1
dqcms086 comparesig 2.0 2.0 -> 0
-- now some cases which might overflow if subtract were used
dqcms090 comparesig 9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> 0
dqcms091 comparesig -9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> -1
dqcms092 comparesig 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 1
dqcms093 comparesig -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0
-- some differing length/exponent cases
dqcms100 comparesig 7.0 7.0 -> 0
dqcms101 comparesig 7.0 7 -> 0
dqcms102 comparesig 7 7.0 -> 0
dqcms103 comparesig 7E+0 7.0 -> 0
dqcms104 comparesig 70E-1 7.0 -> 0
dqcms105 comparesig 0.7E+1 7 -> 0
dqcms106 comparesig 70E-1 7 -> 0
dqcms107 comparesig 7.0 7E+0 -> 0
dqcms108 comparesig 7.0 70E-1 -> 0
dqcms109 comparesig 7 0.7E+1 -> 0
dqcms110 comparesig 7 70E-1 -> 0
dqcms120 comparesig 8.0 7.0 -> 1
dqcms121 comparesig 8.0 7 -> 1
dqcms122 comparesig 8 7.0 -> 1
dqcms123 comparesig 8E+0 7.0 -> 1
dqcms124 comparesig 80E-1 7.0 -> 1
dqcms125 comparesig 0.8E+1 7 -> 1
dqcms126 comparesig 80E-1 7 -> 1
dqcms127 comparesig 8.0 7E+0 -> 1
dqcms128 comparesig 8.0 70E-1 -> 1
dqcms129 comparesig 8 0.7E+1 -> 1
dqcms130 comparesig 8 70E-1 -> 1
dqcms140 comparesig 8.0 9.0 -> -1
dqcms141 comparesig 8.0 9 -> -1
dqcms142 comparesig 8 9.0 -> -1
dqcms143 comparesig 8E+0 9.0 -> -1
dqcms144 comparesig 80E-1 9.0 -> -1
dqcms145 comparesig 0.8E+1 9 -> -1
dqcms146 comparesig 80E-1 9 -> -1
dqcms147 comparesig 8.0 9E+0 -> -1
dqcms148 comparesig 8.0 90E-1 -> -1
dqcms149 comparesig 8 0.9E+1 -> -1
dqcms150 comparesig 8 90E-1 -> -1
-- and again, with sign changes -+ ..
dqcms200 comparesig -7.0 7.0 -> -1
dqcms201 comparesig -7.0 7 -> -1
dqcms202 comparesig -7 7.0 -> -1
dqcms203 comparesig -7E+0 7.0 -> -1
dqcms204 comparesig -70E-1 7.0 -> -1
dqcms205 comparesig -0.7E+1 7 -> -1
dqcms206 comparesig -70E-1 7 -> -1
dqcms207 comparesig -7.0 7E+0 -> -1
dqcms208 comparesig -7.0 70E-1 -> -1
dqcms209 comparesig -7 0.7E+1 -> -1
dqcms210 comparesig -7 70E-1 -> -1
dqcms220 comparesig -8.0 7.0 -> -1
dqcms221 comparesig -8.0 7 -> -1
dqcms222 comparesig -8 7.0 -> -1
dqcms223 comparesig -8E+0 7.0 -> -1
dqcms224 comparesig -80E-1 7.0 -> -1
dqcms225 comparesig -0.8E+1 7 -> -1
dqcms226 comparesig -80E-1 7 -> -1
dqcms227 comparesig -8.0 7E+0 -> -1
dqcms228 comparesig -8.0 70E-1 -> -1
dqcms229 comparesig -8 0.7E+1 -> -1
dqcms230 comparesig -8 70E-1 -> -1
dqcms240 comparesig -8.0 9.0 -> -1
dqcms241 comparesig -8.0 9 -> -1
dqcms242 comparesig -8 9.0 -> -1
dqcms243 comparesig -8E+0 9.0 -> -1
dqcms244 comparesig -80E-1 9.0 -> -1
dqcms245 comparesig -0.8E+1 9 -> -1
dqcms246 comparesig -80E-1 9 -> -1
dqcms247 comparesig -8.0 9E+0 -> -1
dqcms248 comparesig -8.0 90E-1 -> -1
dqcms249 comparesig -8 0.9E+1 -> -1
dqcms250 comparesig -8 90E-1 -> -1
-- and again, with sign changes +- ..
dqcms300 comparesig 7.0 -7.0 -> 1
dqcms301 comparesig 7.0 -7 -> 1
dqcms302 comparesig 7 -7.0 -> 1
dqcms303 comparesig 7E+0 -7.0 -> 1
dqcms304 comparesig 70E-1 -7.0 -> 1
dqcms305 comparesig .7E+1 -7 -> 1
dqcms306 comparesig 70E-1 -7 -> 1
dqcms307 comparesig 7.0 -7E+0 -> 1
dqcms308 comparesig 7.0 -70E-1 -> 1
dqcms309 comparesig 7 -.7E+1 -> 1
dqcms310 comparesig 7 -70E-1 -> 1
dqcms320 comparesig 8.0 -7.0 -> 1
dqcms321 comparesig 8.0 -7 -> 1
dqcms322 comparesig 8 -7.0 -> 1
dqcms323 comparesig 8E+0 -7.0 -> 1
dqcms324 comparesig 80E-1 -7.0 -> 1
dqcms325 comparesig .8E+1 -7 -> 1
dqcms326 comparesig 80E-1 -7 -> 1
dqcms327 comparesig 8.0 -7E+0 -> 1
dqcms328 comparesig 8.0 -70E-1 -> 1
dqcms329 comparesig 8 -.7E+1 -> 1
dqcms330 comparesig 8 -70E-1 -> 1
dqcms340 comparesig 8.0 -9.0 -> 1
dqcms341 comparesig 8.0 -9 -> 1
dqcms342 comparesig 8 -9.0 -> 1
dqcms343 comparesig 8E+0 -9.0 -> 1
dqcms344 comparesig 80E-1 -9.0 -> 1
dqcms345 comparesig .8E+1 -9 -> 1
dqcms346 comparesig 80E-1 -9 -> 1
dqcms347 comparesig 8.0 -9E+0 -> 1
dqcms348 comparesig 8.0 -90E-1 -> 1
dqcms349 comparesig 8 -.9E+1 -> 1
dqcms350 comparesig 8 -90E-1 -> 1
-- and again, with sign changes -- ..
dqcms400 comparesig -7.0 -7.0 -> 0
dqcms401 comparesig -7.0 -7 -> 0
dqcms402 comparesig -7 -7.0 -> 0
dqcms403 comparesig -7E+0 -7.0 -> 0
dqcms404 comparesig -70E-1 -7.0 -> 0
dqcms405 comparesig -.7E+1 -7 -> 0
dqcms406 comparesig -70E-1 -7 -> 0
dqcms407 comparesig -7.0 -7E+0 -> 0
dqcms408 comparesig -7.0 -70E-1 -> 0
dqcms409 comparesig -7 -.7E+1 -> 0
dqcms410 comparesig -7 -70E-1 -> 0
dqcms420 comparesig -8.0 -7.0 -> -1
dqcms421 comparesig -8.0 -7 -> -1
dqcms422 comparesig -8 -7.0 -> -1
dqcms423 comparesig -8E+0 -7.0 -> -1
dqcms424 comparesig -80E-1 -7.0 -> -1
dqcms425 comparesig -.8E+1 -7 -> -1
dqcms426 comparesig -80E-1 -7 -> -1
dqcms427 comparesig -8.0 -7E+0 -> -1
dqcms428 comparesig -8.0 -70E-1 -> -1
dqcms429 comparesig -8 -.7E+1 -> -1
dqcms430 comparesig -8 -70E-1 -> -1
dqcms440 comparesig -8.0 -9.0 -> 1
dqcms441 comparesig -8.0 -9 -> 1
dqcms442 comparesig -8 -9.0 -> 1
dqcms443 comparesig -8E+0 -9.0 -> 1
dqcms444 comparesig -80E-1 -9.0 -> 1
dqcms445 comparesig -.8E+1 -9 -> 1
dqcms446 comparesig -80E-1 -9 -> 1
dqcms447 comparesig -8.0 -9E+0 -> 1
dqcms448 comparesig -8.0 -90E-1 -> 1
dqcms449 comparesig -8 -.9E+1 -> 1
dqcms450 comparesig -8 -90E-1 -> 1
-- testcases that subtract to lots of zeros at boundaries [pgr]
dqcms473 comparesig 123.9999999999999999994560000000000E-89 123.999999999999999999456E-89 -> 0
dqcms474 comparesig 123.999999999999999999456000000000E+89 123.999999999999999999456E+89 -> 0
dqcms475 comparesig 123.99999999999999999945600000000E-89 123.999999999999999999456E-89 -> 0
dqcms476 comparesig 123.9999999999999999994560000000E+89 123.999999999999999999456E+89 -> 0
dqcms477 comparesig 123.999999999999999999456000000E-89 123.999999999999999999456E-89 -> 0
dqcms478 comparesig 123.99999999999999999945600000E+89 123.999999999999999999456E+89 -> 0
dqcms479 comparesig 123.9999999999999999994560000E-89 123.999999999999999999456E-89 -> 0
dqcms480 comparesig 123.999999999999999999456000E+89 123.999999999999999999456E+89 -> 0
dqcms481 comparesig 123.99999999999999999945600E-89 123.999999999999999999456E-89 -> 0
dqcms482 comparesig 123.9999999999999999994560E+89 123.999999999999999999456E+89 -> 0
dqcms483 comparesig 123.999999999999999999456E-89 123.999999999999999999456E-89 -> 0
dqcms487 comparesig 123.999999999999999999456E+89 123.9999999999999999994560000000000E+89 -> 0
dqcms488 comparesig 123.999999999999999999456E-89 123.999999999999999999456000000000E-89 -> 0
dqcms489 comparesig 123.999999999999999999456E+89 123.99999999999999999945600000000E+89 -> 0
dqcms490 comparesig 123.999999999999999999456E-89 123.9999999999999999994560000000E-89 -> 0
dqcms491 comparesig 123.999999999999999999456E+89 123.999999999999999999456000000E+89 -> 0
dqcms492 comparesig 123.999999999999999999456E-89 123.99999999999999999945600000E-89 -> 0
dqcms493 comparesig 123.999999999999999999456E+89 123.9999999999999999994560000E+89 -> 0
dqcms494 comparesig 123.999999999999999999456E-89 123.999999999999999999456000E-89 -> 0
dqcms495 comparesig 123.999999999999999999456E+89 123.99999999999999999945600E+89 -> 0
dqcms496 comparesig 123.999999999999999999456E-89 123.9999999999999999994560E-89 -> 0
dqcms497 comparesig 123.999999999999999999456E+89 123.999999999999999999456E+89 -> 0
-- wide-ranging, around precision; signs equal
dqcms500 comparesig 1 1E-15 -> 1
dqcms501 comparesig 1 1E-14 -> 1
dqcms502 comparesig 1 1E-13 -> 1
dqcms503 comparesig 1 1E-12 -> 1
dqcms504 comparesig 1 1E-11 -> 1
dqcms505 comparesig 1 1E-10 -> 1
dqcms506 comparesig 1 1E-9 -> 1
dqcms507 comparesig 1 1E-8 -> 1
dqcms508 comparesig 1 1E-7 -> 1
dqcms509 comparesig 1 1E-6 -> 1
dqcms510 comparesig 1 1E-5 -> 1
dqcms511 comparesig 1 1E-4 -> 1
dqcms512 comparesig 1 1E-3 -> 1
dqcms513 comparesig 1 1E-2 -> 1
dqcms514 comparesig 1 1E-1 -> 1
dqcms515 comparesig 1 1E-0 -> 0
dqcms516 comparesig 1 1E+1 -> -1
dqcms517 comparesig 1 1E+2 -> -1
dqcms518 comparesig 1 1E+3 -> -1
dqcms519 comparesig 1 1E+4 -> -1
dqcms521 comparesig 1 1E+5 -> -1
dqcms522 comparesig 1 1E+6 -> -1
dqcms523 comparesig 1 1E+7 -> -1
dqcms524 comparesig 1 1E+8 -> -1
dqcms525 comparesig 1 1E+9 -> -1
dqcms526 comparesig 1 1E+10 -> -1
dqcms527 comparesig 1 1E+11 -> -1
dqcms528 comparesig 1 1E+12 -> -1
dqcms529 comparesig 1 1E+13 -> -1
dqcms530 comparesig 1 1E+14 -> -1
dqcms531 comparesig 1 1E+15 -> -1
-- LR swap
dqcms540 comparesig 1E-15 1 -> -1
dqcms541 comparesig 1E-14 1 -> -1
dqcms542 comparesig 1E-13 1 -> -1
dqcms543 comparesig 1E-12 1 -> -1
dqcms544 comparesig 1E-11 1 -> -1
dqcms545 comparesig 1E-10 1 -> -1
dqcms546 comparesig 1E-9 1 -> -1
dqcms547 comparesig 1E-8 1 -> -1
dqcms548 comparesig 1E-7 1 -> -1
dqcms549 comparesig 1E-6 1 -> -1
dqcms550 comparesig 1E-5 1 -> -1
dqcms551 comparesig 1E-4 1 -> -1
dqcms552 comparesig 1E-3 1 -> -1
dqcms553 comparesig 1E-2 1 -> -1
dqcms554 comparesig 1E-1 1 -> -1
dqcms555 comparesig 1E-0 1 -> 0
dqcms556 comparesig 1E+1 1 -> 1
dqcms557 comparesig 1E+2 1 -> 1
dqcms558 comparesig 1E+3 1 -> 1
dqcms559 comparesig 1E+4 1 -> 1
dqcms561 comparesig 1E+5 1 -> 1
dqcms562 comparesig 1E+6 1 -> 1
dqcms563 comparesig 1E+7 1 -> 1
dqcms564 comparesig 1E+8 1 -> 1
dqcms565 comparesig 1E+9 1 -> 1
dqcms566 comparesig 1E+10 1 -> 1
dqcms567 comparesig 1E+11 1 -> 1
dqcms568 comparesig 1E+12 1 -> 1
dqcms569 comparesig 1E+13 1 -> 1
dqcms570 comparesig 1E+14 1 -> 1
dqcms571 comparesig 1E+15 1 -> 1
-- similar with a useful coefficient, one side only
dqcms580 comparesig 0.000000987654321 1E-15 -> 1
dqcms581 comparesig 0.000000987654321 1E-14 -> 1
dqcms582 comparesig 0.000000987654321 1E-13 -> 1
dqcms583 comparesig 0.000000987654321 1E-12 -> 1
dqcms584 comparesig 0.000000987654321 1E-11 -> 1
dqcms585 comparesig 0.000000987654321 1E-10 -> 1
dqcms586 comparesig 0.000000987654321 1E-9 -> 1
dqcms587 comparesig 0.000000987654321 1E-8 -> 1
dqcms588 comparesig 0.000000987654321 1E-7 -> 1
dqcms589 comparesig 0.000000987654321 1E-6 -> -1
dqcms590 comparesig 0.000000987654321 1E-5 -> -1
dqcms591 comparesig 0.000000987654321 1E-4 -> -1
dqcms592 comparesig 0.000000987654321 1E-3 -> -1
dqcms593 comparesig 0.000000987654321 1E-2 -> -1
dqcms594 comparesig 0.000000987654321 1E-1 -> -1
dqcms595 comparesig 0.000000987654321 1E-0 -> -1
dqcms596 comparesig 0.000000987654321 1E+1 -> -1
dqcms597 comparesig 0.000000987654321 1E+2 -> -1
dqcms598 comparesig 0.000000987654321 1E+3 -> -1
dqcms599 comparesig 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
dqcms600 comparesig 12 12.2345 -> -1
dqcms601 comparesig 12.0 12.2345 -> -1
dqcms602 comparesig 12.00 12.2345 -> -1
dqcms603 comparesig 12.000 12.2345 -> -1
dqcms604 comparesig 12.0000 12.2345 -> -1
dqcms605 comparesig 12.00000 12.2345 -> -1
dqcms606 comparesig 12.000000 12.2345 -> -1
dqcms607 comparesig 12.0000000 12.2345 -> -1
dqcms608 comparesig 12.00000000 12.2345 -> -1
dqcms609 comparesig 12.000000000 12.2345 -> -1
dqcms610 comparesig 12.1234 12 -> 1
dqcms611 comparesig 12.1234 12.0 -> 1
dqcms612 comparesig 12.1234 12.00 -> 1
dqcms613 comparesig 12.1234 12.000 -> 1
dqcms614 comparesig 12.1234 12.0000 -> 1
dqcms615 comparesig 12.1234 12.00000 -> 1
dqcms616 comparesig 12.1234 12.000000 -> 1
dqcms617 comparesig 12.1234 12.0000000 -> 1
dqcms618 comparesig 12.1234 12.00000000 -> 1
dqcms619 comparesig 12.1234 12.000000000 -> 1
dqcms620 comparesig -12 -12.2345 -> 1
dqcms621 comparesig -12.0 -12.2345 -> 1
dqcms622 comparesig -12.00 -12.2345 -> 1
dqcms623 comparesig -12.000 -12.2345 -> 1
dqcms624 comparesig -12.0000 -12.2345 -> 1
dqcms625 comparesig -12.00000 -12.2345 -> 1
dqcms626 comparesig -12.000000 -12.2345 -> 1
dqcms627 comparesig -12.0000000 -12.2345 -> 1
dqcms628 comparesig -12.00000000 -12.2345 -> 1
dqcms629 comparesig -12.000000000 -12.2345 -> 1
dqcms630 comparesig -12.1234 -12 -> -1
dqcms631 comparesig -12.1234 -12.0 -> -1
dqcms632 comparesig -12.1234 -12.00 -> -1
dqcms633 comparesig -12.1234 -12.000 -> -1
dqcms634 comparesig -12.1234 -12.0000 -> -1
dqcms635 comparesig -12.1234 -12.00000 -> -1
dqcms636 comparesig -12.1234 -12.000000 -> -1
dqcms637 comparesig -12.1234 -12.0000000 -> -1
dqcms638 comparesig -12.1234 -12.00000000 -> -1
dqcms639 comparesig -12.1234 -12.000000000 -> -1
-- extended zeros
dqcms640 comparesig 0 0 -> 0
dqcms641 comparesig 0 -0 -> 0
dqcms642 comparesig 0 -0.0 -> 0
dqcms643 comparesig 0 0.0 -> 0
dqcms644 comparesig -0 0 -> 0
dqcms645 comparesig -0 -0 -> 0
dqcms646 comparesig -0 -0.0 -> 0
dqcms647 comparesig -0 0.0 -> 0
dqcms648 comparesig 0.0 0 -> 0
dqcms649 comparesig 0.0 -0 -> 0
dqcms650 comparesig 0.0 -0.0 -> 0
dqcms651 comparesig 0.0 0.0 -> 0
dqcms652 comparesig -0.0 0 -> 0
dqcms653 comparesig -0.0 -0 -> 0
dqcms654 comparesig -0.0 -0.0 -> 0
dqcms655 comparesig -0.0 0.0 -> 0
dqcms656 comparesig -0E1 0.0 -> 0
dqcms657 comparesig -0E2 0.0 -> 0
dqcms658 comparesig 0E1 0.0 -> 0
dqcms659 comparesig 0E2 0.0 -> 0
dqcms660 comparesig -0E1 0 -> 0
dqcms661 comparesig -0E2 0 -> 0
dqcms662 comparesig 0E1 0 -> 0
dqcms663 comparesig 0E2 0 -> 0
dqcms664 comparesig -0E1 -0E1 -> 0
dqcms665 comparesig -0E2 -0E1 -> 0
dqcms666 comparesig 0E1 -0E1 -> 0
dqcms667 comparesig 0E2 -0E1 -> 0
dqcms668 comparesig -0E1 -0E2 -> 0
dqcms669 comparesig -0E2 -0E2 -> 0
dqcms670 comparesig 0E1 -0E2 -> 0
dqcms671 comparesig 0E2 -0E2 -> 0
dqcms672 comparesig -0E1 0E1 -> 0
dqcms673 comparesig -0E2 0E1 -> 0
dqcms674 comparesig 0E1 0E1 -> 0
dqcms675 comparesig 0E2 0E1 -> 0
dqcms676 comparesig -0E1 0E2 -> 0
dqcms677 comparesig -0E2 0E2 -> 0
dqcms678 comparesig 0E1 0E2 -> 0
dqcms679 comparesig 0E2 0E2 -> 0
-- trailing zeros; unit-y
dqcms680 comparesig 12 12 -> 0
dqcms681 comparesig 12 12.0 -> 0
dqcms682 comparesig 12 12.00 -> 0
dqcms683 comparesig 12 12.000 -> 0
dqcms684 comparesig 12 12.0000 -> 0
dqcms685 comparesig 12 12.00000 -> 0
dqcms686 comparesig 12 12.000000 -> 0
dqcms687 comparesig 12 12.0000000 -> 0
dqcms688 comparesig 12 12.00000000 -> 0
dqcms689 comparesig 12 12.000000000 -> 0
dqcms690 comparesig 12 12 -> 0
dqcms691 comparesig 12.0 12 -> 0
dqcms692 comparesig 12.00 12 -> 0
dqcms693 comparesig 12.000 12 -> 0
dqcms694 comparesig 12.0000 12 -> 0
dqcms695 comparesig 12.00000 12 -> 0
dqcms696 comparesig 12.000000 12 -> 0
dqcms697 comparesig 12.0000000 12 -> 0
dqcms698 comparesig 12.00000000 12 -> 0
dqcms699 comparesig 12.000000000 12 -> 0
-- first, second, & last digit
dqcms700 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123455 -> 1
dqcms701 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0
dqcms702 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123457 -> -1
dqcms703 comparesig 1234567899999999999999999990123456 0234567899999999999999999990123456 -> 1
dqcms704 comparesig 1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0
dqcms705 comparesig 1234567899999999999999999990123456 2234567899999999999999999990123456 -> -1
dqcms706 comparesig 1134567899999999999999999990123456 1034567899999999999999999990123456 -> 1
dqcms707 comparesig 1134567899999999999999999990123456 1134567899999999999999999990123456 -> 0
dqcms708 comparesig 1134567899999999999999999990123456 1234567899999999999999999990123456 -> -1
-- miscellaneous
dqcms721 comparesig 12345678000 1 -> 1
dqcms722 comparesig 1 12345678000 -> -1
dqcms723 comparesig 1234567800 1 -> 1
dqcms724 comparesig 1 1234567800 -> -1
dqcms725 comparesig 1234567890 1 -> 1
dqcms726 comparesig 1 1234567890 -> -1
dqcms727 comparesig 1234567891 1 -> 1
dqcms728 comparesig 1 1234567891 -> -1
dqcms729 comparesig 12345678901 1 -> 1
dqcms730 comparesig 1 12345678901 -> -1
dqcms731 comparesig 1234567896 1 -> 1
dqcms732 comparesig 1 1234567896 -> -1
-- residue cases at lower precision
dqcms740 comparesig 1 0.9999999 -> 1
dqcms741 comparesig 1 0.999999 -> 1
dqcms742 comparesig 1 0.99999 -> 1
dqcms743 comparesig 1 1.0000 -> 0
dqcms744 comparesig 1 1.00001 -> -1
dqcms745 comparesig 1 1.000001 -> -1
dqcms746 comparesig 1 1.0000001 -> -1
dqcms750 comparesig 0.9999999 1 -> -1
dqcms751 comparesig 0.999999 1 -> -1
dqcms752 comparesig 0.99999 1 -> -1
dqcms753 comparesig 1.0000 1 -> 0
dqcms754 comparesig 1.00001 1 -> 1
dqcms755 comparesig 1.000001 1 -> 1
dqcms756 comparesig 1.0000001 1 -> 1
-- Specials
dqcms780 comparesig Inf -Inf -> 1
dqcms781 comparesig Inf -1000 -> 1
dqcms782 comparesig Inf -1 -> 1
dqcms783 comparesig Inf -0 -> 1
dqcms784 comparesig Inf 0 -> 1
dqcms785 comparesig Inf 1 -> 1
dqcms786 comparesig Inf 1000 -> 1
dqcms787 comparesig Inf Inf -> 0
dqcms788 comparesig -1000 Inf -> -1
dqcms789 comparesig -Inf Inf -> -1
dqcms790 comparesig -1 Inf -> -1
dqcms791 comparesig -0 Inf -> -1
dqcms792 comparesig 0 Inf -> -1
dqcms793 comparesig 1 Inf -> -1
dqcms794 comparesig 1000 Inf -> -1
dqcms795 comparesig Inf Inf -> 0
dqcms800 comparesig -Inf -Inf -> 0
dqcms801 comparesig -Inf -1000 -> -1
dqcms802 comparesig -Inf -1 -> -1
dqcms803 comparesig -Inf -0 -> -1
dqcms804 comparesig -Inf 0 -> -1
dqcms805 comparesig -Inf 1 -> -1
dqcms806 comparesig -Inf 1000 -> -1
dqcms807 comparesig -Inf Inf -> -1
dqcms808 comparesig -Inf -Inf -> 0
dqcms809 comparesig -1000 -Inf -> 1
dqcms810 comparesig -1 -Inf -> 1
dqcms811 comparesig -0 -Inf -> 1
dqcms812 comparesig 0 -Inf -> 1
dqcms813 comparesig 1 -Inf -> 1
dqcms814 comparesig 1000 -Inf -> 1
dqcms815 comparesig Inf -Inf -> 1
dqcms821 comparesig NaN -Inf -> NaN Invalid_operation
dqcms822 comparesig NaN -1000 -> NaN Invalid_operation
dqcms823 comparesig NaN -1 -> NaN Invalid_operation
dqcms824 comparesig NaN -0 -> NaN Invalid_operation
dqcms825 comparesig NaN 0 -> NaN Invalid_operation
dqcms826 comparesig NaN 1 -> NaN Invalid_operation
dqcms827 comparesig NaN 1000 -> NaN Invalid_operation
dqcms828 comparesig NaN Inf -> NaN Invalid_operation
dqcms829 comparesig NaN NaN -> NaN Invalid_operation
dqcms830 comparesig -Inf NaN -> NaN Invalid_operation
dqcms831 comparesig -1000 NaN -> NaN Invalid_operation
dqcms832 comparesig -1 NaN -> NaN Invalid_operation
dqcms833 comparesig -0 NaN -> NaN Invalid_operation
dqcms834 comparesig 0 NaN -> NaN Invalid_operation
dqcms835 comparesig 1 NaN -> NaN Invalid_operation
dqcms836 comparesig 1000 NaN -> NaN Invalid_operation
dqcms837 comparesig Inf NaN -> NaN Invalid_operation
dqcms838 comparesig -NaN -NaN -> -NaN Invalid_operation
dqcms839 comparesig +NaN -NaN -> NaN Invalid_operation
dqcms840 comparesig -NaN +NaN -> -NaN Invalid_operation
dqcms841 comparesig sNaN -Inf -> NaN Invalid_operation
dqcms842 comparesig sNaN -1000 -> NaN Invalid_operation
dqcms843 comparesig sNaN -1 -> NaN Invalid_operation
dqcms844 comparesig sNaN -0 -> NaN Invalid_operation
dqcms845 comparesig sNaN 0 -> NaN Invalid_operation
dqcms846 comparesig sNaN 1 -> NaN Invalid_operation
dqcms847 comparesig sNaN 1000 -> NaN Invalid_operation
dqcms848 comparesig sNaN NaN -> NaN Invalid_operation
dqcms849 comparesig sNaN sNaN -> NaN Invalid_operation
dqcms850 comparesig NaN sNaN -> NaN Invalid_operation
dqcms851 comparesig -Inf sNaN -> NaN Invalid_operation
dqcms852 comparesig -1000 sNaN -> NaN Invalid_operation
dqcms853 comparesig -1 sNaN -> NaN Invalid_operation
dqcms854 comparesig -0 sNaN -> NaN Invalid_operation
dqcms855 comparesig 0 sNaN -> NaN Invalid_operation
dqcms856 comparesig 1 sNaN -> NaN Invalid_operation
dqcms857 comparesig 1000 sNaN -> NaN Invalid_operation
dqcms858 comparesig Inf sNaN -> NaN Invalid_operation
dqcms859 comparesig NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqcms860 comparesig NaN9 -Inf -> NaN9 Invalid_operation
dqcms861 comparesig NaN8 999 -> NaN8 Invalid_operation
dqcms862 comparesig NaN77 Inf -> NaN77 Invalid_operation
dqcms863 comparesig -NaN67 NaN5 -> -NaN67 Invalid_operation
dqcms864 comparesig -Inf -NaN4 -> -NaN4 Invalid_operation
dqcms865 comparesig -999 -NaN33 -> -NaN33 Invalid_operation
dqcms866 comparesig Inf NaN2 -> NaN2 Invalid_operation
dqcms867 comparesig -NaN41 -NaN42 -> -NaN41 Invalid_operation
dqcms868 comparesig +NaN41 -NaN42 -> NaN41 Invalid_operation
dqcms869 comparesig -NaN41 +NaN42 -> -NaN41 Invalid_operation
dqcms870 comparesig +NaN41 +NaN42 -> NaN41 Invalid_operation
dqcms871 comparesig -sNaN99 -Inf -> -NaN99 Invalid_operation
dqcms872 comparesig sNaN98 -11 -> NaN98 Invalid_operation
dqcms873 comparesig sNaN97 NaN -> NaN97 Invalid_operation
dqcms874 comparesig sNaN16 sNaN94 -> NaN16 Invalid_operation
dqcms875 comparesig NaN85 sNaN83 -> NaN83 Invalid_operation
dqcms876 comparesig -Inf sNaN92 -> NaN92 Invalid_operation
dqcms877 comparesig 088 sNaN81 -> NaN81 Invalid_operation
dqcms878 comparesig Inf sNaN90 -> NaN90 Invalid_operation
dqcms879 comparesig NaN -sNaN89 -> -NaN89 Invalid_operation
-- wide range
dqcms880 comparesig +1.23456789012345E-0 9E+6144 -> -1
dqcms881 comparesig 9E+6144 +1.23456789012345E-0 -> 1
dqcms882 comparesig +0.100 9E-6143 -> 1
dqcms883 comparesig 9E-6143 +0.100 -> -1
dqcms885 comparesig -1.23456789012345E-0 9E+6144 -> -1
dqcms886 comparesig 9E+6144 -1.23456789012345E-0 -> 1
dqcms887 comparesig -0.100 9E-6143 -> -1
dqcms888 comparesig 9E-6143 -0.100 -> 1
-- signs
dqcms901 comparesig 1e+77 1e+11 -> 1
dqcms902 comparesig 1e+77 -1e+11 -> 1
dqcms903 comparesig -1e+77 1e+11 -> -1
dqcms904 comparesig -1e+77 -1e+11 -> -1
dqcms905 comparesig 1e-77 1e-11 -> -1
dqcms906 comparesig 1e-77 -1e-11 -> 1
dqcms907 comparesig -1e-77 1e-11 -> -1
dqcms908 comparesig -1e-77 -1e-11 -> 1
-- Null tests
dqcms990 comparesig 10 # -> NaN Invalid_operation
dqcms991 comparesig # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,706 @@
------------------------------------------------------------------------
-- dqCompareTotal.decTest -- decQuad comparison using total ordering --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necessary).
-- Similarly, comparetotal will have some radically different paths
-- than compare.
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqcot001 comparetotal -2 -2 -> 0
dqcot002 comparetotal -2 -1 -> -1
dqcot003 comparetotal -2 0 -> -1
dqcot004 comparetotal -2 1 -> -1
dqcot005 comparetotal -2 2 -> -1
dqcot006 comparetotal -1 -2 -> 1
dqcot007 comparetotal -1 -1 -> 0
dqcot008 comparetotal -1 0 -> -1
dqcot009 comparetotal -1 1 -> -1
dqcot010 comparetotal -1 2 -> -1
dqcot011 comparetotal 0 -2 -> 1
dqcot012 comparetotal 0 -1 -> 1
dqcot013 comparetotal 0 0 -> 0
dqcot014 comparetotal 0 1 -> -1
dqcot015 comparetotal 0 2 -> -1
dqcot016 comparetotal 1 -2 -> 1
dqcot017 comparetotal 1 -1 -> 1
dqcot018 comparetotal 1 0 -> 1
dqcot019 comparetotal 1 1 -> 0
dqcot020 comparetotal 1 2 -> -1
dqcot021 comparetotal 2 -2 -> 1
dqcot022 comparetotal 2 -1 -> 1
dqcot023 comparetotal 2 0 -> 1
dqcot025 comparetotal 2 1 -> 1
dqcot026 comparetotal 2 2 -> 0
dqcot031 comparetotal -20 -20 -> 0
dqcot032 comparetotal -20 -10 -> -1
dqcot033 comparetotal -20 00 -> -1
dqcot034 comparetotal -20 10 -> -1
dqcot035 comparetotal -20 20 -> -1
dqcot036 comparetotal -10 -20 -> 1
dqcot037 comparetotal -10 -10 -> 0
dqcot038 comparetotal -10 00 -> -1
dqcot039 comparetotal -10 10 -> -1
dqcot040 comparetotal -10 20 -> -1
dqcot041 comparetotal 00 -20 -> 1
dqcot042 comparetotal 00 -10 -> 1
dqcot043 comparetotal 00 00 -> 0
dqcot044 comparetotal 00 10 -> -1
dqcot045 comparetotal 00 20 -> -1
dqcot046 comparetotal 10 -20 -> 1
dqcot047 comparetotal 10 -10 -> 1
dqcot048 comparetotal 10 00 -> 1
dqcot049 comparetotal 10 10 -> 0
dqcot050 comparetotal 10 20 -> -1
dqcot051 comparetotal 20 -20 -> 1
dqcot052 comparetotal 20 -10 -> 1
dqcot053 comparetotal 20 00 -> 1
dqcot055 comparetotal 20 10 -> 1
dqcot056 comparetotal 20 20 -> 0
dqcot061 comparetotal -2.0 -2.0 -> 0
dqcot062 comparetotal -2.0 -1.0 -> -1
dqcot063 comparetotal -2.0 0.0 -> -1
dqcot064 comparetotal -2.0 1.0 -> -1
dqcot065 comparetotal -2.0 2.0 -> -1
dqcot066 comparetotal -1.0 -2.0 -> 1
dqcot067 comparetotal -1.0 -1.0 -> 0
dqcot068 comparetotal -1.0 0.0 -> -1
dqcot069 comparetotal -1.0 1.0 -> -1
dqcot070 comparetotal -1.0 2.0 -> -1
dqcot071 comparetotal 0.0 -2.0 -> 1
dqcot072 comparetotal 0.0 -1.0 -> 1
dqcot073 comparetotal 0.0 0.0 -> 0
dqcot074 comparetotal 0.0 1.0 -> -1
dqcot075 comparetotal 0.0 2.0 -> -1
dqcot076 comparetotal 1.0 -2.0 -> 1
dqcot077 comparetotal 1.0 -1.0 -> 1
dqcot078 comparetotal 1.0 0.0 -> 1
dqcot079 comparetotal 1.0 1.0 -> 0
dqcot080 comparetotal 1.0 2.0 -> -1
dqcot081 comparetotal 2.0 -2.0 -> 1
dqcot082 comparetotal 2.0 -1.0 -> 1
dqcot083 comparetotal 2.0 0.0 -> 1
dqcot085 comparetotal 2.0 1.0 -> 1
dqcot086 comparetotal 2.0 2.0 -> 0
-- now some cases which might overflow if subtract were used
dqcot090 comparetotal 9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> 0
dqcot091 comparetotal -9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> -1
dqcot092 comparetotal 9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 1
dqcot093 comparetotal -9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0
-- some differing length/exponent cases
-- in this first group, compare would compare all equal
dqcot100 comparetotal 7.0 7.0 -> 0
dqcot101 comparetotal 7.0 7 -> -1
dqcot102 comparetotal 7 7.0 -> 1
dqcot103 comparetotal 7E+0 7.0 -> 1
dqcot104 comparetotal 70E-1 7.0 -> 0
dqcot105 comparetotal 0.7E+1 7 -> 0
dqcot106 comparetotal 70E-1 7 -> -1
dqcot107 comparetotal 7.0 7E+0 -> -1
dqcot108 comparetotal 7.0 70E-1 -> 0
dqcot109 comparetotal 7 0.7E+1 -> 0
dqcot110 comparetotal 7 70E-1 -> 1
dqcot120 comparetotal 8.0 7.0 -> 1
dqcot121 comparetotal 8.0 7 -> 1
dqcot122 comparetotal 8 7.0 -> 1
dqcot123 comparetotal 8E+0 7.0 -> 1
dqcot124 comparetotal 80E-1 7.0 -> 1
dqcot125 comparetotal 0.8E+1 7 -> 1
dqcot126 comparetotal 80E-1 7 -> 1
dqcot127 comparetotal 8.0 7E+0 -> 1
dqcot128 comparetotal 8.0 70E-1 -> 1
dqcot129 comparetotal 8 0.7E+1 -> 1
dqcot130 comparetotal 8 70E-1 -> 1
dqcot140 comparetotal 8.0 9.0 -> -1
dqcot141 comparetotal 8.0 9 -> -1
dqcot142 comparetotal 8 9.0 -> -1
dqcot143 comparetotal 8E+0 9.0 -> -1
dqcot144 comparetotal 80E-1 9.0 -> -1
dqcot145 comparetotal 0.8E+1 9 -> -1
dqcot146 comparetotal 80E-1 9 -> -1
dqcot147 comparetotal 8.0 9E+0 -> -1
dqcot148 comparetotal 8.0 90E-1 -> -1
dqcot149 comparetotal 8 0.9E+1 -> -1
dqcot150 comparetotal 8 90E-1 -> -1
-- and again, with sign changes -+ ..
dqcot200 comparetotal -7.0 7.0 -> -1
dqcot201 comparetotal -7.0 7 -> -1
dqcot202 comparetotal -7 7.0 -> -1
dqcot203 comparetotal -7E+0 7.0 -> -1
dqcot204 comparetotal -70E-1 7.0 -> -1
dqcot205 comparetotal -0.7E+1 7 -> -1
dqcot206 comparetotal -70E-1 7 -> -1
dqcot207 comparetotal -7.0 7E+0 -> -1
dqcot208 comparetotal -7.0 70E-1 -> -1
dqcot209 comparetotal -7 0.7E+1 -> -1
dqcot210 comparetotal -7 70E-1 -> -1
dqcot220 comparetotal -8.0 7.0 -> -1
dqcot221 comparetotal -8.0 7 -> -1
dqcot222 comparetotal -8 7.0 -> -1
dqcot223 comparetotal -8E+0 7.0 -> -1
dqcot224 comparetotal -80E-1 7.0 -> -1
dqcot225 comparetotal -0.8E+1 7 -> -1
dqcot226 comparetotal -80E-1 7 -> -1
dqcot227 comparetotal -8.0 7E+0 -> -1
dqcot228 comparetotal -8.0 70E-1 -> -1
dqcot229 comparetotal -8 0.7E+1 -> -1
dqcot230 comparetotal -8 70E-1 -> -1
dqcot240 comparetotal -8.0 9.0 -> -1
dqcot241 comparetotal -8.0 9 -> -1
dqcot242 comparetotal -8 9.0 -> -1
dqcot243 comparetotal -8E+0 9.0 -> -1
dqcot244 comparetotal -80E-1 9.0 -> -1
dqcot245 comparetotal -0.8E+1 9 -> -1
dqcot246 comparetotal -80E-1 9 -> -1
dqcot247 comparetotal -8.0 9E+0 -> -1
dqcot248 comparetotal -8.0 90E-1 -> -1
dqcot249 comparetotal -8 0.9E+1 -> -1
dqcot250 comparetotal -8 90E-1 -> -1
-- and again, with sign changes +- ..
dqcot300 comparetotal 7.0 -7.0 -> 1
dqcot301 comparetotal 7.0 -7 -> 1
dqcot302 comparetotal 7 -7.0 -> 1
dqcot303 comparetotal 7E+0 -7.0 -> 1
dqcot304 comparetotal 70E-1 -7.0 -> 1
dqcot305 comparetotal .7E+1 -7 -> 1
dqcot306 comparetotal 70E-1 -7 -> 1
dqcot307 comparetotal 7.0 -7E+0 -> 1
dqcot308 comparetotal 7.0 -70E-1 -> 1
dqcot309 comparetotal 7 -.7E+1 -> 1
dqcot310 comparetotal 7 -70E-1 -> 1
dqcot320 comparetotal 8.0 -7.0 -> 1
dqcot321 comparetotal 8.0 -7 -> 1
dqcot322 comparetotal 8 -7.0 -> 1
dqcot323 comparetotal 8E+0 -7.0 -> 1
dqcot324 comparetotal 80E-1 -7.0 -> 1
dqcot325 comparetotal .8E+1 -7 -> 1
dqcot326 comparetotal 80E-1 -7 -> 1
dqcot327 comparetotal 8.0 -7E+0 -> 1
dqcot328 comparetotal 8.0 -70E-1 -> 1
dqcot329 comparetotal 8 -.7E+1 -> 1
dqcot330 comparetotal 8 -70E-1 -> 1
dqcot340 comparetotal 8.0 -9.0 -> 1
dqcot341 comparetotal 8.0 -9 -> 1
dqcot342 comparetotal 8 -9.0 -> 1
dqcot343 comparetotal 8E+0 -9.0 -> 1
dqcot344 comparetotal 80E-1 -9.0 -> 1
dqcot345 comparetotal .8E+1 -9 -> 1
dqcot346 comparetotal 80E-1 -9 -> 1
dqcot347 comparetotal 8.0 -9E+0 -> 1
dqcot348 comparetotal 8.0 -90E-1 -> 1
dqcot349 comparetotal 8 -.9E+1 -> 1
dqcot350 comparetotal 8 -90E-1 -> 1
-- and again, with sign changes -- ..
dqcot400 comparetotal -7.0 -7.0 -> 0
dqcot401 comparetotal -7.0 -7 -> 1
dqcot402 comparetotal -7 -7.0 -> -1
dqcot403 comparetotal -7E+0 -7.0 -> -1
dqcot404 comparetotal -70E-1 -7.0 -> 0
dqcot405 comparetotal -.7E+1 -7 -> 0
dqcot406 comparetotal -70E-1 -7 -> 1
dqcot407 comparetotal -7.0 -7E+0 -> 1
dqcot408 comparetotal -7.0 -70E-1 -> 0
dqcot409 comparetotal -7 -.7E+1 -> 0
dqcot410 comparetotal -7 -70E-1 -> -1
dqcot420 comparetotal -8.0 -7.0 -> -1
dqcot421 comparetotal -8.0 -7 -> -1
dqcot422 comparetotal -8 -7.0 -> -1
dqcot423 comparetotal -8E+0 -7.0 -> -1
dqcot424 comparetotal -80E-1 -7.0 -> -1
dqcot425 comparetotal -.8E+1 -7 -> -1
dqcot426 comparetotal -80E-1 -7 -> -1
dqcot427 comparetotal -8.0 -7E+0 -> -1
dqcot428 comparetotal -8.0 -70E-1 -> -1
dqcot429 comparetotal -8 -.7E+1 -> -1
dqcot430 comparetotal -8 -70E-1 -> -1
dqcot440 comparetotal -8.0 -9.0 -> 1
dqcot441 comparetotal -8.0 -9 -> 1
dqcot442 comparetotal -8 -9.0 -> 1
dqcot443 comparetotal -8E+0 -9.0 -> 1
dqcot444 comparetotal -80E-1 -9.0 -> 1
dqcot445 comparetotal -.8E+1 -9 -> 1
dqcot446 comparetotal -80E-1 -9 -> 1
dqcot447 comparetotal -8.0 -9E+0 -> 1
dqcot448 comparetotal -8.0 -90E-1 -> 1
dqcot449 comparetotal -8 -.9E+1 -> 1
dqcot450 comparetotal -8 -90E-1 -> 1
-- testcases that subtract to lots of zeros at boundaries [pgr]
dqcot473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1
dqcot474 comparetotal 123.456000000000E+89 123.456E+89 -> -1
dqcot475 comparetotal 123.45600000000E-89 123.456E-89 -> -1
dqcot476 comparetotal 123.4560000000E+89 123.456E+89 -> -1
dqcot477 comparetotal 123.456000000E-89 123.456E-89 -> -1
dqcot478 comparetotal 123.45600000E+89 123.456E+89 -> -1
dqcot479 comparetotal 123.4560000E-89 123.456E-89 -> -1
dqcot480 comparetotal 123.456000E+89 123.456E+89 -> -1
dqcot481 comparetotal 123.45600E-89 123.456E-89 -> -1
dqcot482 comparetotal 123.4560E+89 123.456E+89 -> -1
dqcot483 comparetotal 123.456E-89 123.456E-89 -> 0
dqcot487 comparetotal 123.456E+89 123.4560000000000E+89 -> 1
dqcot488 comparetotal 123.456E-89 123.456000000000E-89 -> 1
dqcot489 comparetotal 123.456E+89 123.45600000000E+89 -> 1
dqcot490 comparetotal 123.456E-89 123.4560000000E-89 -> 1
dqcot491 comparetotal 123.456E+89 123.456000000E+89 -> 1
dqcot492 comparetotal 123.456E-89 123.45600000E-89 -> 1
dqcot493 comparetotal 123.456E+89 123.4560000E+89 -> 1
dqcot494 comparetotal 123.456E-89 123.456000E-89 -> 1
dqcot495 comparetotal 123.456E+89 123.45600E+89 -> 1
dqcot496 comparetotal 123.456E-89 123.4560E-89 -> 1
dqcot497 comparetotal 123.456E+89 123.456E+89 -> 0
-- wide-ranging, around precision; signs equal
dqcot498 comparetotal 1 1E-17 -> 1
dqcot499 comparetotal 1 1E-16 -> 1
dqcot500 comparetotal 1 1E-15 -> 1
dqcot501 comparetotal 1 1E-14 -> 1
dqcot502 comparetotal 1 1E-13 -> 1
dqcot503 comparetotal 1 1E-12 -> 1
dqcot504 comparetotal 1 1E-11 -> 1
dqcot505 comparetotal 1 1E-10 -> 1
dqcot506 comparetotal 1 1E-9 -> 1
dqcot507 comparetotal 1 1E-8 -> 1
dqcot508 comparetotal 1 1E-7 -> 1
dqcot509 comparetotal 1 1E-6 -> 1
dqcot510 comparetotal 1 1E-5 -> 1
dqcot511 comparetotal 1 1E-4 -> 1
dqcot512 comparetotal 1 1E-3 -> 1
dqcot513 comparetotal 1 1E-2 -> 1
dqcot514 comparetotal 1 1E-1 -> 1
dqcot515 comparetotal 1 1E-0 -> 0
dqcot516 comparetotal 1 1E+1 -> -1
dqcot517 comparetotal 1 1E+2 -> -1
dqcot518 comparetotal 1 1E+3 -> -1
dqcot519 comparetotal 1 1E+4 -> -1
dqcot521 comparetotal 1 1E+5 -> -1
dqcot522 comparetotal 1 1E+6 -> -1
dqcot523 comparetotal 1 1E+7 -> -1
dqcot524 comparetotal 1 1E+8 -> -1
dqcot525 comparetotal 1 1E+9 -> -1
dqcot526 comparetotal 1 1E+10 -> -1
dqcot527 comparetotal 1 1E+11 -> -1
dqcot528 comparetotal 1 1E+12 -> -1
dqcot529 comparetotal 1 1E+13 -> -1
dqcot530 comparetotal 1 1E+14 -> -1
dqcot531 comparetotal 1 1E+15 -> -1
dqcot532 comparetotal 1 1E+16 -> -1
dqcot533 comparetotal 1 1E+17 -> -1
-- LR swap
dqcot538 comparetotal 1E-17 1 -> -1
dqcot539 comparetotal 1E-16 1 -> -1
dqcot540 comparetotal 1E-15 1 -> -1
dqcot541 comparetotal 1E-14 1 -> -1
dqcot542 comparetotal 1E-13 1 -> -1
dqcot543 comparetotal 1E-12 1 -> -1
dqcot544 comparetotal 1E-11 1 -> -1
dqcot545 comparetotal 1E-10 1 -> -1
dqcot546 comparetotal 1E-9 1 -> -1
dqcot547 comparetotal 1E-8 1 -> -1
dqcot548 comparetotal 1E-7 1 -> -1
dqcot549 comparetotal 1E-6 1 -> -1
dqcot550 comparetotal 1E-5 1 -> -1
dqcot551 comparetotal 1E-4 1 -> -1
dqcot552 comparetotal 1E-3 1 -> -1
dqcot553 comparetotal 1E-2 1 -> -1
dqcot554 comparetotal 1E-1 1 -> -1
dqcot555 comparetotal 1E-0 1 -> 0
dqcot556 comparetotal 1E+1 1 -> 1
dqcot557 comparetotal 1E+2 1 -> 1
dqcot558 comparetotal 1E+3 1 -> 1
dqcot559 comparetotal 1E+4 1 -> 1
dqcot561 comparetotal 1E+5 1 -> 1
dqcot562 comparetotal 1E+6 1 -> 1
dqcot563 comparetotal 1E+7 1 -> 1
dqcot564 comparetotal 1E+8 1 -> 1
dqcot565 comparetotal 1E+9 1 -> 1
dqcot566 comparetotal 1E+10 1 -> 1
dqcot567 comparetotal 1E+11 1 -> 1
dqcot568 comparetotal 1E+12 1 -> 1
dqcot569 comparetotal 1E+13 1 -> 1
dqcot570 comparetotal 1E+14 1 -> 1
dqcot571 comparetotal 1E+15 1 -> 1
dqcot572 comparetotal 1E+16 1 -> 1
dqcot573 comparetotal 1E+17 1 -> 1
-- similar with a useful coefficient, one side only
dqcot578 comparetotal 0.000000987654321 1E-17 -> 1
dqcot579 comparetotal 0.000000987654321 1E-16 -> 1
dqcot580 comparetotal 0.000000987654321 1E-15 -> 1
dqcot581 comparetotal 0.000000987654321 1E-14 -> 1
dqcot582 comparetotal 0.000000987654321 1E-13 -> 1
dqcot583 comparetotal 0.000000987654321 1E-12 -> 1
dqcot584 comparetotal 0.000000987654321 1E-11 -> 1
dqcot585 comparetotal 0.000000987654321 1E-10 -> 1
dqcot586 comparetotal 0.000000987654321 1E-9 -> 1
dqcot587 comparetotal 0.000000987654321 1E-8 -> 1
dqcot588 comparetotal 0.000000987654321 1E-7 -> 1
dqcot589 comparetotal 0.000000987654321 1E-6 -> -1
dqcot590 comparetotal 0.000000987654321 1E-5 -> -1
dqcot591 comparetotal 0.000000987654321 1E-4 -> -1
dqcot592 comparetotal 0.000000987654321 1E-3 -> -1
dqcot593 comparetotal 0.000000987654321 1E-2 -> -1
dqcot594 comparetotal 0.000000987654321 1E-1 -> -1
dqcot595 comparetotal 0.000000987654321 1E-0 -> -1
dqcot596 comparetotal 0.000000987654321 1E+1 -> -1
dqcot597 comparetotal 0.000000987654321 1E+2 -> -1
dqcot598 comparetotal 0.000000987654321 1E+3 -> -1
dqcot599 comparetotal 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
dqcot600 comparetotal 12 12.2345 -> -1
dqcot601 comparetotal 12.0 12.2345 -> -1
dqcot602 comparetotal 12.00 12.2345 -> -1
dqcot603 comparetotal 12.000 12.2345 -> -1
dqcot604 comparetotal 12.0000 12.2345 -> -1
dqcot605 comparetotal 12.00000 12.2345 -> -1
dqcot606 comparetotal 12.000000 12.2345 -> -1
dqcot607 comparetotal 12.0000000 12.2345 -> -1
dqcot608 comparetotal 12.00000000 12.2345 -> -1
dqcot609 comparetotal 12.000000000 12.2345 -> -1
dqcot610 comparetotal 12.1234 12 -> 1
dqcot611 comparetotal 12.1234 12.0 -> 1
dqcot612 comparetotal 12.1234 12.00 -> 1
dqcot613 comparetotal 12.1234 12.000 -> 1
dqcot614 comparetotal 12.1234 12.0000 -> 1
dqcot615 comparetotal 12.1234 12.00000 -> 1
dqcot616 comparetotal 12.1234 12.000000 -> 1
dqcot617 comparetotal 12.1234 12.0000000 -> 1
dqcot618 comparetotal 12.1234 12.00000000 -> 1
dqcot619 comparetotal 12.1234 12.000000000 -> 1
dqcot620 comparetotal -12 -12.2345 -> 1
dqcot621 comparetotal -12.0 -12.2345 -> 1
dqcot622 comparetotal -12.00 -12.2345 -> 1
dqcot623 comparetotal -12.000 -12.2345 -> 1
dqcot624 comparetotal -12.0000 -12.2345 -> 1
dqcot625 comparetotal -12.00000 -12.2345 -> 1
dqcot626 comparetotal -12.000000 -12.2345 -> 1
dqcot627 comparetotal -12.0000000 -12.2345 -> 1
dqcot628 comparetotal -12.00000000 -12.2345 -> 1
dqcot629 comparetotal -12.000000000 -12.2345 -> 1
dqcot630 comparetotal -12.1234 -12 -> -1
dqcot631 comparetotal -12.1234 -12.0 -> -1
dqcot632 comparetotal -12.1234 -12.00 -> -1
dqcot633 comparetotal -12.1234 -12.000 -> -1
dqcot634 comparetotal -12.1234 -12.0000 -> -1
dqcot635 comparetotal -12.1234 -12.00000 -> -1
dqcot636 comparetotal -12.1234 -12.000000 -> -1
dqcot637 comparetotal -12.1234 -12.0000000 -> -1
dqcot638 comparetotal -12.1234 -12.00000000 -> -1
dqcot639 comparetotal -12.1234 -12.000000000 -> -1
-- extended zeros
dqcot640 comparetotal 0 0 -> 0
dqcot641 comparetotal 0 -0 -> 1
dqcot642 comparetotal 0 -0.0 -> 1
dqcot643 comparetotal 0 0.0 -> 1
dqcot644 comparetotal -0 0 -> -1
dqcot645 comparetotal -0 -0 -> 0
dqcot646 comparetotal -0 -0.0 -> -1
dqcot647 comparetotal -0 0.0 -> -1
dqcot648 comparetotal 0.0 0 -> -1
dqcot649 comparetotal 0.0 -0 -> 1
dqcot650 comparetotal 0.0 -0.0 -> 1
dqcot651 comparetotal 0.0 0.0 -> 0
dqcot652 comparetotal -0.0 0 -> -1
dqcot653 comparetotal -0.0 -0 -> 1
dqcot654 comparetotal -0.0 -0.0 -> 0
dqcot655 comparetotal -0.0 0.0 -> -1
dqcot656 comparetotal -0E1 0.0 -> -1
dqcot657 comparetotal -0E2 0.0 -> -1
dqcot658 comparetotal 0E1 0.0 -> 1
dqcot659 comparetotal 0E2 0.0 -> 1
dqcot660 comparetotal -0E1 0 -> -1
dqcot661 comparetotal -0E2 0 -> -1
dqcot662 comparetotal 0E1 0 -> 1
dqcot663 comparetotal 0E2 0 -> 1
dqcot664 comparetotal -0E1 -0E1 -> 0
dqcot665 comparetotal -0E2 -0E1 -> -1
dqcot666 comparetotal 0E1 -0E1 -> 1
dqcot667 comparetotal 0E2 -0E1 -> 1
dqcot668 comparetotal -0E1 -0E2 -> 1
dqcot669 comparetotal -0E2 -0E2 -> 0
dqcot670 comparetotal 0E1 -0E2 -> 1
dqcot671 comparetotal 0E2 -0E2 -> 1
dqcot672 comparetotal -0E1 0E1 -> -1
dqcot673 comparetotal -0E2 0E1 -> -1
dqcot674 comparetotal 0E1 0E1 -> 0
dqcot675 comparetotal 0E2 0E1 -> 1
dqcot676 comparetotal -0E1 0E2 -> -1
dqcot677 comparetotal -0E2 0E2 -> -1
dqcot678 comparetotal 0E1 0E2 -> -1
dqcot679 comparetotal 0E2 0E2 -> 0
-- trailing zeros; unit-y
dqcot680 comparetotal 12 12 -> 0
dqcot681 comparetotal 12 12.0 -> 1
dqcot682 comparetotal 12 12.00 -> 1
dqcot683 comparetotal 12 12.000 -> 1
dqcot684 comparetotal 12 12.0000 -> 1
dqcot685 comparetotal 12 12.00000 -> 1
dqcot686 comparetotal 12 12.000000 -> 1
dqcot687 comparetotal 12 12.0000000 -> 1
dqcot688 comparetotal 12 12.00000000 -> 1
dqcot689 comparetotal 12 12.000000000 -> 1
dqcot690 comparetotal 12 12 -> 0
dqcot691 comparetotal 12.0 12 -> -1
dqcot692 comparetotal 12.00 12 -> -1
dqcot693 comparetotal 12.000 12 -> -1
dqcot694 comparetotal 12.0000 12 -> -1
dqcot695 comparetotal 12.00000 12 -> -1
dqcot696 comparetotal 12.000000 12 -> -1
dqcot697 comparetotal 12.0000000 12 -> -1
dqcot698 comparetotal 12.00000000 12 -> -1
dqcot699 comparetotal 12.000000000 12 -> -1
-- old long operand checks
dqcot701 comparetotal 12345678000 1 -> 1
dqcot702 comparetotal 1 12345678000 -> -1
dqcot703 comparetotal 1234567800 1 -> 1
dqcot704 comparetotal 1 1234567800 -> -1
dqcot705 comparetotal 1234567890 1 -> 1
dqcot706 comparetotal 1 1234567890 -> -1
dqcot707 comparetotal 1234567891 1 -> 1
dqcot708 comparetotal 1 1234567891 -> -1
dqcot709 comparetotal 12345678901 1 -> 1
dqcot710 comparetotal 1 12345678901 -> -1
dqcot711 comparetotal 1234567896 1 -> 1
dqcot712 comparetotal 1 1234567896 -> -1
dqcot713 comparetotal -1234567891 1 -> -1
dqcot714 comparetotal 1 -1234567891 -> 1
dqcot715 comparetotal -12345678901 1 -> -1
dqcot716 comparetotal 1 -12345678901 -> 1
dqcot717 comparetotal -1234567896 1 -> -1
dqcot718 comparetotal 1 -1234567896 -> 1
-- old residue cases
dqcot740 comparetotal 1 0.9999999 -> 1
dqcot741 comparetotal 1 0.999999 -> 1
dqcot742 comparetotal 1 0.99999 -> 1
dqcot743 comparetotal 1 1.0000 -> 1
dqcot744 comparetotal 1 1.00001 -> -1
dqcot745 comparetotal 1 1.000001 -> -1
dqcot746 comparetotal 1 1.0000001 -> -1
dqcot750 comparetotal 0.9999999 1 -> -1
dqcot751 comparetotal 0.999999 1 -> -1
dqcot752 comparetotal 0.99999 1 -> -1
dqcot753 comparetotal 1.0000 1 -> -1
dqcot754 comparetotal 1.00001 1 -> 1
dqcot755 comparetotal 1.000001 1 -> 1
dqcot756 comparetotal 1.0000001 1 -> 1
-- Specials
dqcot780 comparetotal Inf -Inf -> 1
dqcot781 comparetotal Inf -1000 -> 1
dqcot782 comparetotal Inf -1 -> 1
dqcot783 comparetotal Inf -0 -> 1
dqcot784 comparetotal Inf 0 -> 1
dqcot785 comparetotal Inf 1 -> 1
dqcot786 comparetotal Inf 1000 -> 1
dqcot787 comparetotal Inf Inf -> 0
dqcot788 comparetotal -1000 Inf -> -1
dqcot789 comparetotal -Inf Inf -> -1
dqcot790 comparetotal -1 Inf -> -1
dqcot791 comparetotal -0 Inf -> -1
dqcot792 comparetotal 0 Inf -> -1
dqcot793 comparetotal 1 Inf -> -1
dqcot794 comparetotal 1000 Inf -> -1
dqcot795 comparetotal Inf Inf -> 0
dqcot800 comparetotal -Inf -Inf -> 0
dqcot801 comparetotal -Inf -1000 -> -1
dqcot802 comparetotal -Inf -1 -> -1
dqcot803 comparetotal -Inf -0 -> -1
dqcot804 comparetotal -Inf 0 -> -1
dqcot805 comparetotal -Inf 1 -> -1
dqcot806 comparetotal -Inf 1000 -> -1
dqcot807 comparetotal -Inf Inf -> -1
dqcot808 comparetotal -Inf -Inf -> 0
dqcot809 comparetotal -1000 -Inf -> 1
dqcot810 comparetotal -1 -Inf -> 1
dqcot811 comparetotal -0 -Inf -> 1
dqcot812 comparetotal 0 -Inf -> 1
dqcot813 comparetotal 1 -Inf -> 1
dqcot814 comparetotal 1000 -Inf -> 1
dqcot815 comparetotal Inf -Inf -> 1
dqcot821 comparetotal NaN -Inf -> 1
dqcot822 comparetotal NaN -1000 -> 1
dqcot823 comparetotal NaN -1 -> 1
dqcot824 comparetotal NaN -0 -> 1
dqcot825 comparetotal NaN 0 -> 1
dqcot826 comparetotal NaN 1 -> 1
dqcot827 comparetotal NaN 1000 -> 1
dqcot828 comparetotal NaN Inf -> 1
dqcot829 comparetotal NaN NaN -> 0
dqcot830 comparetotal -Inf NaN -> -1
dqcot831 comparetotal -1000 NaN -> -1
dqcot832 comparetotal -1 NaN -> -1
dqcot833 comparetotal -0 NaN -> -1
dqcot834 comparetotal 0 NaN -> -1
dqcot835 comparetotal 1 NaN -> -1
dqcot836 comparetotal 1000 NaN -> -1
dqcot837 comparetotal Inf NaN -> -1
dqcot838 comparetotal -NaN -NaN -> 0
dqcot839 comparetotal +NaN -NaN -> 1
dqcot840 comparetotal -NaN +NaN -> -1
dqcot841 comparetotal sNaN -sNaN -> 1
dqcot842 comparetotal sNaN -NaN -> 1
dqcot843 comparetotal sNaN -Inf -> 1
dqcot844 comparetotal sNaN -1000 -> 1
dqcot845 comparetotal sNaN -1 -> 1
dqcot846 comparetotal sNaN -0 -> 1
dqcot847 comparetotal sNaN 0 -> 1
dqcot848 comparetotal sNaN 1 -> 1
dqcot849 comparetotal sNaN 1000 -> 1
dqcot850 comparetotal sNaN NaN -> -1
dqcot851 comparetotal sNaN sNaN -> 0
dqcot852 comparetotal -sNaN sNaN -> -1
dqcot853 comparetotal -NaN sNaN -> -1
dqcot854 comparetotal -Inf sNaN -> -1
dqcot855 comparetotal -1000 sNaN -> -1
dqcot856 comparetotal -1 sNaN -> -1
dqcot857 comparetotal -0 sNaN -> -1
dqcot858 comparetotal 0 sNaN -> -1
dqcot859 comparetotal 1 sNaN -> -1
dqcot860 comparetotal 1000 sNaN -> -1
dqcot861 comparetotal Inf sNaN -> -1
dqcot862 comparetotal NaN sNaN -> 1
dqcot863 comparetotal sNaN sNaN -> 0
dqcot871 comparetotal -sNaN -sNaN -> 0
dqcot872 comparetotal -sNaN -NaN -> 1
dqcot873 comparetotal -sNaN -Inf -> -1
dqcot874 comparetotal -sNaN -1000 -> -1
dqcot875 comparetotal -sNaN -1 -> -1
dqcot876 comparetotal -sNaN -0 -> -1
dqcot877 comparetotal -sNaN 0 -> -1
dqcot878 comparetotal -sNaN 1 -> -1
dqcot879 comparetotal -sNaN 1000 -> -1
dqcot880 comparetotal -sNaN NaN -> -1
dqcot881 comparetotal -sNaN sNaN -> -1
dqcot882 comparetotal -sNaN -sNaN -> 0
dqcot883 comparetotal -NaN -sNaN -> -1
dqcot884 comparetotal -Inf -sNaN -> 1
dqcot885 comparetotal -1000 -sNaN -> 1
dqcot886 comparetotal -1 -sNaN -> 1
dqcot887 comparetotal -0 -sNaN -> 1
dqcot888 comparetotal 0 -sNaN -> 1
dqcot889 comparetotal 1 -sNaN -> 1
dqcot890 comparetotal 1000 -sNaN -> 1
dqcot891 comparetotal Inf -sNaN -> 1
dqcot892 comparetotal NaN -sNaN -> 1
dqcot893 comparetotal sNaN -sNaN -> 1
-- NaNs with payload
dqcot960 comparetotal NaN9 -Inf -> 1
dqcot961 comparetotal NaN8 999 -> 1
dqcot962 comparetotal NaN77 Inf -> 1
dqcot963 comparetotal -NaN67 NaN5 -> -1
dqcot964 comparetotal -Inf -NaN4 -> 1
dqcot965 comparetotal -999 -NaN33 -> 1
dqcot966 comparetotal Inf NaN2 -> -1
dqcot970 comparetotal -NaN41 -NaN42 -> 1
dqcot971 comparetotal +NaN41 -NaN42 -> 1
dqcot972 comparetotal -NaN41 +NaN42 -> -1
dqcot973 comparetotal +NaN41 +NaN42 -> -1
dqcot974 comparetotal -NaN42 -NaN01 -> -1
dqcot975 comparetotal +NaN42 -NaN01 -> 1
dqcot976 comparetotal -NaN42 +NaN01 -> -1
dqcot977 comparetotal +NaN42 +NaN01 -> 1
dqcot980 comparetotal -sNaN771 -sNaN772 -> 1
dqcot981 comparetotal +sNaN771 -sNaN772 -> 1
dqcot982 comparetotal -sNaN771 +sNaN772 -> -1
dqcot983 comparetotal +sNaN771 +sNaN772 -> -1
dqcot984 comparetotal -sNaN772 -sNaN771 -> -1
dqcot985 comparetotal +sNaN772 -sNaN771 -> 1
dqcot986 comparetotal -sNaN772 +sNaN771 -> -1
dqcot987 comparetotal +sNaN772 +sNaN771 -> 1
dqcot991 comparetotal -sNaN99 -Inf -> -1
dqcot992 comparetotal sNaN98 -11 -> 1
dqcot993 comparetotal sNaN97 NaN -> -1
dqcot994 comparetotal sNaN16 sNaN94 -> -1
dqcot995 comparetotal NaN85 sNaN83 -> 1
dqcot996 comparetotal -Inf sNaN92 -> -1
dqcot997 comparetotal 088 sNaN81 -> -1
dqcot998 comparetotal Inf sNaN90 -> -1
dqcot999 comparetotal NaN -sNaN89 -> 1
-- spread zeros
dqcot1110 comparetotal 0E-6143 0 -> -1
dqcot1111 comparetotal 0E-6143 -0 -> 1
dqcot1112 comparetotal -0E-6143 0 -> -1
dqcot1113 comparetotal -0E-6143 -0 -> 1
dqcot1114 comparetotal 0E-6143 0E+6144 -> -1
dqcot1115 comparetotal 0E-6143 -0E+6144 -> 1
dqcot1116 comparetotal -0E-6143 0E+6144 -> -1
dqcot1117 comparetotal -0E-6143 -0E+6144 -> 1
dqcot1118 comparetotal 0 0E+6144 -> -1
dqcot1119 comparetotal 0 -0E+6144 -> 1
dqcot1120 comparetotal -0 0E+6144 -> -1
dqcot1121 comparetotal -0 -0E+6144 -> 1
dqcot1130 comparetotal 0E+6144 0 -> 1
dqcot1131 comparetotal 0E+6144 -0 -> 1
dqcot1132 comparetotal -0E+6144 0 -> -1
dqcot1133 comparetotal -0E+6144 -0 -> -1
dqcot1134 comparetotal 0E+6144 0E-6143 -> 1
dqcot1135 comparetotal 0E+6144 -0E-6143 -> 1
dqcot1136 comparetotal -0E+6144 0E-6143 -> -1
dqcot1137 comparetotal -0E+6144 -0E-6143 -> -1
dqcot1138 comparetotal 0 0E-6143 -> 1
dqcot1139 comparetotal 0 -0E-6143 -> 1
dqcot1140 comparetotal -0 0E-6143 -> -1
dqcot1141 comparetotal -0 -0E-6143 -> -1
-- Null tests
dqcot9990 comparetotal 10 # -> NaN Invalid_operation
dqcot9991 comparetotal # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,706 @@
------------------------------------------------------------------------
-- dqCompareTotalMag.decTest -- decQuad comparison; abs. total order --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necessary).
-- Similarly, comparetotal will have some radically different paths
-- than compare.
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqctm001 comparetotmag -2 -2 -> 0
dqctm002 comparetotmag -2 -1 -> 1
dqctm003 comparetotmag -2 0 -> 1
dqctm004 comparetotmag -2 1 -> 1
dqctm005 comparetotmag -2 2 -> 0
dqctm006 comparetotmag -1 -2 -> -1
dqctm007 comparetotmag -1 -1 -> 0
dqctm008 comparetotmag -1 0 -> 1
dqctm009 comparetotmag -1 1 -> 0
dqctm010 comparetotmag -1 2 -> -1
dqctm011 comparetotmag 0 -2 -> -1
dqctm012 comparetotmag 0 -1 -> -1
dqctm013 comparetotmag 0 0 -> 0
dqctm014 comparetotmag 0 1 -> -1
dqctm015 comparetotmag 0 2 -> -1
dqctm016 comparetotmag 1 -2 -> -1
dqctm017 comparetotmag 1 -1 -> 0
dqctm018 comparetotmag 1 0 -> 1
dqctm019 comparetotmag 1 1 -> 0
dqctm020 comparetotmag 1 2 -> -1
dqctm021 comparetotmag 2 -2 -> 0
dqctm022 comparetotmag 2 -1 -> 1
dqctm023 comparetotmag 2 0 -> 1
dqctm025 comparetotmag 2 1 -> 1
dqctm026 comparetotmag 2 2 -> 0
dqctm031 comparetotmag -20 -20 -> 0
dqctm032 comparetotmag -20 -10 -> 1
dqctm033 comparetotmag -20 00 -> 1
dqctm034 comparetotmag -20 10 -> 1
dqctm035 comparetotmag -20 20 -> 0
dqctm036 comparetotmag -10 -20 -> -1
dqctm037 comparetotmag -10 -10 -> 0
dqctm038 comparetotmag -10 00 -> 1
dqctm039 comparetotmag -10 10 -> 0
dqctm040 comparetotmag -10 20 -> -1
dqctm041 comparetotmag 00 -20 -> -1
dqctm042 comparetotmag 00 -10 -> -1
dqctm043 comparetotmag 00 00 -> 0
dqctm044 comparetotmag 00 10 -> -1
dqctm045 comparetotmag 00 20 -> -1
dqctm046 comparetotmag 10 -20 -> -1
dqctm047 comparetotmag 10 -10 -> 0
dqctm048 comparetotmag 10 00 -> 1
dqctm049 comparetotmag 10 10 -> 0
dqctm050 comparetotmag 10 20 -> -1
dqctm051 comparetotmag 20 -20 -> 0
dqctm052 comparetotmag 20 -10 -> 1
dqctm053 comparetotmag 20 00 -> 1
dqctm055 comparetotmag 20 10 -> 1
dqctm056 comparetotmag 20 20 -> 0
dqctm061 comparetotmag -2.0 -2.0 -> 0
dqctm062 comparetotmag -2.0 -1.0 -> 1
dqctm063 comparetotmag -2.0 0.0 -> 1
dqctm064 comparetotmag -2.0 1.0 -> 1
dqctm065 comparetotmag -2.0 2.0 -> 0
dqctm066 comparetotmag -1.0 -2.0 -> -1
dqctm067 comparetotmag -1.0 -1.0 -> 0
dqctm068 comparetotmag -1.0 0.0 -> 1
dqctm069 comparetotmag -1.0 1.0 -> 0
dqctm070 comparetotmag -1.0 2.0 -> -1
dqctm071 comparetotmag 0.0 -2.0 -> -1
dqctm072 comparetotmag 0.0 -1.0 -> -1
dqctm073 comparetotmag 0.0 0.0 -> 0
dqctm074 comparetotmag 0.0 1.0 -> -1
dqctm075 comparetotmag 0.0 2.0 -> -1
dqctm076 comparetotmag 1.0 -2.0 -> -1
dqctm077 comparetotmag 1.0 -1.0 -> 0
dqctm078 comparetotmag 1.0 0.0 -> 1
dqctm079 comparetotmag 1.0 1.0 -> 0
dqctm080 comparetotmag 1.0 2.0 -> -1
dqctm081 comparetotmag 2.0 -2.0 -> 0
dqctm082 comparetotmag 2.0 -1.0 -> 1
dqctm083 comparetotmag 2.0 0.0 -> 1
dqctm085 comparetotmag 2.0 1.0 -> 1
dqctm086 comparetotmag 2.0 2.0 -> 0
-- now some cases which might overflow if subtract were used
dqctm090 comparetotmag 9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> 0
dqctm091 comparetotmag -9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144 -> 0
dqctm092 comparetotmag 9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0
dqctm093 comparetotmag -9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0
-- some differing length/exponent cases
-- in this first group, compare would compare all equal
dqctm100 comparetotmag 7.0 7.0 -> 0
dqctm101 comparetotmag 7.0 7 -> -1
dqctm102 comparetotmag 7 7.0 -> 1
dqctm103 comparetotmag 7E+0 7.0 -> 1
dqctm104 comparetotmag 70E-1 7.0 -> 0
dqctm105 comparetotmag 0.7E+1 7 -> 0
dqctm106 comparetotmag 70E-1 7 -> -1
dqctm107 comparetotmag 7.0 7E+0 -> -1
dqctm108 comparetotmag 7.0 70E-1 -> 0
dqctm109 comparetotmag 7 0.7E+1 -> 0
dqctm110 comparetotmag 7 70E-1 -> 1
dqctm120 comparetotmag 8.0 7.0 -> 1
dqctm121 comparetotmag 8.0 7 -> 1
dqctm122 comparetotmag 8 7.0 -> 1
dqctm123 comparetotmag 8E+0 7.0 -> 1
dqctm124 comparetotmag 80E-1 7.0 -> 1
dqctm125 comparetotmag 0.8E+1 7 -> 1
dqctm126 comparetotmag 80E-1 7 -> 1
dqctm127 comparetotmag 8.0 7E+0 -> 1
dqctm128 comparetotmag 8.0 70E-1 -> 1
dqctm129 comparetotmag 8 0.7E+1 -> 1
dqctm130 comparetotmag 8 70E-1 -> 1
dqctm140 comparetotmag 8.0 9.0 -> -1
dqctm141 comparetotmag 8.0 9 -> -1
dqctm142 comparetotmag 8 9.0 -> -1
dqctm143 comparetotmag 8E+0 9.0 -> -1
dqctm144 comparetotmag 80E-1 9.0 -> -1
dqctm145 comparetotmag 0.8E+1 9 -> -1
dqctm146 comparetotmag 80E-1 9 -> -1
dqctm147 comparetotmag 8.0 9E+0 -> -1
dqctm148 comparetotmag 8.0 90E-1 -> -1
dqctm149 comparetotmag 8 0.9E+1 -> -1
dqctm150 comparetotmag 8 90E-1 -> -1
-- and again, with sign changes -+ ..
dqctm200 comparetotmag -7.0 7.0 -> 0
dqctm201 comparetotmag -7.0 7 -> -1
dqctm202 comparetotmag -7 7.0 -> 1
dqctm203 comparetotmag -7E+0 7.0 -> 1
dqctm204 comparetotmag -70E-1 7.0 -> 0
dqctm205 comparetotmag -0.7E+1 7 -> 0
dqctm206 comparetotmag -70E-1 7 -> -1
dqctm207 comparetotmag -7.0 7E+0 -> -1
dqctm208 comparetotmag -7.0 70E-1 -> 0
dqctm209 comparetotmag -7 0.7E+1 -> 0
dqctm210 comparetotmag -7 70E-1 -> 1
dqctm220 comparetotmag -8.0 7.0 -> 1
dqctm221 comparetotmag -8.0 7 -> 1
dqctm222 comparetotmag -8 7.0 -> 1
dqctm223 comparetotmag -8E+0 7.0 -> 1
dqctm224 comparetotmag -80E-1 7.0 -> 1
dqctm225 comparetotmag -0.8E+1 7 -> 1
dqctm226 comparetotmag -80E-1 7 -> 1
dqctm227 comparetotmag -8.0 7E+0 -> 1
dqctm228 comparetotmag -8.0 70E-1 -> 1
dqctm229 comparetotmag -8 0.7E+1 -> 1
dqctm230 comparetotmag -8 70E-1 -> 1
dqctm240 comparetotmag -8.0 9.0 -> -1
dqctm241 comparetotmag -8.0 9 -> -1
dqctm242 comparetotmag -8 9.0 -> -1
dqctm243 comparetotmag -8E+0 9.0 -> -1
dqctm244 comparetotmag -80E-1 9.0 -> -1
dqctm245 comparetotmag -0.8E+1 9 -> -1
dqctm246 comparetotmag -80E-1 9 -> -1
dqctm247 comparetotmag -8.0 9E+0 -> -1
dqctm248 comparetotmag -8.0 90E-1 -> -1
dqctm249 comparetotmag -8 0.9E+1 -> -1
dqctm250 comparetotmag -8 90E-1 -> -1
-- and again, with sign changes +- ..
dqctm300 comparetotmag 7.0 -7.0 -> 0
dqctm301 comparetotmag 7.0 -7 -> -1
dqctm302 comparetotmag 7 -7.0 -> 1
dqctm303 comparetotmag 7E+0 -7.0 -> 1
dqctm304 comparetotmag 70E-1 -7.0 -> 0
dqctm305 comparetotmag .7E+1 -7 -> 0
dqctm306 comparetotmag 70E-1 -7 -> -1
dqctm307 comparetotmag 7.0 -7E+0 -> -1
dqctm308 comparetotmag 7.0 -70E-1 -> 0
dqctm309 comparetotmag 7 -.7E+1 -> 0
dqctm310 comparetotmag 7 -70E-1 -> 1
dqctm320 comparetotmag 8.0 -7.0 -> 1
dqctm321 comparetotmag 8.0 -7 -> 1
dqctm322 comparetotmag 8 -7.0 -> 1
dqctm323 comparetotmag 8E+0 -7.0 -> 1
dqctm324 comparetotmag 80E-1 -7.0 -> 1
dqctm325 comparetotmag .8E+1 -7 -> 1
dqctm326 comparetotmag 80E-1 -7 -> 1
dqctm327 comparetotmag 8.0 -7E+0 -> 1
dqctm328 comparetotmag 8.0 -70E-1 -> 1
dqctm329 comparetotmag 8 -.7E+1 -> 1
dqctm330 comparetotmag 8 -70E-1 -> 1
dqctm340 comparetotmag 8.0 -9.0 -> -1
dqctm341 comparetotmag 8.0 -9 -> -1
dqctm342 comparetotmag 8 -9.0 -> -1
dqctm343 comparetotmag 8E+0 -9.0 -> -1
dqctm344 comparetotmag 80E-1 -9.0 -> -1
dqctm345 comparetotmag .8E+1 -9 -> -1
dqctm346 comparetotmag 80E-1 -9 -> -1
dqctm347 comparetotmag 8.0 -9E+0 -> -1
dqctm348 comparetotmag 8.0 -90E-1 -> -1
dqctm349 comparetotmag 8 -.9E+1 -> -1
dqctm350 comparetotmag 8 -90E-1 -> -1
-- and again, with sign changes -- ..
dqctm400 comparetotmag -7.0 -7.0 -> 0
dqctm401 comparetotmag -7.0 -7 -> -1
dqctm402 comparetotmag -7 -7.0 -> 1
dqctm403 comparetotmag -7E+0 -7.0 -> 1
dqctm404 comparetotmag -70E-1 -7.0 -> 0
dqctm405 comparetotmag -.7E+1 -7 -> 0
dqctm406 comparetotmag -70E-1 -7 -> -1
dqctm407 comparetotmag -7.0 -7E+0 -> -1
dqctm408 comparetotmag -7.0 -70E-1 -> 0
dqctm409 comparetotmag -7 -.7E+1 -> 0
dqctm410 comparetotmag -7 -70E-1 -> 1
dqctm420 comparetotmag -8.0 -7.0 -> 1
dqctm421 comparetotmag -8.0 -7 -> 1
dqctm422 comparetotmag -8 -7.0 -> 1
dqctm423 comparetotmag -8E+0 -7.0 -> 1
dqctm424 comparetotmag -80E-1 -7.0 -> 1
dqctm425 comparetotmag -.8E+1 -7 -> 1
dqctm426 comparetotmag -80E-1 -7 -> 1
dqctm427 comparetotmag -8.0 -7E+0 -> 1
dqctm428 comparetotmag -8.0 -70E-1 -> 1
dqctm429 comparetotmag -8 -.7E+1 -> 1
dqctm430 comparetotmag -8 -70E-1 -> 1
dqctm440 comparetotmag -8.0 -9.0 -> -1
dqctm441 comparetotmag -8.0 -9 -> -1
dqctm442 comparetotmag -8 -9.0 -> -1
dqctm443 comparetotmag -8E+0 -9.0 -> -1
dqctm444 comparetotmag -80E-1 -9.0 -> -1
dqctm445 comparetotmag -.8E+1 -9 -> -1
dqctm446 comparetotmag -80E-1 -9 -> -1
dqctm447 comparetotmag -8.0 -9E+0 -> -1
dqctm448 comparetotmag -8.0 -90E-1 -> -1
dqctm449 comparetotmag -8 -.9E+1 -> -1
dqctm450 comparetotmag -8 -90E-1 -> -1
-- testcases that subtract to lots of zeros at boundaries [pgr]
dqctm473 comparetotmag 123.4560000000000E-89 123.456E-89 -> -1
dqctm474 comparetotmag 123.456000000000E+89 123.456E+89 -> -1
dqctm475 comparetotmag 123.45600000000E-89 123.456E-89 -> -1
dqctm476 comparetotmag 123.4560000000E+89 123.456E+89 -> -1
dqctm477 comparetotmag 123.456000000E-89 123.456E-89 -> -1
dqctm478 comparetotmag 123.45600000E+89 123.456E+89 -> -1
dqctm479 comparetotmag 123.4560000E-89 123.456E-89 -> -1
dqctm480 comparetotmag 123.456000E+89 123.456E+89 -> -1
dqctm481 comparetotmag 123.45600E-89 123.456E-89 -> -1
dqctm482 comparetotmag 123.4560E+89 123.456E+89 -> -1
dqctm483 comparetotmag 123.456E-89 123.456E-89 -> 0
dqctm487 comparetotmag 123.456E+89 123.4560000000000E+89 -> 1
dqctm488 comparetotmag 123.456E-89 123.456000000000E-89 -> 1
dqctm489 comparetotmag 123.456E+89 123.45600000000E+89 -> 1
dqctm490 comparetotmag 123.456E-89 123.4560000000E-89 -> 1
dqctm491 comparetotmag 123.456E+89 123.456000000E+89 -> 1
dqctm492 comparetotmag 123.456E-89 123.45600000E-89 -> 1
dqctm493 comparetotmag 123.456E+89 123.4560000E+89 -> 1
dqctm494 comparetotmag 123.456E-89 123.456000E-89 -> 1
dqctm495 comparetotmag 123.456E+89 123.45600E+89 -> 1
dqctm496 comparetotmag 123.456E-89 123.4560E-89 -> 1
dqctm497 comparetotmag 123.456E+89 123.456E+89 -> 0
-- wide-ranging, around precision; signs equal
dqctm498 comparetotmag 1 1E-17 -> 1
dqctm499 comparetotmag 1 1E-16 -> 1
dqctm500 comparetotmag 1 1E-15 -> 1
dqctm501 comparetotmag 1 1E-14 -> 1
dqctm502 comparetotmag 1 1E-13 -> 1
dqctm503 comparetotmag 1 1E-12 -> 1
dqctm504 comparetotmag 1 1E-11 -> 1
dqctm505 comparetotmag 1 1E-10 -> 1
dqctm506 comparetotmag 1 1E-9 -> 1
dqctm507 comparetotmag 1 1E-8 -> 1
dqctm508 comparetotmag 1 1E-7 -> 1
dqctm509 comparetotmag 1 1E-6 -> 1
dqctm510 comparetotmag 1 1E-5 -> 1
dqctm511 comparetotmag 1 1E-4 -> 1
dqctm512 comparetotmag 1 1E-3 -> 1
dqctm513 comparetotmag 1 1E-2 -> 1
dqctm514 comparetotmag 1 1E-1 -> 1
dqctm515 comparetotmag 1 1E-0 -> 0
dqctm516 comparetotmag 1 1E+1 -> -1
dqctm517 comparetotmag 1 1E+2 -> -1
dqctm518 comparetotmag 1 1E+3 -> -1
dqctm519 comparetotmag 1 1E+4 -> -1
dqctm521 comparetotmag 1 1E+5 -> -1
dqctm522 comparetotmag 1 1E+6 -> -1
dqctm523 comparetotmag 1 1E+7 -> -1
dqctm524 comparetotmag 1 1E+8 -> -1
dqctm525 comparetotmag 1 1E+9 -> -1
dqctm526 comparetotmag 1 1E+10 -> -1
dqctm527 comparetotmag 1 1E+11 -> -1
dqctm528 comparetotmag 1 1E+12 -> -1
dqctm529 comparetotmag 1 1E+13 -> -1
dqctm530 comparetotmag 1 1E+14 -> -1
dqctm531 comparetotmag 1 1E+15 -> -1
dqctm532 comparetotmag 1 1E+16 -> -1
dqctm533 comparetotmag 1 1E+17 -> -1
-- LR swap
dqctm538 comparetotmag 1E-17 1 -> -1
dqctm539 comparetotmag 1E-16 1 -> -1
dqctm540 comparetotmag 1E-15 1 -> -1
dqctm541 comparetotmag 1E-14 1 -> -1
dqctm542 comparetotmag 1E-13 1 -> -1
dqctm543 comparetotmag 1E-12 1 -> -1
dqctm544 comparetotmag 1E-11 1 -> -1
dqctm545 comparetotmag 1E-10 1 -> -1
dqctm546 comparetotmag 1E-9 1 -> -1
dqctm547 comparetotmag 1E-8 1 -> -1
dqctm548 comparetotmag 1E-7 1 -> -1
dqctm549 comparetotmag 1E-6 1 -> -1
dqctm550 comparetotmag 1E-5 1 -> -1
dqctm551 comparetotmag 1E-4 1 -> -1
dqctm552 comparetotmag 1E-3 1 -> -1
dqctm553 comparetotmag 1E-2 1 -> -1
dqctm554 comparetotmag 1E-1 1 -> -1
dqctm555 comparetotmag 1E-0 1 -> 0
dqctm556 comparetotmag 1E+1 1 -> 1
dqctm557 comparetotmag 1E+2 1 -> 1
dqctm558 comparetotmag 1E+3 1 -> 1
dqctm559 comparetotmag 1E+4 1 -> 1
dqctm561 comparetotmag 1E+5 1 -> 1
dqctm562 comparetotmag 1E+6 1 -> 1
dqctm563 comparetotmag 1E+7 1 -> 1
dqctm564 comparetotmag 1E+8 1 -> 1
dqctm565 comparetotmag 1E+9 1 -> 1
dqctm566 comparetotmag 1E+10 1 -> 1
dqctm567 comparetotmag 1E+11 1 -> 1
dqctm568 comparetotmag 1E+12 1 -> 1
dqctm569 comparetotmag 1E+13 1 -> 1
dqctm570 comparetotmag 1E+14 1 -> 1
dqctm571 comparetotmag 1E+15 1 -> 1
dqctm572 comparetotmag 1E+16 1 -> 1
dqctm573 comparetotmag 1E+17 1 -> 1
-- similar with a useful coefficient, one side only
dqctm578 comparetotmag 0.000000987654321 1E-17 -> 1
dqctm579 comparetotmag 0.000000987654321 1E-16 -> 1
dqctm580 comparetotmag 0.000000987654321 1E-15 -> 1
dqctm581 comparetotmag 0.000000987654321 1E-14 -> 1
dqctm582 comparetotmag 0.000000987654321 1E-13 -> 1
dqctm583 comparetotmag 0.000000987654321 1E-12 -> 1
dqctm584 comparetotmag 0.000000987654321 1E-11 -> 1
dqctm585 comparetotmag 0.000000987654321 1E-10 -> 1
dqctm586 comparetotmag 0.000000987654321 1E-9 -> 1
dqctm587 comparetotmag 0.000000987654321 1E-8 -> 1
dqctm588 comparetotmag 0.000000987654321 1E-7 -> 1
dqctm589 comparetotmag 0.000000987654321 1E-6 -> -1
dqctm590 comparetotmag 0.000000987654321 1E-5 -> -1
dqctm591 comparetotmag 0.000000987654321 1E-4 -> -1
dqctm592 comparetotmag 0.000000987654321 1E-3 -> -1
dqctm593 comparetotmag 0.000000987654321 1E-2 -> -1
dqctm594 comparetotmag 0.000000987654321 1E-1 -> -1
dqctm595 comparetotmag 0.000000987654321 1E-0 -> -1
dqctm596 comparetotmag 0.000000987654321 1E+1 -> -1
dqctm597 comparetotmag 0.000000987654321 1E+2 -> -1
dqctm598 comparetotmag 0.000000987654321 1E+3 -> -1
dqctm599 comparetotmag 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
dqctm600 comparetotmag 12 12.2345 -> -1
dqctm601 comparetotmag 12.0 12.2345 -> -1
dqctm602 comparetotmag 12.00 12.2345 -> -1
dqctm603 comparetotmag 12.000 12.2345 -> -1
dqctm604 comparetotmag 12.0000 12.2345 -> -1
dqctm605 comparetotmag 12.00000 12.2345 -> -1
dqctm606 comparetotmag 12.000000 12.2345 -> -1
dqctm607 comparetotmag 12.0000000 12.2345 -> -1
dqctm608 comparetotmag 12.00000000 12.2345 -> -1
dqctm609 comparetotmag 12.000000000 12.2345 -> -1
dqctm610 comparetotmag 12.1234 12 -> 1
dqctm611 comparetotmag 12.1234 12.0 -> 1
dqctm612 comparetotmag 12.1234 12.00 -> 1
dqctm613 comparetotmag 12.1234 12.000 -> 1
dqctm614 comparetotmag 12.1234 12.0000 -> 1
dqctm615 comparetotmag 12.1234 12.00000 -> 1
dqctm616 comparetotmag 12.1234 12.000000 -> 1
dqctm617 comparetotmag 12.1234 12.0000000 -> 1
dqctm618 comparetotmag 12.1234 12.00000000 -> 1
dqctm619 comparetotmag 12.1234 12.000000000 -> 1
dqctm620 comparetotmag -12 -12.2345 -> -1
dqctm621 comparetotmag -12.0 -12.2345 -> -1
dqctm622 comparetotmag -12.00 -12.2345 -> -1
dqctm623 comparetotmag -12.000 -12.2345 -> -1
dqctm624 comparetotmag -12.0000 -12.2345 -> -1
dqctm625 comparetotmag -12.00000 -12.2345 -> -1
dqctm626 comparetotmag -12.000000 -12.2345 -> -1
dqctm627 comparetotmag -12.0000000 -12.2345 -> -1
dqctm628 comparetotmag -12.00000000 -12.2345 -> -1
dqctm629 comparetotmag -12.000000000 -12.2345 -> -1
dqctm630 comparetotmag -12.1234 -12 -> 1
dqctm631 comparetotmag -12.1234 -12.0 -> 1
dqctm632 comparetotmag -12.1234 -12.00 -> 1
dqctm633 comparetotmag -12.1234 -12.000 -> 1
dqctm634 comparetotmag -12.1234 -12.0000 -> 1
dqctm635 comparetotmag -12.1234 -12.00000 -> 1
dqctm636 comparetotmag -12.1234 -12.000000 -> 1
dqctm637 comparetotmag -12.1234 -12.0000000 -> 1
dqctm638 comparetotmag -12.1234 -12.00000000 -> 1
dqctm639 comparetotmag -12.1234 -12.000000000 -> 1
-- extended zeros
dqctm640 comparetotmag 0 0 -> 0
dqctm641 comparetotmag 0 -0 -> 0
dqctm642 comparetotmag 0 -0.0 -> 1
dqctm643 comparetotmag 0 0.0 -> 1
dqctm644 comparetotmag -0 0 -> 0
dqctm645 comparetotmag -0 -0 -> 0
dqctm646 comparetotmag -0 -0.0 -> 1
dqctm647 comparetotmag -0 0.0 -> 1
dqctm648 comparetotmag 0.0 0 -> -1
dqctm649 comparetotmag 0.0 -0 -> -1
dqctm650 comparetotmag 0.0 -0.0 -> 0
dqctm651 comparetotmag 0.0 0.0 -> 0
dqctm652 comparetotmag -0.0 0 -> -1
dqctm653 comparetotmag -0.0 -0 -> -1
dqctm654 comparetotmag -0.0 -0.0 -> 0
dqctm655 comparetotmag -0.0 0.0 -> 0
dqctm656 comparetotmag -0E1 0.0 -> 1
dqctm657 comparetotmag -0E2 0.0 -> 1
dqctm658 comparetotmag 0E1 0.0 -> 1
dqctm659 comparetotmag 0E2 0.0 -> 1
dqctm660 comparetotmag -0E1 0 -> 1
dqctm661 comparetotmag -0E2 0 -> 1
dqctm662 comparetotmag 0E1 0 -> 1
dqctm663 comparetotmag 0E2 0 -> 1
dqctm664 comparetotmag -0E1 -0E1 -> 0
dqctm665 comparetotmag -0E2 -0E1 -> 1
dqctm666 comparetotmag 0E1 -0E1 -> 0
dqctm667 comparetotmag 0E2 -0E1 -> 1
dqctm668 comparetotmag -0E1 -0E2 -> -1
dqctm669 comparetotmag -0E2 -0E2 -> 0
dqctm670 comparetotmag 0E1 -0E2 -> -1
dqctm671 comparetotmag 0E2 -0E2 -> 0
dqctm672 comparetotmag -0E1 0E1 -> 0
dqctm673 comparetotmag -0E2 0E1 -> 1
dqctm674 comparetotmag 0E1 0E1 -> 0
dqctm675 comparetotmag 0E2 0E1 -> 1
dqctm676 comparetotmag -0E1 0E2 -> -1
dqctm677 comparetotmag -0E2 0E2 -> 0
dqctm678 comparetotmag 0E1 0E2 -> -1
dqctm679 comparetotmag 0E2 0E2 -> 0
-- trailing zeros; unit-y
dqctm680 comparetotmag 12 12 -> 0
dqctm681 comparetotmag 12 12.0 -> 1
dqctm682 comparetotmag 12 12.00 -> 1
dqctm683 comparetotmag 12 12.000 -> 1
dqctm684 comparetotmag 12 12.0000 -> 1
dqctm685 comparetotmag 12 12.00000 -> 1
dqctm686 comparetotmag 12 12.000000 -> 1
dqctm687 comparetotmag 12 12.0000000 -> 1
dqctm688 comparetotmag 12 12.00000000 -> 1
dqctm689 comparetotmag 12 12.000000000 -> 1
dqctm690 comparetotmag 12 12 -> 0
dqctm691 comparetotmag 12.0 12 -> -1
dqctm692 comparetotmag 12.00 12 -> -1
dqctm693 comparetotmag 12.000 12 -> -1
dqctm694 comparetotmag 12.0000 12 -> -1
dqctm695 comparetotmag 12.00000 12 -> -1
dqctm696 comparetotmag 12.000000 12 -> -1
dqctm697 comparetotmag 12.0000000 12 -> -1
dqctm698 comparetotmag 12.00000000 12 -> -1
dqctm699 comparetotmag 12.000000000 12 -> -1
-- old long operand checks
dqctm701 comparetotmag 12345678000 1 -> 1
dqctm702 comparetotmag 1 12345678000 -> -1
dqctm703 comparetotmag 1234567800 1 -> 1
dqctm704 comparetotmag 1 1234567800 -> -1
dqctm705 comparetotmag 1234567890 1 -> 1
dqctm706 comparetotmag 1 1234567890 -> -1
dqctm707 comparetotmag 1234567891 1 -> 1
dqctm708 comparetotmag 1 1234567891 -> -1
dqctm709 comparetotmag 12345678901 1 -> 1
dqctm710 comparetotmag 1 12345678901 -> -1
dqctm711 comparetotmag 1234567896 1 -> 1
dqctm712 comparetotmag 1 1234567896 -> -1
dqctm713 comparetotmag -1234567891 1 -> 1
dqctm714 comparetotmag 1 -1234567891 -> -1
dqctm715 comparetotmag -12345678901 1 -> 1
dqctm716 comparetotmag 1 -12345678901 -> -1
dqctm717 comparetotmag -1234567896 1 -> 1
dqctm718 comparetotmag 1 -1234567896 -> -1
-- old residue cases
dqctm740 comparetotmag 1 0.9999999 -> 1
dqctm741 comparetotmag 1 0.999999 -> 1
dqctm742 comparetotmag 1 0.99999 -> 1
dqctm743 comparetotmag 1 1.0000 -> 1
dqctm744 comparetotmag 1 1.00001 -> -1
dqctm745 comparetotmag 1 1.000001 -> -1
dqctm746 comparetotmag 1 1.0000001 -> -1
dqctm750 comparetotmag 0.9999999 1 -> -1
dqctm751 comparetotmag 0.999999 1 -> -1
dqctm752 comparetotmag 0.99999 1 -> -1
dqctm753 comparetotmag 1.0000 1 -> -1
dqctm754 comparetotmag 1.00001 1 -> 1
dqctm755 comparetotmag 1.000001 1 -> 1
dqctm756 comparetotmag 1.0000001 1 -> 1
-- Specials
dqctm780 comparetotmag Inf -Inf -> 0
dqctm781 comparetotmag Inf -1000 -> 1
dqctm782 comparetotmag Inf -1 -> 1
dqctm783 comparetotmag Inf -0 -> 1
dqctm784 comparetotmag Inf 0 -> 1
dqctm785 comparetotmag Inf 1 -> 1
dqctm786 comparetotmag Inf 1000 -> 1
dqctm787 comparetotmag Inf Inf -> 0
dqctm788 comparetotmag -1000 Inf -> -1
dqctm789 comparetotmag -Inf Inf -> 0
dqctm790 comparetotmag -1 Inf -> -1
dqctm791 comparetotmag -0 Inf -> -1
dqctm792 comparetotmag 0 Inf -> -1
dqctm793 comparetotmag 1 Inf -> -1
dqctm794 comparetotmag 1000 Inf -> -1
dqctm795 comparetotmag Inf Inf -> 0
dqctm800 comparetotmag -Inf -Inf -> 0
dqctm801 comparetotmag -Inf -1000 -> 1
dqctm802 comparetotmag -Inf -1 -> 1
dqctm803 comparetotmag -Inf -0 -> 1
dqctm804 comparetotmag -Inf 0 -> 1
dqctm805 comparetotmag -Inf 1 -> 1
dqctm806 comparetotmag -Inf 1000 -> 1
dqctm807 comparetotmag -Inf Inf -> 0
dqctm808 comparetotmag -Inf -Inf -> 0
dqctm809 comparetotmag -1000 -Inf -> -1
dqctm810 comparetotmag -1 -Inf -> -1
dqctm811 comparetotmag -0 -Inf -> -1
dqctm812 comparetotmag 0 -Inf -> -1
dqctm813 comparetotmag 1 -Inf -> -1
dqctm814 comparetotmag 1000 -Inf -> -1
dqctm815 comparetotmag Inf -Inf -> 0
dqctm821 comparetotmag NaN -Inf -> 1
dqctm822 comparetotmag NaN -1000 -> 1
dqctm823 comparetotmag NaN -1 -> 1
dqctm824 comparetotmag NaN -0 -> 1
dqctm825 comparetotmag NaN 0 -> 1
dqctm826 comparetotmag NaN 1 -> 1
dqctm827 comparetotmag NaN 1000 -> 1
dqctm828 comparetotmag NaN Inf -> 1
dqctm829 comparetotmag NaN NaN -> 0
dqctm830 comparetotmag -Inf NaN -> -1
dqctm831 comparetotmag -1000 NaN -> -1
dqctm832 comparetotmag -1 NaN -> -1
dqctm833 comparetotmag -0 NaN -> -1
dqctm834 comparetotmag 0 NaN -> -1
dqctm835 comparetotmag 1 NaN -> -1
dqctm836 comparetotmag 1000 NaN -> -1
dqctm837 comparetotmag Inf NaN -> -1
dqctm838 comparetotmag -NaN -NaN -> 0
dqctm839 comparetotmag +NaN -NaN -> 0
dqctm840 comparetotmag -NaN +NaN -> 0
dqctm841 comparetotmag sNaN -sNaN -> 0
dqctm842 comparetotmag sNaN -NaN -> -1
dqctm843 comparetotmag sNaN -Inf -> 1
dqctm844 comparetotmag sNaN -1000 -> 1
dqctm845 comparetotmag sNaN -1 -> 1
dqctm846 comparetotmag sNaN -0 -> 1
dqctm847 comparetotmag sNaN 0 -> 1
dqctm848 comparetotmag sNaN 1 -> 1
dqctm849 comparetotmag sNaN 1000 -> 1
dqctm850 comparetotmag sNaN NaN -> -1
dqctm851 comparetotmag sNaN sNaN -> 0
dqctm852 comparetotmag -sNaN sNaN -> 0
dqctm853 comparetotmag -NaN sNaN -> 1
dqctm854 comparetotmag -Inf sNaN -> -1
dqctm855 comparetotmag -1000 sNaN -> -1
dqctm856 comparetotmag -1 sNaN -> -1
dqctm857 comparetotmag -0 sNaN -> -1
dqctm858 comparetotmag 0 sNaN -> -1
dqctm859 comparetotmag 1 sNaN -> -1
dqctm860 comparetotmag 1000 sNaN -> -1
dqctm861 comparetotmag Inf sNaN -> -1
dqctm862 comparetotmag NaN sNaN -> 1
dqctm863 comparetotmag sNaN sNaN -> 0
dqctm871 comparetotmag -sNaN -sNaN -> 0
dqctm872 comparetotmag -sNaN -NaN -> -1
dqctm873 comparetotmag -sNaN -Inf -> 1
dqctm874 comparetotmag -sNaN -1000 -> 1
dqctm875 comparetotmag -sNaN -1 -> 1
dqctm876 comparetotmag -sNaN -0 -> 1
dqctm877 comparetotmag -sNaN 0 -> 1
dqctm878 comparetotmag -sNaN 1 -> 1
dqctm879 comparetotmag -sNaN 1000 -> 1
dqctm880 comparetotmag -sNaN NaN -> -1
dqctm881 comparetotmag -sNaN sNaN -> 0
dqctm882 comparetotmag -sNaN -sNaN -> 0
dqctm883 comparetotmag -NaN -sNaN -> 1
dqctm884 comparetotmag -Inf -sNaN -> -1
dqctm885 comparetotmag -1000 -sNaN -> -1
dqctm886 comparetotmag -1 -sNaN -> -1
dqctm887 comparetotmag -0 -sNaN -> -1
dqctm888 comparetotmag 0 -sNaN -> -1
dqctm889 comparetotmag 1 -sNaN -> -1
dqctm890 comparetotmag 1000 -sNaN -> -1
dqctm891 comparetotmag Inf -sNaN -> -1
dqctm892 comparetotmag NaN -sNaN -> 1
dqctm893 comparetotmag sNaN -sNaN -> 0
-- NaNs with payload
dqctm960 comparetotmag NaN9 -Inf -> 1
dqctm961 comparetotmag NaN8 999 -> 1
dqctm962 comparetotmag NaN77 Inf -> 1
dqctm963 comparetotmag -NaN67 NaN5 -> 1
dqctm964 comparetotmag -Inf -NaN4 -> -1
dqctm965 comparetotmag -999 -NaN33 -> -1
dqctm966 comparetotmag Inf NaN2 -> -1
dqctm970 comparetotmag -NaN41 -NaN42 -> -1
dqctm971 comparetotmag +NaN41 -NaN42 -> -1
dqctm972 comparetotmag -NaN41 +NaN42 -> -1
dqctm973 comparetotmag +NaN41 +NaN42 -> -1
dqctm974 comparetotmag -NaN42 -NaN01 -> 1
dqctm975 comparetotmag +NaN42 -NaN01 -> 1
dqctm976 comparetotmag -NaN42 +NaN01 -> 1
dqctm977 comparetotmag +NaN42 +NaN01 -> 1
dqctm980 comparetotmag -sNaN771 -sNaN772 -> -1
dqctm981 comparetotmag +sNaN771 -sNaN772 -> -1
dqctm982 comparetotmag -sNaN771 +sNaN772 -> -1
dqctm983 comparetotmag +sNaN771 +sNaN772 -> -1
dqctm984 comparetotmag -sNaN772 -sNaN771 -> 1
dqctm985 comparetotmag +sNaN772 -sNaN771 -> 1
dqctm986 comparetotmag -sNaN772 +sNaN771 -> 1
dqctm987 comparetotmag +sNaN772 +sNaN771 -> 1
dqctm991 comparetotmag -sNaN99 -Inf -> 1
dqctm992 comparetotmag sNaN98 -11 -> 1
dqctm993 comparetotmag sNaN97 NaN -> -1
dqctm994 comparetotmag sNaN16 sNaN94 -> -1
dqctm995 comparetotmag NaN85 sNaN83 -> 1
dqctm996 comparetotmag -Inf sNaN92 -> -1
dqctm997 comparetotmag 088 sNaN81 -> -1
dqctm998 comparetotmag Inf sNaN90 -> -1
dqctm999 comparetotmag NaN -sNaN89 -> 1
-- spread zeros
dqctm1110 comparetotmag 0E-6143 0 -> -1
dqctm1111 comparetotmag 0E-6143 -0 -> -1
dqctm1112 comparetotmag -0E-6143 0 -> -1
dqctm1113 comparetotmag -0E-6143 -0 -> -1
dqctm1114 comparetotmag 0E-6143 0E+6144 -> -1
dqctm1115 comparetotmag 0E-6143 -0E+6144 -> -1
dqctm1116 comparetotmag -0E-6143 0E+6144 -> -1
dqctm1117 comparetotmag -0E-6143 -0E+6144 -> -1
dqctm1118 comparetotmag 0 0E+6144 -> -1
dqctm1119 comparetotmag 0 -0E+6144 -> -1
dqctm1120 comparetotmag -0 0E+6144 -> -1
dqctm1121 comparetotmag -0 -0E+6144 -> -1
dqctm1130 comparetotmag 0E+6144 0 -> 1
dqctm1131 comparetotmag 0E+6144 -0 -> 1
dqctm1132 comparetotmag -0E+6144 0 -> 1
dqctm1133 comparetotmag -0E+6144 -0 -> 1
dqctm1134 comparetotmag 0E+6144 0E-6143 -> 1
dqctm1135 comparetotmag 0E+6144 -0E-6143 -> 1
dqctm1136 comparetotmag -0E+6144 0E-6143 -> 1
dqctm1137 comparetotmag -0E+6144 -0E-6143 -> 1
dqctm1138 comparetotmag 0 0E-6143 -> 1
dqctm1139 comparetotmag 0 -0E-6143 -> 1
dqctm1140 comparetotmag -0 0E-6143 -> 1
dqctm1141 comparetotmag -0 -0E-6143 -> 1
-- Null tests
dqctm9990 comparetotmag 10 # -> NaN Invalid_operation
dqctm9991 comparetotmag # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,88 @@
------------------------------------------------------------------------
-- dqCopy.decTest -- quiet decQuad copy --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check
dqcpy001 copy +7.50 -> 7.50
-- Infinities
dqcpy011 copy Infinity -> Infinity
dqcpy012 copy -Infinity -> -Infinity
-- NaNs, 0 payload
dqcpy021 copy NaN -> NaN
dqcpy022 copy -NaN -> -NaN
dqcpy023 copy sNaN -> sNaN
dqcpy024 copy -sNaN -> -sNaN
-- NaNs, non-0 payload
dqcpy031 copy NaN10 -> NaN10
dqcpy032 copy -NaN10 -> -NaN10
dqcpy033 copy sNaN10 -> sNaN10
dqcpy034 copy -sNaN10 -> -sNaN10
dqcpy035 copy NaN7 -> NaN7
dqcpy036 copy -NaN7 -> -NaN7
dqcpy037 copy sNaN101 -> sNaN101
dqcpy038 copy -sNaN101 -> -sNaN101
-- finites
dqcpy101 copy 7 -> 7
dqcpy102 copy -7 -> -7
dqcpy103 copy 75 -> 75
dqcpy104 copy -75 -> -75
dqcpy105 copy 7.50 -> 7.50
dqcpy106 copy -7.50 -> -7.50
dqcpy107 copy 7.500 -> 7.500
dqcpy108 copy -7.500 -> -7.500
-- zeros
dqcpy111 copy 0 -> 0
dqcpy112 copy -0 -> -0
dqcpy113 copy 0E+4 -> 0E+4
dqcpy114 copy -0E+4 -> -0E+4
dqcpy115 copy 0.0000 -> 0.0000
dqcpy116 copy -0.0000 -> -0.0000
dqcpy117 copy 0E-141 -> 0E-141
dqcpy118 copy -0E-141 -> -0E-141
-- full coefficients, alternating bits
dqcpy121 copy 2682682682682682682682682682682682 -> 2682682682682682682682682682682682
dqcpy122 copy -2682682682682682682682682682682682 -> -2682682682682682682682682682682682
dqcpy123 copy 1341341341341341341341341341341341 -> 1341341341341341341341341341341341
dqcpy124 copy -1341341341341341341341341341341341 -> -1341341341341341341341341341341341
-- Nmax, Nmin, Ntiny
dqcpy131 copy 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144
dqcpy132 copy 1E-6143 -> 1E-6143
dqcpy133 copy 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143
dqcpy134 copy 1E-6176 -> 1E-6176
dqcpy135 copy -1E-6176 -> -1E-6176
dqcpy136 copy -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143
dqcpy137 copy -1E-6143 -> -1E-6143
dqcpy138 copy -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144

View file

@ -0,0 +1,88 @@
------------------------------------------------------------------------
-- dqCopyAbs.decTest -- quiet decQuad copy and set sign to zero --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check
dqcpa001 copyabs +7.50 -> 7.50
-- Infinities
dqcpa011 copyabs Infinity -> Infinity
dqcpa012 copyabs -Infinity -> Infinity
-- NaNs, 0 payload
dqcpa021 copyabs NaN -> NaN
dqcpa022 copyabs -NaN -> NaN
dqcpa023 copyabs sNaN -> sNaN
dqcpa024 copyabs -sNaN -> sNaN
-- NaNs, non-0 payload
dqcpa031 copyabs NaN10 -> NaN10
dqcpa032 copyabs -NaN15 -> NaN15
dqcpa033 copyabs sNaN15 -> sNaN15
dqcpa034 copyabs -sNaN10 -> sNaN10
dqcpa035 copyabs NaN7 -> NaN7
dqcpa036 copyabs -NaN7 -> NaN7
dqcpa037 copyabs sNaN101 -> sNaN101
dqcpa038 copyabs -sNaN101 -> sNaN101
-- finites
dqcpa101 copyabs 7 -> 7
dqcpa102 copyabs -7 -> 7
dqcpa103 copyabs 75 -> 75
dqcpa104 copyabs -75 -> 75
dqcpa105 copyabs 7.10 -> 7.10
dqcpa106 copyabs -7.10 -> 7.10
dqcpa107 copyabs 7.500 -> 7.500
dqcpa108 copyabs -7.500 -> 7.500
-- zeros
dqcpa111 copyabs 0 -> 0
dqcpa112 copyabs -0 -> 0
dqcpa113 copyabs 0E+6 -> 0E+6
dqcpa114 copyabs -0E+6 -> 0E+6
dqcpa115 copyabs 0.0000 -> 0.0000
dqcpa116 copyabs -0.0000 -> 0.0000
dqcpa117 copyabs 0E-141 -> 0E-141
dqcpa118 copyabs -0E-141 -> 0E-141
-- full coefficients, alternating bits
dqcpa121 copyabs 2682682682682682682682682682682682 -> 2682682682682682682682682682682682
dqcpa122 copyabs -2682682682682682682682682682682682 -> 2682682682682682682682682682682682
dqcpa123 copyabs 1341341341341341341341341341341341 -> 1341341341341341341341341341341341
dqcpa124 copyabs -1341341341341341341341341341341341 -> 1341341341341341341341341341341341
-- Nmax, Nmin, Ntiny
dqcpa131 copyabs 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144
dqcpa132 copyabs 1E-6143 -> 1E-6143
dqcpa133 copyabs 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143
dqcpa134 copyabs 1E-6176 -> 1E-6176
dqcpa135 copyabs -1E-6176 -> 1E-6176
dqcpa136 copyabs -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143
dqcpa137 copyabs -1E-6143 -> 1E-6143
dqcpa138 copyabs -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144

View file

@ -0,0 +1,88 @@
------------------------------------------------------------------------
-- dqCopyNegate.decTest -- quiet decQuad copy and negate --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check
dqcpn001 copynegate +7.50 -> -7.50
-- Infinities
dqcpn011 copynegate Infinity -> -Infinity
dqcpn012 copynegate -Infinity -> Infinity
-- NaNs, 0 payload
dqcpn021 copynegate NaN -> -NaN
dqcpn022 copynegate -NaN -> NaN
dqcpn023 copynegate sNaN -> -sNaN
dqcpn024 copynegate -sNaN -> sNaN
-- NaNs, non-0 payload
dqcpn031 copynegate NaN13 -> -NaN13
dqcpn032 copynegate -NaN13 -> NaN13
dqcpn033 copynegate sNaN13 -> -sNaN13
dqcpn034 copynegate -sNaN13 -> sNaN13
dqcpn035 copynegate NaN70 -> -NaN70
dqcpn036 copynegate -NaN70 -> NaN70
dqcpn037 copynegate sNaN101 -> -sNaN101
dqcpn038 copynegate -sNaN101 -> sNaN101
-- finites
dqcpn101 copynegate 7 -> -7
dqcpn102 copynegate -7 -> 7
dqcpn103 copynegate 75 -> -75
dqcpn104 copynegate -75 -> 75
dqcpn105 copynegate 7.50 -> -7.50
dqcpn106 copynegate -7.50 -> 7.50
dqcpn107 copynegate 7.500 -> -7.500
dqcpn108 copynegate -7.500 -> 7.500
-- zeros
dqcpn111 copynegate 0 -> -0
dqcpn112 copynegate -0 -> 0
dqcpn113 copynegate 0E+4 -> -0E+4
dqcpn114 copynegate -0E+4 -> 0E+4
dqcpn115 copynegate 0.0000 -> -0.0000
dqcpn116 copynegate -0.0000 -> 0.0000
dqcpn117 copynegate 0E-141 -> -0E-141
dqcpn118 copynegate -0E-141 -> 0E-141
-- full coefficients, alternating bits
dqcpn121 copynegate 2682682682682682682682682682682682 -> -2682682682682682682682682682682682
dqcpn122 copynegate -2682682682682682682682682682682682 -> 2682682682682682682682682682682682
dqcpn123 copynegate 1341341341341341341341341341341341 -> -1341341341341341341341341341341341
dqcpn124 copynegate -1341341341341341341341341341341341 -> 1341341341341341341341341341341341
-- Nmax, Nmin, Ntiny
dqcpn131 copynegate 9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144
dqcpn132 copynegate 1E-6143 -> -1E-6143
dqcpn133 copynegate 1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143
dqcpn134 copynegate 1E-6176 -> -1E-6176
dqcpn135 copynegate -1E-6176 -> 1E-6176
dqcpn136 copynegate -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143
dqcpn137 copynegate -1E-6143 -> 1E-6143
dqcpn138 copynegate -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144

View file

@ -0,0 +1,175 @@
------------------------------------------------------------------------
-- dqCopySign.decTest -- quiet decQuad copy with sign from rhs --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check
dqcps001 copysign +7.50 11 -> 7.50
-- Infinities
dqcps011 copysign Infinity 11 -> Infinity
dqcps012 copysign -Infinity 11 -> Infinity
-- NaNs, 0 payload
dqcps021 copysign NaN 11 -> NaN
dqcps022 copysign -NaN 11 -> NaN
dqcps023 copysign sNaN 11 -> sNaN
dqcps024 copysign -sNaN 11 -> sNaN
-- NaNs, non-0 payload
dqcps031 copysign NaN10 11 -> NaN10
dqcps032 copysign -NaN10 11 -> NaN10
dqcps033 copysign sNaN10 11 -> sNaN10
dqcps034 copysign -sNaN10 11 -> sNaN10
dqcps035 copysign NaN7 11 -> NaN7
dqcps036 copysign -NaN7 11 -> NaN7
dqcps037 copysign sNaN101 11 -> sNaN101
dqcps038 copysign -sNaN101 11 -> sNaN101
-- finites
dqcps101 copysign 7 11 -> 7
dqcps102 copysign -7 11 -> 7
dqcps103 copysign 75 11 -> 75
dqcps104 copysign -75 11 -> 75
dqcps105 copysign 7.50 11 -> 7.50
dqcps106 copysign -7.50 11 -> 7.50
dqcps107 copysign 7.500 11 -> 7.500
dqcps108 copysign -7.500 11 -> 7.500
-- zeros
dqcps111 copysign 0 11 -> 0
dqcps112 copysign -0 11 -> 0
dqcps113 copysign 0E+4 11 -> 0E+4
dqcps114 copysign -0E+4 11 -> 0E+4
dqcps115 copysign 0.0000 11 -> 0.0000
dqcps116 copysign -0.0000 11 -> 0.0000
dqcps117 copysign 0E-141 11 -> 0E-141
dqcps118 copysign -0E-141 11 -> 0E-141
-- full coefficients, alternating bits
dqcps121 copysign 2682682682682682682682682682682682 8 -> 2682682682682682682682682682682682
dqcps122 copysign -2682682682682682682682682682682682 8 -> 2682682682682682682682682682682682
dqcps123 copysign 1341341341341341341341341341341341 8 -> 1341341341341341341341341341341341
dqcps124 copysign -1341341341341341341341341341341341 8 -> 1341341341341341341341341341341341
-- Nmax, Nmin, Ntiny
dqcps131 copysign 9.999999999999999999999999999999999E+6144 8 -> 9.999999999999999999999999999999999E+6144
dqcps132 copysign 1E-6143 8 -> 1E-6143
dqcps133 copysign 1.000000000000000000000000000000000E-6143 8 -> 1.000000000000000000000000000000000E-6143
dqcps134 copysign 1E-6176 8 -> 1E-6176
dqcps135 copysign -1E-6176 8 -> 1E-6176
dqcps136 copysign -1.000000000000000000000000000000000E-6143 8 -> 1.000000000000000000000000000000000E-6143
dqcps137 copysign -1E-6143 8 -> 1E-6143
dqcps138 copysign -9.999999999999999999999999999999999E+6144 8 -> 9.999999999999999999999999999999999E+6144
-- repeat with negative RHS
-- Infinities
dqcps211 copysign Infinity -34 -> -Infinity
dqcps212 copysign -Infinity -34 -> -Infinity
-- NaNs, 0 payload
dqcps221 copysign NaN -34 -> -NaN
dqcps222 copysign -NaN -34 -> -NaN
dqcps223 copysign sNaN -34 -> -sNaN
dqcps224 copysign -sNaN -34 -> -sNaN
-- NaNs, non-0 payload
dqcps231 copysign NaN10 -34 -> -NaN10
dqcps232 copysign -NaN10 -34 -> -NaN10
dqcps233 copysign sNaN10 -34 -> -sNaN10
dqcps234 copysign -sNaN10 -34 -> -sNaN10
dqcps235 copysign NaN7 -34 -> -NaN7
dqcps236 copysign -NaN7 -34 -> -NaN7
dqcps237 copysign sNaN101 -34 -> -sNaN101
dqcps238 copysign -sNaN101 -34 -> -sNaN101
-- finites
dqcps301 copysign 7 -34 -> -7
dqcps302 copysign -7 -34 -> -7
dqcps303 copysign 75 -34 -> -75
dqcps304 copysign -75 -34 -> -75
dqcps305 copysign 7.50 -34 -> -7.50
dqcps306 copysign -7.50 -34 -> -7.50
dqcps307 copysign 7.500 -34 -> -7.500
dqcps308 copysign -7.500 -34 -> -7.500
-- zeros
dqcps311 copysign 0 -34 -> -0
dqcps312 copysign -0 -34 -> -0
dqcps313 copysign 0E+4 -34 -> -0E+4
dqcps314 copysign -0E+4 -34 -> -0E+4
dqcps315 copysign 0.0000 -34 -> -0.0000
dqcps316 copysign -0.0000 -34 -> -0.0000
dqcps317 copysign 0E-141 -34 -> -0E-141
dqcps318 copysign -0E-141 -34 -> -0E-141
-- full coefficients, alternating bits
dqcps321 copysign 2682682682682682682682682682682682 -9 -> -2682682682682682682682682682682682
dqcps322 copysign -2682682682682682682682682682682682 -9 -> -2682682682682682682682682682682682
dqcps323 copysign 1341341341341341341341341341341341 -9 -> -1341341341341341341341341341341341
dqcps324 copysign -1341341341341341341341341341341341 -9 -> -1341341341341341341341341341341341
-- Nmax, Nmin, Ntiny
dqcps331 copysign 9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6144
dqcps332 copysign 1E-6143 -1 -> -1E-6143
dqcps333 copysign 1.000000000000000000000000000000000E-6143 -1 -> -1.000000000000000000000000000000000E-6143
dqcps334 copysign 1E-6176 -1 -> -1E-6176
dqcps335 copysign -1E-6176 -3 -> -1E-6176
dqcps336 copysign -1.000000000000000000000000000000000E-6143 -3 -> -1.000000000000000000000000000000000E-6143
dqcps337 copysign -1E-6143 -3 -> -1E-6143
dqcps338 copysign -9.999999999999999999999999999999999E+6144 -3 -> -9.999999999999999999999999999999999E+6144
-- Other kinds of RHS
dqcps401 copysign 701 -34 -> -701
dqcps402 copysign -720 -34 -> -720
dqcps403 copysign 701 -0 -> -701
dqcps404 copysign -720 -0 -> -720
dqcps405 copysign 701 +0 -> 701
dqcps406 copysign -720 +0 -> 720
dqcps407 copysign 701 +34 -> 701
dqcps408 copysign -720 +34 -> 720
dqcps413 copysign 701 -Inf -> -701
dqcps414 copysign -720 -Inf -> -720
dqcps415 copysign 701 +Inf -> 701
dqcps416 copysign -720 +Inf -> 720
dqcps420 copysign 701 -NaN -> -701
dqcps421 copysign -720 -NaN -> -720
dqcps422 copysign 701 +NaN -> 701
dqcps423 copysign -720 +NaN -> 720
dqcps425 copysign -720 +NaN8 -> 720
dqcps426 copysign 701 -sNaN -> -701
dqcps427 copysign -720 -sNaN -> -720
dqcps428 copysign 701 +sNaN -> 701
dqcps429 copysign -720 +sNaN -> 720
dqcps430 copysign -720 +sNaN3 -> 720

View file

@ -0,0 +1,808 @@
------------------------------------------------------------------------
-- dqDivide.decTest -- decQuad division --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqdiv001 divide 1 1 -> 1
dqdiv002 divide 2 1 -> 2
dqdiv003 divide 1 2 -> 0.5
dqdiv004 divide 2 2 -> 1
dqdiv005 divide 0 1 -> 0
dqdiv006 divide 0 2 -> 0
dqdiv007 divide 1 3 -> 0.3333333333333333333333333333333333 Inexact Rounded
dqdiv008 divide 2 3 -> 0.6666666666666666666666666666666667 Inexact Rounded
dqdiv009 divide 3 3 -> 1
dqdiv010 divide 2.4 1 -> 2.4
dqdiv011 divide 2.4 -1 -> -2.4
dqdiv012 divide -2.4 1 -> -2.4
dqdiv013 divide -2.4 -1 -> 2.4
dqdiv014 divide 2.40 1 -> 2.40
dqdiv015 divide 2.400 1 -> 2.400
dqdiv016 divide 2.4 2 -> 1.2
dqdiv017 divide 2.400 2 -> 1.200
dqdiv018 divide 2. 2 -> 1
dqdiv019 divide 20 20 -> 1
dqdiv020 divide 187 187 -> 1
dqdiv021 divide 5 2 -> 2.5
dqdiv022 divide 50 20 -> 2.5
dqdiv023 divide 500 200 -> 2.5
dqdiv024 divide 50.0 20.0 -> 2.5
dqdiv025 divide 5.00 2.00 -> 2.5
dqdiv026 divide 5 2.0 -> 2.5
dqdiv027 divide 5 2.000 -> 2.5
dqdiv028 divide 5 0.20 -> 25
dqdiv029 divide 5 0.200 -> 25
dqdiv030 divide 10 1 -> 10
dqdiv031 divide 100 1 -> 100
dqdiv032 divide 1000 1 -> 1000
dqdiv033 divide 1000 100 -> 10
dqdiv035 divide 1 2 -> 0.5
dqdiv036 divide 1 4 -> 0.25
dqdiv037 divide 1 8 -> 0.125
dqdiv038 divide 1 16 -> 0.0625
dqdiv039 divide 1 32 -> 0.03125
dqdiv040 divide 1 64 -> 0.015625
dqdiv041 divide 1 -2 -> -0.5
dqdiv042 divide 1 -4 -> -0.25
dqdiv043 divide 1 -8 -> -0.125
dqdiv044 divide 1 -16 -> -0.0625
dqdiv045 divide 1 -32 -> -0.03125
dqdiv046 divide 1 -64 -> -0.015625
dqdiv047 divide -1 2 -> -0.5
dqdiv048 divide -1 4 -> -0.25
dqdiv049 divide -1 8 -> -0.125
dqdiv050 divide -1 16 -> -0.0625
dqdiv051 divide -1 32 -> -0.03125
dqdiv052 divide -1 64 -> -0.015625
dqdiv053 divide -1 -2 -> 0.5
dqdiv054 divide -1 -4 -> 0.25
dqdiv055 divide -1 -8 -> 0.125
dqdiv056 divide -1 -16 -> 0.0625
dqdiv057 divide -1 -32 -> 0.03125
dqdiv058 divide -1 -64 -> 0.015625
-- bcdTime
dqdiv060 divide 1 7 -> 0.1428571428571428571428571428571429 Inexact Rounded
dqdiv061 divide 1.2345678 1.9876543 -> 0.6211179680490717123193907511985359 Inexact Rounded
-- 1234567890123456
dqdiv067 divide 9999999999999999999999999999999999 1 -> 9999999999999999999999999999999999
dqdiv068 divide 999999999999999999999999999999999 1 -> 999999999999999999999999999999999
dqdiv069 divide 99999999999999999999999999999999 1 -> 99999999999999999999999999999999
dqdiv070 divide 99999999999999999 1 -> 99999999999999999
dqdiv071 divide 9999999999999999 1 -> 9999999999999999
dqdiv072 divide 999999999999999 1 -> 999999999999999
dqdiv073 divide 99999999999999 1 -> 99999999999999
dqdiv074 divide 9999999999999 1 -> 9999999999999
dqdiv075 divide 999999999999 1 -> 999999999999
dqdiv076 divide 99999999999 1 -> 99999999999
dqdiv077 divide 9999999999 1 -> 9999999999
dqdiv078 divide 999999999 1 -> 999999999
dqdiv079 divide 99999999 1 -> 99999999
dqdiv080 divide 9999999 1 -> 9999999
dqdiv081 divide 999999 1 -> 999999
dqdiv082 divide 99999 1 -> 99999
dqdiv083 divide 9999 1 -> 9999
dqdiv084 divide 999 1 -> 999
dqdiv085 divide 99 1 -> 99
dqdiv086 divide 9 1 -> 9
dqdiv090 divide 0. 1 -> 0
dqdiv091 divide .0 1 -> 0.0
dqdiv092 divide 0.00 1 -> 0.00
dqdiv093 divide 0.00E+9 1 -> 0E+7
dqdiv094 divide 0.0000E-50 1 -> 0E-54
dqdiv095 divide 1 1E-8 -> 1E+8
dqdiv096 divide 1 1E-9 -> 1E+9
dqdiv097 divide 1 1E-10 -> 1E+10
dqdiv098 divide 1 1E-11 -> 1E+11
dqdiv099 divide 1 1E-12 -> 1E+12
dqdiv100 divide 1 1 -> 1
dqdiv101 divide 1 2 -> 0.5
dqdiv102 divide 1 3 -> 0.3333333333333333333333333333333333 Inexact Rounded
dqdiv103 divide 1 4 -> 0.25
dqdiv104 divide 1 5 -> 0.2
dqdiv105 divide 1 6 -> 0.1666666666666666666666666666666667 Inexact Rounded
dqdiv106 divide 1 7 -> 0.1428571428571428571428571428571429 Inexact Rounded
dqdiv107 divide 1 8 -> 0.125
dqdiv108 divide 1 9 -> 0.1111111111111111111111111111111111 Inexact Rounded
dqdiv109 divide 1 10 -> 0.1
dqdiv110 divide 1 1 -> 1
dqdiv111 divide 2 1 -> 2
dqdiv112 divide 3 1 -> 3
dqdiv113 divide 4 1 -> 4
dqdiv114 divide 5 1 -> 5
dqdiv115 divide 6 1 -> 6
dqdiv116 divide 7 1 -> 7
dqdiv117 divide 8 1 -> 8
dqdiv118 divide 9 1 -> 9
dqdiv119 divide 10 1 -> 10
dqdiv120 divide 3E+1 0.001 -> 3E+4
dqdiv121 divide 2.200 2 -> 1.100
dqdiv130 divide 12345 4.999 -> 2469.493898779755951190238047609522 Inexact Rounded
dqdiv131 divide 12345 4.99 -> 2473.947895791583166332665330661323 Inexact Rounded
dqdiv132 divide 12345 4.9 -> 2519.387755102040816326530612244898 Inexact Rounded
dqdiv133 divide 12345 5 -> 2469
dqdiv134 divide 12345 5.1 -> 2420.588235294117647058823529411765 Inexact Rounded
dqdiv135 divide 12345 5.01 -> 2464.071856287425149700598802395210 Inexact Rounded
dqdiv136 divide 12345 5.001 -> 2468.506298740251949610077984403119 Inexact Rounded
-- test possibly imprecise results
dqdiv220 divide 391 597 -> 0.6549413735343383584589614740368509 Inexact Rounded
dqdiv221 divide 391 -597 -> -0.6549413735343383584589614740368509 Inexact Rounded
dqdiv222 divide -391 597 -> -0.6549413735343383584589614740368509 Inexact Rounded
dqdiv223 divide -391 -597 -> 0.6549413735343383584589614740368509 Inexact Rounded
-- test some cases that are close to exponent overflow
dqdiv270 divide 1 1e6144 -> 1E-6144 Subnormal
dqdiv271 divide 1 0.9e6144 -> 1.11111111111111111111111111111111E-6144 Rounded Inexact Subnormal Underflow
dqdiv272 divide 1 0.99e6144 -> 1.01010101010101010101010101010101E-6144 Rounded Inexact Subnormal Underflow
dqdiv273 divide 1 0.9999999999999999e6144 -> 1.00000000000000010000000000000001E-6144 Rounded Inexact Subnormal Underflow
dqdiv274 divide 9e6144 1 -> 9.000000000000000000000000000000000E+6144 Clamped
dqdiv275 divide 9.9e6144 1 -> 9.900000000000000000000000000000000E+6144 Clamped
dqdiv276 divide 9.99e6144 1 -> 9.990000000000000000000000000000000E+6144 Clamped
dqdiv277 divide 9.999999999999999e6144 1 -> 9.999999999999999000000000000000000E+6144 Clamped
dqdiv278 divide 1 0.9999999999999999999999999999999999e6144 -> 1.00000000000000000000000000000000E-6144 Rounded Inexact Subnormal Underflow
dqdiv279 divide 9.999999999999999999999999999999999e6144 1 -> 9.999999999999999999999999999999999E+6144
-- Divide into 0 tests
dqdiv301 divide 0 7 -> 0
dqdiv302 divide 0 7E-5 -> 0E+5
dqdiv303 divide 0 7E-1 -> 0E+1
dqdiv304 divide 0 7E+1 -> 0.0
dqdiv305 divide 0 7E+5 -> 0.00000
dqdiv306 divide 0 7E+6 -> 0.000000
dqdiv307 divide 0 7E+7 -> 0E-7
dqdiv308 divide 0 70E-5 -> 0E+5
dqdiv309 divide 0 70E-1 -> 0E+1
dqdiv310 divide 0 70E+0 -> 0
dqdiv311 divide 0 70E+1 -> 0.0
dqdiv312 divide 0 70E+5 -> 0.00000
dqdiv313 divide 0 70E+6 -> 0.000000
dqdiv314 divide 0 70E+7 -> 0E-7
dqdiv315 divide 0 700E-5 -> 0E+5
dqdiv316 divide 0 700E-1 -> 0E+1
dqdiv317 divide 0 700E+0 -> 0
dqdiv318 divide 0 700E+1 -> 0.0
dqdiv319 divide 0 700E+5 -> 0.00000
dqdiv320 divide 0 700E+6 -> 0.000000
dqdiv321 divide 0 700E+7 -> 0E-7
dqdiv322 divide 0 700E+77 -> 0E-77
dqdiv331 divide 0E-3 7E-5 -> 0E+2
dqdiv332 divide 0E-3 7E-1 -> 0.00
dqdiv333 divide 0E-3 7E+1 -> 0.0000
dqdiv334 divide 0E-3 7E+5 -> 0E-8
dqdiv335 divide 0E-1 7E-5 -> 0E+4
dqdiv336 divide 0E-1 7E-1 -> 0
dqdiv337 divide 0E-1 7E+1 -> 0.00
dqdiv338 divide 0E-1 7E+5 -> 0.000000
dqdiv339 divide 0E+1 7E-5 -> 0E+6
dqdiv340 divide 0E+1 7E-1 -> 0E+2
dqdiv341 divide 0E+1 7E+1 -> 0
dqdiv342 divide 0E+1 7E+5 -> 0.0000
dqdiv343 divide 0E+3 7E-5 -> 0E+8
dqdiv344 divide 0E+3 7E-1 -> 0E+4
dqdiv345 divide 0E+3 7E+1 -> 0E+2
dqdiv346 divide 0E+3 7E+5 -> 0.00
-- These were 'input rounding'
dqdiv441 divide 12345678000 1 -> 12345678000
dqdiv442 divide 1 12345678000 -> 8.100000664200054464404466081166219E-11 Inexact Rounded
dqdiv443 divide 1234567800 1 -> 1234567800
dqdiv444 divide 1 1234567800 -> 8.100000664200054464404466081166219E-10 Inexact Rounded
dqdiv445 divide 1234567890 1 -> 1234567890
dqdiv446 divide 1 1234567890 -> 8.100000073710000670761006103925156E-10 Inexact Rounded
dqdiv447 divide 1234567891 1 -> 1234567891
dqdiv448 divide 1 1234567891 -> 8.100000067149000556665214614754629E-10 Inexact Rounded
dqdiv449 divide 12345678901 1 -> 12345678901
dqdiv450 divide 1 12345678901 -> 8.100000073053900658873130042376760E-11 Inexact Rounded
dqdiv451 divide 1234567896 1 -> 1234567896
dqdiv452 divide 1 1234567896 -> 8.100000034344000145618560617422697E-10 Inexact Rounded
-- high-lows
dqdiv453 divide 1e+1 1 -> 1E+1
dqdiv454 divide 1e+1 1.0 -> 1E+1
dqdiv455 divide 1e+1 1.00 -> 1E+1
dqdiv456 divide 1e+2 2 -> 5E+1
dqdiv457 divide 1e+2 2.0 -> 5E+1
dqdiv458 divide 1e+2 2.00 -> 5E+1
-- some from IEEE discussions
dqdiv460 divide 3e0 2e0 -> 1.5
dqdiv461 divide 30e-1 2e0 -> 1.5
dqdiv462 divide 300e-2 2e0 -> 1.50
dqdiv464 divide 3000e-3 2e0 -> 1.500
dqdiv465 divide 3e0 20e-1 -> 1.5
dqdiv466 divide 30e-1 20e-1 -> 1.5
dqdiv467 divide 300e-2 20e-1 -> 1.5
dqdiv468 divide 3000e-3 20e-1 -> 1.50
dqdiv469 divide 3e0 200e-2 -> 1.5
dqdiv470 divide 30e-1 200e-2 -> 1.5
dqdiv471 divide 300e-2 200e-2 -> 1.5
dqdiv472 divide 3000e-3 200e-2 -> 1.5
dqdiv473 divide 3e0 2000e-3 -> 1.5
dqdiv474 divide 30e-1 2000e-3 -> 1.5
dqdiv475 divide 300e-2 2000e-3 -> 1.5
dqdiv476 divide 3000e-3 2000e-3 -> 1.5
-- some reciprocals
dqdiv480 divide 1 1.0E+33 -> 1E-33
dqdiv481 divide 1 10E+33 -> 1E-34
dqdiv482 divide 1 1.0E-33 -> 1E+33
dqdiv483 divide 1 10E-33 -> 1E+32
-- RMS discussion table
dqdiv484 divide 0e5 1e3 -> 0E+2
dqdiv485 divide 0e5 2e3 -> 0E+2
dqdiv486 divide 0e5 10e2 -> 0E+3
dqdiv487 divide 0e5 20e2 -> 0E+3
dqdiv488 divide 0e5 100e1 -> 0E+4
dqdiv489 divide 0e5 200e1 -> 0E+4
dqdiv491 divide 1e5 1e3 -> 1E+2
dqdiv492 divide 1e5 2e3 -> 5E+1
dqdiv493 divide 1e5 10e2 -> 1E+2
dqdiv494 divide 1e5 20e2 -> 5E+1
dqdiv495 divide 1e5 100e1 -> 1E+2
dqdiv496 divide 1e5 200e1 -> 5E+1
-- tryzeros cases
rounding: half_up
dqdiv497 divide 0E+6108 1000E-33 -> 0E+6111 Clamped
dqdiv498 divide 0E-6170 1000E+33 -> 0E-6176 Clamped
rounding: half_up
-- focus on trailing zeros issues
dqdiv500 divide 1 9.9 -> 0.1010101010101010101010101010101010 Inexact Rounded
dqdiv501 divide 1 9.09 -> 0.1100110011001100110011001100110011 Inexact Rounded
dqdiv502 divide 1 9.009 -> 0.1110001110001110001110001110001110 Inexact Rounded
dqdiv511 divide 1 2 -> 0.5
dqdiv512 divide 1.0 2 -> 0.5
dqdiv513 divide 1.00 2 -> 0.50
dqdiv514 divide 1.000 2 -> 0.500
dqdiv515 divide 1.0000 2 -> 0.5000
dqdiv516 divide 1.00000 2 -> 0.50000
dqdiv517 divide 1.000000 2 -> 0.500000
dqdiv518 divide 1.0000000 2 -> 0.5000000
dqdiv519 divide 1.00 2.00 -> 0.5
dqdiv521 divide 2 1 -> 2
dqdiv522 divide 2 1.0 -> 2
dqdiv523 divide 2 1.00 -> 2
dqdiv524 divide 2 1.000 -> 2
dqdiv525 divide 2 1.0000 -> 2
dqdiv526 divide 2 1.00000 -> 2
dqdiv527 divide 2 1.000000 -> 2
dqdiv528 divide 2 1.0000000 -> 2
dqdiv529 divide 2.00 1.00 -> 2
dqdiv530 divide 2.40 2 -> 1.20
dqdiv531 divide 2.40 4 -> 0.60
dqdiv532 divide 2.40 10 -> 0.24
dqdiv533 divide 2.40 2.0 -> 1.2
dqdiv534 divide 2.40 4.0 -> 0.6
dqdiv535 divide 2.40 10.0 -> 0.24
dqdiv536 divide 2.40 2.00 -> 1.2
dqdiv537 divide 2.40 4.00 -> 0.6
dqdiv538 divide 2.40 10.00 -> 0.24
dqdiv539 divide 0.9 0.1 -> 9
dqdiv540 divide 0.9 0.01 -> 9E+1
dqdiv541 divide 0.9 0.001 -> 9E+2
dqdiv542 divide 5 2 -> 2.5
dqdiv543 divide 5 2.0 -> 2.5
dqdiv544 divide 5 2.00 -> 2.5
dqdiv545 divide 5 20 -> 0.25
dqdiv546 divide 5 20.0 -> 0.25
dqdiv547 divide 2.400 2 -> 1.200
dqdiv548 divide 2.400 2.0 -> 1.20
dqdiv549 divide 2.400 2.400 -> 1
dqdiv550 divide 240 1 -> 240
dqdiv551 divide 240 10 -> 24
dqdiv552 divide 240 100 -> 2.4
dqdiv553 divide 240 1000 -> 0.24
dqdiv554 divide 2400 1 -> 2400
dqdiv555 divide 2400 10 -> 240
dqdiv556 divide 2400 100 -> 24
dqdiv557 divide 2400 1000 -> 2.4
-- +ve exponent
dqdiv600 divide 2.4E+9 2 -> 1.2E+9
dqdiv601 divide 2.40E+9 2 -> 1.20E+9
dqdiv602 divide 2.400E+9 2 -> 1.200E+9
dqdiv603 divide 2.4000E+9 2 -> 1.2000E+9
dqdiv604 divide 24E+8 2 -> 1.2E+9
dqdiv605 divide 240E+7 2 -> 1.20E+9
dqdiv606 divide 2400E+6 2 -> 1.200E+9
dqdiv607 divide 24000E+5 2 -> 1.2000E+9
-- more zeros, etc.
dqdiv731 divide 5.00 1E-3 -> 5.00E+3
dqdiv732 divide 00.00 0.000 -> NaN Division_undefined
dqdiv733 divide 00.00 0E-3 -> NaN Division_undefined
dqdiv734 divide 0 -0 -> NaN Division_undefined
dqdiv735 divide -0 0 -> NaN Division_undefined
dqdiv736 divide -0 -0 -> NaN Division_undefined
dqdiv741 divide 0 -1 -> -0
dqdiv742 divide -0 -1 -> 0
dqdiv743 divide 0 1 -> 0
dqdiv744 divide -0 1 -> -0
dqdiv745 divide -1 0 -> -Infinity Division_by_zero
dqdiv746 divide -1 -0 -> Infinity Division_by_zero
dqdiv747 divide 1 0 -> Infinity Division_by_zero
dqdiv748 divide 1 -0 -> -Infinity Division_by_zero
dqdiv751 divide 0.0 -1 -> -0.0
dqdiv752 divide -0.0 -1 -> 0.0
dqdiv753 divide 0.0 1 -> 0.0
dqdiv754 divide -0.0 1 -> -0.0
dqdiv755 divide -1.0 0 -> -Infinity Division_by_zero
dqdiv756 divide -1.0 -0 -> Infinity Division_by_zero
dqdiv757 divide 1.0 0 -> Infinity Division_by_zero
dqdiv758 divide 1.0 -0 -> -Infinity Division_by_zero
dqdiv761 divide 0 -1.0 -> -0E+1
dqdiv762 divide -0 -1.0 -> 0E+1
dqdiv763 divide 0 1.0 -> 0E+1
dqdiv764 divide -0 1.0 -> -0E+1
dqdiv765 divide -1 0.0 -> -Infinity Division_by_zero
dqdiv766 divide -1 -0.0 -> Infinity Division_by_zero
dqdiv767 divide 1 0.0 -> Infinity Division_by_zero
dqdiv768 divide 1 -0.0 -> -Infinity Division_by_zero
dqdiv771 divide 0.0 -1.0 -> -0
dqdiv772 divide -0.0 -1.0 -> 0
dqdiv773 divide 0.0 1.0 -> 0
dqdiv774 divide -0.0 1.0 -> -0
dqdiv775 divide -1.0 0.0 -> -Infinity Division_by_zero
dqdiv776 divide -1.0 -0.0 -> Infinity Division_by_zero
dqdiv777 divide 1.0 0.0 -> Infinity Division_by_zero
dqdiv778 divide 1.0 -0.0 -> -Infinity Division_by_zero
-- Specials
dqdiv780 divide Inf -Inf -> NaN Invalid_operation
dqdiv781 divide Inf -1000 -> -Infinity
dqdiv782 divide Inf -1 -> -Infinity
dqdiv783 divide Inf -0 -> -Infinity
dqdiv784 divide Inf 0 -> Infinity
dqdiv785 divide Inf 1 -> Infinity
dqdiv786 divide Inf 1000 -> Infinity
dqdiv787 divide Inf Inf -> NaN Invalid_operation
dqdiv788 divide -1000 Inf -> -0E-6176 Clamped
dqdiv789 divide -Inf Inf -> NaN Invalid_operation
dqdiv790 divide -1 Inf -> -0E-6176 Clamped
dqdiv791 divide -0 Inf -> -0E-6176 Clamped
dqdiv792 divide 0 Inf -> 0E-6176 Clamped
dqdiv793 divide 1 Inf -> 0E-6176 Clamped
dqdiv794 divide 1000 Inf -> 0E-6176 Clamped
dqdiv795 divide Inf Inf -> NaN Invalid_operation
dqdiv800 divide -Inf -Inf -> NaN Invalid_operation
dqdiv801 divide -Inf -1000 -> Infinity
dqdiv802 divide -Inf -1 -> Infinity
dqdiv803 divide -Inf -0 -> Infinity
dqdiv804 divide -Inf 0 -> -Infinity
dqdiv805 divide -Inf 1 -> -Infinity
dqdiv806 divide -Inf 1000 -> -Infinity
dqdiv807 divide -Inf Inf -> NaN Invalid_operation
dqdiv808 divide -1000 Inf -> -0E-6176 Clamped
dqdiv809 divide -Inf -Inf -> NaN Invalid_operation
dqdiv810 divide -1 -Inf -> 0E-6176 Clamped
dqdiv811 divide -0 -Inf -> 0E-6176 Clamped
dqdiv812 divide 0 -Inf -> -0E-6176 Clamped
dqdiv813 divide 1 -Inf -> -0E-6176 Clamped
dqdiv814 divide 1000 -Inf -> -0E-6176 Clamped
dqdiv815 divide Inf -Inf -> NaN Invalid_operation
dqdiv821 divide NaN -Inf -> NaN
dqdiv822 divide NaN -1000 -> NaN
dqdiv823 divide NaN -1 -> NaN
dqdiv824 divide NaN -0 -> NaN
dqdiv825 divide NaN 0 -> NaN
dqdiv826 divide NaN 1 -> NaN
dqdiv827 divide NaN 1000 -> NaN
dqdiv828 divide NaN Inf -> NaN
dqdiv829 divide NaN NaN -> NaN
dqdiv830 divide -Inf NaN -> NaN
dqdiv831 divide -1000 NaN -> NaN
dqdiv832 divide -1 NaN -> NaN
dqdiv833 divide -0 NaN -> NaN
dqdiv834 divide 0 NaN -> NaN
dqdiv835 divide 1 NaN -> NaN
dqdiv836 divide 1000 NaN -> NaN
dqdiv837 divide Inf NaN -> NaN
dqdiv841 divide sNaN -Inf -> NaN Invalid_operation
dqdiv842 divide sNaN -1000 -> NaN Invalid_operation
dqdiv843 divide sNaN -1 -> NaN Invalid_operation
dqdiv844 divide sNaN -0 -> NaN Invalid_operation
dqdiv845 divide sNaN 0 -> NaN Invalid_operation
dqdiv846 divide sNaN 1 -> NaN Invalid_operation
dqdiv847 divide sNaN 1000 -> NaN Invalid_operation
dqdiv848 divide sNaN NaN -> NaN Invalid_operation
dqdiv849 divide sNaN sNaN -> NaN Invalid_operation
dqdiv850 divide NaN sNaN -> NaN Invalid_operation
dqdiv851 divide -Inf sNaN -> NaN Invalid_operation
dqdiv852 divide -1000 sNaN -> NaN Invalid_operation
dqdiv853 divide -1 sNaN -> NaN Invalid_operation
dqdiv854 divide -0 sNaN -> NaN Invalid_operation
dqdiv855 divide 0 sNaN -> NaN Invalid_operation
dqdiv856 divide 1 sNaN -> NaN Invalid_operation
dqdiv857 divide 1000 sNaN -> NaN Invalid_operation
dqdiv858 divide Inf sNaN -> NaN Invalid_operation
dqdiv859 divide NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqdiv861 divide NaN9 -Inf -> NaN9
dqdiv862 divide NaN8 1000 -> NaN8
dqdiv863 divide NaN7 Inf -> NaN7
dqdiv864 divide NaN6 NaN5 -> NaN6
dqdiv865 divide -Inf NaN4 -> NaN4
dqdiv866 divide -1000 NaN3 -> NaN3
dqdiv867 divide Inf NaN2 -> NaN2
dqdiv871 divide sNaN99 -Inf -> NaN99 Invalid_operation
dqdiv872 divide sNaN98 -1 -> NaN98 Invalid_operation
dqdiv873 divide sNaN97 NaN -> NaN97 Invalid_operation
dqdiv874 divide sNaN96 sNaN94 -> NaN96 Invalid_operation
dqdiv875 divide NaN95 sNaN93 -> NaN93 Invalid_operation
dqdiv876 divide -Inf sNaN92 -> NaN92 Invalid_operation
dqdiv877 divide 0 sNaN91 -> NaN91 Invalid_operation
dqdiv878 divide Inf sNaN90 -> NaN90 Invalid_operation
dqdiv879 divide NaN sNaN89 -> NaN89 Invalid_operation
dqdiv881 divide -NaN9 -Inf -> -NaN9
dqdiv882 divide -NaN8 1000 -> -NaN8
dqdiv883 divide -NaN7 Inf -> -NaN7
dqdiv884 divide -NaN6 -NaN5 -> -NaN6
dqdiv885 divide -Inf -NaN4 -> -NaN4
dqdiv886 divide -1000 -NaN3 -> -NaN3
dqdiv887 divide Inf -NaN2 -> -NaN2
dqdiv891 divide -sNaN99 -Inf -> -NaN99 Invalid_operation
dqdiv892 divide -sNaN98 -1 -> -NaN98 Invalid_operation
dqdiv893 divide -sNaN97 NaN -> -NaN97 Invalid_operation
dqdiv894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation
dqdiv895 divide -NaN95 -sNaN93 -> -NaN93 Invalid_operation
dqdiv896 divide -Inf -sNaN92 -> -NaN92 Invalid_operation
dqdiv897 divide 0 -sNaN91 -> -NaN91 Invalid_operation
dqdiv898 divide Inf -sNaN90 -> -NaN90 Invalid_operation
dqdiv899 divide -NaN -sNaN89 -> -NaN89 Invalid_operation
-- Various flavours of divide by 0
dqdiv901 divide 0 0 -> NaN Division_undefined
dqdiv902 divide 0.0E5 0 -> NaN Division_undefined
dqdiv903 divide 0.000 0 -> NaN Division_undefined
dqdiv904 divide 0.0001 0 -> Infinity Division_by_zero
dqdiv905 divide 0.01 0 -> Infinity Division_by_zero
dqdiv906 divide 0.1 0 -> Infinity Division_by_zero
dqdiv907 divide 1 0 -> Infinity Division_by_zero
dqdiv908 divide 1 0.0 -> Infinity Division_by_zero
dqdiv909 divide 10 0.0 -> Infinity Division_by_zero
dqdiv910 divide 1E+100 0.0 -> Infinity Division_by_zero
dqdiv911 divide 1E+100 0 -> Infinity Division_by_zero
dqdiv921 divide -0.0001 0 -> -Infinity Division_by_zero
dqdiv922 divide -0.01 0 -> -Infinity Division_by_zero
dqdiv923 divide -0.1 0 -> -Infinity Division_by_zero
dqdiv924 divide -1 0 -> -Infinity Division_by_zero
dqdiv925 divide -1 0.0 -> -Infinity Division_by_zero
dqdiv926 divide -10 0.0 -> -Infinity Division_by_zero
dqdiv927 divide -1E+100 0.0 -> -Infinity Division_by_zero
dqdiv928 divide -1E+100 0 -> -Infinity Division_by_zero
dqdiv931 divide 0.0001 -0 -> -Infinity Division_by_zero
dqdiv932 divide 0.01 -0 -> -Infinity Division_by_zero
dqdiv933 divide 0.1 -0 -> -Infinity Division_by_zero
dqdiv934 divide 1 -0 -> -Infinity Division_by_zero
dqdiv935 divide 1 -0.0 -> -Infinity Division_by_zero
dqdiv936 divide 10 -0.0 -> -Infinity Division_by_zero
dqdiv937 divide 1E+100 -0.0 -> -Infinity Division_by_zero
dqdiv938 divide 1E+100 -0 -> -Infinity Division_by_zero
dqdiv941 divide -0.0001 -0 -> Infinity Division_by_zero
dqdiv942 divide -0.01 -0 -> Infinity Division_by_zero
dqdiv943 divide -0.1 -0 -> Infinity Division_by_zero
dqdiv944 divide -1 -0 -> Infinity Division_by_zero
dqdiv945 divide -1 -0.0 -> Infinity Division_by_zero
dqdiv946 divide -10 -0.0 -> Infinity Division_by_zero
dqdiv947 divide -1E+100 -0.0 -> Infinity Division_by_zero
dqdiv948 divide -1E+100 -0 -> Infinity Division_by_zero
-- Examples from SQL proposal (Krishna Kulkarni)
dqdiv1021 divide 1E0 1E0 -> 1
dqdiv1022 divide 1E0 2E0 -> 0.5
dqdiv1023 divide 1E0 3E0 -> 0.3333333333333333333333333333333333 Inexact Rounded
dqdiv1024 divide 100E-2 1000E-3 -> 1
dqdiv1025 divide 24E-1 2E0 -> 1.2
dqdiv1026 divide 2400E-3 2E0 -> 1.200
dqdiv1027 divide 5E0 2E0 -> 2.5
dqdiv1028 divide 5E0 20E-1 -> 2.5
dqdiv1029 divide 5E0 2000E-3 -> 2.5
dqdiv1030 divide 5E0 2E-1 -> 25
dqdiv1031 divide 5E0 20E-2 -> 25
dqdiv1032 divide 480E-2 3E0 -> 1.60
dqdiv1033 divide 47E-1 2E0 -> 2.35
-- ECMAScript bad examples
rounding: half_down
dqdiv1040 divide 5 9 -> 0.5555555555555555555555555555555556 Inexact Rounded
rounding: half_even
dqdiv1041 divide 6 11 -> 0.5454545454545454545454545454545455 Inexact Rounded
-- Gyuris example
dqdiv1050 divide 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0.9999999999999999999999999999991254 Inexact Rounded
-- overflow and underflow tests .. note subnormal results
-- signs
dqdiv1751 divide 1e+4277 1e-3311 -> Infinity Overflow Inexact Rounded
dqdiv1752 divide 1e+4277 -1e-3311 -> -Infinity Overflow Inexact Rounded
dqdiv1753 divide -1e+4277 1e-3311 -> -Infinity Overflow Inexact Rounded
dqdiv1754 divide -1e+4277 -1e-3311 -> Infinity Overflow Inexact Rounded
dqdiv1755 divide 1e-4277 1e+3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1756 divide 1e-4277 -1e+3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1757 divide -1e-4277 1e+3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1758 divide -1e-4277 -1e+3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
dqdiv1760 divide 1e-6069 1e+101 -> 1E-6170 Subnormal
dqdiv1761 divide 1e-6069 1e+102 -> 1E-6171 Subnormal
dqdiv1762 divide 1e-6069 1e+103 -> 1E-6172 Subnormal
dqdiv1763 divide 1e-6069 1e+104 -> 1E-6173 Subnormal
dqdiv1764 divide 1e-6069 1e+105 -> 1E-6174 Subnormal
dqdiv1765 divide 1e-6069 1e+106 -> 1E-6175 Subnormal
dqdiv1766 divide 1e-6069 1e+107 -> 1E-6176 Subnormal
dqdiv1767 divide 1e-6069 1e+108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1768 divide 1e-6069 1e+109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1769 divide 1e-6069 1e+110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-- [no equivalent of 'subnormal' for overflow]
dqdiv1770 divide 1e+40 1e-6101 -> 1.000000000000000000000000000000E+6141 Clamped
dqdiv1771 divide 1e+40 1e-6102 -> 1.0000000000000000000000000000000E+6142 Clamped
dqdiv1772 divide 1e+40 1e-6103 -> 1.00000000000000000000000000000000E+6143 Clamped
dqdiv1773 divide 1e+40 1e-6104 -> 1.000000000000000000000000000000000E+6144 Clamped
dqdiv1774 divide 1e+40 1e-6105 -> Infinity Overflow Inexact Rounded
dqdiv1775 divide 1e+40 1e-6106 -> Infinity Overflow Inexact Rounded
dqdiv1776 divide 1e+40 1e-6107 -> Infinity Overflow Inexact Rounded
dqdiv1777 divide 1e+40 1e-6108 -> Infinity Overflow Inexact Rounded
dqdiv1778 divide 1e+40 1e-6109 -> Infinity Overflow Inexact Rounded
dqdiv1779 divide 1e+40 1e-6110 -> Infinity Overflow Inexact Rounded
dqdiv1801 divide 1.0000E-6172 1 -> 1.0000E-6172 Subnormal
dqdiv1802 divide 1.000E-6172 1e+1 -> 1.000E-6173 Subnormal
dqdiv1803 divide 1.00E-6172 1e+2 -> 1.00E-6174 Subnormal
dqdiv1804 divide 1.0E-6172 1e+3 -> 1.0E-6175 Subnormal
dqdiv1805 divide 1.0E-6172 1e+4 -> 1E-6176 Subnormal Rounded
dqdiv1806 divide 1.3E-6172 1e+4 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqdiv1807 divide 1.5E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqdiv1808 divide 1.7E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqdiv1809 divide 2.3E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqdiv1810 divide 2.5E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqdiv1811 divide 2.7E-6172 1e+4 -> 3E-6176 Underflow Subnormal Inexact Rounded
dqdiv1812 divide 1.49E-6172 1e+4 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqdiv1813 divide 1.50E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqdiv1814 divide 1.51E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqdiv1815 divide 2.49E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqdiv1816 divide 2.50E-6172 1e+4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqdiv1817 divide 2.51E-6172 1e+4 -> 3E-6176 Underflow Subnormal Inexact Rounded
dqdiv1818 divide 1E-6172 1e+4 -> 1E-6176 Subnormal
dqdiv1819 divide 3E-6172 1e+5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1820 divide 5E-6172 1e+5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1821 divide 7E-6172 1e+5 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqdiv1822 divide 9E-6172 1e+5 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqdiv1823 divide 9.9E-6172 1e+5 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqdiv1824 divide 1E-6172 -1e+4 -> -1E-6176 Subnormal
dqdiv1825 divide 3E-6172 -1e+5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1826 divide -5E-6172 1e+5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1827 divide 7E-6172 -1e+5 -> -1E-6176 Underflow Subnormal Inexact Rounded
dqdiv1828 divide -9E-6172 1e+5 -> -1E-6176 Underflow Subnormal Inexact Rounded
dqdiv1829 divide 9.9E-6172 -1e+5 -> -1E-6176 Underflow Subnormal Inexact Rounded
dqdiv1830 divide 3.0E-6172 -1e+5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1831 divide 1.0E-5977 1e+200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqdiv1832 divide 1.0E-5977 1e+199 -> 1E-6176 Subnormal Rounded
dqdiv1833 divide 1.0E-5977 1e+198 -> 1.0E-6175 Subnormal
dqdiv1834 divide 2.0E-5977 2e+198 -> 1.0E-6175 Subnormal
dqdiv1835 divide 4.0E-5977 4e+198 -> 1.0E-6175 Subnormal
dqdiv1836 divide 10.0E-5977 10e+198 -> 1.0E-6175 Subnormal
dqdiv1837 divide 30.0E-5977 30e+198 -> 1.0E-6175 Subnormal
dqdiv1838 divide 40.0E-5982 40e+166 -> 1.0E-6148 Subnormal
dqdiv1839 divide 40.0E-5982 40e+165 -> 1.0E-6147 Subnormal
dqdiv1840 divide 40.0E-5982 40e+164 -> 1.0E-6146 Subnormal
-- randoms
rounding: half_even
dqdiv2010 divide -5231195652931651968034356117118850 -7243718664422548573203260970.34995 -> 722169.9095831284624736051460550680 Inexact Rounded
dqdiv2011 divide -89584669773927.82711237350022515352 -42077943728529635884.21142627532985 -> 0.000002129017291146471565928125887527266 Inexact Rounded
dqdiv2012 divide -2.828201693360723203806974891946180E-232 812596541221823960386384403089240.9 -> -3.480450075640521320040055759125120E-265 Inexact Rounded
dqdiv2013 divide -6442775372761069267502937539408720 24904085056.69185465145182606089196 -> -258703556388226463687701.4884719589 Inexact Rounded
dqdiv2014 divide 5.535520011272625629610079879714705 -44343664650.57203052003068113531208 -> -1.248322630728089308975940533493562E-10 Inexact Rounded
dqdiv2015 divide 65919273712517865964325.99419625010 -314733354141381737378622515.7789054 -> -0.0002094448295521490616379784758911632 Inexact Rounded
dqdiv2016 divide -7.779172568193197107115275140431129E+759 -140453015639.3988987652895178782143 -> 5.538629792161641534962774244238115E+748 Inexact Rounded
dqdiv2017 divide 644314832597569.0181226067518178797 -115024585257425.1635759521565201075 -> -5.601540150356479257367687450922795 Inexact Rounded
dqdiv2018 divide 6.898640941579611450676592553286870E-47 -11272429881407851485163914999.25943 -> -6.119923578285338689371137648319280E-75 Inexact Rounded
dqdiv2019 divide -3591344544888727133.30819750163254 5329395.423792795661446561090331037 -> -673874662941.1968525589460533725290 Inexact Rounded
dqdiv2020 divide -7.682356781384631313156462724425838E+747 -6.60375855512219057281922141809940E+703 -> 1.163330960279556016678379128875149E+44 Inexact Rounded
dqdiv2021 divide -4511495596596941820863224.274679699 3365395017.263329795449661616090724 -> -1340554548115304.904166888018346299 Inexact Rounded
dqdiv2022 divide 5.211164127840931517263639608151299 164.5566381356276567012533847006453 -> 0.03166790587655228864478260157156510 Inexact Rounded
dqdiv2023 divide -49891.2243893458830384077684620383 -47179.9312961860747554053371171530 -> 1.057467084386767291602189656430268 Inexact Rounded
dqdiv2024 divide 15065477.47214268488077415462413353 4366211.120892953261309529740552596 -> 3.450469309661227984244545513441359 Inexact Rounded
dqdiv2025 divide 1.575670269440761846109602429612644E+370 653199649324740300.006185482643439 -> 2.412233795700359170904588548041481E+352 Inexact Rounded
dqdiv2026 divide -2112422311733448924573432192.620145 -80067206.03590693153848215848613406 -> 26383115089417660175.20102646756574 Inexact Rounded
dqdiv2027 divide -67096536051279809.32218611548721839 -869685412881941081664251990181.1049 -> 7.715035236584805921278566365231168E-14 Inexact Rounded
dqdiv2028 divide -58612908548962047.21866913425488972 -978449597531.3873665583475633831644 -> 59903.86085991703091236507859837023 Inexact Rounded
dqdiv2029 divide -133032412010942.1476864138213319796 -7.882059293498670705446528648201359E-428 -> 1.687787506504433064549515681693715E+441 Inexact Rounded
dqdiv2030 divide 1.83746698338966029492299716360513E+977 -9.897926608979649951672839879128603E+154 -> -1.856416051542212552042390218062458E+822 Inexact Rounded
dqdiv2031 divide -113742475841399236307128962.1507063 8298602.203049834732657567965262989 -> -13706221006665137826.16557393919929 Inexact Rounded
dqdiv2032 divide 196.4787574650754152995941808331862 929.6553388472318094427422117172394 -> 0.2113458066176526651006917922814018 Inexact Rounded
dqdiv2033 divide 71931221465.43867996282803628130350 3838685934206426257090718.402248853 -> 1.873850132527423413607199513324021E-14 Inexact Rounded
dqdiv2034 divide 488.4282502289651653783596246312885 -80.68940956806634280078706577953188 -> -6.053189047280693318844801899473272 Inexact Rounded
dqdiv2035 divide 9.001764344963921754981762913247394E-162 -8.585540973667205753734967645386919E-729 -> -1.048479574271827326396012573232934E+567 Inexact Rounded
dqdiv2036 divide -7.404133959409894743706402857145471E-828 -51.38159929460289711134684843086265 -> 1.441008855516029461032061785219773E-829 Inexact Rounded
dqdiv2037 divide 2.967520235574419794048994436040717E-613 -6252513855.91394894949879262731889 -> -4.746123405656409127572998751885338E-623 Inexact Rounded
dqdiv2038 divide -18826852654824040505.83920366765051 -6336924877942437992590557460147340 -> 2.970976146546494669807886278519194E-15 Inexact Rounded
dqdiv2039 divide -8.101406784809197604949584001735949E+561 4.823300306948942821076681658771635E+361 -> -1.679639721610839204738445747238987E+200 Inexact Rounded
dqdiv2040 divide -6.11981977773094052331062585191723E+295 1.507610253755339328302779005586534E+238 -> -4.059285058911577244044418416044763E+57 Inexact Rounded
dqdiv2041 divide 6.472638850046815880599220534274055E-596 -4.475233712083047516933911786159972 -> -1.446324207062261745520496475778879E-596 Inexact Rounded
dqdiv2042 divide -84438593330.71277839631144509397112 -586684596204401664208947.4054879633 -> 1.439250218550041228759983937772504E-13 Inexact Rounded
dqdiv2043 divide 9.354533233294022616695815656704369E-24 405.500390626135304252144163591746 -> 2.306911028827774549740571229736198E-26 Inexact Rounded
dqdiv2044 divide 985606423350210.7374876650149957881 -36811563697.41925681866694859828794 -> -26774.36990864119445335813354717711 Inexact Rounded
dqdiv2045 divide -8.187280774177715706278002247766311E-123 -38784124393.91212870828430001300068 -> 2.110987653356139147357240727794365E-133 Inexact Rounded
dqdiv2046 divide -4.612203126350070903459245798371657E+912 7.971562182727956290901984736800519E+64 -> -5.785820922708683237098826662769748E+847 Inexact Rounded
dqdiv2047 divide 4.661015909421485298247928967977089E+888 -6.360911253323922338737311563845581E+388 -> -7.327591478321365980156654539638836E+499 Inexact Rounded
dqdiv2048 divide 9156078172903.257500003260710833030 7.189796653262147139071634237964074E-90 -> 1.273482215766000994365201545096026E+102 Inexact Rounded
dqdiv2049 divide -1.710722303327476586373477781276586E-311 -3167561628260156837329323.729380695 -> 5.400754599578613984875752958645655E-336 Inexact Rounded
dqdiv2050 divide -4.647935210881806238321616345413021E-878 209388.5431867744648177308460639582 -> -2.219765771394593733140494297388140E-883 Inexact Rounded
dqdiv2051 divide 5958.694728395760992719084781582700 4.541510156564315632536353171846096E-746 -> 1.312051393253638664947852693005480E+749 Inexact Rounded
dqdiv2052 divide -7.935732544649702175256699886872093E-489 -7.433329073664793138998765647467971E+360 -> 1.067587949626076917672271619664656E-849 Inexact Rounded
dqdiv2053 divide -2746650864601157.863589959939901350 7.016684945507647528907184694359598E+548 -> -3.914456593009309529351254950429932E-534 Inexact Rounded
dqdiv2054 divide 3605149408631197365447953.994569178 -75614025825649082.78264864428237833 -> -47678315.88472693507060063188020532 Inexact Rounded
dqdiv2055 divide 788194320921798404906375214.196349 -6.222718148433247384932573401976337E-418 -> -1.266639918634671803982222244977287E+444 Inexact Rounded
dqdiv2056 divide 5620722730534752.758208943447603211 6.843552841168538319123000917657759E-139 -> 8.213164800485434666629970443739554E+153 Inexact Rounded
dqdiv2057 divide 7304534676713703938102.403949019402 -576169.3685010935108153023803590835 -> -12677756014201995.31969237144394772 Inexact Rounded
dqdiv2058 divide 8067918762.134621639254916786945547 -8.774771480055536009105596163864758E+954 -> -9.194448858836332156766764605125245E-946 Inexact Rounded
dqdiv2059 divide 8.702093454123046507578256899537563E-324 -5.875399733016018404580201176576293E-401 -> -1.481106622452052581470443526957335E+77 Inexact Rounded
dqdiv2060 divide -41426.01662518451861386352415092356 90.00146621684478300510769802013464 -> -460.2815750287318692732067709176200 Inexact Rounded
-- random divide tests with result near 1
dqdiv4001 divide 2003100352770753969878925664524900 2003100352770753969878925664497824 -> 1.000000000000000000000000000013517 Inexact Rounded
dqdiv4002 divide 4817785793916490652579552318371645 4817785793916490652579552318362097 -> 1.000000000000000000000000000001982 Inexact Rounded
dqdiv4003 divide 8299187410920067325648068439560282 8299187410920067325648068439591159 -> 0.9999999999999999999999999999962795 Inexact Rounded
dqdiv4004 divide 5641088455897407044544461785365899 5641088455897407044544461785389965 -> 0.9999999999999999999999999999957338 Inexact Rounded
dqdiv4005 divide 5752274694706545359326361313490424 5752274694706545359326361313502723 -> 0.9999999999999999999999999999978619 Inexact Rounded
dqdiv4006 divide 6762079477373670594829319346099665 6762079477373670594829319346132579 -> 0.9999999999999999999999999999951326 Inexact Rounded
dqdiv4007 divide 7286425153691890341633023222602916 7286425153691890341633023222606556 -> 0.9999999999999999999999999999995004 Inexact Rounded
dqdiv4008 divide 9481233991901305727648306421946655 9481233991901305727648306421919124 -> 1.000000000000000000000000000002904 Inexact Rounded
dqdiv4009 divide 4282053941893951742029444065614311 4282053941893951742029444065583077 -> 1.000000000000000000000000000007294 Inexact Rounded
dqdiv4010 divide 626888225441250639741781850338695 626888225441250639741781850327299 -> 1.000000000000000000000000000018179 Inexact Rounded
dqdiv4011 divide 3860973649222028009456598604468547 3860973649222028009456598604476849 -> 0.9999999999999999999999999999978498 Inexact Rounded
dqdiv4012 divide 4753157080127468127908060607821839 4753157080127468127908060607788379 -> 1.000000000000000000000000000007040 Inexact Rounded
dqdiv4013 divide 552448546203754062805706277880419 552448546203754062805706277881903 -> 0.9999999999999999999999999999973138 Inexact Rounded
dqdiv4014 divide 8405954527952158455323713728917395 8405954527952158455323713728933866 -> 0.9999999999999999999999999999980406 Inexact Rounded
dqdiv4015 divide 7554096502235321142555802238016116 7554096502235321142555802238026546 -> 0.9999999999999999999999999999986193 Inexact Rounded
dqdiv4016 divide 4053257674127518606871054934746782 4053257674127518606871054934767355 -> 0.9999999999999999999999999999949243 Inexact Rounded
dqdiv4017 divide 7112419420755090454716888844011582 7112419420755090454716888844038105 -> 0.9999999999999999999999999999962709 Inexact Rounded
dqdiv4018 divide 3132302137520072728164549730911846 3132302137520072728164549730908416 -> 1.000000000000000000000000000001095 Inexact Rounded
dqdiv4019 divide 4788374045841416355706715048161013 4788374045841416355706715048190077 -> 0.9999999999999999999999999999939303 Inexact Rounded
dqdiv4020 divide 9466021636047630218238075099510597 9466021636047630218238075099484053 -> 1.000000000000000000000000000002804 Inexact Rounded
dqdiv4021 divide 912742745646765625597399692138650 912742745646765625597399692139042 -> 0.9999999999999999999999999999995705 Inexact Rounded
dqdiv4022 divide 9508402742933643208806264897188504 9508402742933643208806264897195973 -> 0.9999999999999999999999999999992145 Inexact Rounded
dqdiv4023 divide 1186956795727233704962361914360895 1186956795727233704962361914329577 -> 1.000000000000000000000000000026385 Inexact Rounded
dqdiv4024 divide 5972210268839014812696916170967938 5972210268839014812696916170954974 -> 1.000000000000000000000000000002171 Inexact Rounded
dqdiv4025 divide 2303801625521619930894460139793140 2303801625521619930894460139799643 -> 0.9999999999999999999999999999971773 Inexact Rounded
dqdiv4026 divide 6022231560002898264777393473966595 6022231560002898264777393473947198 -> 1.000000000000000000000000000003221 Inexact Rounded
dqdiv4027 divide 8426148335801396199969346032210893 8426148335801396199969346032203179 -> 1.000000000000000000000000000000915 Inexact Rounded
dqdiv4028 divide 8812278947028784637382847098411749 8812278947028784637382847098385317 -> 1.000000000000000000000000000002999 Inexact Rounded
dqdiv4029 divide 8145282002348367383264197170116146 8145282002348367383264197170083988 -> 1.000000000000000000000000000003948 Inexact Rounded
dqdiv4030 divide 6821577571876840153123510107387026 6821577571876840153123510107418008 -> 0.9999999999999999999999999999954582 Inexact Rounded
dqdiv4031 divide 9018555319518966970480565482023720 9018555319518966970480565482013346 -> 1.000000000000000000000000000001150 Inexact Rounded
dqdiv4032 divide 4602155712998228449640717252788864 4602155712998228449640717252818502 -> 0.9999999999999999999999999999935600 Inexact Rounded
dqdiv4033 divide 6675607481522785614506828292264472 6675607481522785614506828292277100 -> 0.9999999999999999999999999999981083 Inexact Rounded
dqdiv4034 divide 4015881516871833897766945836264472 4015881516871833897766945836262645 -> 1.000000000000000000000000000000455 Inexact Rounded
dqdiv4035 divide 1415580205933411837595459716910365 1415580205933411837595459716880139 -> 1.000000000000000000000000000021352 Inexact Rounded
dqdiv4036 divide 9432968297069542816752035276361552 9432968297069542816752035276353054 -> 1.000000000000000000000000000000901 Inexact Rounded
dqdiv4037 divide 4799319591303848500532766682140658 4799319591303848500532766682172655 -> 0.9999999999999999999999999999933330 Inexact Rounded
dqdiv4038 divide 316854270732839529790584284987472 316854270732839529790584285004832 -> 0.9999999999999999999999999999452114 Inexact Rounded
dqdiv4039 divide 3598981300592490427826027975697415 3598981300592490427826027975686712 -> 1.000000000000000000000000000002974 Inexact Rounded
dqdiv4040 divide 1664315435694461371155800682196520 1664315435694461371155800682195617 -> 1.000000000000000000000000000000543 Inexact Rounded
dqdiv4041 divide 1680872316531128890102855316510581 1680872316531128890102855316495545 -> 1.000000000000000000000000000008945 Inexact Rounded
dqdiv4042 divide 9881274879566405475755499281644730 9881274879566405475755499281615743 -> 1.000000000000000000000000000002934 Inexact Rounded
dqdiv4043 divide 4737225957717466960447204232279216 4737225957717466960447204232277452 -> 1.000000000000000000000000000000372 Inexact Rounded
dqdiv4044 divide 2482097379414867061213319346418288 2482097379414867061213319346387936 -> 1.000000000000000000000000000012228 Inexact Rounded
dqdiv4045 divide 7406977595233762723576434122161868 7406977595233762723576434122189042 -> 0.9999999999999999999999999999963313 Inexact Rounded
dqdiv4046 divide 228782057757566047086593281773577 228782057757566047086593281769727 -> 1.000000000000000000000000000016828 Inexact Rounded
dqdiv4047 divide 2956594270240579648823270540367653 2956594270240579648823270540368556 -> 0.9999999999999999999999999999996946 Inexact Rounded
dqdiv4048 divide 6326964098897620620534136767634340 6326964098897620620534136767619339 -> 1.000000000000000000000000000002371 Inexact Rounded
dqdiv4049 divide 414586440456590215247002678327800 414586440456590215247002678316922 -> 1.000000000000000000000000000026238 Inexact Rounded
dqdiv4050 divide 7364552208570039386220505636779125 7364552208570039386220505636803548 -> 0.9999999999999999999999999999966837 Inexact Rounded
dqdiv4051 divide 5626266749902369710022824950590056 5626266749902369710022824950591008 -> 0.9999999999999999999999999999998308 Inexact Rounded
dqdiv4052 divide 4863278293916197454987481343460484 4863278293916197454987481343442522 -> 1.000000000000000000000000000003693 Inexact Rounded
dqdiv4053 divide 1170713582030637359713249796835483 1170713582030637359713249796823345 -> 1.000000000000000000000000000010368 Inexact Rounded
dqdiv4054 divide 9838062494725965667776326556052931 9838062494725965667776326556061002 -> 0.9999999999999999999999999999991796 Inexact Rounded
dqdiv4055 divide 4071388731298861093005687091498922 4071388731298861093005687091498278 -> 1.000000000000000000000000000000158 Inexact Rounded
dqdiv4056 divide 8753155722324706795855038590272526 8753155722324706795855038590276656 -> 0.9999999999999999999999999999995282 Inexact Rounded
dqdiv4057 divide 4399941911533273418844742658240485 4399941911533273418844742658219891 -> 1.000000000000000000000000000004681 Inexact Rounded
dqdiv4058 divide 4127884159949503677776430620050269 4127884159949503677776430620026091 -> 1.000000000000000000000000000005857 Inexact Rounded
dqdiv4059 divide 5536160822360800067042528317438808 5536160822360800067042528317450687 -> 0.9999999999999999999999999999978543 Inexact Rounded
dqdiv4060 divide 3973234998468664936671088237710246 3973234998468664936671088237741886 -> 0.9999999999999999999999999999920367 Inexact Rounded
dqdiv4061 divide 9824855935638263593410444142327358 9824855935638263593410444142328576 -> 0.9999999999999999999999999999998760 Inexact Rounded
dqdiv4062 divide 5917078517340218131867327300814867 5917078517340218131867327300788701 -> 1.000000000000000000000000000004422 Inexact Rounded
dqdiv4063 divide 4354236601830544882286139612521362 4354236601830544882286139612543223 -> 0.9999999999999999999999999999949794 Inexact Rounded
dqdiv4064 divide 8058474772375259017342110013891294 8058474772375259017342110013906792 -> 0.9999999999999999999999999999980768 Inexact Rounded
dqdiv4065 divide 5519604020981748170517093746166328 5519604020981748170517093746181763 -> 0.9999999999999999999999999999972036 Inexact Rounded
dqdiv4066 divide 1502130966879805458831323782443139 1502130966879805458831323782412213 -> 1.000000000000000000000000000020588 Inexact Rounded
dqdiv4067 divide 562795633719481212915159787980270 562795633719481212915159788007066 -> 0.9999999999999999999999999999523877 Inexact Rounded
dqdiv4068 divide 6584743324494664273941281557268878 6584743324494664273941281557258945 -> 1.000000000000000000000000000001508 Inexact Rounded
dqdiv4069 divide 3632000327285743997976431109416500 3632000327285743997976431109408107 -> 1.000000000000000000000000000002311 Inexact Rounded
dqdiv4070 divide 1145827237315430089388953838561450 1145827237315430089388953838527332 -> 1.000000000000000000000000000029776 Inexact Rounded
dqdiv4071 divide 8874431010357691869725372317350380 8874431010357691869725372317316472 -> 1.000000000000000000000000000003821 Inexact Rounded
dqdiv4072 divide 992948718902804648119753141202196 992948718902804648119753141235222 -> 0.9999999999999999999999999999667395 Inexact Rounded
dqdiv4073 divide 2522735183374218505142417265439989 2522735183374218505142417265453779 -> 0.9999999999999999999999999999945337 Inexact Rounded
dqdiv4074 divide 2668419161912936508006872303501052 2668419161912936508006872303471036 -> 1.000000000000000000000000000011249 Inexact Rounded
dqdiv4075 divide 3036169085665186712590941111775092 3036169085665186712590941111808846 -> 0.9999999999999999999999999999888827 Inexact Rounded
dqdiv4076 divide 9441634604917231638508898934006147 9441634604917231638508898934000288 -> 1.000000000000000000000000000000621 Inexact Rounded
dqdiv4077 divide 2677301353164377091111458811839190 2677301353164377091111458811867722 -> 0.9999999999999999999999999999893430 Inexact Rounded
dqdiv4078 divide 6844979203112066166583765857171426 6844979203112066166583765857189682 -> 0.9999999999999999999999999999973329 Inexact Rounded
dqdiv4079 divide 2220337435141796724323783960231661 2220337435141796724323783960208778 -> 1.000000000000000000000000000010306 Inexact Rounded
dqdiv4080 divide 6447424700019783931569996989561380 6447424700019783931569996989572454 -> 0.9999999999999999999999999999982824 Inexact Rounded
dqdiv4081 divide 7512856762696607119847092195587180 7512856762696607119847092195557346 -> 1.000000000000000000000000000003971 Inexact Rounded
dqdiv4082 divide 7395261981193960399087819077237482 7395261981193960399087819077242487 -> 0.9999999999999999999999999999993232 Inexact Rounded
dqdiv4083 divide 2253442467682584035792724884376735 2253442467682584035792724884407178 -> 0.9999999999999999999999999999864904 Inexact Rounded
dqdiv4084 divide 8153138680300213135577336466190997 8153138680300213135577336466220607 -> 0.9999999999999999999999999999963683 Inexact Rounded
dqdiv4085 divide 4668731252254148074041022681801390 4668731252254148074041022681778101 -> 1.000000000000000000000000000004988 Inexact Rounded
dqdiv4086 divide 6078404557993669696040425501815056 6078404557993669696040425501797612 -> 1.000000000000000000000000000002870 Inexact Rounded
dqdiv4087 divide 2306352359874261623223356878316278 2306352359874261623223356878335612 -> 0.9999999999999999999999999999916171 Inexact Rounded
dqdiv4088 divide 3264842186668480362900909564091908 3264842186668480362900909564058658 -> 1.000000000000000000000000000010184 Inexact Rounded
dqdiv4089 divide 6971985047279636878957959608612204 6971985047279636878957959608615088 -> 0.9999999999999999999999999999995863 Inexact Rounded
dqdiv4090 divide 5262810889952721235466445973816257 5262810889952721235466445973783077 -> 1.000000000000000000000000000006305 Inexact Rounded
dqdiv4091 divide 7947944731035267178548357070080288 7947944731035267178548357070061339 -> 1.000000000000000000000000000002384 Inexact Rounded
dqdiv4092 divide 5071808908395375108383035800443229 5071808908395375108383035800412429 -> 1.000000000000000000000000000006073 Inexact Rounded
dqdiv4093 divide 2043146542084503655511507209262969 2043146542084503655511507209249263 -> 1.000000000000000000000000000006708 Inexact Rounded
dqdiv4094 divide 4097632735384534181661959731264802 4097632735384534181661959731234499 -> 1.000000000000000000000000000007395 Inexact Rounded
dqdiv4095 divide 3061477642831387489729464587044430 3061477642831387489729464587059452 -> 0.9999999999999999999999999999950932 Inexact Rounded
dqdiv4096 divide 3429854941039776159498802936252638 3429854941039776159498802936246415 -> 1.000000000000000000000000000001814 Inexact Rounded
dqdiv4097 divide 4874324979578599700024133278284545 4874324979578599700024133278262131 -> 1.000000000000000000000000000004598 Inexact Rounded
dqdiv4098 divide 5701652369691833541455978515820882 5701652369691833541455978515834854 -> 0.9999999999999999999999999999975495 Inexact Rounded
dqdiv4099 divide 2928205728402945266953255632343113 2928205728402945266953255632373794 -> 0.9999999999999999999999999999895223 Inexact Rounded
-- Null tests
dqdiv9998 divide 10 # -> NaN Invalid_operation
dqdiv9999 divide # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,453 @@
------------------------------------------------------------------------
-- dqDivideInt.decTest -- decQuad integer division --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
dqdvi001 divideint 1 1 -> 1
dqdvi002 divideint 2 1 -> 2
dqdvi003 divideint 1 2 -> 0
dqdvi004 divideint 2 2 -> 1
dqdvi005 divideint 0 1 -> 0
dqdvi006 divideint 0 2 -> 0
dqdvi007 divideint 1 3 -> 0
dqdvi008 divideint 2 3 -> 0
dqdvi009 divideint 3 3 -> 1
dqdvi010 divideint 2.4 1 -> 2
dqdvi011 divideint 2.4 -1 -> -2
dqdvi012 divideint -2.4 1 -> -2
dqdvi013 divideint -2.4 -1 -> 2
dqdvi014 divideint 2.40 1 -> 2
dqdvi015 divideint 2.400 1 -> 2
dqdvi016 divideint 2.4 2 -> 1
dqdvi017 divideint 2.400 2 -> 1
dqdvi018 divideint 2. 2 -> 1
dqdvi019 divideint 20 20 -> 1
dqdvi020 divideint 187 187 -> 1
dqdvi021 divideint 5 2 -> 2
dqdvi022 divideint 5 2.0 -> 2
dqdvi023 divideint 5 2.000 -> 2
dqdvi024 divideint 5 0.200 -> 25
dqdvi025 divideint 5 0.200 -> 25
dqdvi030 divideint 1 2 -> 0
dqdvi031 divideint 1 4 -> 0
dqdvi032 divideint 1 8 -> 0
dqdvi033 divideint 1 16 -> 0
dqdvi034 divideint 1 32 -> 0
dqdvi035 divideint 1 64 -> 0
dqdvi040 divideint 1 -2 -> -0
dqdvi041 divideint 1 -4 -> -0
dqdvi042 divideint 1 -8 -> -0
dqdvi043 divideint 1 -16 -> -0
dqdvi044 divideint 1 -32 -> -0
dqdvi045 divideint 1 -64 -> -0
dqdvi050 divideint -1 2 -> -0
dqdvi051 divideint -1 4 -> -0
dqdvi052 divideint -1 8 -> -0
dqdvi053 divideint -1 16 -> -0
dqdvi054 divideint -1 32 -> -0
dqdvi055 divideint -1 64 -> -0
dqdvi060 divideint -1 -2 -> 0
dqdvi061 divideint -1 -4 -> 0
dqdvi062 divideint -1 -8 -> 0
dqdvi063 divideint -1 -16 -> 0
dqdvi064 divideint -1 -32 -> 0
dqdvi065 divideint -1 -64 -> 0
-- similar with powers of ten
dqdvi160 divideint 1 1 -> 1
dqdvi161 divideint 1 10 -> 0
dqdvi162 divideint 1 100 -> 0
dqdvi163 divideint 1 1000 -> 0
dqdvi164 divideint 1 10000 -> 0
dqdvi165 divideint 1 100000 -> 0
dqdvi166 divideint 1 1000000 -> 0
dqdvi167 divideint 1 10000000 -> 0
dqdvi168 divideint 1 100000000 -> 0
dqdvi170 divideint 1 -1 -> -1
dqdvi171 divideint 1 -10 -> -0
dqdvi172 divideint 1 -100 -> -0
dqdvi173 divideint 1 -1000 -> -0
dqdvi174 divideint 1 -10000 -> -0
dqdvi175 divideint 1 -100000 -> -0
dqdvi176 divideint 1 -1000000 -> -0
dqdvi177 divideint 1 -10000000 -> -0
dqdvi178 divideint 1 -100000000 -> -0
dqdvi180 divideint -1 1 -> -1
dqdvi181 divideint -1 10 -> -0
dqdvi182 divideint -1 100 -> -0
dqdvi183 divideint -1 1000 -> -0
dqdvi184 divideint -1 10000 -> -0
dqdvi185 divideint -1 100000 -> -0
dqdvi186 divideint -1 1000000 -> -0
dqdvi187 divideint -1 10000000 -> -0
dqdvi188 divideint -1 100000000 -> -0
dqdvi190 divideint -1 -1 -> 1
dqdvi191 divideint -1 -10 -> 0
dqdvi192 divideint -1 -100 -> 0
dqdvi193 divideint -1 -1000 -> 0
dqdvi194 divideint -1 -10000 -> 0
dqdvi195 divideint -1 -100000 -> 0
dqdvi196 divideint -1 -1000000 -> 0
dqdvi197 divideint -1 -10000000 -> 0
dqdvi198 divideint -1 -100000000 -> 0
-- some long operand (at p=9) cases
dqdvi070 divideint 999999999 1 -> 999999999
dqdvi071 divideint 999999999.4 1 -> 999999999
dqdvi072 divideint 999999999.5 1 -> 999999999
dqdvi073 divideint 999999999.9 1 -> 999999999
dqdvi074 divideint 999999999.999 1 -> 999999999
dqdvi090 divideint 0. 1 -> 0
dqdvi091 divideint .0 1 -> 0
dqdvi092 divideint 0.00 1 -> 0
dqdvi093 divideint 0.00E+9 1 -> 0
dqdvi094 divideint 0.0000E-50 1 -> 0
dqdvi100 divideint 1 1 -> 1
dqdvi101 divideint 1 2 -> 0
dqdvi102 divideint 1 3 -> 0
dqdvi103 divideint 1 4 -> 0
dqdvi104 divideint 1 5 -> 0
dqdvi105 divideint 1 6 -> 0
dqdvi106 divideint 1 7 -> 0
dqdvi107 divideint 1 8 -> 0
dqdvi108 divideint 1 9 -> 0
dqdvi109 divideint 1 10 -> 0
dqdvi110 divideint 1 1 -> 1
dqdvi111 divideint 2 1 -> 2
dqdvi112 divideint 3 1 -> 3
dqdvi113 divideint 4 1 -> 4
dqdvi114 divideint 5 1 -> 5
dqdvi115 divideint 6 1 -> 6
dqdvi116 divideint 7 1 -> 7
dqdvi117 divideint 8 1 -> 8
dqdvi118 divideint 9 1 -> 9
dqdvi119 divideint 10 1 -> 10
-- from DiagBigDecimal
dqdvi131 divideint 101.3 1 -> 101
dqdvi132 divideint 101.0 1 -> 101
dqdvi133 divideint 101.3 3 -> 33
dqdvi134 divideint 101.0 3 -> 33
dqdvi135 divideint 2.4 1 -> 2
dqdvi136 divideint 2.400 1 -> 2
dqdvi137 divideint 18 18 -> 1
dqdvi138 divideint 1120 1000 -> 1
dqdvi139 divideint 2.4 2 -> 1
dqdvi140 divideint 2.400 2 -> 1
dqdvi141 divideint 0.5 2.000 -> 0
dqdvi142 divideint 8.005 7 -> 1
dqdvi143 divideint 5 2 -> 2
dqdvi144 divideint 0 2 -> 0
dqdvi145 divideint 0.00 2 -> 0
-- Others
dqdvi150 divideint 12345 4.999 -> 2469
dqdvi151 divideint 12345 4.99 -> 2473
dqdvi152 divideint 12345 4.9 -> 2519
dqdvi153 divideint 12345 5 -> 2469
dqdvi154 divideint 12345 5.1 -> 2420
dqdvi155 divideint 12345 5.01 -> 2464
dqdvi156 divideint 12345 5.001 -> 2468
dqdvi157 divideint 101 7.6 -> 13
-- Various flavours of divideint by 0
dqdvi201 divideint 0 0 -> NaN Division_undefined
dqdvi202 divideint 0.0E5 0 -> NaN Division_undefined
dqdvi203 divideint 0.000 0 -> NaN Division_undefined
dqdvi204 divideint 0.0001 0 -> Infinity Division_by_zero
dqdvi205 divideint 0.01 0 -> Infinity Division_by_zero
dqdvi206 divideint 0.1 0 -> Infinity Division_by_zero
dqdvi207 divideint 1 0 -> Infinity Division_by_zero
dqdvi208 divideint 1 0.0 -> Infinity Division_by_zero
dqdvi209 divideint 10 0.0 -> Infinity Division_by_zero
dqdvi210 divideint 1E+100 0.0 -> Infinity Division_by_zero
dqdvi211 divideint 1E+380 0 -> Infinity Division_by_zero
dqdvi214 divideint -0.0001 0 -> -Infinity Division_by_zero
dqdvi215 divideint -0.01 0 -> -Infinity Division_by_zero
dqdvi216 divideint -0.1 0 -> -Infinity Division_by_zero
dqdvi217 divideint -1 0 -> -Infinity Division_by_zero
dqdvi218 divideint -1 0.0 -> -Infinity Division_by_zero
dqdvi219 divideint -10 0.0 -> -Infinity Division_by_zero
dqdvi220 divideint -1E+100 0.0 -> -Infinity Division_by_zero
dqdvi221 divideint -1E+380 0 -> -Infinity Division_by_zero
-- test some cases that are close to exponent overflow
dqdvi270 divideint 1 1e384 -> 0
dqdvi271 divideint 1 0.9e384 -> 0
dqdvi272 divideint 1 0.99e384 -> 0
dqdvi273 divideint 1 0.9999999999999999e384 -> 0
dqdvi274 divideint 9e384 1 -> NaN Division_impossible
dqdvi275 divideint 9.9e384 1 -> NaN Division_impossible
dqdvi276 divideint 9.99e384 1 -> NaN Division_impossible
dqdvi277 divideint 9.999999999999999e384 1 -> NaN Division_impossible
dqdvi280 divideint 0.1 9e-383 -> NaN Division_impossible
dqdvi281 divideint 0.1 99e-383 -> NaN Division_impossible
dqdvi282 divideint 0.1 999e-383 -> NaN Division_impossible
dqdvi283 divideint 0.1 9e-382 -> NaN Division_impossible
dqdvi284 divideint 0.1 99e-382 -> NaN Division_impossible
-- GD edge cases: lhs smaller than rhs but more digits
dqdvi301 divideint 0.9 2 -> 0
dqdvi302 divideint 0.9 2.0 -> 0
dqdvi303 divideint 0.9 2.1 -> 0
dqdvi304 divideint 0.9 2.00 -> 0
dqdvi305 divideint 0.9 2.01 -> 0
dqdvi306 divideint 0.12 1 -> 0
dqdvi307 divideint 0.12 1.0 -> 0
dqdvi308 divideint 0.12 1.00 -> 0
dqdvi309 divideint 0.12 1.0 -> 0
dqdvi310 divideint 0.12 1.00 -> 0
dqdvi311 divideint 0.12 2 -> 0
dqdvi312 divideint 0.12 2.0 -> 0
dqdvi313 divideint 0.12 2.1 -> 0
dqdvi314 divideint 0.12 2.00 -> 0
dqdvi315 divideint 0.12 2.01 -> 0
-- edge cases of impossible
dqdvi330 divideint 1234567987654321987654321890123456 10 -> 123456798765432198765432189012345
dqdvi331 divideint 1234567987654321987654321890123456 1 -> 1234567987654321987654321890123456
dqdvi332 divideint 1234567987654321987654321890123456 0.1 -> NaN Division_impossible
dqdvi333 divideint 1234567987654321987654321890123456 0.01 -> NaN Division_impossible
-- overflow and underflow tests [from divide]
dqdvi1051 divideint 1e+277 1e-311 -> NaN Division_impossible
dqdvi1052 divideint 1e+277 -1e-311 -> NaN Division_impossible
dqdvi1053 divideint -1e+277 1e-311 -> NaN Division_impossible
dqdvi1054 divideint -1e+277 -1e-311 -> NaN Division_impossible
dqdvi1055 divideint 1e-277 1e+311 -> 0
dqdvi1056 divideint 1e-277 -1e+311 -> -0
dqdvi1057 divideint -1e-277 1e+311 -> -0
dqdvi1058 divideint -1e-277 -1e+311 -> 0
-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
dqdvi1060 divideint 1e-291 1e+101 -> 0
dqdvi1061 divideint 1e-291 1e+102 -> 0
dqdvi1062 divideint 1e-291 1e+103 -> 0
dqdvi1063 divideint 1e-291 1e+104 -> 0
dqdvi1064 divideint 1e-291 1e+105 -> 0
dqdvi1065 divideint 1e-291 1e+106 -> 0
dqdvi1066 divideint 1e-291 1e+107 -> 0
dqdvi1067 divideint 1e-291 1e+108 -> 0
dqdvi1068 divideint 1e-291 1e+109 -> 0
dqdvi1069 divideint 1e-291 1e+110 -> 0
dqdvi1101 divideint 1.0000E-394 1 -> 0
dqdvi1102 divideint 1.000E-394 1e+1 -> 0
dqdvi1103 divideint 1.00E-394 1e+2 -> 0
dqdvi1118 divideint 1E-394 1e+4 -> 0
dqdvi1119 divideint 3E-394 -1e+5 -> -0
dqdvi1120 divideint 5E-394 1e+5 -> 0
dqdvi1124 divideint 1E-394 -1e+4 -> -0
dqdvi1130 divideint 3.0E-394 -1e+5 -> -0
dqdvi1131 divideint 1.0E-199 1e+200 -> 0
dqdvi1132 divideint 1.0E-199 1e+199 -> 0
dqdvi1133 divideint 1.0E-199 1e+198 -> 0
dqdvi1134 divideint 2.0E-199 2e+198 -> 0
dqdvi1135 divideint 4.0E-199 4e+198 -> 0
-- long operand checks
dqdvi401 divideint 12345678000 100 -> 123456780
dqdvi402 divideint 1 12345678000 -> 0
dqdvi403 divideint 1234567800 10 -> 123456780
dqdvi404 divideint 1 1234567800 -> 0
dqdvi405 divideint 1234567890 10 -> 123456789
dqdvi406 divideint 1 1234567890 -> 0
dqdvi407 divideint 1234567891 10 -> 123456789
dqdvi408 divideint 1 1234567891 -> 0
dqdvi409 divideint 12345678901 100 -> 123456789
dqdvi410 divideint 1 12345678901 -> 0
dqdvi411 divideint 1234567896 10 -> 123456789
dqdvi412 divideint 1 1234567896 -> 0
dqdvi413 divideint 12345678948 100 -> 123456789
dqdvi414 divideint 12345678949 100 -> 123456789
dqdvi415 divideint 12345678950 100 -> 123456789
dqdvi416 divideint 12345678951 100 -> 123456789
dqdvi417 divideint 12345678999 100 -> 123456789
dqdvi441 divideint 12345678000 1 -> 12345678000
dqdvi442 divideint 1 12345678000 -> 0
dqdvi443 divideint 1234567800 1 -> 1234567800
dqdvi444 divideint 1 1234567800 -> 0
dqdvi445 divideint 1234567890 1 -> 1234567890
dqdvi446 divideint 1 1234567890 -> 0
dqdvi447 divideint 1234567891 1 -> 1234567891
dqdvi448 divideint 1 1234567891 -> 0
dqdvi449 divideint 12345678901 1 -> 12345678901
dqdvi450 divideint 1 12345678901 -> 0
dqdvi451 divideint 1234567896 1 -> 1234567896
dqdvi452 divideint 1 1234567896 -> 0
-- more zeros, etc.
dqdvi531 divideint 5.00 1E-3 -> 5000
dqdvi532 divideint 00.00 0.000 -> NaN Division_undefined
dqdvi533 divideint 00.00 0E-3 -> NaN Division_undefined
dqdvi534 divideint 0 -0 -> NaN Division_undefined
dqdvi535 divideint -0 0 -> NaN Division_undefined
dqdvi536 divideint -0 -0 -> NaN Division_undefined
dqdvi541 divideint 0 -1 -> -0
dqdvi542 divideint -0 -1 -> 0
dqdvi543 divideint 0 1 -> 0
dqdvi544 divideint -0 1 -> -0
dqdvi545 divideint -1 0 -> -Infinity Division_by_zero
dqdvi546 divideint -1 -0 -> Infinity Division_by_zero
dqdvi547 divideint 1 0 -> Infinity Division_by_zero
dqdvi548 divideint 1 -0 -> -Infinity Division_by_zero
dqdvi551 divideint 0.0 -1 -> -0
dqdvi552 divideint -0.0 -1 -> 0
dqdvi553 divideint 0.0 1 -> 0
dqdvi554 divideint -0.0 1 -> -0
dqdvi555 divideint -1.0 0 -> -Infinity Division_by_zero
dqdvi556 divideint -1.0 -0 -> Infinity Division_by_zero
dqdvi557 divideint 1.0 0 -> Infinity Division_by_zero
dqdvi558 divideint 1.0 -0 -> -Infinity Division_by_zero
dqdvi561 divideint 0 -1.0 -> -0
dqdvi562 divideint -0 -1.0 -> 0
dqdvi563 divideint 0 1.0 -> 0
dqdvi564 divideint -0 1.0 -> -0
dqdvi565 divideint -1 0.0 -> -Infinity Division_by_zero
dqdvi566 divideint -1 -0.0 -> Infinity Division_by_zero
dqdvi567 divideint 1 0.0 -> Infinity Division_by_zero
dqdvi568 divideint 1 -0.0 -> -Infinity Division_by_zero
dqdvi571 divideint 0.0 -1.0 -> -0
dqdvi572 divideint -0.0 -1.0 -> 0
dqdvi573 divideint 0.0 1.0 -> 0
dqdvi574 divideint -0.0 1.0 -> -0
dqdvi575 divideint -1.0 0.0 -> -Infinity Division_by_zero
dqdvi576 divideint -1.0 -0.0 -> Infinity Division_by_zero
dqdvi577 divideint 1.0 0.0 -> Infinity Division_by_zero
dqdvi578 divideint 1.0 -0.0 -> -Infinity Division_by_zero
-- Specials
dqdvi580 divideint Inf -Inf -> NaN Invalid_operation
dqdvi581 divideint Inf -1000 -> -Infinity
dqdvi582 divideint Inf -1 -> -Infinity
dqdvi583 divideint Inf -0 -> -Infinity
dqdvi584 divideint Inf 0 -> Infinity
dqdvi585 divideint Inf 1 -> Infinity
dqdvi586 divideint Inf 1000 -> Infinity
dqdvi587 divideint Inf Inf -> NaN Invalid_operation
dqdvi588 divideint -1000 Inf -> -0
dqdvi589 divideint -Inf Inf -> NaN Invalid_operation
dqdvi590 divideint -1 Inf -> -0
dqdvi591 divideint -0 Inf -> -0
dqdvi592 divideint 0 Inf -> 0
dqdvi593 divideint 1 Inf -> 0
dqdvi594 divideint 1000 Inf -> 0
dqdvi595 divideint Inf Inf -> NaN Invalid_operation
dqdvi600 divideint -Inf -Inf -> NaN Invalid_operation
dqdvi601 divideint -Inf -1000 -> Infinity
dqdvi602 divideint -Inf -1 -> Infinity
dqdvi603 divideint -Inf -0 -> Infinity
dqdvi604 divideint -Inf 0 -> -Infinity
dqdvi605 divideint -Inf 1 -> -Infinity
dqdvi606 divideint -Inf 1000 -> -Infinity
dqdvi607 divideint -Inf Inf -> NaN Invalid_operation
dqdvi608 divideint -1000 Inf -> -0
dqdvi609 divideint -Inf -Inf -> NaN Invalid_operation
dqdvi610 divideint -1 -Inf -> 0
dqdvi611 divideint -0 -Inf -> 0
dqdvi612 divideint 0 -Inf -> -0
dqdvi613 divideint 1 -Inf -> -0
dqdvi614 divideint 1000 -Inf -> -0
dqdvi615 divideint Inf -Inf -> NaN Invalid_operation
dqdvi621 divideint NaN -Inf -> NaN
dqdvi622 divideint NaN -1000 -> NaN
dqdvi623 divideint NaN -1 -> NaN
dqdvi624 divideint NaN -0 -> NaN
dqdvi625 divideint NaN 0 -> NaN
dqdvi626 divideint NaN 1 -> NaN
dqdvi627 divideint NaN 1000 -> NaN
dqdvi628 divideint NaN Inf -> NaN
dqdvi629 divideint NaN NaN -> NaN
dqdvi630 divideint -Inf NaN -> NaN
dqdvi631 divideint -1000 NaN -> NaN
dqdvi632 divideint -1 NaN -> NaN
dqdvi633 divideint -0 NaN -> NaN
dqdvi634 divideint 0 NaN -> NaN
dqdvi635 divideint 1 NaN -> NaN
dqdvi636 divideint 1000 NaN -> NaN
dqdvi637 divideint Inf NaN -> NaN
dqdvi641 divideint sNaN -Inf -> NaN Invalid_operation
dqdvi642 divideint sNaN -1000 -> NaN Invalid_operation
dqdvi643 divideint sNaN -1 -> NaN Invalid_operation
dqdvi644 divideint sNaN -0 -> NaN Invalid_operation
dqdvi645 divideint sNaN 0 -> NaN Invalid_operation
dqdvi646 divideint sNaN 1 -> NaN Invalid_operation
dqdvi647 divideint sNaN 1000 -> NaN Invalid_operation
dqdvi648 divideint sNaN NaN -> NaN Invalid_operation
dqdvi649 divideint sNaN sNaN -> NaN Invalid_operation
dqdvi650 divideint NaN sNaN -> NaN Invalid_operation
dqdvi651 divideint -Inf sNaN -> NaN Invalid_operation
dqdvi652 divideint -1000 sNaN -> NaN Invalid_operation
dqdvi653 divideint -1 sNaN -> NaN Invalid_operation
dqdvi654 divideint -0 sNaN -> NaN Invalid_operation
dqdvi655 divideint 0 sNaN -> NaN Invalid_operation
dqdvi656 divideint 1 sNaN -> NaN Invalid_operation
dqdvi657 divideint 1000 sNaN -> NaN Invalid_operation
dqdvi658 divideint Inf sNaN -> NaN Invalid_operation
dqdvi659 divideint NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqdvi661 divideint NaN9 -Inf -> NaN9
dqdvi662 divideint NaN8 1000 -> NaN8
dqdvi663 divideint NaN7 Inf -> NaN7
dqdvi664 divideint -NaN6 NaN5 -> -NaN6
dqdvi665 divideint -Inf NaN4 -> NaN4
dqdvi666 divideint -1000 NaN3 -> NaN3
dqdvi667 divideint Inf -NaN2 -> -NaN2
dqdvi671 divideint -sNaN99 -Inf -> -NaN99 Invalid_operation
dqdvi672 divideint sNaN98 -1 -> NaN98 Invalid_operation
dqdvi673 divideint sNaN97 NaN -> NaN97 Invalid_operation
dqdvi674 divideint sNaN96 sNaN94 -> NaN96 Invalid_operation
dqdvi675 divideint NaN95 sNaN93 -> NaN93 Invalid_operation
dqdvi676 divideint -Inf sNaN92 -> NaN92 Invalid_operation
dqdvi677 divideint 0 sNaN91 -> NaN91 Invalid_operation
dqdvi678 divideint Inf -sNaN90 -> -NaN90 Invalid_operation
dqdvi679 divideint NaN sNaN89 -> NaN89 Invalid_operation
-- Gyuris example
dqdvi700 divideint 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0
-- Null tests
dqdvi900 divideint 10 # -> NaN Invalid_operation
dqdvi901 divideint # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,477 @@
------------------------------------------------------------------------
-- dqEncode.decTest -- decimal sixteen-byte format testcases --
-- Copyright (c) IBM Corporation, 2000, 2008. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
-- [Previously called decimal128.decTest]
version: 2.59
-- This set of tests is for the sixteen-byte concrete representation.
-- Its characteristics are:
--
-- 1 bit sign
-- 5 bits combination field
-- 12 bits exponent continuation
-- 110 bits coefficient continuation
--
-- Total exponent length 14 bits
-- Total coefficient length 114 bits (34 digits)
--
-- Elimit = 12287 (maximum encoded exponent)
-- Emax = 6144 (largest exponent value)
-- Emin = -6143 (smallest exponent value)
-- bias = 6176 (subtracted from encoded exponent) = -Etiny
-- The testcases here have only exactly representable data on the
-- 'left-hand-side'; rounding from strings is tested in 'base'
-- testcase groups.
extended: 1
clamp: 1
precision: 34
rounding: half_up
maxExponent: 6144
minExponent: -6143
-- General testcases
-- (mostly derived from the Strawman 4 document and examples)
decq001 apply #A20780000000000000000000000003D0 -> -7.50
decq002 apply -7.50 -> #A20780000000000000000000000003D0
-- derivative canonical plain strings
decq003 apply #A20840000000000000000000000003D0 -> -7.50E+3
decq004 apply -7.50E+3 -> #A20840000000000000000000000003D0
decq005 apply #A20800000000000000000000000003D0 -> -750
decq006 apply -750 -> #A20800000000000000000000000003D0
decq007 apply #A207c0000000000000000000000003D0 -> -75.0
decq008 apply -75.0 -> #A207c0000000000000000000000003D0
decq009 apply #A20740000000000000000000000003D0 -> -0.750
decq010 apply -0.750 -> #A20740000000000000000000000003D0
decq011 apply #A20700000000000000000000000003D0 -> -0.0750
decq012 apply -0.0750 -> #A20700000000000000000000000003D0
decq013 apply #A20680000000000000000000000003D0 -> -0.000750
decq014 apply -0.000750 -> #A20680000000000000000000000003D0
decq015 apply #A20600000000000000000000000003D0 -> -0.00000750
decq016 apply -0.00000750 -> #A20600000000000000000000000003D0
decq017 apply #A205c0000000000000000000000003D0 -> -7.50E-7
decq018 apply -7.50E-7 -> #A205c0000000000000000000000003D0
-- Normality
decq020 apply 1234567890123456789012345678901234 -> #2608134b9c1e28e56f3c127177823534
decq021 apply -1234567890123456789012345678901234 -> #a608134b9c1e28e56f3c127177823534
decq022 apply 1111111111111111111111111111111111 -> #26080912449124491244912449124491
-- Nmax and similar
decq031 apply 9.999999999999999999999999999999999E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff
decq032 apply #77ffcff3fcff3fcff3fcff3fcff3fcff -> 9.999999999999999999999999999999999E+6144
decq033 apply 1.234567890123456789012345678901234E+6144 -> #47ffd34b9c1e28e56f3c127177823534
decq034 apply #47ffd34b9c1e28e56f3c127177823534 -> 1.234567890123456789012345678901234E+6144
-- fold-downs (more below)
decq035 apply 1.23E+6144 -> #47ffd300000000000000000000000000 Clamped
decq036 apply #47ffd300000000000000000000000000 -> 1.230000000000000000000000000000000E+6144
decq037 apply 1E+6144 -> #47ffc000000000000000000000000000 Clamped
decq038 apply #47ffc000000000000000000000000000 -> 1.000000000000000000000000000000000E+6144
decq051 apply 12345 -> #220800000000000000000000000049c5
decq052 apply #220800000000000000000000000049c5 -> 12345
decq053 apply 1234 -> #22080000000000000000000000000534
decq054 apply #22080000000000000000000000000534 -> 1234
decq055 apply 123 -> #220800000000000000000000000000a3
decq056 apply #220800000000000000000000000000a3 -> 123
decq057 apply 12 -> #22080000000000000000000000000012
decq058 apply #22080000000000000000000000000012 -> 12
decq059 apply 1 -> #22080000000000000000000000000001
decq060 apply #22080000000000000000000000000001 -> 1
decq061 apply 1.23 -> #220780000000000000000000000000a3
decq062 apply #220780000000000000000000000000a3 -> 1.23
decq063 apply 123.45 -> #220780000000000000000000000049c5
decq064 apply #220780000000000000000000000049c5 -> 123.45
-- Nmin and below
decq071 apply 1E-6143 -> #00084000000000000000000000000001
decq072 apply #00084000000000000000000000000001 -> 1E-6143
decq073 apply 1.000000000000000000000000000000000E-6143 -> #04000000000000000000000000000000
decq074 apply #04000000000000000000000000000000 -> 1.000000000000000000000000000000000E-6143
decq075 apply 1.000000000000000000000000000000001E-6143 -> #04000000000000000000000000000001
decq076 apply #04000000000000000000000000000001 -> 1.000000000000000000000000000000001E-6143
decq077 apply 0.100000000000000000000000000000000E-6143 -> #00000800000000000000000000000000 Subnormal
decq078 apply #00000800000000000000000000000000 -> 1.00000000000000000000000000000000E-6144 Subnormal
decq079 apply 0.000000000000000000000000000000010E-6143 -> #00000000000000000000000000000010 Subnormal
decq080 apply #00000000000000000000000000000010 -> 1.0E-6175 Subnormal
decq081 apply 0.00000000000000000000000000000001E-6143 -> #00004000000000000000000000000001 Subnormal
decq082 apply #00004000000000000000000000000001 -> 1E-6175 Subnormal
decq083 apply 0.000000000000000000000000000000001E-6143 -> #00000000000000000000000000000001 Subnormal
decq084 apply #00000000000000000000000000000001 -> 1E-6176 Subnormal
-- underflows cannot be tested for simple copies, check edge cases
decq090 apply 1e-6176 -> #00000000000000000000000000000001 Subnormal
decq100 apply 999999999999999999999999999999999e-6176 -> #00000ff3fcff3fcff3fcff3fcff3fcff Subnormal
-- same again, negatives
-- Nmax and similar
decq122 apply -9.999999999999999999999999999999999E+6144 -> #f7ffcff3fcff3fcff3fcff3fcff3fcff
decq123 apply #f7ffcff3fcff3fcff3fcff3fcff3fcff -> -9.999999999999999999999999999999999E+6144
decq124 apply -1.234567890123456789012345678901234E+6144 -> #c7ffd34b9c1e28e56f3c127177823534
decq125 apply #c7ffd34b9c1e28e56f3c127177823534 -> -1.234567890123456789012345678901234E+6144
-- fold-downs (more below)
decq130 apply -1.23E+6144 -> #c7ffd300000000000000000000000000 Clamped
decq131 apply #c7ffd300000000000000000000000000 -> -1.230000000000000000000000000000000E+6144
decq132 apply -1E+6144 -> #c7ffc000000000000000000000000000 Clamped
decq133 apply #c7ffc000000000000000000000000000 -> -1.000000000000000000000000000000000E+6144
decq151 apply -12345 -> #a20800000000000000000000000049c5
decq152 apply #a20800000000000000000000000049c5 -> -12345
decq153 apply -1234 -> #a2080000000000000000000000000534
decq154 apply #a2080000000000000000000000000534 -> -1234
decq155 apply -123 -> #a20800000000000000000000000000a3
decq156 apply #a20800000000000000000000000000a3 -> -123
decq157 apply -12 -> #a2080000000000000000000000000012
decq158 apply #a2080000000000000000000000000012 -> -12
decq159 apply -1 -> #a2080000000000000000000000000001
decq160 apply #a2080000000000000000000000000001 -> -1
decq161 apply -1.23 -> #a20780000000000000000000000000a3
decq162 apply #a20780000000000000000000000000a3 -> -1.23
decq163 apply -123.45 -> #a20780000000000000000000000049c5
decq164 apply #a20780000000000000000000000049c5 -> -123.45
-- Nmin and below
decq171 apply -1E-6143 -> #80084000000000000000000000000001
decq172 apply #80084000000000000000000000000001 -> -1E-6143
decq173 apply -1.000000000000000000000000000000000E-6143 -> #84000000000000000000000000000000
decq174 apply #84000000000000000000000000000000 -> -1.000000000000000000000000000000000E-6143
decq175 apply -1.000000000000000000000000000000001E-6143 -> #84000000000000000000000000000001
decq176 apply #84000000000000000000000000000001 -> -1.000000000000000000000000000000001E-6143
decq177 apply -0.100000000000000000000000000000000E-6143 -> #80000800000000000000000000000000 Subnormal
decq178 apply #80000800000000000000000000000000 -> -1.00000000000000000000000000000000E-6144 Subnormal
decq179 apply -0.000000000000000000000000000000010E-6143 -> #80000000000000000000000000000010 Subnormal
decq180 apply #80000000000000000000000000000010 -> -1.0E-6175 Subnormal
decq181 apply -0.00000000000000000000000000000001E-6143 -> #80004000000000000000000000000001 Subnormal
decq182 apply #80004000000000000000000000000001 -> -1E-6175 Subnormal
decq183 apply -0.000000000000000000000000000000001E-6143 -> #80000000000000000000000000000001 Subnormal
decq184 apply #80000000000000000000000000000001 -> -1E-6176 Subnormal
-- underflow edge cases
decq190 apply -1e-6176 -> #80000000000000000000000000000001 Subnormal
decq200 apply -999999999999999999999999999999999e-6176 -> #80000ff3fcff3fcff3fcff3fcff3fcff Subnormal
-- zeros
decq400 apply 0E-8000 -> #00000000000000000000000000000000 Clamped
decq401 apply 0E-6177 -> #00000000000000000000000000000000 Clamped
decq402 apply 0E-6176 -> #00000000000000000000000000000000
decq403 apply #00000000000000000000000000000000 -> 0E-6176
decq404 apply 0.000000000000000000000000000000000E-6143 -> #00000000000000000000000000000000
decq405 apply #00000000000000000000000000000000 -> 0E-6176
decq406 apply 0E-2 -> #22078000000000000000000000000000
decq407 apply #22078000000000000000000000000000 -> 0.00
decq408 apply 0 -> #22080000000000000000000000000000
decq409 apply #22080000000000000000000000000000 -> 0
decq410 apply 0E+3 -> #2208c000000000000000000000000000
decq411 apply #2208c000000000000000000000000000 -> 0E+3
decq412 apply 0E+6111 -> #43ffc000000000000000000000000000
decq413 apply #43ffc000000000000000000000000000 -> 0E+6111
-- clamped zeros...
decq414 apply 0E+6112 -> #43ffc000000000000000000000000000 Clamped
decq415 apply #43ffc000000000000000000000000000 -> 0E+6111
decq416 apply 0E+6144 -> #43ffc000000000000000000000000000 Clamped
decq417 apply #43ffc000000000000000000000000000 -> 0E+6111
decq418 apply 0E+8000 -> #43ffc000000000000000000000000000 Clamped
decq419 apply #43ffc000000000000000000000000000 -> 0E+6111
-- negative zeros
decq420 apply -0E-8000 -> #80000000000000000000000000000000 Clamped
decq421 apply -0E-6177 -> #80000000000000000000000000000000 Clamped
decq422 apply -0E-6176 -> #80000000000000000000000000000000
decq423 apply #80000000000000000000000000000000 -> -0E-6176
decq424 apply -0.000000000000000000000000000000000E-6143 -> #80000000000000000000000000000000
decq425 apply #80000000000000000000000000000000 -> -0E-6176
decq426 apply -0E-2 -> #a2078000000000000000000000000000
decq427 apply #a2078000000000000000000000000000 -> -0.00
decq428 apply -0 -> #a2080000000000000000000000000000
decq429 apply #a2080000000000000000000000000000 -> -0
decq430 apply -0E+3 -> #a208c000000000000000000000000000
decq431 apply #a208c000000000000000000000000000 -> -0E+3
decq432 apply -0E+6111 -> #c3ffc000000000000000000000000000
decq433 apply #c3ffc000000000000000000000000000 -> -0E+6111
-- clamped zeros...
decq434 apply -0E+6112 -> #c3ffc000000000000000000000000000 Clamped
decq435 apply #c3ffc000000000000000000000000000 -> -0E+6111
decq436 apply -0E+6144 -> #c3ffc000000000000000000000000000 Clamped
decq437 apply #c3ffc000000000000000000000000000 -> -0E+6111
decq438 apply -0E+8000 -> #c3ffc000000000000000000000000000 Clamped
decq439 apply #c3ffc000000000000000000000000000 -> -0E+6111
-- exponent lengths
decq440 apply #22080000000000000000000000000007 -> 7
decq441 apply 7 -> #22080000000000000000000000000007
decq442 apply #220a4000000000000000000000000007 -> 7E+9
decq443 apply 7E+9 -> #220a4000000000000000000000000007
decq444 apply #2220c000000000000000000000000007 -> 7E+99
decq445 apply 7E+99 -> #2220c000000000000000000000000007
decq446 apply #2301c000000000000000000000000007 -> 7E+999
decq447 apply 7E+999 -> #2301c000000000000000000000000007
decq448 apply #43e3c000000000000000000000000007 -> 7E+5999
decq449 apply 7E+5999 -> #43e3c000000000000000000000000007
-- Specials
decq500 apply Infinity -> #78000000000000000000000000000000
decq501 apply #78787878787878787878787878787878 -> #78000000000000000000000000000000
decq502 apply #78000000000000000000000000000000 -> Infinity
decq503 apply #79797979797979797979797979797979 -> #78000000000000000000000000000000
decq504 apply #79000000000000000000000000000000 -> Infinity
decq505 apply #7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #78000000000000000000000000000000
decq506 apply #7a000000000000000000000000000000 -> Infinity
decq507 apply #7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #78000000000000000000000000000000
decq508 apply #7b000000000000000000000000000000 -> Infinity
decq509 apply NaN -> #7c000000000000000000000000000000
decq510 apply #7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #7c003c7c7c7c7c7c7c7c7c7c7c7c7c7c
decq511 apply #7c000000000000000000000000000000 -> NaN
decq512 apply #7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #7c003d7d7d7d7d7d7d7d7d7d7d7d7d7d
decq513 apply #7d000000000000000000000000000000 -> NaN
decq514 apply #7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #7e003e7e7c7e7e7e7e7c7e7e7e7e7c7e
decq515 apply #7e000000000000000000000000000000 -> sNaN
decq516 apply #7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #7e003f7f7c7f7f7f7f7c7f7f7f7f7c7f
decq517 apply #7f000000000000000000000000000000 -> sNaN
decq518 apply #7fffffffffffffffffffffffffffffff -> sNaN999999999999999999999999999999999
decq519 apply #7fffffffffffffffffffffffffffffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
decq520 apply -Infinity -> #f8000000000000000000000000000000
decq521 apply #f8787878787878787878787878787878 -> #f8000000000000000000000000000000
decq522 apply #f8000000000000000000000000000000 -> -Infinity
decq523 apply #f9797979797979797979797979797979 -> #f8000000000000000000000000000000
decq524 apply #f9000000000000000000000000000000 -> -Infinity
decq525 apply #fa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #f8000000000000000000000000000000
decq526 apply #fa000000000000000000000000000000 -> -Infinity
decq527 apply #fb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #f8000000000000000000000000000000
decq528 apply #fb000000000000000000000000000000 -> -Infinity
decq529 apply -NaN -> #fc000000000000000000000000000000
decq530 apply #fc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #fc003c7c7c7c7c7c7c7c7c7c7c7c7c7c
decq531 apply #fc000000000000000000000000000000 -> -NaN
decq532 apply #fd7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #fc003d7d7d7d7d7d7d7d7d7d7d7d7d7d
decq533 apply #fd000000000000000000000000000000 -> -NaN
decq534 apply #fe7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #fe003e7e7c7e7e7e7e7c7e7e7e7e7c7e
decq535 apply #fe000000000000000000000000000000 -> -sNaN
decq536 apply #ff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #fe003f7f7c7f7f7f7f7c7f7f7f7f7c7f
decq537 apply #ff000000000000000000000000000000 -> -sNaN
decq538 apply #ffffffffffffffffffffffffffffffff -> -sNaN999999999999999999999999999999999
decq539 apply #ffffffffffffffffffffffffffffffff -> #fe000ff3fcff3fcff3fcff3fcff3fcff
decq540 apply NaN -> #7c000000000000000000000000000000
decq541 apply NaN0 -> #7c000000000000000000000000000000
decq542 apply NaN1 -> #7c000000000000000000000000000001
decq543 apply NaN12 -> #7c000000000000000000000000000012
decq544 apply NaN79 -> #7c000000000000000000000000000079
decq545 apply NaN12345 -> #7c0000000000000000000000000049c5
decq546 apply NaN123456 -> #7c000000000000000000000000028e56
decq547 apply NaN799799 -> #7c0000000000000000000000000f7fdf
decq548 apply NaN799799799799799799799799799799799 -> #7c003dff7fdff7fdff7fdff7fdff7fdf
decq549 apply NaN999999999999999999999999999999999 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
decq550 apply 9999999999999999999999999999999999 -> #6e080ff3fcff3fcff3fcff3fcff3fcff
-- fold-down full sequence
decq601 apply 1E+6144 -> #47ffc000000000000000000000000000 Clamped
decq602 apply #47ffc000000000000000000000000000 -> 1.000000000000000000000000000000000E+6144
decq603 apply 1E+6143 -> #43ffc800000000000000000000000000 Clamped
decq604 apply #43ffc800000000000000000000000000 -> 1.00000000000000000000000000000000E+6143
decq605 apply 1E+6142 -> #43ffc100000000000000000000000000 Clamped
decq606 apply #43ffc100000000000000000000000000 -> 1.0000000000000000000000000000000E+6142
decq607 apply 1E+6141 -> #43ffc010000000000000000000000000 Clamped
decq608 apply #43ffc010000000000000000000000000 -> 1.000000000000000000000000000000E+6141
decq609 apply 1E+6140 -> #43ffc002000000000000000000000000 Clamped
decq610 apply #43ffc002000000000000000000000000 -> 1.00000000000000000000000000000E+6140
decq611 apply 1E+6139 -> #43ffc000400000000000000000000000 Clamped
decq612 apply #43ffc000400000000000000000000000 -> 1.0000000000000000000000000000E+6139
decq613 apply 1E+6138 -> #43ffc000040000000000000000000000 Clamped
decq614 apply #43ffc000040000000000000000000000 -> 1.000000000000000000000000000E+6138
decq615 apply 1E+6137 -> #43ffc000008000000000000000000000 Clamped
decq616 apply #43ffc000008000000000000000000000 -> 1.00000000000000000000000000E+6137
decq617 apply 1E+6136 -> #43ffc000001000000000000000000000 Clamped
decq618 apply #43ffc000001000000000000000000000 -> 1.0000000000000000000000000E+6136
decq619 apply 1E+6135 -> #43ffc000000100000000000000000000 Clamped
decq620 apply #43ffc000000100000000000000000000 -> 1.000000000000000000000000E+6135
decq621 apply 1E+6134 -> #43ffc000000020000000000000000000 Clamped
decq622 apply #43ffc000000020000000000000000000 -> 1.00000000000000000000000E+6134
decq623 apply 1E+6133 -> #43ffc000000004000000000000000000 Clamped
decq624 apply #43ffc000000004000000000000000000 -> 1.0000000000000000000000E+6133
decq625 apply 1E+6132 -> #43ffc000000000400000000000000000 Clamped
decq626 apply #43ffc000000000400000000000000000 -> 1.000000000000000000000E+6132
decq627 apply 1E+6131 -> #43ffc000000000080000000000000000 Clamped
decq628 apply #43ffc000000000080000000000000000 -> 1.00000000000000000000E+6131
decq629 apply 1E+6130 -> #43ffc000000000010000000000000000 Clamped
decq630 apply #43ffc000000000010000000000000000 -> 1.0000000000000000000E+6130
decq631 apply 1E+6129 -> #43ffc000000000001000000000000000 Clamped
decq632 apply #43ffc000000000001000000000000000 -> 1.000000000000000000E+6129
decq633 apply 1E+6128 -> #43ffc000000000000200000000000000 Clamped
decq634 apply #43ffc000000000000200000000000000 -> 1.00000000000000000E+6128
decq635 apply 1E+6127 -> #43ffc000000000000040000000000000 Clamped
decq636 apply #43ffc000000000000040000000000000 -> 1.0000000000000000E+6127
decq637 apply 1E+6126 -> #43ffc000000000000004000000000000 Clamped
decq638 apply #43ffc000000000000004000000000000 -> 1.000000000000000E+6126
decq639 apply 1E+6125 -> #43ffc000000000000000800000000000 Clamped
decq640 apply #43ffc000000000000000800000000000 -> 1.00000000000000E+6125
decq641 apply 1E+6124 -> #43ffc000000000000000100000000000 Clamped
decq642 apply #43ffc000000000000000100000000000 -> 1.0000000000000E+6124
decq643 apply 1E+6123 -> #43ffc000000000000000010000000000 Clamped
decq644 apply #43ffc000000000000000010000000000 -> 1.000000000000E+6123
decq645 apply 1E+6122 -> #43ffc000000000000000002000000000 Clamped
decq646 apply #43ffc000000000000000002000000000 -> 1.00000000000E+6122
decq647 apply 1E+6121 -> #43ffc000000000000000000400000000 Clamped
decq648 apply #43ffc000000000000000000400000000 -> 1.0000000000E+6121
decq649 apply 1E+6120 -> #43ffc000000000000000000040000000 Clamped
decq650 apply #43ffc000000000000000000040000000 -> 1.000000000E+6120
decq651 apply 1E+6119 -> #43ffc000000000000000000008000000 Clamped
decq652 apply #43ffc000000000000000000008000000 -> 1.00000000E+6119
decq653 apply 1E+6118 -> #43ffc000000000000000000001000000 Clamped
decq654 apply #43ffc000000000000000000001000000 -> 1.0000000E+6118
decq655 apply 1E+6117 -> #43ffc000000000000000000000100000 Clamped
decq656 apply #43ffc000000000000000000000100000 -> 1.000000E+6117
decq657 apply 1E+6116 -> #43ffc000000000000000000000020000 Clamped
decq658 apply #43ffc000000000000000000000020000 -> 1.00000E+6116
decq659 apply 1E+6115 -> #43ffc000000000000000000000004000 Clamped
decq660 apply #43ffc000000000000000000000004000 -> 1.0000E+6115
decq661 apply 1E+6114 -> #43ffc000000000000000000000000400 Clamped
decq662 apply #43ffc000000000000000000000000400 -> 1.000E+6114
decq663 apply 1E+6113 -> #43ffc000000000000000000000000080 Clamped
decq664 apply #43ffc000000000000000000000000080 -> 1.00E+6113
decq665 apply 1E+6112 -> #43ffc000000000000000000000000010 Clamped
decq666 apply #43ffc000000000000000000000000010 -> 1.0E+6112
decq667 apply 1E+6111 -> #43ffc000000000000000000000000001
decq668 apply #43ffc000000000000000000000000001 -> 1E+6111
decq669 apply 1E+6110 -> #43ff8000000000000000000000000001
decq670 apply #43ff8000000000000000000000000001 -> 1E+6110
-- Selected DPD codes
decq700 apply #22080000000000000000000000000000 -> 0
decq701 apply #22080000000000000000000000000009 -> 9
decq702 apply #22080000000000000000000000000010 -> 10
decq703 apply #22080000000000000000000000000019 -> 19
decq704 apply #22080000000000000000000000000020 -> 20
decq705 apply #22080000000000000000000000000029 -> 29
decq706 apply #22080000000000000000000000000030 -> 30
decq707 apply #22080000000000000000000000000039 -> 39
decq708 apply #22080000000000000000000000000040 -> 40
decq709 apply #22080000000000000000000000000049 -> 49
decq710 apply #22080000000000000000000000000050 -> 50
decq711 apply #22080000000000000000000000000059 -> 59
decq712 apply #22080000000000000000000000000060 -> 60
decq713 apply #22080000000000000000000000000069 -> 69
decq714 apply #22080000000000000000000000000070 -> 70
decq715 apply #22080000000000000000000000000071 -> 71
decq716 apply #22080000000000000000000000000072 -> 72
decq717 apply #22080000000000000000000000000073 -> 73
decq718 apply #22080000000000000000000000000074 -> 74
decq719 apply #22080000000000000000000000000075 -> 75
decq720 apply #22080000000000000000000000000076 -> 76
decq721 apply #22080000000000000000000000000077 -> 77
decq722 apply #22080000000000000000000000000078 -> 78
decq723 apply #22080000000000000000000000000079 -> 79
decq730 apply #2208000000000000000000000000029e -> 994
decq731 apply #2208000000000000000000000000029f -> 995
decq732 apply #220800000000000000000000000002a0 -> 520
decq733 apply #220800000000000000000000000002a1 -> 521
-- DPD: one of each of the huffman groups
decq740 apply #220800000000000000000000000003f7 -> 777
decq741 apply #220800000000000000000000000003f8 -> 778
decq742 apply #220800000000000000000000000003eb -> 787
decq743 apply #2208000000000000000000000000037d -> 877
decq744 apply #2208000000000000000000000000039f -> 997
decq745 apply #220800000000000000000000000003bf -> 979
decq746 apply #220800000000000000000000000003df -> 799
decq747 apply #2208000000000000000000000000006e -> 888
-- DPD all-highs cases (includes the 24 redundant codes)
decq750 apply #2208000000000000000000000000006e -> 888
decq751 apply #2208000000000000000000000000016e -> 888
decq752 apply #2208000000000000000000000000026e -> 888
decq753 apply #2208000000000000000000000000036e -> 888
decq754 apply #2208000000000000000000000000006f -> 889
decq755 apply #2208000000000000000000000000016f -> 889
decq756 apply #2208000000000000000000000000026f -> 889
decq757 apply #2208000000000000000000000000036f -> 889
decq760 apply #2208000000000000000000000000007e -> 898
decq761 apply #2208000000000000000000000000017e -> 898
decq762 apply #2208000000000000000000000000027e -> 898
decq763 apply #2208000000000000000000000000037e -> 898
decq764 apply #2208000000000000000000000000007f -> 899
decq765 apply #2208000000000000000000000000017f -> 899
decq766 apply #2208000000000000000000000000027f -> 899
decq767 apply #2208000000000000000000000000037f -> 899
decq770 apply #220800000000000000000000000000ee -> 988
decq771 apply #220800000000000000000000000001ee -> 988
decq772 apply #220800000000000000000000000002ee -> 988
decq773 apply #220800000000000000000000000003ee -> 988
decq774 apply #220800000000000000000000000000ef -> 989
decq775 apply #220800000000000000000000000001ef -> 989
decq776 apply #220800000000000000000000000002ef -> 989
decq777 apply #220800000000000000000000000003ef -> 989
decq780 apply #220800000000000000000000000000fe -> 998
decq781 apply #220800000000000000000000000001fe -> 998
decq782 apply #220800000000000000000000000002fe -> 998
decq783 apply #220800000000000000000000000003fe -> 998
decq784 apply #220800000000000000000000000000ff -> 999
decq785 apply #220800000000000000000000000001ff -> 999
decq786 apply #220800000000000000000000000002ff -> 999
decq787 apply #220800000000000000000000000003ff -> 999
-- Miscellaneous (testers' queries, etc.)
decq790 apply #2208000000000000000000000000c000 -> 30000
decq791 apply #22080000000000000000000000007800 -> 890000
decq792 apply 30000 -> #2208000000000000000000000000c000
decq793 apply 890000 -> #22080000000000000000000000007800
-- values around [u]int32 edges (zeros done earlier)
decq800 apply -2147483646 -> #a208000000000000000000008c78af46
decq801 apply -2147483647 -> #a208000000000000000000008c78af47
decq802 apply -2147483648 -> #a208000000000000000000008c78af48
decq803 apply -2147483649 -> #a208000000000000000000008c78af49
decq804 apply 2147483646 -> #2208000000000000000000008c78af46
decq805 apply 2147483647 -> #2208000000000000000000008c78af47
decq806 apply 2147483648 -> #2208000000000000000000008c78af48
decq807 apply 2147483649 -> #2208000000000000000000008c78af49
decq808 apply 4294967294 -> #22080000000000000000000115afb55a
decq809 apply 4294967295 -> #22080000000000000000000115afb55b
decq810 apply 4294967296 -> #22080000000000000000000115afb57a
decq811 apply 4294967297 -> #22080000000000000000000115afb57b
decq820 apply #a208000000000000000000008c78af46 -> -2147483646
decq821 apply #a208000000000000000000008c78af47 -> -2147483647
decq822 apply #a208000000000000000000008c78af48 -> -2147483648
decq823 apply #a208000000000000000000008c78af49 -> -2147483649
decq824 apply #2208000000000000000000008c78af46 -> 2147483646
decq825 apply #2208000000000000000000008c78af47 -> 2147483647
decq826 apply #2208000000000000000000008c78af48 -> 2147483648
decq827 apply #2208000000000000000000008c78af49 -> 2147483649
decq828 apply #22080000000000000000000115afb55a -> 4294967294
decq829 apply #22080000000000000000000115afb55b -> 4294967295
decq830 apply #22080000000000000000000115afb57a -> 4294967296
decq831 apply #22080000000000000000000115afb57b -> 4294967297
-- VG testcase
decq840 apply #2080000000000000F294000000172636 -> 8.81125000000001349436E-1548
decq841 apply #20800000000000008000000000000000 -> 8.000000000000000000E-1550
decq842 apply #1EF98490000000010F6E4E0000000000 -> 7.049000000000010795488000000000000E-3097
decq843 multiply #20800000000000008000000000000000 #2080000000000000F294000000172636 -> #1EF98490000000010F6E4E0000000000 Rounded

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,245 @@
------------------------------------------------------------------------
-- dqInvert.decTest -- digitwise logical INVERT for decQuads --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check (truth table)
dqinv001 invert 0 -> 1111111111111111111111111111111111
dqinv002 invert 1 -> 1111111111111111111111111111111110
dqinv003 invert 10 -> 1111111111111111111111111111111101
dqinv004 invert 111111111 -> 1111111111111111111111111000000000
dqinv005 invert 000000000 -> 1111111111111111111111111111111111
-- and at msd and msd-1
dqinv007 invert 0000000000000000000000000000000000 -> 1111111111111111111111111111111111
dqinv008 invert 1000000000000000000000000000000000 -> 111111111111111111111111111111111
dqinv009 invert 0000000000000000000000000000000000 -> 1111111111111111111111111111111111
dqinv010 invert 0100000000000000000000000000000000 -> 1011111111111111111111111111111111
dqinv011 invert 0111111111111111111111111111111111 -> 1000000000000000000000000000000000
dqinv012 invert 1111111111111111111111111111111111 -> 0
dqinv013 invert 0011111111111111111111111111111111 -> 1100000000000000000000000000000000
dqinv014 invert 0111111111111111111111111111111111 -> 1000000000000000000000000000000000
-- Various lengths
dqinv600 invert 0111111111111111111011111111111111 -> 1000000000000000000100000000000000
dqinv601 invert 0011111111111111110101111111111111 -> 1100000000000000001010000000000000
dqinv602 invert 0101111111111111101110111111111111 -> 1010000000000000010001000000000000
dqinv603 invert 0110111111111111011111011111111111 -> 1001000000000000100000100000000000
dqinv604 invert 0111011111111110111111101111111111 -> 1000100000000001000000010000000000
dqinv605 invert 0111101111111101111111110111111111 -> 1000010000000010000000001000000000
dqinv606 invert 0111110111111011111111111011111111 -> 1000001000000100000000000100000000
dqinv607 invert 0111111011110111111111111101111111 -> 1000000100001000000000000010000000
dqinv608 invert 0111111101101111111111111110111111 -> 1000000010010000000000000001000000
dqinv609 invert 0111111110011111111111111111011111 -> 1000000001100000000000000000100000
dqinv610 invert 0111111110011111111111111111101111 -> 1000000001100000000000000000010000
dqinv611 invert 0111111101101111111111111111110111 -> 1000000010010000000000000000001000
dqinv612 invert 0111111011110111111111111111111011 -> 1000000100001000000000000000000100
dqinv613 invert 0111110111111011111111111111111101 -> 1000001000000100000000000000000010
dqinv614 invert 0111101111111101111111111111111110 -> 1000010000000010000000000000000001
dqinv615 invert 0111011111111110111111111111111111 -> 1000100000000001000000000000000000
dqinv616 invert 0110111111111111011111111111111110 -> 1001000000000000100000000000000001
dqinv617 invert 0101111111111111101111111111111101 -> 1010000000000000010000000000000010
dqinv618 invert 0011111111111111110111111111111011 -> 1100000000000000001000000000000100
dqinv619 invert 0101111111111111111011111111110111 -> 1010000000000000000100000000001000
dqinv620 invert 0110111111111111111101111111101111 -> 1001000000000000000010000000010000
dqinv621 invert 0111011111111111111110111111011111 -> 1000100000000000000001000000100000
dqinv622 invert 0111101111111111111111011110111111 -> 1000010000000000000000100001000000
dqinv623 invert 0111110111111111111111101101111111 -> 1000001000000000000000010010000000
dqinv624 invert 0111111011111111111111110011111111 -> 1000000100000000000000001100000000
dqinv625 invert 0111111101111111111111110011111111 -> 1000000010000000000000001100000000
dqinv626 invert 0111111110111111111111101101111111 -> 1000000001000000000000010010000000
dqinv627 invert 0111111111011111111111011110111111 -> 1000000000100000000000100001000000
dqinv628 invert 0111111111101111111110111111011111 -> 1000000000010000000001000000100000
dqinv629 invert 0111111111110111111101111111101111 -> 1000000000001000000010000000010000
dqinv630 invert 0111111111111011111011111111110111 -> 1000000000000100000100000000001000
dqinv631 invert 0111111111111101110111111111111011 -> 1000000000000010001000000000000100
dqinv632 invert 0111111111111110101111111111111101 -> 1000000000000001010000000000000010
dqinv633 invert 0111111111111111011111111111111110 -> 1000000000000000100000000000000001
dqinv021 invert 111111111 -> 1111111111111111111111111000000000
dqinv022 invert 111111111111 -> 1111111111111111111111000000000000
dqinv023 invert 11111111 -> 1111111111111111111111111100000000
dqinv025 invert 1111111 -> 1111111111111111111111111110000000
dqinv026 invert 111111 -> 1111111111111111111111111111000000
dqinv027 invert 11111 -> 1111111111111111111111111111100000
dqinv028 invert 1111 -> 1111111111111111111111111111110000
dqinv029 invert 111 -> 1111111111111111111111111111111000
dqinv031 invert 11 -> 1111111111111111111111111111111100
dqinv032 invert 1 -> 1111111111111111111111111111111110
dqinv033 invert 111111111111 -> 1111111111111111111111000000000000
dqinv034 invert 11111111111 -> 1111111111111111111111100000000000
dqinv035 invert 1111111111 -> 1111111111111111111111110000000000
dqinv036 invert 111111111 -> 1111111111111111111111111000000000
dqinv040 invert 011111111 -> 1111111111111111111111111100000000
dqinv041 invert 101111111 -> 1111111111111111111111111010000000
dqinv042 invert 110111111 -> 1111111111111111111111111001000000
dqinv043 invert 111011111 -> 1111111111111111111111111000100000
dqinv044 invert 111101111 -> 1111111111111111111111111000010000
dqinv045 invert 111110111 -> 1111111111111111111111111000001000
dqinv046 invert 111111011 -> 1111111111111111111111111000000100
dqinv047 invert 111111101 -> 1111111111111111111111111000000010
dqinv048 invert 111111110 -> 1111111111111111111111111000000001
dqinv049 invert 011111011 -> 1111111111111111111111111100000100
dqinv050 invert 101111101 -> 1111111111111111111111111010000010
dqinv051 invert 110111110 -> 1111111111111111111111111001000001
dqinv052 invert 111011101 -> 1111111111111111111111111000100010
dqinv053 invert 111101011 -> 1111111111111111111111111000010100
dqinv054 invert 111110111 -> 1111111111111111111111111000001000
dqinv055 invert 111101011 -> 1111111111111111111111111000010100
dqinv056 invert 111011101 -> 1111111111111111111111111000100010
dqinv057 invert 110111110 -> 1111111111111111111111111001000001
dqinv058 invert 101111101 -> 1111111111111111111111111010000010
dqinv059 invert 011111011 -> 1111111111111111111111111100000100
dqinv080 invert 1000000011111111 -> 1111111111111111110111111100000000
dqinv081 invert 0100000101111111 -> 1111111111111111111011111010000000
dqinv082 invert 0010000110111111 -> 1111111111111111111101111001000000
dqinv083 invert 0001000111011111 -> 1111111111111111111110111000100000
dqinv084 invert 0000100111101111 -> 1111111111111111111111011000010000
dqinv085 invert 0000010111110111 -> 1111111111111111111111101000001000
dqinv086 invert 0000001111111011 -> 1111111111111111111111110000000100
dqinv087 invert 0000010111111101 -> 1111111111111111111111101000000010
dqinv088 invert 0000100111111110 -> 1111111111111111111111011000000001
dqinv089 invert 0001000011111011 -> 1111111111111111111110111100000100
dqinv090 invert 0010000101111101 -> 1111111111111111111101111010000010
dqinv091 invert 0100000110111110 -> 1111111111111111111011111001000001
dqinv092 invert 1000000111011101 -> 1111111111111111110111111000100010
dqinv093 invert 0100000111101011 -> 1111111111111111111011111000010100
dqinv094 invert 0010000111110111 -> 1111111111111111111101111000001000
dqinv095 invert 0001000111101011 -> 1111111111111111111110111000010100
dqinv096 invert 0000100111011101 -> 1111111111111111111111011000100010
dqinv097 invert 0000010110111110 -> 1111111111111111111111101001000001
dqinv098 invert 0000001101111101 -> 1111111111111111111111110010000010
dqinv099 invert 0000010011111011 -> 1111111111111111111111101100000100
-- and more thorough MSD/LSD tests [8 and 9 mght be encoded differently...]
dqinv151 invert 1111111111111111111111111111111110 -> 1
dqinv152 invert 1111111111111111110000000000000000 -> 1111111111111111
dqinv153 invert 1000000000000000001111111111111111 -> 111111111111111110000000000000000
dqinv154 invert 1111111111111111111000000000000000 -> 111111111111111
dqinv155 invert 0100000000000000000111111111111111 -> 1011111111111111111000000000000000
dqinv156 invert 1011111111111111110100000000000000 -> 100000000000000001011111111111111
dqinv157 invert 1101111111111111110111111111111111 -> 10000000000000001000000000000000
dqinv158 invert 1110111111111111110011111111111111 -> 1000000000000001100000000000000
-- non-0/1 should not be accepted, nor should signs
dqinv220 invert 111111112 -> NaN Invalid_operation
dqinv221 invert 333333333 -> NaN Invalid_operation
dqinv222 invert 555555555 -> NaN Invalid_operation
dqinv223 invert 777777777 -> NaN Invalid_operation
dqinv224 invert 999999999 -> NaN Invalid_operation
dqinv225 invert 222222222 -> NaN Invalid_operation
dqinv226 invert 444444444 -> NaN Invalid_operation
dqinv227 invert 666666666 -> NaN Invalid_operation
dqinv228 invert 888888888 -> NaN Invalid_operation
dqinv229 invert 999999999 -> NaN Invalid_operation
dqinv230 invert 999999999 -> NaN Invalid_operation
dqinv231 invert 999999999 -> NaN Invalid_operation
dqinv232 invert 999999999 -> NaN Invalid_operation
-- a few randoms
dqinv240 invert 567468689 -> NaN Invalid_operation
dqinv241 invert 567367689 -> NaN Invalid_operation
dqinv242 invert -631917772 -> NaN Invalid_operation
dqinv243 invert -756253257 -> NaN Invalid_operation
dqinv244 invert 835590149 -> NaN Invalid_operation
-- test MSD
dqinv250 invert 2000000111000111000111000000000000 -> NaN Invalid_operation
dqinv251 invert 3000000111000111000111000000000000 -> NaN Invalid_operation
dqinv252 invert 4000000111000111000111000000000000 -> NaN Invalid_operation
dqinv253 invert 5000000111000111000111000000000000 -> NaN Invalid_operation
dqinv254 invert 6000000111000111000111000000000000 -> NaN Invalid_operation
dqinv255 invert 7000000111000111000111000000000000 -> NaN Invalid_operation
dqinv256 invert 8000000111000111000111000000000000 -> NaN Invalid_operation
dqinv257 invert 9000000111000111000111000000000000 -> NaN Invalid_operation
-- test MSD-1
dqinv270 invert 0200000111000111000111001000000000 -> NaN Invalid_operation
dqinv271 invert 0300000111000111000111000100000000 -> NaN Invalid_operation
dqinv272 invert 0400000111000111000111000010000000 -> NaN Invalid_operation
dqinv273 invert 0500000111000111000111000001000000 -> NaN Invalid_operation
dqinv274 invert 1600000111000111000111000000100000 -> NaN Invalid_operation
dqinv275 invert 1700000111000111000111000000010000 -> NaN Invalid_operation
dqinv276 invert 1800000111000111000111000000001000 -> NaN Invalid_operation
dqinv277 invert 1900000111000111000111000000000100 -> NaN Invalid_operation
-- test LSD
dqinv280 invert 0010000111000111000111000000000002 -> NaN Invalid_operation
dqinv281 invert 0001000111000111000111000000000003 -> NaN Invalid_operation
dqinv282 invert 0000000111000111000111100000000004 -> NaN Invalid_operation
dqinv283 invert 0000000111000111000111010000000005 -> NaN Invalid_operation
dqinv284 invert 1000000111000111000111001000000006 -> NaN Invalid_operation
dqinv285 invert 1000000111000111000111000100000007 -> NaN Invalid_operation
dqinv286 invert 1000000111000111000111000010000008 -> NaN Invalid_operation
dqinv287 invert 1000000111000111000111000001000009 -> NaN Invalid_operation
-- test Middie
dqinv288 invert 0010000111000111000111000020000000 -> NaN Invalid_operation
dqinv289 invert 0001000111000111000111000030000001 -> NaN Invalid_operation
dqinv290 invert 0000000111000111000111100040000010 -> NaN Invalid_operation
dqinv291 invert 0000000111000111000111010050000100 -> NaN Invalid_operation
dqinv292 invert 1000000111000111000111001060001000 -> NaN Invalid_operation
dqinv293 invert 1000000111000111000111000170010000 -> NaN Invalid_operation
dqinv294 invert 1000000111000111000111000080100000 -> NaN Invalid_operation
dqinv295 invert 1000000111000111000111000091000000 -> NaN Invalid_operation
-- signs
dqinv296 invert -1000000111000111000111000001000000 -> NaN Invalid_operation
dqinv299 invert 1000000111000111000111000001000000 -> 111111000111000111000111110111111
-- Nmax, Nmin, Ntiny-like
dqinv341 invert 9.99999999E+2998 -> NaN Invalid_operation
dqinv342 invert 1E-2998 -> NaN Invalid_operation
dqinv343 invert 1.00000000E-2998 -> NaN Invalid_operation
dqinv344 invert 1E-2078 -> NaN Invalid_operation
dqinv345 invert -1E-2078 -> NaN Invalid_operation
dqinv346 invert -1.00000000E-2998 -> NaN Invalid_operation
dqinv347 invert -1E-2998 -> NaN Invalid_operation
dqinv348 invert -9.99999999E+2998 -> NaN Invalid_operation
-- A few other non-integers
dqinv361 invert 1.0 -> NaN Invalid_operation
dqinv362 invert 1E+1 -> NaN Invalid_operation
dqinv363 invert 0.0 -> NaN Invalid_operation
dqinv364 invert 0E+1 -> NaN Invalid_operation
dqinv365 invert 9.9 -> NaN Invalid_operation
dqinv366 invert 9E+1 -> NaN Invalid_operation
-- All Specials are in error
dqinv788 invert -Inf -> NaN Invalid_operation
dqinv794 invert Inf -> NaN Invalid_operation
dqinv821 invert NaN -> NaN Invalid_operation
dqinv841 invert sNaN -> NaN Invalid_operation
-- propagating NaNs
dqinv861 invert NaN1 -> NaN Invalid_operation
dqinv862 invert +NaN2 -> NaN Invalid_operation
dqinv863 invert NaN3 -> NaN Invalid_operation
dqinv864 invert NaN4 -> NaN Invalid_operation
dqinv865 invert NaN5 -> NaN Invalid_operation
dqinv871 invert sNaN11 -> NaN Invalid_operation
dqinv872 invert sNaN12 -> NaN Invalid_operation
dqinv873 invert sNaN13 -> NaN Invalid_operation
dqinv874 invert sNaN14 -> NaN Invalid_operation
dqinv875 invert sNaN15 -> NaN Invalid_operation
dqinv876 invert NaN16 -> NaN Invalid_operation
dqinv881 invert +NaN25 -> NaN Invalid_operation
dqinv882 invert -NaN26 -> NaN Invalid_operation
dqinv883 invert -sNaN27 -> NaN Invalid_operation

View file

@ -0,0 +1,160 @@
------------------------------------------------------------------------
-- dqLogB.decTest -- integral 754r adjusted exponent, for decQuads --
-- Copyright (c) IBM Corporation, 2005, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- basics
dqlogb000 logb 0 -> -Infinity Division_by_zero
dqlogb001 logb 1E-6176 -> -6176
dqlogb002 logb 1E-6143 -> -6143
dqlogb003 logb 0.001 -> -3
dqlogb004 logb 0.03 -> -2
dqlogb005 logb 1 -> 0
dqlogb006 logb 2 -> 0
dqlogb007 logb 2.5 -> 0
dqlogb008 logb 2.50 -> 0
dqlogb009 logb 2.500 -> 0
dqlogb010 logb 10 -> 1
dqlogb011 logb 70 -> 1
dqlogb012 logb 100 -> 2
dqlogb013 logb 250 -> 2
dqlogb014 logb 9E+6144 -> 6144
dqlogb015 logb +Infinity -> Infinity
-- negatives appear to be treated as positives
dqlogb021 logb -0 -> -Infinity Division_by_zero
dqlogb022 logb -1E-6176 -> -6176
dqlogb023 logb -9E-6143 -> -6143
dqlogb024 logb -0.001 -> -3
dqlogb025 logb -1 -> 0
dqlogb026 logb -2 -> 0
dqlogb027 logb -10 -> 1
dqlogb028 logb -70 -> 1
dqlogb029 logb -100 -> 2
dqlogb030 logb -9E+6144 -> 6144
dqlogb031 logb -Infinity -> Infinity
-- zeros
dqlogb111 logb 0 -> -Infinity Division_by_zero
dqlogb112 logb -0 -> -Infinity Division_by_zero
dqlogb113 logb 0E+4 -> -Infinity Division_by_zero
dqlogb114 logb -0E+4 -> -Infinity Division_by_zero
dqlogb115 logb 0.0000 -> -Infinity Division_by_zero
dqlogb116 logb -0.0000 -> -Infinity Division_by_zero
dqlogb117 logb 0E-141 -> -Infinity Division_by_zero
dqlogb118 logb -0E-141 -> -Infinity Division_by_zero
-- full coefficients, alternating bits
dqlogb121 logb 268268268 -> 8
dqlogb122 logb -268268268 -> 8
dqlogb123 logb 134134134 -> 8
dqlogb124 logb -134134134 -> 8
-- Nmax, Nmin, Ntiny
dqlogb131 logb 9.999999999999999999999999999999999E+6144 -> 6144
dqlogb132 logb 1E-6143 -> -6143
dqlogb133 logb 1.000000000000000000000000000000000E-6143 -> -6143
dqlogb134 logb 1E-6176 -> -6176
dqlogb135 logb -1E-6176 -> -6176
dqlogb136 logb -1.000000000000000000000000000000000E-6143 -> -6143
dqlogb137 logb -1E-6143 -> -6143
dqlogb1614 logb -9.999999999999999999999999999999999E+6144 -> 6144
-- ones
dqlogb0061 logb 1 -> 0
dqlogb0062 logb 1.0 -> 0
dqlogb0063 logb 1.000000000000000 -> 0
-- notable cases -- exact powers of 10
dqlogb1100 logb 1 -> 0
dqlogb1101 logb 10 -> 1
dqlogb1102 logb 100 -> 2
dqlogb1103 logb 1000 -> 3
dqlogb1104 logb 10000 -> 4
dqlogb1105 logb 100000 -> 5
dqlogb1106 logb 1000000 -> 6
dqlogb1107 logb 10000000 -> 7
dqlogb1108 logb 100000000 -> 8
dqlogb1109 logb 1000000000 -> 9
dqlogb1110 logb 10000000000 -> 10
dqlogb1111 logb 100000000000 -> 11
dqlogb1112 logb 1000000000000 -> 12
dqlogb1113 logb 0.00000000001 -> -11
dqlogb1114 logb 0.0000000001 -> -10
dqlogb1115 logb 0.000000001 -> -9
dqlogb1116 logb 0.00000001 -> -8
dqlogb1117 logb 0.0000001 -> -7
dqlogb1118 logb 0.000001 -> -6
dqlogb1119 logb 0.00001 -> -5
dqlogb1120 logb 0.0001 -> -4
dqlogb1121 logb 0.001 -> -3
dqlogb1122 logb 0.01 -> -2
dqlogb1123 logb 0.1 -> -1
dqlogb1124 logb 1E-99 -> -99
dqlogb1125 logb 1E-100 -> -100
dqlogb1127 logb 1E-299 -> -299
dqlogb1126 logb 1E-6143 -> -6143
-- suggestions from Ilan Nehama
dqlogb1400 logb 10E-3 -> -2
dqlogb1401 logb 10E-2 -> -1
dqlogb1402 logb 100E-2 -> 0
dqlogb1403 logb 1000E-2 -> 1
dqlogb1404 logb 10000E-2 -> 2
dqlogb1405 logb 10E-1 -> 0
dqlogb1406 logb 100E-1 -> 1
dqlogb1407 logb 1000E-1 -> 2
dqlogb1408 logb 10000E-1 -> 3
dqlogb1409 logb 10E0 -> 1
dqlogb1410 logb 100E0 -> 2
dqlogb1411 logb 1000E0 -> 3
dqlogb1412 logb 10000E0 -> 4
dqlogb1413 logb 10E1 -> 2
dqlogb1414 logb 100E1 -> 3
dqlogb1415 logb 1000E1 -> 4
dqlogb1416 logb 10000E1 -> 5
dqlogb1417 logb 10E2 -> 3
dqlogb1418 logb 100E2 -> 4
dqlogb1419 logb 1000E2 -> 5
dqlogb1420 logb 10000E2 -> 6
-- special values
dqlogb820 logb Infinity -> Infinity
dqlogb821 logb 0 -> -Infinity Division_by_zero
dqlogb822 logb NaN -> NaN
dqlogb823 logb sNaN -> NaN Invalid_operation
-- propagating NaNs
dqlogb824 logb sNaN123 -> NaN123 Invalid_operation
dqlogb825 logb -sNaN321 -> -NaN321 Invalid_operation
dqlogb826 logb NaN456 -> NaN456
dqlogb827 logb -NaN654 -> -NaN654
dqlogb828 logb NaN1 -> NaN1
-- Null test
dqlogb900 logb # -> NaN Invalid_operation

View file

@ -0,0 +1,322 @@
------------------------------------------------------------------------
-- dqMax.decTest -- decQuad maxnum --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqmax001 max -2 -2 -> -2
dqmax002 max -2 -1 -> -1
dqmax003 max -2 0 -> 0
dqmax004 max -2 1 -> 1
dqmax005 max -2 2 -> 2
dqmax006 max -1 -2 -> -1
dqmax007 max -1 -1 -> -1
dqmax008 max -1 0 -> 0
dqmax009 max -1 1 -> 1
dqmax010 max -1 2 -> 2
dqmax011 max 0 -2 -> 0
dqmax012 max 0 -1 -> 0
dqmax013 max 0 0 -> 0
dqmax014 max 0 1 -> 1
dqmax015 max 0 2 -> 2
dqmax016 max 1 -2 -> 1
dqmax017 max 1 -1 -> 1
dqmax018 max 1 0 -> 1
dqmax019 max 1 1 -> 1
dqmax020 max 1 2 -> 2
dqmax021 max 2 -2 -> 2
dqmax022 max 2 -1 -> 2
dqmax023 max 2 0 -> 2
dqmax025 max 2 1 -> 2
dqmax026 max 2 2 -> 2
-- extended zeros
dqmax030 max 0 0 -> 0
dqmax031 max 0 -0 -> 0
dqmax032 max 0 -0.0 -> 0
dqmax033 max 0 0.0 -> 0
dqmax034 max -0 0 -> 0 -- note: -0 = 0, but 0 chosen
dqmax035 max -0 -0 -> -0
dqmax036 max -0 -0.0 -> -0.0
dqmax037 max -0 0.0 -> 0.0
dqmax038 max 0.0 0 -> 0
dqmax039 max 0.0 -0 -> 0.0
dqmax040 max 0.0 -0.0 -> 0.0
dqmax041 max 0.0 0.0 -> 0.0
dqmax042 max -0.0 0 -> 0
dqmax043 max -0.0 -0 -> -0.0
dqmax044 max -0.0 -0.0 -> -0.0
dqmax045 max -0.0 0.0 -> 0.0
dqmax050 max -0E1 0E1 -> 0E+1
dqmax051 max -0E2 0E2 -> 0E+2
dqmax052 max -0E2 0E1 -> 0E+1
dqmax053 max -0E1 0E2 -> 0E+2
dqmax054 max 0E1 -0E1 -> 0E+1
dqmax055 max 0E2 -0E2 -> 0E+2
dqmax056 max 0E2 -0E1 -> 0E+2
dqmax057 max 0E1 -0E2 -> 0E+1
dqmax058 max 0E1 0E1 -> 0E+1
dqmax059 max 0E2 0E2 -> 0E+2
dqmax060 max 0E2 0E1 -> 0E+2
dqmax061 max 0E1 0E2 -> 0E+2
dqmax062 max -0E1 -0E1 -> -0E+1
dqmax063 max -0E2 -0E2 -> -0E+2
dqmax064 max -0E2 -0E1 -> -0E+1
dqmax065 max -0E1 -0E2 -> -0E+1
-- Specials
dqmax090 max Inf -Inf -> Infinity
dqmax091 max Inf -1000 -> Infinity
dqmax092 max Inf -1 -> Infinity
dqmax093 max Inf -0 -> Infinity
dqmax094 max Inf 0 -> Infinity
dqmax095 max Inf 1 -> Infinity
dqmax096 max Inf 1000 -> Infinity
dqmax097 max Inf Inf -> Infinity
dqmax098 max -1000 Inf -> Infinity
dqmax099 max -Inf Inf -> Infinity
dqmax100 max -1 Inf -> Infinity
dqmax101 max -0 Inf -> Infinity
dqmax102 max 0 Inf -> Infinity
dqmax103 max 1 Inf -> Infinity
dqmax104 max 1000 Inf -> Infinity
dqmax105 max Inf Inf -> Infinity
dqmax120 max -Inf -Inf -> -Infinity
dqmax121 max -Inf -1000 -> -1000
dqmax122 max -Inf -1 -> -1
dqmax123 max -Inf -0 -> -0
dqmax124 max -Inf 0 -> 0
dqmax125 max -Inf 1 -> 1
dqmax126 max -Inf 1000 -> 1000
dqmax127 max -Inf Inf -> Infinity
dqmax128 max -Inf -Inf -> -Infinity
dqmax129 max -1000 -Inf -> -1000
dqmax130 max -1 -Inf -> -1
dqmax131 max -0 -Inf -> -0
dqmax132 max 0 -Inf -> 0
dqmax133 max 1 -Inf -> 1
dqmax134 max 1000 -Inf -> 1000
dqmax135 max Inf -Inf -> Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
dqmax141 max NaN -Inf -> -Infinity
dqmax142 max NaN -1000 -> -1000
dqmax143 max NaN -1 -> -1
dqmax144 max NaN -0 -> -0
dqmax145 max NaN 0 -> 0
dqmax146 max NaN 1 -> 1
dqmax147 max NaN 1000 -> 1000
dqmax148 max NaN Inf -> Infinity
dqmax149 max NaN NaN -> NaN
dqmax150 max -Inf NaN -> -Infinity
dqmax151 max -1000 NaN -> -1000
dqmax152 max -1 NaN -> -1
dqmax153 max -0 NaN -> -0
dqmax154 max 0 NaN -> 0
dqmax155 max 1 NaN -> 1
dqmax156 max 1000 NaN -> 1000
dqmax157 max Inf NaN -> Infinity
dqmax161 max sNaN -Inf -> NaN Invalid_operation
dqmax162 max sNaN -1000 -> NaN Invalid_operation
dqmax163 max sNaN -1 -> NaN Invalid_operation
dqmax164 max sNaN -0 -> NaN Invalid_operation
dqmax165 max sNaN 0 -> NaN Invalid_operation
dqmax166 max sNaN 1 -> NaN Invalid_operation
dqmax167 max sNaN 1000 -> NaN Invalid_operation
dqmax168 max sNaN NaN -> NaN Invalid_operation
dqmax169 max sNaN sNaN -> NaN Invalid_operation
dqmax170 max NaN sNaN -> NaN Invalid_operation
dqmax171 max -Inf sNaN -> NaN Invalid_operation
dqmax172 max -1000 sNaN -> NaN Invalid_operation
dqmax173 max -1 sNaN -> NaN Invalid_operation
dqmax174 max -0 sNaN -> NaN Invalid_operation
dqmax175 max 0 sNaN -> NaN Invalid_operation
dqmax176 max 1 sNaN -> NaN Invalid_operation
dqmax177 max 1000 sNaN -> NaN Invalid_operation
dqmax178 max Inf sNaN -> NaN Invalid_operation
dqmax179 max NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqmax181 max NaN9 -Inf -> -Infinity
dqmax182 max NaN8 9 -> 9
dqmax183 max -NaN7 Inf -> Infinity
dqmax184 max -NaN1 NaN11 -> -NaN1
dqmax185 max NaN2 NaN12 -> NaN2
dqmax186 max -NaN13 -NaN7 -> -NaN13
dqmax187 max NaN14 -NaN5 -> NaN14
dqmax188 max -Inf NaN4 -> -Infinity
dqmax189 max -9 -NaN3 -> -9
dqmax190 max Inf NaN2 -> Infinity
dqmax191 max sNaN99 -Inf -> NaN99 Invalid_operation
dqmax192 max sNaN98 -1 -> NaN98 Invalid_operation
dqmax193 max -sNaN97 NaN -> -NaN97 Invalid_operation
dqmax194 max sNaN96 sNaN94 -> NaN96 Invalid_operation
dqmax195 max NaN95 sNaN93 -> NaN93 Invalid_operation
dqmax196 max -Inf sNaN92 -> NaN92 Invalid_operation
dqmax197 max 0 sNaN91 -> NaN91 Invalid_operation
dqmax198 max Inf -sNaN90 -> -NaN90 Invalid_operation
dqmax199 max NaN sNaN89 -> NaN89 Invalid_operation
-- old rounding checks
dqmax221 max 12345678000 1 -> 12345678000
dqmax222 max 1 12345678000 -> 12345678000
dqmax223 max 1234567800 1 -> 1234567800
dqmax224 max 1 1234567800 -> 1234567800
dqmax225 max 1234567890 1 -> 1234567890
dqmax226 max 1 1234567890 -> 1234567890
dqmax227 max 1234567891 1 -> 1234567891
dqmax228 max 1 1234567891 -> 1234567891
dqmax229 max 12345678901 1 -> 12345678901
dqmax230 max 1 12345678901 -> 12345678901
dqmax231 max 1234567896 1 -> 1234567896
dqmax232 max 1 1234567896 -> 1234567896
dqmax233 max -1234567891 1 -> 1
dqmax234 max 1 -1234567891 -> 1
dqmax235 max -12345678901 1 -> 1
dqmax236 max 1 -12345678901 -> 1
dqmax237 max -1234567896 1 -> 1
dqmax238 max 1 -1234567896 -> 1
-- from examples
dqmax280 max '3' '2' -> '3'
dqmax281 max '-10' '3' -> '3'
dqmax282 max '1.0' '1' -> '1'
dqmax283 max '1' '1.0' -> '1'
dqmax284 max '7' 'NaN' -> '7'
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
dqmax401 max Inf 1.1 -> Infinity
dqmax402 max 1.1 1 -> 1.1
dqmax403 max 1 1.0 -> 1
dqmax404 max 1.0 0.1 -> 1.0
dqmax405 max 0.1 0.10 -> 0.1
dqmax406 max 0.10 0.100 -> 0.10
dqmax407 max 0.10 0 -> 0.10
dqmax408 max 0 0.0 -> 0
dqmax409 max 0.0 -0 -> 0.0
dqmax410 max 0.0 -0.0 -> 0.0
dqmax411 max 0.00 -0.0 -> 0.00
dqmax412 max 0.0 -0.00 -> 0.0
dqmax413 max 0 -0.0 -> 0
dqmax414 max 0 -0 -> 0
dqmax415 max -0.0 -0 -> -0.0
dqmax416 max -0 -0.100 -> -0
dqmax417 max -0.100 -0.10 -> -0.100
dqmax418 max -0.10 -0.1 -> -0.10
dqmax419 max -0.1 -1.0 -> -0.1
dqmax420 max -1.0 -1 -> -1.0
dqmax421 max -1 -1.1 -> -1
dqmax423 max -1.1 -Inf -> -1.1
-- same with operands reversed
dqmax431 max 1.1 Inf -> Infinity
dqmax432 max 1 1.1 -> 1.1
dqmax433 max 1.0 1 -> 1
dqmax434 max 0.1 1.0 -> 1.0
dqmax435 max 0.10 0.1 -> 0.1
dqmax436 max 0.100 0.10 -> 0.10
dqmax437 max 0 0.10 -> 0.10
dqmax438 max 0.0 0 -> 0
dqmax439 max -0 0.0 -> 0.0
dqmax440 max -0.0 0.0 -> 0.0
dqmax441 max -0.0 0.00 -> 0.00
dqmax442 max -0.00 0.0 -> 0.0
dqmax443 max -0.0 0 -> 0
dqmax444 max -0 0 -> 0
dqmax445 max -0 -0.0 -> -0.0
dqmax446 max -0.100 -0 -> -0
dqmax447 max -0.10 -0.100 -> -0.100
dqmax448 max -0.1 -0.10 -> -0.10
dqmax449 max -1.0 -0.1 -> -0.1
dqmax450 max -1 -1.0 -> -1.0
dqmax451 max -1.1 -1 -> -1
dqmax453 max -Inf -1.1 -> -1.1
-- largies
dqmax460 max 1000 1E+3 -> 1E+3
dqmax461 max 1E+3 1000 -> 1E+3
dqmax462 max 1000 -1E+3 -> 1000
dqmax463 max 1E+3 -1000 -> 1E+3
dqmax464 max -1000 1E+3 -> 1E+3
dqmax465 max -1E+3 1000 -> 1000
dqmax466 max -1000 -1E+3 -> -1000
dqmax467 max -1E+3 -1000 -> -1000
-- misalignment traps for little-endian
dqmax471 max 1.0 0.1 -> 1.0
dqmax472 max 0.1 1.0 -> 1.0
dqmax473 max 10.0 0.1 -> 10.0
dqmax474 max 0.1 10.0 -> 10.0
dqmax475 max 100 1.0 -> 100
dqmax476 max 1.0 100 -> 100
dqmax477 max 1000 10.0 -> 1000
dqmax478 max 10.0 1000 -> 1000
dqmax479 max 10000 100.0 -> 10000
dqmax480 max 100.0 10000 -> 10000
dqmax481 max 100000 1000.0 -> 100000
dqmax482 max 1000.0 100000 -> 100000
dqmax483 max 1000000 10000.0 -> 1000000
dqmax484 max 10000.0 1000000 -> 1000000
-- subnormals
dqmax510 max 1.00E-6143 0 -> 1.00E-6143
dqmax511 max 0.1E-6143 0 -> 1E-6144 Subnormal
dqmax512 max 0.10E-6143 0 -> 1.0E-6144 Subnormal
dqmax513 max 0.100E-6143 0 -> 1.00E-6144 Subnormal
dqmax514 max 0.01E-6143 0 -> 1E-6145 Subnormal
dqmax515 max 0.999E-6143 0 -> 9.99E-6144 Subnormal
dqmax516 max 0.099E-6143 0 -> 9.9E-6145 Subnormal
dqmax517 max 0.009E-6143 0 -> 9E-6146 Subnormal
dqmax518 max 0.001E-6143 0 -> 1E-6146 Subnormal
dqmax519 max 0.0009E-6143 0 -> 9E-6147 Subnormal
dqmax520 max 0.0001E-6143 0 -> 1E-6147 Subnormal
dqmax530 max -1.00E-6143 0 -> 0
dqmax531 max -0.1E-6143 0 -> 0
dqmax532 max -0.10E-6143 0 -> 0
dqmax533 max -0.100E-6143 0 -> 0
dqmax534 max -0.01E-6143 0 -> 0
dqmax535 max -0.999E-6143 0 -> 0
dqmax536 max -0.099E-6143 0 -> 0
dqmax537 max -0.009E-6143 0 -> 0
dqmax538 max -0.001E-6143 0 -> 0
dqmax539 max -0.0009E-6143 0 -> 0
dqmax540 max -0.0001E-6143 0 -> 0
-- Null tests
dqmax900 max 10 # -> NaN Invalid_operation
dqmax901 max # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,304 @@
------------------------------------------------------------------------
-- dqMaxMag.decTest -- decQuad maxnummag --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqmxg001 maxmag -2 -2 -> -2
dqmxg002 maxmag -2 -1 -> -2
dqmxg003 maxmag -2 0 -> -2
dqmxg004 maxmag -2 1 -> -2
dqmxg005 maxmag -2 2 -> 2
dqmxg006 maxmag -1 -2 -> -2
dqmxg007 maxmag -1 -1 -> -1
dqmxg008 maxmag -1 0 -> -1
dqmxg009 maxmag -1 1 -> 1
dqmxg010 maxmag -1 2 -> 2
dqmxg011 maxmag 0 -2 -> -2
dqmxg012 maxmag 0 -1 -> -1
dqmxg013 maxmag 0 0 -> 0
dqmxg014 maxmag 0 1 -> 1
dqmxg015 maxmag 0 2 -> 2
dqmxg016 maxmag 1 -2 -> -2
dqmxg017 maxmag 1 -1 -> 1
dqmxg018 maxmag 1 0 -> 1
dqmxg019 maxmag 1 1 -> 1
dqmxg020 maxmag 1 2 -> 2
dqmxg021 maxmag 2 -2 -> 2
dqmxg022 maxmag 2 -1 -> 2
dqmxg023 maxmag 2 0 -> 2
dqmxg025 maxmag 2 1 -> 2
dqmxg026 maxmag 2 2 -> 2
-- extended zeros
dqmxg030 maxmag 0 0 -> 0
dqmxg031 maxmag 0 -0 -> 0
dqmxg032 maxmag 0 -0.0 -> 0
dqmxg033 maxmag 0 0.0 -> 0
dqmxg034 maxmag -0 0 -> 0 -- note: -0 = 0, but 0 chosen
dqmxg035 maxmag -0 -0 -> -0
dqmxg036 maxmag -0 -0.0 -> -0.0
dqmxg037 maxmag -0 0.0 -> 0.0
dqmxg038 maxmag 0.0 0 -> 0
dqmxg039 maxmag 0.0 -0 -> 0.0
dqmxg040 maxmag 0.0 -0.0 -> 0.0
dqmxg041 maxmag 0.0 0.0 -> 0.0
dqmxg042 maxmag -0.0 0 -> 0
dqmxg043 maxmag -0.0 -0 -> -0.0
dqmxg044 maxmag -0.0 -0.0 -> -0.0
dqmxg045 maxmag -0.0 0.0 -> 0.0
dqmxg050 maxmag -0E1 0E1 -> 0E+1
dqmxg051 maxmag -0E2 0E2 -> 0E+2
dqmxg052 maxmag -0E2 0E1 -> 0E+1
dqmxg053 maxmag -0E1 0E2 -> 0E+2
dqmxg054 maxmag 0E1 -0E1 -> 0E+1
dqmxg055 maxmag 0E2 -0E2 -> 0E+2
dqmxg056 maxmag 0E2 -0E1 -> 0E+2
dqmxg057 maxmag 0E1 -0E2 -> 0E+1
dqmxg058 maxmag 0E1 0E1 -> 0E+1
dqmxg059 maxmag 0E2 0E2 -> 0E+2
dqmxg060 maxmag 0E2 0E1 -> 0E+2
dqmxg061 maxmag 0E1 0E2 -> 0E+2
dqmxg062 maxmag -0E1 -0E1 -> -0E+1
dqmxg063 maxmag -0E2 -0E2 -> -0E+2
dqmxg064 maxmag -0E2 -0E1 -> -0E+1
dqmxg065 maxmag -0E1 -0E2 -> -0E+1
-- Specials
dqmxg090 maxmag Inf -Inf -> Infinity
dqmxg091 maxmag Inf -1000 -> Infinity
dqmxg092 maxmag Inf -1 -> Infinity
dqmxg093 maxmag Inf -0 -> Infinity
dqmxg094 maxmag Inf 0 -> Infinity
dqmxg095 maxmag Inf 1 -> Infinity
dqmxg096 maxmag Inf 1000 -> Infinity
dqmxg097 maxmag Inf Inf -> Infinity
dqmxg098 maxmag -1000 Inf -> Infinity
dqmxg099 maxmag -Inf Inf -> Infinity
dqmxg100 maxmag -1 Inf -> Infinity
dqmxg101 maxmag -0 Inf -> Infinity
dqmxg102 maxmag 0 Inf -> Infinity
dqmxg103 maxmag 1 Inf -> Infinity
dqmxg104 maxmag 1000 Inf -> Infinity
dqmxg105 maxmag Inf Inf -> Infinity
dqmxg120 maxmag -Inf -Inf -> -Infinity
dqmxg121 maxmag -Inf -1000 -> -Infinity
dqmxg122 maxmag -Inf -1 -> -Infinity
dqmxg123 maxmag -Inf -0 -> -Infinity
dqmxg124 maxmag -Inf 0 -> -Infinity
dqmxg125 maxmag -Inf 1 -> -Infinity
dqmxg126 maxmag -Inf 1000 -> -Infinity
dqmxg127 maxmag -Inf Inf -> Infinity
dqmxg128 maxmag -Inf -Inf -> -Infinity
dqmxg129 maxmag -1000 -Inf -> -Infinity
dqmxg130 maxmag -1 -Inf -> -Infinity
dqmxg131 maxmag -0 -Inf -> -Infinity
dqmxg132 maxmag 0 -Inf -> -Infinity
dqmxg133 maxmag 1 -Inf -> -Infinity
dqmxg134 maxmag 1000 -Inf -> -Infinity
dqmxg135 maxmag Inf -Inf -> Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
dqmxg141 maxmag NaN -Inf -> -Infinity
dqmxg142 maxmag NaN -1000 -> -1000
dqmxg143 maxmag NaN -1 -> -1
dqmxg144 maxmag NaN -0 -> -0
dqmxg145 maxmag NaN 0 -> 0
dqmxg146 maxmag NaN 1 -> 1
dqmxg147 maxmag NaN 1000 -> 1000
dqmxg148 maxmag NaN Inf -> Infinity
dqmxg149 maxmag NaN NaN -> NaN
dqmxg150 maxmag -Inf NaN -> -Infinity
dqmxg151 maxmag -1000 NaN -> -1000
dqmxg152 maxmag -1 NaN -> -1
dqmxg153 maxmag -0 NaN -> -0
dqmxg154 maxmag 0 NaN -> 0
dqmxg155 maxmag 1 NaN -> 1
dqmxg156 maxmag 1000 NaN -> 1000
dqmxg157 maxmag Inf NaN -> Infinity
dqmxg161 maxmag sNaN -Inf -> NaN Invalid_operation
dqmxg162 maxmag sNaN -1000 -> NaN Invalid_operation
dqmxg163 maxmag sNaN -1 -> NaN Invalid_operation
dqmxg164 maxmag sNaN -0 -> NaN Invalid_operation
dqmxg165 maxmag sNaN 0 -> NaN Invalid_operation
dqmxg166 maxmag sNaN 1 -> NaN Invalid_operation
dqmxg167 maxmag sNaN 1000 -> NaN Invalid_operation
dqmxg168 maxmag sNaN NaN -> NaN Invalid_operation
dqmxg169 maxmag sNaN sNaN -> NaN Invalid_operation
dqmxg170 maxmag NaN sNaN -> NaN Invalid_operation
dqmxg171 maxmag -Inf sNaN -> NaN Invalid_operation
dqmxg172 maxmag -1000 sNaN -> NaN Invalid_operation
dqmxg173 maxmag -1 sNaN -> NaN Invalid_operation
dqmxg174 maxmag -0 sNaN -> NaN Invalid_operation
dqmxg175 maxmag 0 sNaN -> NaN Invalid_operation
dqmxg176 maxmag 1 sNaN -> NaN Invalid_operation
dqmxg177 maxmag 1000 sNaN -> NaN Invalid_operation
dqmxg178 maxmag Inf sNaN -> NaN Invalid_operation
dqmxg179 maxmag NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqmxg181 maxmag NaN9 -Inf -> -Infinity
dqmxg182 maxmag NaN8 9 -> 9
dqmxg183 maxmag -NaN7 Inf -> Infinity
dqmxg184 maxmag -NaN1 NaN11 -> -NaN1
dqmxg185 maxmag NaN2 NaN12 -> NaN2
dqmxg186 maxmag -NaN13 -NaN7 -> -NaN13
dqmxg187 maxmag NaN14 -NaN5 -> NaN14
dqmxg188 maxmag -Inf NaN4 -> -Infinity
dqmxg189 maxmag -9 -NaN3 -> -9
dqmxg190 maxmag Inf NaN2 -> Infinity
dqmxg191 maxmag sNaN99 -Inf -> NaN99 Invalid_operation
dqmxg192 maxmag sNaN98 -1 -> NaN98 Invalid_operation
dqmxg193 maxmag -sNaN97 NaN -> -NaN97 Invalid_operation
dqmxg194 maxmag sNaN96 sNaN94 -> NaN96 Invalid_operation
dqmxg195 maxmag NaN95 sNaN93 -> NaN93 Invalid_operation
dqmxg196 maxmag -Inf sNaN92 -> NaN92 Invalid_operation
dqmxg197 maxmag 0 sNaN91 -> NaN91 Invalid_operation
dqmxg198 maxmag Inf -sNaN90 -> -NaN90 Invalid_operation
dqmxg199 maxmag NaN sNaN89 -> NaN89 Invalid_operation
-- old rounding checks
dqmxg221 maxmag 12345678000 1 -> 12345678000
dqmxg222 maxmag 1 12345678000 -> 12345678000
dqmxg223 maxmag 1234567800 1 -> 1234567800
dqmxg224 maxmag 1 1234567800 -> 1234567800
dqmxg225 maxmag 1234567890 1 -> 1234567890
dqmxg226 maxmag 1 1234567890 -> 1234567890
dqmxg227 maxmag 1234567891 1 -> 1234567891
dqmxg228 maxmag 1 1234567891 -> 1234567891
dqmxg229 maxmag 12345678901 1 -> 12345678901
dqmxg230 maxmag 1 12345678901 -> 12345678901
dqmxg231 maxmag 1234567896 1 -> 1234567896
dqmxg232 maxmag 1 1234567896 -> 1234567896
dqmxg233 maxmag -1234567891 1 -> -1234567891
dqmxg234 maxmag 1 -1234567891 -> -1234567891
dqmxg235 maxmag -12345678901 1 -> -12345678901
dqmxg236 maxmag 1 -12345678901 -> -12345678901
dqmxg237 maxmag -1234567896 1 -> -1234567896
dqmxg238 maxmag 1 -1234567896 -> -1234567896
-- from examples
dqmxg280 maxmag '3' '2' -> '3'
dqmxg281 maxmag '-10' '3' -> '-10'
dqmxg282 maxmag '1.0' '1' -> '1'
dqmxg283 maxmag '1' '1.0' -> '1'
dqmxg284 maxmag '7' 'NaN' -> '7'
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
dqmxg401 maxmag Inf 1.1 -> Infinity
dqmxg402 maxmag 1.1 1 -> 1.1
dqmxg403 maxmag 1 1.0 -> 1
dqmxg404 maxmag 1.0 0.1 -> 1.0
dqmxg405 maxmag 0.1 0.10 -> 0.1
dqmxg406 maxmag 0.10 0.100 -> 0.10
dqmxg407 maxmag 0.10 0 -> 0.10
dqmxg408 maxmag 0 0.0 -> 0
dqmxg409 maxmag 0.0 -0 -> 0.0
dqmxg410 maxmag 0.0 -0.0 -> 0.0
dqmxg411 maxmag 0.00 -0.0 -> 0.00
dqmxg412 maxmag 0.0 -0.00 -> 0.0
dqmxg413 maxmag 0 -0.0 -> 0
dqmxg414 maxmag 0 -0 -> 0
dqmxg415 maxmag -0.0 -0 -> -0.0
dqmxg416 maxmag -0 -0.100 -> -0.100
dqmxg417 maxmag -0.100 -0.10 -> -0.100
dqmxg418 maxmag -0.10 -0.1 -> -0.10
dqmxg419 maxmag -0.1 -1.0 -> -1.0
dqmxg420 maxmag -1.0 -1 -> -1.0
dqmxg421 maxmag -1 -1.1 -> -1.1
dqmxg423 maxmag -1.1 -Inf -> -Infinity
-- same with operands reversed
dqmxg431 maxmag 1.1 Inf -> Infinity
dqmxg432 maxmag 1 1.1 -> 1.1
dqmxg433 maxmag 1.0 1 -> 1
dqmxg434 maxmag 0.1 1.0 -> 1.0
dqmxg435 maxmag 0.10 0.1 -> 0.1
dqmxg436 maxmag 0.100 0.10 -> 0.10
dqmxg437 maxmag 0 0.10 -> 0.10
dqmxg438 maxmag 0.0 0 -> 0
dqmxg439 maxmag -0 0.0 -> 0.0
dqmxg440 maxmag -0.0 0.0 -> 0.0
dqmxg441 maxmag -0.0 0.00 -> 0.00
dqmxg442 maxmag -0.00 0.0 -> 0.0
dqmxg443 maxmag -0.0 0 -> 0
dqmxg444 maxmag -0 0 -> 0
dqmxg445 maxmag -0 -0.0 -> -0.0
dqmxg446 maxmag -0.100 -0 -> -0.100
dqmxg447 maxmag -0.10 -0.100 -> -0.100
dqmxg448 maxmag -0.1 -0.10 -> -0.10
dqmxg449 maxmag -1.0 -0.1 -> -1.0
dqmxg450 maxmag -1 -1.0 -> -1.0
dqmxg451 maxmag -1.1 -1 -> -1.1
dqmxg453 maxmag -Inf -1.1 -> -Infinity
-- largies
dqmxg460 maxmag 1000 1E+3 -> 1E+3
dqmxg461 maxmag 1E+3 1000 -> 1E+3
dqmxg462 maxmag 1000 -1E+3 -> 1000
dqmxg463 maxmag 1E+3 -1000 -> 1E+3
dqmxg464 maxmag -1000 1E+3 -> 1E+3
dqmxg465 maxmag -1E+3 1000 -> 1000
dqmxg466 maxmag -1000 -1E+3 -> -1000
dqmxg467 maxmag -1E+3 -1000 -> -1000
-- subnormals
dqmxg510 maxmag 1.00E-6143 0 -> 1.00E-6143
dqmxg511 maxmag 0.1E-6143 0 -> 1E-6144 Subnormal
dqmxg512 maxmag 0.10E-6143 0 -> 1.0E-6144 Subnormal
dqmxg513 maxmag 0.100E-6143 0 -> 1.00E-6144 Subnormal
dqmxg514 maxmag 0.01E-6143 0 -> 1E-6145 Subnormal
dqmxg515 maxmag 0.999E-6143 0 -> 9.99E-6144 Subnormal
dqmxg516 maxmag 0.099E-6143 0 -> 9.9E-6145 Subnormal
dqmxg517 maxmag 0.009E-6143 0 -> 9E-6146 Subnormal
dqmxg518 maxmag 0.001E-6143 0 -> 1E-6146 Subnormal
dqmxg519 maxmag 0.0009E-6143 0 -> 9E-6147 Subnormal
dqmxg520 maxmag 0.0001E-6143 0 -> 1E-6147 Subnormal
dqmxg530 maxmag -1.00E-6143 0 -> -1.00E-6143
dqmxg531 maxmag -0.1E-6143 0 -> -1E-6144 Subnormal
dqmxg532 maxmag -0.10E-6143 0 -> -1.0E-6144 Subnormal
dqmxg533 maxmag -0.100E-6143 0 -> -1.00E-6144 Subnormal
dqmxg534 maxmag -0.01E-6143 0 -> -1E-6145 Subnormal
dqmxg535 maxmag -0.999E-6143 0 -> -9.99E-6144 Subnormal
dqmxg536 maxmag -0.099E-6143 0 -> -9.9E-6145 Subnormal
dqmxg537 maxmag -0.009E-6143 0 -> -9E-6146 Subnormal
dqmxg538 maxmag -0.001E-6143 0 -> -1E-6146 Subnormal
dqmxg539 maxmag -0.0009E-6143 0 -> -9E-6147 Subnormal
dqmxg540 maxmag -0.0001E-6143 0 -> -1E-6147 Subnormal
-- Null tests
dqmxg900 maxmag 10 # -> NaN Invalid_operation
dqmxg901 maxmag # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,309 @@
------------------------------------------------------------------------
-- dqMin.decTest -- decQuad minnum --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqmin001 min -2 -2 -> -2
dqmin002 min -2 -1 -> -2
dqmin003 min -2 0 -> -2
dqmin004 min -2 1 -> -2
dqmin005 min -2 2 -> -2
dqmin006 min -1 -2 -> -2
dqmin007 min -1 -1 -> -1
dqmin008 min -1 0 -> -1
dqmin009 min -1 1 -> -1
dqmin010 min -1 2 -> -1
dqmin011 min 0 -2 -> -2
dqmin012 min 0 -1 -> -1
dqmin013 min 0 0 -> 0
dqmin014 min 0 1 -> 0
dqmin015 min 0 2 -> 0
dqmin016 min 1 -2 -> -2
dqmin017 min 1 -1 -> -1
dqmin018 min 1 0 -> 0
dqmin019 min 1 1 -> 1
dqmin020 min 1 2 -> 1
dqmin021 min 2 -2 -> -2
dqmin022 min 2 -1 -> -1
dqmin023 min 2 0 -> 0
dqmin025 min 2 1 -> 1
dqmin026 min 2 2 -> 2
-- extended zeros
dqmin030 min 0 0 -> 0
dqmin031 min 0 -0 -> -0
dqmin032 min 0 -0.0 -> -0.0
dqmin033 min 0 0.0 -> 0.0
dqmin034 min -0 0 -> -0
dqmin035 min -0 -0 -> -0
dqmin036 min -0 -0.0 -> -0
dqmin037 min -0 0.0 -> -0
dqmin038 min 0.0 0 -> 0.0
dqmin039 min 0.0 -0 -> -0
dqmin040 min 0.0 -0.0 -> -0.0
dqmin041 min 0.0 0.0 -> 0.0
dqmin042 min -0.0 0 -> -0.0
dqmin043 min -0.0 -0 -> -0
dqmin044 min -0.0 -0.0 -> -0.0
dqmin045 min -0.0 0.0 -> -0.0
dqmin046 min 0E1 -0E1 -> -0E+1
dqmin047 min -0E1 0E2 -> -0E+1
dqmin048 min 0E2 0E1 -> 0E+1
dqmin049 min 0E1 0E2 -> 0E+1
dqmin050 min -0E3 -0E2 -> -0E+3
dqmin051 min -0E2 -0E3 -> -0E+3
-- Specials
dqmin090 min Inf -Inf -> -Infinity
dqmin091 min Inf -1000 -> -1000
dqmin092 min Inf -1 -> -1
dqmin093 min Inf -0 -> -0
dqmin094 min Inf 0 -> 0
dqmin095 min Inf 1 -> 1
dqmin096 min Inf 1000 -> 1000
dqmin097 min Inf Inf -> Infinity
dqmin098 min -1000 Inf -> -1000
dqmin099 min -Inf Inf -> -Infinity
dqmin100 min -1 Inf -> -1
dqmin101 min -0 Inf -> -0
dqmin102 min 0 Inf -> 0
dqmin103 min 1 Inf -> 1
dqmin104 min 1000 Inf -> 1000
dqmin105 min Inf Inf -> Infinity
dqmin120 min -Inf -Inf -> -Infinity
dqmin121 min -Inf -1000 -> -Infinity
dqmin122 min -Inf -1 -> -Infinity
dqmin123 min -Inf -0 -> -Infinity
dqmin124 min -Inf 0 -> -Infinity
dqmin125 min -Inf 1 -> -Infinity
dqmin126 min -Inf 1000 -> -Infinity
dqmin127 min -Inf Inf -> -Infinity
dqmin128 min -Inf -Inf -> -Infinity
dqmin129 min -1000 -Inf -> -Infinity
dqmin130 min -1 -Inf -> -Infinity
dqmin131 min -0 -Inf -> -Infinity
dqmin132 min 0 -Inf -> -Infinity
dqmin133 min 1 -Inf -> -Infinity
dqmin134 min 1000 -Inf -> -Infinity
dqmin135 min Inf -Inf -> -Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
dqmin141 min NaN -Inf -> -Infinity
dqmin142 min NaN -1000 -> -1000
dqmin143 min NaN -1 -> -1
dqmin144 min NaN -0 -> -0
dqmin145 min NaN 0 -> 0
dqmin146 min NaN 1 -> 1
dqmin147 min NaN 1000 -> 1000
dqmin148 min NaN Inf -> Infinity
dqmin149 min NaN NaN -> NaN
dqmin150 min -Inf NaN -> -Infinity
dqmin151 min -1000 NaN -> -1000
dqmin152 min -1 -NaN -> -1
dqmin153 min -0 NaN -> -0
dqmin154 min 0 -NaN -> 0
dqmin155 min 1 NaN -> 1
dqmin156 min 1000 NaN -> 1000
dqmin157 min Inf NaN -> Infinity
dqmin161 min sNaN -Inf -> NaN Invalid_operation
dqmin162 min sNaN -1000 -> NaN Invalid_operation
dqmin163 min sNaN -1 -> NaN Invalid_operation
dqmin164 min sNaN -0 -> NaN Invalid_operation
dqmin165 min -sNaN 0 -> -NaN Invalid_operation
dqmin166 min -sNaN 1 -> -NaN Invalid_operation
dqmin167 min sNaN 1000 -> NaN Invalid_operation
dqmin168 min sNaN NaN -> NaN Invalid_operation
dqmin169 min sNaN sNaN -> NaN Invalid_operation
dqmin170 min NaN sNaN -> NaN Invalid_operation
dqmin171 min -Inf sNaN -> NaN Invalid_operation
dqmin172 min -1000 sNaN -> NaN Invalid_operation
dqmin173 min -1 sNaN -> NaN Invalid_operation
dqmin174 min -0 sNaN -> NaN Invalid_operation
dqmin175 min 0 sNaN -> NaN Invalid_operation
dqmin176 min 1 sNaN -> NaN Invalid_operation
dqmin177 min 1000 sNaN -> NaN Invalid_operation
dqmin178 min Inf sNaN -> NaN Invalid_operation
dqmin179 min NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqmin181 min NaN9 -Inf -> -Infinity
dqmin182 min -NaN8 9990 -> 9990
dqmin183 min NaN71 Inf -> Infinity
dqmin184 min NaN1 NaN54 -> NaN1
dqmin185 min NaN22 -NaN53 -> NaN22
dqmin186 min -NaN3 NaN6 -> -NaN3
dqmin187 min -NaN44 NaN7 -> -NaN44
dqmin188 min -Inf NaN41 -> -Infinity
dqmin189 min -9999 -NaN33 -> -9999
dqmin190 min Inf NaN2 -> Infinity
dqmin191 min sNaN99 -Inf -> NaN99 Invalid_operation
dqmin192 min sNaN98 -11 -> NaN98 Invalid_operation
dqmin193 min -sNaN97 NaN8 -> -NaN97 Invalid_operation
dqmin194 min sNaN69 sNaN94 -> NaN69 Invalid_operation
dqmin195 min NaN95 sNaN93 -> NaN93 Invalid_operation
dqmin196 min -Inf sNaN92 -> NaN92 Invalid_operation
dqmin197 min 088 sNaN91 -> NaN91 Invalid_operation
dqmin198 min Inf -sNaN90 -> -NaN90 Invalid_operation
dqmin199 min NaN sNaN86 -> NaN86 Invalid_operation
-- old rounding checks
dqmin221 min -12345678000 1 -> -12345678000
dqmin222 min 1 -12345678000 -> -12345678000
dqmin223 min -1234567800 1 -> -1234567800
dqmin224 min 1 -1234567800 -> -1234567800
dqmin225 min -1234567890 1 -> -1234567890
dqmin226 min 1 -1234567890 -> -1234567890
dqmin227 min -1234567891 1 -> -1234567891
dqmin228 min 1 -1234567891 -> -1234567891
dqmin229 min -12345678901 1 -> -12345678901
dqmin230 min 1 -12345678901 -> -12345678901
dqmin231 min -1234567896 1 -> -1234567896
dqmin232 min 1 -1234567896 -> -1234567896
dqmin233 min 1234567891 1 -> 1
dqmin234 min 1 1234567891 -> 1
dqmin235 min 12345678901 1 -> 1
dqmin236 min 1 12345678901 -> 1
dqmin237 min 1234567896 1 -> 1
dqmin238 min 1 1234567896 -> 1
-- from examples
dqmin280 min '3' '2' -> '2'
dqmin281 min '-10' '3' -> '-10'
dqmin282 min '1.0' '1' -> '1.0'
dqmin283 min '1' '1.0' -> '1.0'
dqmin284 min '7' 'NaN' -> '7'
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
dqmin401 min Inf 1.1 -> 1.1
dqmin402 min 1.1 1 -> 1
dqmin403 min 1 1.0 -> 1.0
dqmin404 min 1.0 0.1 -> 0.1
dqmin405 min 0.1 0.10 -> 0.10
dqmin406 min 0.10 0.100 -> 0.100
dqmin407 min 0.10 0 -> 0
dqmin408 min 0 0.0 -> 0.0
dqmin409 min 0.0 -0 -> -0
dqmin410 min 0.0 -0.0 -> -0.0
dqmin411 min 0.00 -0.0 -> -0.0
dqmin412 min 0.0 -0.00 -> -0.00
dqmin413 min 0 -0.0 -> -0.0
dqmin414 min 0 -0 -> -0
dqmin415 min -0.0 -0 -> -0
dqmin416 min -0 -0.100 -> -0.100
dqmin417 min -0.100 -0.10 -> -0.10
dqmin418 min -0.10 -0.1 -> -0.1
dqmin419 min -0.1 -1.0 -> -1.0
dqmin420 min -1.0 -1 -> -1
dqmin421 min -1 -1.1 -> -1.1
dqmin423 min -1.1 -Inf -> -Infinity
-- same with operands reversed
dqmin431 min 1.1 Inf -> 1.1
dqmin432 min 1 1.1 -> 1
dqmin433 min 1.0 1 -> 1.0
dqmin434 min 0.1 1.0 -> 0.1
dqmin435 min 0.10 0.1 -> 0.10
dqmin436 min 0.100 0.10 -> 0.100
dqmin437 min 0 0.10 -> 0
dqmin438 min 0.0 0 -> 0.0
dqmin439 min -0 0.0 -> -0
dqmin440 min -0.0 0.0 -> -0.0
dqmin441 min -0.0 0.00 -> -0.0
dqmin442 min -0.00 0.0 -> -0.00
dqmin443 min -0.0 0 -> -0.0
dqmin444 min -0 0 -> -0
dqmin445 min -0 -0.0 -> -0
dqmin446 min -0.100 -0 -> -0.100
dqmin447 min -0.10 -0.100 -> -0.10
dqmin448 min -0.1 -0.10 -> -0.1
dqmin449 min -1.0 -0.1 -> -1.0
dqmin450 min -1 -1.0 -> -1
dqmin451 min -1.1 -1 -> -1.1
dqmin453 min -Inf -1.1 -> -Infinity
-- largies
dqmin460 min 1000 1E+3 -> 1000
dqmin461 min 1E+3 1000 -> 1000
dqmin462 min 1000 -1E+3 -> -1E+3
dqmin463 min 1E+3 -384 -> -384
dqmin464 min -384 1E+3 -> -384
dqmin465 min -1E+3 1000 -> -1E+3
dqmin466 min -384 -1E+3 -> -1E+3
dqmin467 min -1E+3 -384 -> -1E+3
-- misalignment traps for little-endian
dqmin471 min 1.0 0.1 -> 0.1
dqmin472 min 0.1 1.0 -> 0.1
dqmin473 min 10.0 0.1 -> 0.1
dqmin474 min 0.1 10.0 -> 0.1
dqmin475 min 100 1.0 -> 1.0
dqmin476 min 1.0 100 -> 1.0
dqmin477 min 1000 10.0 -> 10.0
dqmin478 min 10.0 1000 -> 10.0
dqmin479 min 10000 100.0 -> 100.0
dqmin480 min 100.0 10000 -> 100.0
dqmin481 min 100000 1000.0 -> 1000.0
dqmin482 min 1000.0 100000 -> 1000.0
dqmin483 min 1000000 10000.0 -> 10000.0
dqmin484 min 10000.0 1000000 -> 10000.0
-- subnormals
dqmin510 min 1.00E-6143 0 -> 0
dqmin511 min 0.1E-6143 0 -> 0
dqmin512 min 0.10E-6143 0 -> 0
dqmin513 min 0.100E-6143 0 -> 0
dqmin514 min 0.01E-6143 0 -> 0
dqmin515 min 0.999E-6143 0 -> 0
dqmin516 min 0.099E-6143 0 -> 0
dqmin517 min 0.009E-6143 0 -> 0
dqmin518 min 0.001E-6143 0 -> 0
dqmin519 min 0.0009E-6143 0 -> 0
dqmin520 min 0.0001E-6143 0 -> 0
dqmin530 min -1.00E-6143 0 -> -1.00E-6143
dqmin531 min -0.1E-6143 0 -> -1E-6144 Subnormal
dqmin532 min -0.10E-6143 0 -> -1.0E-6144 Subnormal
dqmin533 min -0.100E-6143 0 -> -1.00E-6144 Subnormal
dqmin534 min -0.01E-6143 0 -> -1E-6145 Subnormal
dqmin535 min -0.999E-6143 0 -> -9.99E-6144 Subnormal
dqmin536 min -0.099E-6143 0 -> -9.9E-6145 Subnormal
dqmin537 min -0.009E-6143 0 -> -9E-6146 Subnormal
dqmin538 min -0.001E-6143 0 -> -1E-6146 Subnormal
dqmin539 min -0.0009E-6143 0 -> -9E-6147 Subnormal
dqmin540 min -0.0001E-6143 0 -> -1E-6147 Subnormal
-- Null tests
dqmin900 min 10 # -> NaN Invalid_operation
dqmin901 min # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,293 @@
------------------------------------------------------------------------
-- dqMinMag.decTest -- decQuad minnummag --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqmng001 minmag -2 -2 -> -2
dqmng002 minmag -2 -1 -> -1
dqmng003 minmag -2 0 -> 0
dqmng004 minmag -2 1 -> 1
dqmng005 minmag -2 2 -> -2
dqmng006 minmag -1 -2 -> -1
dqmng007 minmag -1 -1 -> -1
dqmng008 minmag -1 0 -> 0
dqmng009 minmag -1 1 -> -1
dqmng010 minmag -1 2 -> -1
dqmng011 minmag 0 -2 -> 0
dqmng012 minmag 0 -1 -> 0
dqmng013 minmag 0 0 -> 0
dqmng014 minmag 0 1 -> 0
dqmng015 minmag 0 2 -> 0
dqmng016 minmag 1 -2 -> 1
dqmng017 minmag 1 -1 -> -1
dqmng018 minmag 1 0 -> 0
dqmng019 minmag 1 1 -> 1
dqmng020 minmag 1 2 -> 1
dqmng021 minmag 2 -2 -> -2
dqmng022 minmag 2 -1 -> -1
dqmng023 minmag 2 0 -> 0
dqmng025 minmag 2 1 -> 1
dqmng026 minmag 2 2 -> 2
-- extended zeros
dqmng030 minmag 0 0 -> 0
dqmng031 minmag 0 -0 -> -0
dqmng032 minmag 0 -0.0 -> -0.0
dqmng033 minmag 0 0.0 -> 0.0
dqmng034 minmag -0 0 -> -0
dqmng035 minmag -0 -0 -> -0
dqmng036 minmag -0 -0.0 -> -0
dqmng037 minmag -0 0.0 -> -0
dqmng038 minmag 0.0 0 -> 0.0
dqmng039 minmag 0.0 -0 -> -0
dqmng040 minmag 0.0 -0.0 -> -0.0
dqmng041 minmag 0.0 0.0 -> 0.0
dqmng042 minmag -0.0 0 -> -0.0
dqmng043 minmag -0.0 -0 -> -0
dqmng044 minmag -0.0 -0.0 -> -0.0
dqmng045 minmag -0.0 0.0 -> -0.0
dqmng046 minmag 0E1 -0E1 -> -0E+1
dqmng047 minmag -0E1 0E2 -> -0E+1
dqmng048 minmag 0E2 0E1 -> 0E+1
dqmng049 minmag 0E1 0E2 -> 0E+1
dqmng050 minmag -0E3 -0E2 -> -0E+3
dqmng051 minmag -0E2 -0E3 -> -0E+3
-- Specials
dqmng090 minmag Inf -Inf -> -Infinity
dqmng091 minmag Inf -1000 -> -1000
dqmng092 minmag Inf -1 -> -1
dqmng093 minmag Inf -0 -> -0
dqmng094 minmag Inf 0 -> 0
dqmng095 minmag Inf 1 -> 1
dqmng096 minmag Inf 1000 -> 1000
dqmng097 minmag Inf Inf -> Infinity
dqmng098 minmag -1000 Inf -> -1000
dqmng099 minmag -Inf Inf -> -Infinity
dqmng100 minmag -1 Inf -> -1
dqmng101 minmag -0 Inf -> -0
dqmng102 minmag 0 Inf -> 0
dqmng103 minmag 1 Inf -> 1
dqmng104 minmag 1000 Inf -> 1000
dqmng105 minmag Inf Inf -> Infinity
dqmng120 minmag -Inf -Inf -> -Infinity
dqmng121 minmag -Inf -1000 -> -1000
dqmng122 minmag -Inf -1 -> -1
dqmng123 minmag -Inf -0 -> -0
dqmng124 minmag -Inf 0 -> 0
dqmng125 minmag -Inf 1 -> 1
dqmng126 minmag -Inf 1000 -> 1000
dqmng127 minmag -Inf Inf -> -Infinity
dqmng128 minmag -Inf -Inf -> -Infinity
dqmng129 minmag -1000 -Inf -> -1000
dqmng130 minmag -1 -Inf -> -1
dqmng131 minmag -0 -Inf -> -0
dqmng132 minmag 0 -Inf -> 0
dqmng133 minmag 1 -Inf -> 1
dqmng134 minmag 1000 -Inf -> 1000
dqmng135 minmag Inf -Inf -> -Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
dqmng141 minmag NaN -Inf -> -Infinity
dqmng142 minmag NaN -1000 -> -1000
dqmng143 minmag NaN -1 -> -1
dqmng144 minmag NaN -0 -> -0
dqmng145 minmag NaN 0 -> 0
dqmng146 minmag NaN 1 -> 1
dqmng147 minmag NaN 1000 -> 1000
dqmng148 minmag NaN Inf -> Infinity
dqmng149 minmag NaN NaN -> NaN
dqmng150 minmag -Inf NaN -> -Infinity
dqmng151 minmag -1000 NaN -> -1000
dqmng152 minmag -1 -NaN -> -1
dqmng153 minmag -0 NaN -> -0
dqmng154 minmag 0 -NaN -> 0
dqmng155 minmag 1 NaN -> 1
dqmng156 minmag 1000 NaN -> 1000
dqmng157 minmag Inf NaN -> Infinity
dqmng161 minmag sNaN -Inf -> NaN Invalid_operation
dqmng162 minmag sNaN -1000 -> NaN Invalid_operation
dqmng163 minmag sNaN -1 -> NaN Invalid_operation
dqmng164 minmag sNaN -0 -> NaN Invalid_operation
dqmng165 minmag -sNaN 0 -> -NaN Invalid_operation
dqmng166 minmag -sNaN 1 -> -NaN Invalid_operation
dqmng167 minmag sNaN 1000 -> NaN Invalid_operation
dqmng168 minmag sNaN NaN -> NaN Invalid_operation
dqmng169 minmag sNaN sNaN -> NaN Invalid_operation
dqmng170 minmag NaN sNaN -> NaN Invalid_operation
dqmng171 minmag -Inf sNaN -> NaN Invalid_operation
dqmng172 minmag -1000 sNaN -> NaN Invalid_operation
dqmng173 minmag -1 sNaN -> NaN Invalid_operation
dqmng174 minmag -0 sNaN -> NaN Invalid_operation
dqmng175 minmag 0 sNaN -> NaN Invalid_operation
dqmng176 minmag 1 sNaN -> NaN Invalid_operation
dqmng177 minmag 1000 sNaN -> NaN Invalid_operation
dqmng178 minmag Inf sNaN -> NaN Invalid_operation
dqmng179 minmag NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqmng181 minmag NaN9 -Inf -> -Infinity
dqmng182 minmag -NaN8 9990 -> 9990
dqmng183 minmag NaN71 Inf -> Infinity
dqmng184 minmag NaN1 NaN54 -> NaN1
dqmng185 minmag NaN22 -NaN53 -> NaN22
dqmng186 minmag -NaN3 NaN6 -> -NaN3
dqmng187 minmag -NaN44 NaN7 -> -NaN44
dqmng188 minmag -Inf NaN41 -> -Infinity
dqmng189 minmag -9999 -NaN33 -> -9999
dqmng190 minmag Inf NaN2 -> Infinity
dqmng191 minmag sNaN99 -Inf -> NaN99 Invalid_operation
dqmng192 minmag sNaN98 -11 -> NaN98 Invalid_operation
dqmng193 minmag -sNaN97 NaN8 -> -NaN97 Invalid_operation
dqmng194 minmag sNaN69 sNaN94 -> NaN69 Invalid_operation
dqmng195 minmag NaN95 sNaN93 -> NaN93 Invalid_operation
dqmng196 minmag -Inf sNaN92 -> NaN92 Invalid_operation
dqmng197 minmag 088 sNaN91 -> NaN91 Invalid_operation
dqmng198 minmag Inf -sNaN90 -> -NaN90 Invalid_operation
dqmng199 minmag NaN sNaN86 -> NaN86 Invalid_operation
-- old rounding checks
dqmng221 minmag -12345678000 1 -> 1
dqmng222 minmag 1 -12345678000 -> 1
dqmng223 minmag -1234567800 1 -> 1
dqmng224 minmag 1 -1234567800 -> 1
dqmng225 minmag -1234567890 1 -> 1
dqmng226 minmag 1 -1234567890 -> 1
dqmng227 minmag -1234567891 1 -> 1
dqmng228 minmag 1 -1234567891 -> 1
dqmng229 minmag -12345678901 1 -> 1
dqmng230 minmag 1 -12345678901 -> 1
dqmng231 minmag -1234567896 1 -> 1
dqmng232 minmag 1 -1234567896 -> 1
dqmng233 minmag 1234567891 1 -> 1
dqmng234 minmag 1 1234567891 -> 1
dqmng235 minmag 12345678901 1 -> 1
dqmng236 minmag 1 12345678901 -> 1
dqmng237 minmag 1234567896 1 -> 1
dqmng238 minmag 1 1234567896 -> 1
-- from examples
dqmng280 minmag '3' '2' -> '2'
dqmng281 minmag '-10' '3' -> '3'
dqmng282 minmag '1.0' '1' -> '1.0'
dqmng283 minmag '1' '1.0' -> '1.0'
dqmng284 minmag '7' 'NaN' -> '7'
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
dqmng401 minmag Inf 1.1 -> 1.1
dqmng402 minmag 1.1 1 -> 1
dqmng403 minmag 1 1.0 -> 1.0
dqmng404 minmag 1.0 0.1 -> 0.1
dqmng405 minmag 0.1 0.10 -> 0.10
dqmng406 minmag 0.10 0.100 -> 0.100
dqmng407 minmag 0.10 0 -> 0
dqmng408 minmag 0 0.0 -> 0.0
dqmng409 minmag 0.0 -0 -> -0
dqmng410 minmag 0.0 -0.0 -> -0.0
dqmng411 minmag 0.00 -0.0 -> -0.0
dqmng412 minmag 0.0 -0.00 -> -0.00
dqmng413 minmag 0 -0.0 -> -0.0
dqmng414 minmag 0 -0 -> -0
dqmng415 minmag -0.0 -0 -> -0
dqmng416 minmag -0 -0.100 -> -0
dqmng417 minmag -0.100 -0.10 -> -0.10
dqmng418 minmag -0.10 -0.1 -> -0.1
dqmng419 minmag -0.1 -1.0 -> -0.1
dqmng420 minmag -1.0 -1 -> -1
dqmng421 minmag -1 -1.1 -> -1
dqmng423 minmag -1.1 -Inf -> -1.1
-- same with operands reversed
dqmng431 minmag 1.1 Inf -> 1.1
dqmng432 minmag 1 1.1 -> 1
dqmng433 minmag 1.0 1 -> 1.0
dqmng434 minmag 0.1 1.0 -> 0.1
dqmng435 minmag 0.10 0.1 -> 0.10
dqmng436 minmag 0.100 0.10 -> 0.100
dqmng437 minmag 0 0.10 -> 0
dqmng438 minmag 0.0 0 -> 0.0
dqmng439 minmag -0 0.0 -> -0
dqmng440 minmag -0.0 0.0 -> -0.0
dqmng441 minmag -0.0 0.00 -> -0.0
dqmng442 minmag -0.00 0.0 -> -0.00
dqmng443 minmag -0.0 0 -> -0.0
dqmng444 minmag -0 0 -> -0
dqmng445 minmag -0 -0.0 -> -0
dqmng446 minmag -0.100 -0 -> -0
dqmng447 minmag -0.10 -0.100 -> -0.10
dqmng448 minmag -0.1 -0.10 -> -0.1
dqmng449 minmag -1.0 -0.1 -> -0.1
dqmng450 minmag -1 -1.0 -> -1
dqmng451 minmag -1.1 -1 -> -1
dqmng453 minmag -Inf -1.1 -> -1.1
-- largies
dqmng460 minmag 1000 1E+3 -> 1000
dqmng461 minmag 1E+3 1000 -> 1000
dqmng462 minmag 1000 -1E+3 -> -1E+3
dqmng463 minmag 1E+3 -384 -> -384
dqmng464 minmag -384 1E+3 -> -384
dqmng465 minmag -1E+3 1000 -> -1E+3
dqmng466 minmag -384 -1E+3 -> -384
dqmng467 minmag -1E+3 -384 -> -384
-- subnormals
dqmng510 minmag 1.00E-6143 0 -> 0
dqmng511 minmag 0.1E-6143 0 -> 0
dqmng512 minmag 0.10E-6143 0 -> 0
dqmng513 minmag 0.100E-6143 0 -> 0
dqmng514 minmag 0.01E-6143 0 -> 0
dqmng515 minmag 0.999E-6143 0 -> 0
dqmng516 minmag 0.099E-6143 0 -> 0
dqmng517 minmag 0.009E-6143 0 -> 0
dqmng518 minmag 0.001E-6143 0 -> 0
dqmng519 minmag 0.0009E-6143 0 -> 0
dqmng520 minmag 0.0001E-6143 0 -> 0
dqmng530 minmag -1.00E-6143 0 -> 0
dqmng531 minmag -0.1E-6143 0 -> 0
dqmng532 minmag -0.10E-6143 0 -> 0
dqmng533 minmag -0.100E-6143 0 -> 0
dqmng534 minmag -0.01E-6143 0 -> 0
dqmng535 minmag -0.999E-6143 0 -> 0
dqmng536 minmag -0.099E-6143 0 -> 0
dqmng537 minmag -0.009E-6143 0 -> 0
dqmng538 minmag -0.001E-6143 0 -> 0
dqmng539 minmag -0.0009E-6143 0 -> 0
dqmng540 minmag -0.0001E-6143 0 -> 0
-- Null tests
dqmng900 minmag 10 # -> NaN Invalid_operation
dqmng901 minmag # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,88 @@
------------------------------------------------------------------------
-- dqMinus.decTest -- decQuad 0-x --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check
dqmns001 minus +7.50 -> -7.50
-- Infinities
dqmns011 minus Infinity -> -Infinity
dqmns012 minus -Infinity -> Infinity
-- NaNs, 0 payload
dqmns021 minus NaN -> NaN
dqmns022 minus -NaN -> -NaN
dqmns023 minus sNaN -> NaN Invalid_operation
dqmns024 minus -sNaN -> -NaN Invalid_operation
-- NaNs, non-0 payload
dqmns031 minus NaN13 -> NaN13
dqmns032 minus -NaN13 -> -NaN13
dqmns033 minus sNaN13 -> NaN13 Invalid_operation
dqmns034 minus -sNaN13 -> -NaN13 Invalid_operation
dqmns035 minus NaN70 -> NaN70
dqmns036 minus -NaN70 -> -NaN70
dqmns037 minus sNaN101 -> NaN101 Invalid_operation
dqmns038 minus -sNaN101 -> -NaN101 Invalid_operation
-- finites
dqmns101 minus 7 -> -7
dqmns102 minus -7 -> 7
dqmns103 minus 75 -> -75
dqmns104 minus -75 -> 75
dqmns105 minus 7.50 -> -7.50
dqmns106 minus -7.50 -> 7.50
dqmns107 minus 7.500 -> -7.500
dqmns108 minus -7.500 -> 7.500
-- zeros
dqmns111 minus 0 -> 0
dqmns112 minus -0 -> 0
dqmns113 minus 0E+4 -> 0E+4
dqmns114 minus -0E+4 -> 0E+4
dqmns115 minus 0.0000 -> 0.0000
dqmns116 minus -0.0000 -> 0.0000
dqmns117 minus 0E-141 -> 0E-141
dqmns118 minus -0E-141 -> 0E-141
-- full coefficients, alternating bits
dqmns121 minus 2682682682682682682682682682682682 -> -2682682682682682682682682682682682
dqmns122 minus -2682682682682682682682682682682682 -> 2682682682682682682682682682682682
dqmns123 minus 1341341341341341341341341341341341 -> -1341341341341341341341341341341341
dqmns124 minus -1341341341341341341341341341341341 -> 1341341341341341341341341341341341
-- Nmax, Nmin, Ntiny
dqmns131 minus 9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144
dqmns132 minus 1E-6143 -> -1E-6143
dqmns133 minus 1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143
dqmns134 minus 1E-6176 -> -1E-6176 Subnormal
dqmns135 minus -1E-6176 -> 1E-6176 Subnormal
dqmns136 minus -1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143
dqmns137 minus -1E-6143 -> 1E-6143
dqmns138 minus -9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144

View file

@ -0,0 +1,589 @@
------------------------------------------------------------------------
-- dqMultiply.decTest -- decQuad multiplication --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- This set of tests are for decQuads only; all arguments are
-- representable in a decQuad
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqmul000 multiply 2 2 -> 4
dqmul001 multiply 2 3 -> 6
dqmul002 multiply 5 1 -> 5
dqmul003 multiply 5 2 -> 10
dqmul004 multiply 1.20 2 -> 2.40
dqmul005 multiply 1.20 0 -> 0.00
dqmul006 multiply 1.20 -2 -> -2.40
dqmul007 multiply -1.20 2 -> -2.40
dqmul008 multiply -1.20 0 -> -0.00
dqmul009 multiply -1.20 -2 -> 2.40
dqmul010 multiply 5.09 7.1 -> 36.139
dqmul011 multiply 2.5 4 -> 10.0
dqmul012 multiply 2.50 4 -> 10.00
dqmul013 multiply 1.23456789 1.0000000000000000000000000000 -> 1.234567890000000000000000000000000 Rounded
dqmul015 multiply 2.50 4 -> 10.00
dqmul016 multiply 9.99999999999999999 9.99999999999999999 -> 99.99999999999999980000000000000000 Inexact Rounded
dqmul017 multiply 9.99999999999999999 -9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded
dqmul018 multiply -9.99999999999999999 9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded
dqmul019 multiply -9.99999999999999999 -9.99999999999999999 -> 99.99999999999999980000000000000000 Inexact Rounded
-- zeros, etc.
dqmul021 multiply 0 0 -> 0
dqmul022 multiply 0 -0 -> -0
dqmul023 multiply -0 0 -> -0
dqmul024 multiply -0 -0 -> 0
dqmul025 multiply -0.0 -0.0 -> 0.00
dqmul026 multiply -0.0 -0.0 -> 0.00
dqmul027 multiply -0.0 -0.0 -> 0.00
dqmul028 multiply -0.0 -0.0 -> 0.00
dqmul030 multiply 5.00 1E-3 -> 0.00500
dqmul031 multiply 00.00 0.000 -> 0.00000
dqmul032 multiply 00.00 0E-3 -> 0.00000 -- rhs is 0
dqmul033 multiply 0E-3 00.00 -> 0.00000 -- lhs is 0
dqmul034 multiply -5.00 1E-3 -> -0.00500
dqmul035 multiply -00.00 0.000 -> -0.00000
dqmul036 multiply -00.00 0E-3 -> -0.00000 -- rhs is 0
dqmul037 multiply -0E-3 00.00 -> -0.00000 -- lhs is 0
dqmul038 multiply 5.00 -1E-3 -> -0.00500
dqmul039 multiply 00.00 -0.000 -> -0.00000
dqmul040 multiply 00.00 -0E-3 -> -0.00000 -- rhs is 0
dqmul041 multiply 0E-3 -00.00 -> -0.00000 -- lhs is 0
dqmul042 multiply -5.00 -1E-3 -> 0.00500
dqmul043 multiply -00.00 -0.000 -> 0.00000
dqmul044 multiply -00.00 -0E-3 -> 0.00000 -- rhs is 0
dqmul045 multiply -0E-3 -00.00 -> 0.00000 -- lhs is 0
-- examples from decarith
dqmul050 multiply 1.20 3 -> 3.60
dqmul051 multiply 7 3 -> 21
dqmul052 multiply 0.9 0.8 -> 0.72
dqmul053 multiply 0.9 -0 -> -0.0
dqmul054 multiply 654321 654321 -> 428135971041
dqmul060 multiply 123.45 1e7 -> 1.2345E+9
dqmul061 multiply 123.45 1e8 -> 1.2345E+10
dqmul062 multiply 123.45 1e+9 -> 1.2345E+11
dqmul063 multiply 123.45 1e10 -> 1.2345E+12
dqmul064 multiply 123.45 1e11 -> 1.2345E+13
dqmul065 multiply 123.45 1e12 -> 1.2345E+14
dqmul066 multiply 123.45 1e13 -> 1.2345E+15
-- test some intermediate lengths
-- 1234567890123456
dqmul080 multiply 0.1 1230123456456789 -> 123012345645678.9
dqmul084 multiply 0.1 1230123456456789 -> 123012345645678.9
dqmul090 multiply 1230123456456789 0.1 -> 123012345645678.9
dqmul094 multiply 1230123456456789 0.1 -> 123012345645678.9
-- test some more edge cases and carries
dqmul101 multiply 9 9 -> 81
dqmul102 multiply 9 90 -> 810
dqmul103 multiply 9 900 -> 8100
dqmul104 multiply 9 9000 -> 81000
dqmul105 multiply 9 90000 -> 810000
dqmul106 multiply 9 900000 -> 8100000
dqmul107 multiply 9 9000000 -> 81000000
dqmul108 multiply 9 90000000 -> 810000000
dqmul109 multiply 9 900000000 -> 8100000000
dqmul110 multiply 9 9000000000 -> 81000000000
dqmul111 multiply 9 90000000000 -> 810000000000
dqmul112 multiply 9 900000000000 -> 8100000000000
dqmul113 multiply 9 9000000000000 -> 81000000000000
dqmul114 multiply 9 90000000000000 -> 810000000000000
dqmul115 multiply 9 900000000000000 -> 8100000000000000
--dqmul116 multiply 9 9000000000000000 -> 81000000000000000
--dqmul117 multiply 9 90000000000000000 -> 810000000000000000
--dqmul118 multiply 9 900000000000000000 -> 8100000000000000000
--dqmul119 multiply 9 9000000000000000000 -> 81000000000000000000
--dqmul120 multiply 9 90000000000000000000 -> 810000000000000000000
--dqmul121 multiply 9 900000000000000000000 -> 8100000000000000000000
--dqmul122 multiply 9 9000000000000000000000 -> 81000000000000000000000
--dqmul123 multiply 9 90000000000000000000000 -> 810000000000000000000000
-- test some more edge cases without carries
dqmul131 multiply 3 3 -> 9
dqmul132 multiply 3 30 -> 90
dqmul133 multiply 3 300 -> 900
dqmul134 multiply 3 3000 -> 9000
dqmul135 multiply 3 30000 -> 90000
dqmul136 multiply 3 300000 -> 900000
dqmul137 multiply 3 3000000 -> 9000000
dqmul138 multiply 3 30000000 -> 90000000
dqmul139 multiply 3 300000000 -> 900000000
dqmul140 multiply 3 3000000000 -> 9000000000
dqmul141 multiply 3 30000000000 -> 90000000000
dqmul142 multiply 3 300000000000 -> 900000000000
dqmul143 multiply 3 3000000000000 -> 9000000000000
dqmul144 multiply 3 30000000000000 -> 90000000000000
dqmul145 multiply 3 300000000000000 -> 900000000000000
dqmul146 multiply 3 3000000000000000 -> 9000000000000000
dqmul147 multiply 3 30000000000000000 -> 90000000000000000
dqmul148 multiply 3 300000000000000000 -> 900000000000000000
dqmul149 multiply 3 3000000000000000000 -> 9000000000000000000
dqmul150 multiply 3 30000000000000000000 -> 90000000000000000000
dqmul151 multiply 3 300000000000000000000 -> 900000000000000000000
dqmul152 multiply 3 3000000000000000000000 -> 9000000000000000000000
dqmul153 multiply 3 30000000000000000000000 -> 90000000000000000000000
dqmul263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928296 Inexact Rounded
-- test some edge cases with exact rounding
dqmul301 multiply 900000000000000000 9 -> 8100000000000000000
dqmul302 multiply 900000000000000000 90 -> 81000000000000000000
dqmul303 multiply 900000000000000000 900 -> 810000000000000000000
dqmul304 multiply 900000000000000000 9000 -> 8100000000000000000000
dqmul305 multiply 900000000000000000 90000 -> 81000000000000000000000
dqmul306 multiply 900000000000000000 900000 -> 810000000000000000000000
dqmul307 multiply 900000000000000000 9000000 -> 8100000000000000000000000
dqmul308 multiply 900000000000000000 90000000 -> 81000000000000000000000000
dqmul309 multiply 900000000000000000 900000000 -> 810000000000000000000000000
dqmul310 multiply 900000000000000000 9000000000 -> 8100000000000000000000000000
dqmul311 multiply 900000000000000000 90000000000 -> 81000000000000000000000000000
dqmul312 multiply 900000000000000000 900000000000 -> 810000000000000000000000000000
dqmul313 multiply 900000000000000000 9000000000000 -> 8100000000000000000000000000000
dqmul314 multiply 900000000000000000 90000000000000 -> 81000000000000000000000000000000
dqmul315 multiply 900000000000000000 900000000000000 -> 810000000000000000000000000000000
dqmul316 multiply 900000000000000000 9000000000000000 -> 8100000000000000000000000000000000
dqmul317 multiply 9000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+34 Rounded
dqmul318 multiply 90000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+35 Rounded
dqmul319 multiply 900000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+36 Rounded
dqmul320 multiply 9000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+37 Rounded
dqmul321 multiply 90000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+38 Rounded
dqmul322 multiply 900000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+39 Rounded
dqmul323 multiply 9000000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+40 Rounded
-- tryzeros cases
dqmul504 multiply 0E-4260 1000E-4260 -> 0E-6176 Clamped
dqmul505 multiply 100E+4260 0E+4260 -> 0E+6111 Clamped
-- mixed with zeros
dqmul541 multiply 0 -1 -> -0
dqmul542 multiply -0 -1 -> 0
dqmul543 multiply 0 1 -> 0
dqmul544 multiply -0 1 -> -0
dqmul545 multiply -1 0 -> -0
dqmul546 multiply -1 -0 -> 0
dqmul547 multiply 1 0 -> 0
dqmul548 multiply 1 -0 -> -0
dqmul551 multiply 0.0 -1 -> -0.0
dqmul552 multiply -0.0 -1 -> 0.0
dqmul553 multiply 0.0 1 -> 0.0
dqmul554 multiply -0.0 1 -> -0.0
dqmul555 multiply -1.0 0 -> -0.0
dqmul556 multiply -1.0 -0 -> 0.0
dqmul557 multiply 1.0 0 -> 0.0
dqmul558 multiply 1.0 -0 -> -0.0
dqmul561 multiply 0 -1.0 -> -0.0
dqmul562 multiply -0 -1.0 -> 0.0
dqmul563 multiply 0 1.0 -> 0.0
dqmul564 multiply -0 1.0 -> -0.0
dqmul565 multiply -1 0.0 -> -0.0
dqmul566 multiply -1 -0.0 -> 0.0
dqmul567 multiply 1 0.0 -> 0.0
dqmul568 multiply 1 -0.0 -> -0.0
dqmul571 multiply 0.0 -1.0 -> -0.00
dqmul572 multiply -0.0 -1.0 -> 0.00
dqmul573 multiply 0.0 1.0 -> 0.00
dqmul574 multiply -0.0 1.0 -> -0.00
dqmul575 multiply -1.0 0.0 -> -0.00
dqmul576 multiply -1.0 -0.0 -> 0.00
dqmul577 multiply 1.0 0.0 -> 0.00
dqmul578 multiply 1.0 -0.0 -> -0.00
-- Specials
dqmul580 multiply Inf -Inf -> -Infinity
dqmul581 multiply Inf -1000 -> -Infinity
dqmul582 multiply Inf -1 -> -Infinity
dqmul583 multiply Inf -0 -> NaN Invalid_operation
dqmul584 multiply Inf 0 -> NaN Invalid_operation
dqmul585 multiply Inf 1 -> Infinity
dqmul586 multiply Inf 1000 -> Infinity
dqmul587 multiply Inf Inf -> Infinity
dqmul588 multiply -1000 Inf -> -Infinity
dqmul589 multiply -Inf Inf -> -Infinity
dqmul590 multiply -1 Inf -> -Infinity
dqmul591 multiply -0 Inf -> NaN Invalid_operation
dqmul592 multiply 0 Inf -> NaN Invalid_operation
dqmul593 multiply 1 Inf -> Infinity
dqmul594 multiply 1000 Inf -> Infinity
dqmul595 multiply Inf Inf -> Infinity
dqmul600 multiply -Inf -Inf -> Infinity
dqmul601 multiply -Inf -1000 -> Infinity
dqmul602 multiply -Inf -1 -> Infinity
dqmul603 multiply -Inf -0 -> NaN Invalid_operation
dqmul604 multiply -Inf 0 -> NaN Invalid_operation
dqmul605 multiply -Inf 1 -> -Infinity
dqmul606 multiply -Inf 1000 -> -Infinity
dqmul607 multiply -Inf Inf -> -Infinity
dqmul608 multiply -1000 Inf -> -Infinity
dqmul609 multiply -Inf -Inf -> Infinity
dqmul610 multiply -1 -Inf -> Infinity
dqmul611 multiply -0 -Inf -> NaN Invalid_operation
dqmul612 multiply 0 -Inf -> NaN Invalid_operation
dqmul613 multiply 1 -Inf -> -Infinity
dqmul614 multiply 1000 -Inf -> -Infinity
dqmul615 multiply Inf -Inf -> -Infinity
dqmul621 multiply NaN -Inf -> NaN
dqmul622 multiply NaN -1000 -> NaN
dqmul623 multiply NaN -1 -> NaN
dqmul624 multiply NaN -0 -> NaN
dqmul625 multiply NaN 0 -> NaN
dqmul626 multiply NaN 1 -> NaN
dqmul627 multiply NaN 1000 -> NaN
dqmul628 multiply NaN Inf -> NaN
dqmul629 multiply NaN NaN -> NaN
dqmul630 multiply -Inf NaN -> NaN
dqmul631 multiply -1000 NaN -> NaN
dqmul632 multiply -1 NaN -> NaN
dqmul633 multiply -0 NaN -> NaN
dqmul634 multiply 0 NaN -> NaN
dqmul635 multiply 1 NaN -> NaN
dqmul636 multiply 1000 NaN -> NaN
dqmul637 multiply Inf NaN -> NaN
dqmul641 multiply sNaN -Inf -> NaN Invalid_operation
dqmul642 multiply sNaN -1000 -> NaN Invalid_operation
dqmul643 multiply sNaN -1 -> NaN Invalid_operation
dqmul644 multiply sNaN -0 -> NaN Invalid_operation
dqmul645 multiply sNaN 0 -> NaN Invalid_operation
dqmul646 multiply sNaN 1 -> NaN Invalid_operation
dqmul647 multiply sNaN 1000 -> NaN Invalid_operation
dqmul648 multiply sNaN NaN -> NaN Invalid_operation
dqmul649 multiply sNaN sNaN -> NaN Invalid_operation
dqmul650 multiply NaN sNaN -> NaN Invalid_operation
dqmul651 multiply -Inf sNaN -> NaN Invalid_operation
dqmul652 multiply -1000 sNaN -> NaN Invalid_operation
dqmul653 multiply -1 sNaN -> NaN Invalid_operation
dqmul654 multiply -0 sNaN -> NaN Invalid_operation
dqmul655 multiply 0 sNaN -> NaN Invalid_operation
dqmul656 multiply 1 sNaN -> NaN Invalid_operation
dqmul657 multiply 1000 sNaN -> NaN Invalid_operation
dqmul658 multiply Inf sNaN -> NaN Invalid_operation
dqmul659 multiply NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqmul661 multiply NaN9 -Inf -> NaN9
dqmul662 multiply NaN8 999 -> NaN8
dqmul663 multiply NaN71 Inf -> NaN71
dqmul664 multiply NaN6 NaN5 -> NaN6
dqmul665 multiply -Inf NaN4 -> NaN4
dqmul666 multiply -999 NaN33 -> NaN33
dqmul667 multiply Inf NaN2 -> NaN2
dqmul671 multiply sNaN99 -Inf -> NaN99 Invalid_operation
dqmul672 multiply sNaN98 -11 -> NaN98 Invalid_operation
dqmul673 multiply sNaN97 NaN -> NaN97 Invalid_operation
dqmul674 multiply sNaN16 sNaN94 -> NaN16 Invalid_operation
dqmul675 multiply NaN95 sNaN93 -> NaN93 Invalid_operation
dqmul676 multiply -Inf sNaN92 -> NaN92 Invalid_operation
dqmul677 multiply 088 sNaN91 -> NaN91 Invalid_operation
dqmul678 multiply Inf sNaN90 -> NaN90 Invalid_operation
dqmul679 multiply NaN sNaN89 -> NaN89 Invalid_operation
dqmul681 multiply -NaN9 -Inf -> -NaN9
dqmul682 multiply -NaN8 999 -> -NaN8
dqmul683 multiply -NaN71 Inf -> -NaN71
dqmul684 multiply -NaN6 -NaN5 -> -NaN6
dqmul685 multiply -Inf -NaN4 -> -NaN4
dqmul686 multiply -999 -NaN33 -> -NaN33
dqmul687 multiply Inf -NaN2 -> -NaN2
dqmul691 multiply -sNaN99 -Inf -> -NaN99 Invalid_operation
dqmul692 multiply -sNaN98 -11 -> -NaN98 Invalid_operation
dqmul693 multiply -sNaN97 NaN -> -NaN97 Invalid_operation
dqmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation
dqmul695 multiply -NaN95 -sNaN93 -> -NaN93 Invalid_operation
dqmul696 multiply -Inf -sNaN92 -> -NaN92 Invalid_operation
dqmul697 multiply 088 -sNaN91 -> -NaN91 Invalid_operation
dqmul698 multiply Inf -sNaN90 -> -NaN90 Invalid_operation
dqmul699 multiply -NaN -sNaN89 -> -NaN89 Invalid_operation
dqmul701 multiply -NaN -Inf -> -NaN
dqmul702 multiply -NaN 999 -> -NaN
dqmul703 multiply -NaN Inf -> -NaN
dqmul704 multiply -NaN -NaN -> -NaN
dqmul705 multiply -Inf -NaN0 -> -NaN
dqmul706 multiply -999 -NaN -> -NaN
dqmul707 multiply Inf -NaN -> -NaN
dqmul711 multiply -sNaN -Inf -> -NaN Invalid_operation
dqmul712 multiply -sNaN -11 -> -NaN Invalid_operation
dqmul713 multiply -sNaN00 NaN -> -NaN Invalid_operation
dqmul714 multiply -sNaN -sNaN -> -NaN Invalid_operation
dqmul715 multiply -NaN -sNaN -> -NaN Invalid_operation
dqmul716 multiply -Inf -sNaN -> -NaN Invalid_operation
dqmul717 multiply 088 -sNaN -> -NaN Invalid_operation
dqmul718 multiply Inf -sNaN -> -NaN Invalid_operation
dqmul719 multiply -NaN -sNaN -> -NaN Invalid_operation
-- overflow and underflow tests .. note subnormal results
-- signs
dqmul751 multiply 1e+4277 1e+3311 -> Infinity Overflow Inexact Rounded
dqmul752 multiply 1e+4277 -1e+3311 -> -Infinity Overflow Inexact Rounded
dqmul753 multiply -1e+4277 1e+3311 -> -Infinity Overflow Inexact Rounded
dqmul754 multiply -1e+4277 -1e+3311 -> Infinity Overflow Inexact Rounded
dqmul755 multiply 1e-4277 1e-3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul756 multiply 1e-4277 -1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul757 multiply -1e-4277 1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul758 multiply -1e-4277 -1e-3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
dqmul760 multiply 1e-6069 1e-101 -> 1E-6170 Subnormal
dqmul761 multiply 1e-6069 1e-102 -> 1E-6171 Subnormal
dqmul762 multiply 1e-6069 1e-103 -> 1E-6172 Subnormal
dqmul763 multiply 1e-6069 1e-104 -> 1E-6173 Subnormal
dqmul764 multiply 1e-6069 1e-105 -> 1E-6174 Subnormal
dqmul765 multiply 1e-6069 1e-106 -> 1E-6175 Subnormal
dqmul766 multiply 1e-6069 1e-107 -> 1E-6176 Subnormal
dqmul767 multiply 1e-6069 1e-108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul768 multiply 1e-6069 1e-109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul769 multiply 1e-6069 1e-110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-- [no equivalent of 'subnormal' for overflow]
dqmul770 multiply 1e+40 1e+6101 -> 1.000000000000000000000000000000E+6141 Clamped
dqmul771 multiply 1e+40 1e+6102 -> 1.0000000000000000000000000000000E+6142 Clamped
dqmul772 multiply 1e+40 1e+6103 -> 1.00000000000000000000000000000000E+6143 Clamped
dqmul773 multiply 1e+40 1e+6104 -> 1.000000000000000000000000000000000E+6144 Clamped
dqmul774 multiply 1e+40 1e+6105 -> Infinity Overflow Inexact Rounded
dqmul775 multiply 1e+40 1e+6106 -> Infinity Overflow Inexact Rounded
dqmul776 multiply 1e+40 1e+6107 -> Infinity Overflow Inexact Rounded
dqmul777 multiply 1e+40 1e+6108 -> Infinity Overflow Inexact Rounded
dqmul778 multiply 1e+40 1e+6109 -> Infinity Overflow Inexact Rounded
dqmul779 multiply 1e+40 1e+6110 -> Infinity Overflow Inexact Rounded
dqmul801 multiply 1.0000E-6172 1 -> 1.0000E-6172 Subnormal
dqmul802 multiply 1.000E-6172 1e-1 -> 1.000E-6173 Subnormal
dqmul803 multiply 1.00E-6172 1e-2 -> 1.00E-6174 Subnormal
dqmul804 multiply 1.0E-6172 1e-3 -> 1.0E-6175 Subnormal
dqmul805 multiply 1.0E-6172 1e-4 -> 1E-6176 Subnormal Rounded
dqmul806 multiply 1.3E-6172 1e-4 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqmul807 multiply 1.5E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul808 multiply 1.7E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul809 multiply 2.3E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul810 multiply 2.5E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul811 multiply 2.7E-6172 1e-4 -> 3E-6176 Underflow Subnormal Inexact Rounded
dqmul812 multiply 1.49E-6172 1e-4 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqmul813 multiply 1.50E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul814 multiply 1.51E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul815 multiply 2.49E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul816 multiply 2.50E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul817 multiply 2.51E-6172 1e-4 -> 3E-6176 Underflow Subnormal Inexact Rounded
dqmul818 multiply 1E-6172 1e-4 -> 1E-6176 Subnormal
dqmul819 multiply 3E-6172 1e-5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul820 multiply 5E-6172 1e-5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul821 multiply 7E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqmul822 multiply 9E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqmul823 multiply 9.9E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqmul824 multiply 1E-6172 -1e-4 -> -1E-6176 Subnormal
dqmul825 multiply 3E-6172 -1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul826 multiply -5E-6172 1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul827 multiply 7E-6172 -1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded
dqmul828 multiply -9E-6172 1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded
dqmul829 multiply 9.9E-6172 -1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded
dqmul830 multiply 3.0E-6172 -1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul831 multiply 1.0E-5977 1e-200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul832 multiply 1.0E-5977 1e-199 -> 1E-6176 Subnormal Rounded
dqmul833 multiply 1.0E-5977 1e-198 -> 1.0E-6175 Subnormal
dqmul834 multiply 2.0E-5977 2e-198 -> 4.0E-6175 Subnormal
dqmul835 multiply 4.0E-5977 4e-198 -> 1.60E-6174 Subnormal
dqmul836 multiply 10.0E-5977 10e-198 -> 1.000E-6173 Subnormal
dqmul837 multiply 30.0E-5977 30e-198 -> 9.000E-6173 Subnormal
dqmul838 multiply 40.0E-5982 40e-166 -> 1.6000E-6145 Subnormal
dqmul839 multiply 40.0E-5982 40e-165 -> 1.6000E-6144 Subnormal
dqmul840 multiply 40.0E-5982 40e-164 -> 1.6000E-6143
-- Long operand overflow may be a different path
dqmul870 multiply 100 9.999E+6143 -> Infinity Inexact Overflow Rounded
dqmul871 multiply 100 -9.999E+6143 -> -Infinity Inexact Overflow Rounded
dqmul872 multiply 9.999E+6143 100 -> Infinity Inexact Overflow Rounded
dqmul873 multiply -9.999E+6143 100 -> -Infinity Inexact Overflow Rounded
-- check for double-rounded subnormals
dqmul881 multiply 1.2347E-6133 1.2347E-40 -> 1.524E-6173 Inexact Rounded Subnormal Underflow
dqmul882 multiply 1.234E-6133 1.234E-40 -> 1.523E-6173 Inexact Rounded Subnormal Underflow
dqmul883 multiply 1.23E-6133 1.23E-40 -> 1.513E-6173 Inexact Rounded Subnormal Underflow
dqmul884 multiply 1.2E-6133 1.2E-40 -> 1.44E-6173 Subnormal
dqmul885 multiply 1.2E-6133 1.2E-41 -> 1.44E-6174 Subnormal
dqmul886 multiply 1.2E-6133 1.2E-42 -> 1.4E-6175 Subnormal Inexact Rounded Underflow
dqmul887 multiply 1.2E-6133 1.3E-42 -> 1.6E-6175 Subnormal Inexact Rounded Underflow
dqmul888 multiply 1.3E-6133 1.3E-42 -> 1.7E-6175 Subnormal Inexact Rounded Underflow
dqmul889 multiply 1.3E-6133 1.3E-43 -> 2E-6176 Subnormal Inexact Rounded Underflow
dqmul890 multiply 1.3E-6134 1.3E-43 -> 0E-6176 Clamped Subnormal Inexact Rounded Underflow
dqmul891 multiply 1.2345E-39 1.234E-6133 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow
dqmul892 multiply 1.23456E-39 1.234E-6133 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow
dqmul893 multiply 1.2345E-40 1.234E-6133 -> 1.523E-6173 Inexact Rounded Subnormal Underflow
dqmul894 multiply 1.23456E-40 1.234E-6133 -> 1.523E-6173 Inexact Rounded Subnormal Underflow
dqmul895 multiply 1.2345E-41 1.234E-6133 -> 1.52E-6174 Inexact Rounded Subnormal Underflow
dqmul896 multiply 1.23456E-41 1.234E-6133 -> 1.52E-6174 Inexact Rounded Subnormal Underflow
-- Now explore the case where we get a normal result with Underflow
-- prove operands are exact
dqmul906 multiply 9.999999999999999999999999999999999E-6143 1 -> 9.999999999999999999999999999999999E-6143
dqmul907 multiply 1 0.09999999999999999999999999999999999 -> 0.09999999999999999999999999999999999
-- the next rounds to Nmin
dqmul908 multiply 9.999999999999999999999999999999999E-6143 0.09999999999999999999999999999999999 -> 1.000000000000000000000000000000000E-6143 Underflow Inexact Subnormal Rounded
-- hugest
dqmul909 multiply 9999999999999999999999999999999999 9999999999999999999999999999999999 -> 9.999999999999999999999999999999998E+67 Inexact Rounded
-- VG case
dqmul910 multiply 8.81125000000001349436E-1548 8.000000000000000000E-1550 -> 7.049000000000010795488000000000000E-3097 Rounded
-- Examples from SQL proposal (Krishna Kulkarni)
precision: 34
rounding: half_up
maxExponent: 6144
minExponent: -6143
dqmul911 multiply 130E-2 120E-2 -> 1.5600
dqmul912 multiply 130E-2 12E-1 -> 1.560
dqmul913 multiply 130E-2 1E0 -> 1.30
dqmul914 multiply 1E2 1E4 -> 1E+6
-- power-of-ten edge cases
dqmul1001 multiply 1 10 -> 10
dqmul1002 multiply 1 100 -> 100
dqmul1003 multiply 1 1000 -> 1000
dqmul1004 multiply 1 10000 -> 10000
dqmul1005 multiply 1 100000 -> 100000
dqmul1006 multiply 1 1000000 -> 1000000
dqmul1007 multiply 1 10000000 -> 10000000
dqmul1008 multiply 1 100000000 -> 100000000
dqmul1009 multiply 1 1000000000 -> 1000000000
dqmul1010 multiply 1 10000000000 -> 10000000000
dqmul1011 multiply 1 100000000000 -> 100000000000
dqmul1012 multiply 1 1000000000000 -> 1000000000000
dqmul1013 multiply 1 10000000000000 -> 10000000000000
dqmul1014 multiply 1 100000000000000 -> 100000000000000
dqmul1015 multiply 1 1000000000000000 -> 1000000000000000
dqmul1016 multiply 1 1000000000000000000 -> 1000000000000000000
dqmul1017 multiply 1 100000000000000000000000000 -> 100000000000000000000000000
dqmul1018 multiply 1 1000000000000000000000000000 -> 1000000000000000000000000000
dqmul1019 multiply 1 10000000000000000000000000000 -> 10000000000000000000000000000
dqmul1020 multiply 1 1000000000000000000000000000000000 -> 1000000000000000000000000000000000
dqmul1021 multiply 10 1 -> 10
dqmul1022 multiply 10 10 -> 100
dqmul1023 multiply 10 100 -> 1000
dqmul1024 multiply 10 1000 -> 10000
dqmul1025 multiply 10 10000 -> 100000
dqmul1026 multiply 10 100000 -> 1000000
dqmul1027 multiply 10 1000000 -> 10000000
dqmul1028 multiply 10 10000000 -> 100000000
dqmul1029 multiply 10 100000000 -> 1000000000
dqmul1030 multiply 10 1000000000 -> 10000000000
dqmul1031 multiply 10 10000000000 -> 100000000000
dqmul1032 multiply 10 100000000000 -> 1000000000000
dqmul1033 multiply 10 1000000000000 -> 10000000000000
dqmul1034 multiply 10 10000000000000 -> 100000000000000
dqmul1035 multiply 10 100000000000000 -> 1000000000000000
dqmul1036 multiply 10 100000000000000000 -> 1000000000000000000
dqmul1037 multiply 10 10000000000000000000000000 -> 100000000000000000000000000
dqmul1038 multiply 10 100000000000000000000000000 -> 1000000000000000000000000000
dqmul1039 multiply 10 1000000000000000000000000000 -> 10000000000000000000000000000
dqmul1040 multiply 10 100000000000000000000000000000000 -> 1000000000000000000000000000000000
dqmul1041 multiply 100 0.1 -> 10.0
dqmul1042 multiply 100 1 -> 100
dqmul1043 multiply 100 10 -> 1000
dqmul1044 multiply 100 100 -> 10000
dqmul1045 multiply 100 1000 -> 100000
dqmul1046 multiply 100 10000 -> 1000000
dqmul1047 multiply 100 100000 -> 10000000
dqmul1048 multiply 100 1000000 -> 100000000
dqmul1049 multiply 100 10000000 -> 1000000000
dqmul1050 multiply 100 100000000 -> 10000000000
dqmul1051 multiply 100 1000000000 -> 100000000000
dqmul1052 multiply 100 10000000000 -> 1000000000000
dqmul1053 multiply 100 100000000000 -> 10000000000000
dqmul1054 multiply 100 1000000000000 -> 100000000000000
dqmul1055 multiply 100 10000000000000 -> 1000000000000000
dqmul1056 multiply 100 10000000000000000 -> 1000000000000000000
dqmul1057 multiply 100 1000000000000000000000000 -> 100000000000000000000000000
dqmul1058 multiply 100 10000000000000000000000000 -> 1000000000000000000000000000
dqmul1059 multiply 100 100000000000000000000000000 -> 10000000000000000000000000000
dqmul1060 multiply 100 10000000000000000000000000000000 -> 1000000000000000000000000000000000
dqmul1061 multiply 1000 0.01 -> 10.00
dqmul1062 multiply 1000 0.1 -> 100.0
dqmul1063 multiply 1000 1 -> 1000
dqmul1064 multiply 1000 10 -> 10000
dqmul1065 multiply 1000 100 -> 100000
dqmul1066 multiply 1000 1000 -> 1000000
dqmul1067 multiply 1000 10000 -> 10000000
dqmul1068 multiply 1000 100000 -> 100000000
dqmul1069 multiply 1000 1000000 -> 1000000000
dqmul1070 multiply 1000 10000000 -> 10000000000
dqmul1071 multiply 1000 100000000 -> 100000000000
dqmul1072 multiply 1000 1000000000 -> 1000000000000
dqmul1073 multiply 1000 10000000000 -> 10000000000000
dqmul1074 multiply 1000 100000000000 -> 100000000000000
dqmul1075 multiply 1000 1000000000000 -> 1000000000000000
dqmul1076 multiply 1000 1000000000000000 -> 1000000000000000000
dqmul1077 multiply 1000 100000000000000000000000 -> 100000000000000000000000000
dqmul1078 multiply 1000 1000000000000000000000000 -> 1000000000000000000000000000
dqmul1079 multiply 1000 10000000000000000000000000 -> 10000000000000000000000000000
dqmul1080 multiply 1000 1000000000000000000000000000000 -> 1000000000000000000000000000000000
dqmul1081 multiply 10000 0.001 -> 10.000
dqmul1082 multiply 10000 0.01 -> 100.00
dqmul1083 multiply 10000 0.1 -> 1000.0
dqmul1084 multiply 10000 1 -> 10000
dqmul1085 multiply 10000 10 -> 100000
dqmul1086 multiply 10000 100 -> 1000000
dqmul1087 multiply 10000 1000 -> 10000000
dqmul1088 multiply 10000 10000 -> 100000000
dqmul1089 multiply 10000 100000 -> 1000000000
dqmul1090 multiply 10000 1000000 -> 10000000000
dqmul1091 multiply 10000 10000000 -> 100000000000
dqmul1092 multiply 10000 100000000 -> 1000000000000
dqmul1093 multiply 10000 1000000000 -> 10000000000000
dqmul1094 multiply 10000 10000000000 -> 100000000000000
dqmul1095 multiply 10000 100000000000 -> 1000000000000000
dqmul1096 multiply 10000 100000000000000 -> 1000000000000000000
dqmul1097 multiply 10000 10000000000000000000000 -> 100000000000000000000000000
dqmul1098 multiply 10000 100000000000000000000000 -> 1000000000000000000000000000
dqmul1099 multiply 10000 1000000000000000000000000 -> 10000000000000000000000000000
dqmul1100 multiply 10000 100000000000000000000000000000 -> 1000000000000000000000000000000000
dqmul1107 multiply 10000 99999999999 -> 999999999990000
dqmul1108 multiply 10000 99999999999 -> 999999999990000
-- Null tests
dqmul9990 multiply 10 # -> NaN Invalid_operation
dqmul9991 multiply # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,126 @@
------------------------------------------------------------------------
-- dqNextMinus.decTest -- decQuad next that is less [754r nextdown] --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
dqnextm001 nextminus 0.9999999999999999999999999999999995 -> 0.9999999999999999999999999999999994
dqnextm002 nextminus 0.9999999999999999999999999999999996 -> 0.9999999999999999999999999999999995
dqnextm003 nextminus 0.9999999999999999999999999999999997 -> 0.9999999999999999999999999999999996
dqnextm004 nextminus 0.9999999999999999999999999999999998 -> 0.9999999999999999999999999999999997
dqnextm005 nextminus 0.9999999999999999999999999999999999 -> 0.9999999999999999999999999999999998
dqnextm006 nextminus 1.000000000000000000000000000000000 -> 0.9999999999999999999999999999999999
dqnextm007 nextminus 1.0 -> 0.9999999999999999999999999999999999
dqnextm008 nextminus 1 -> 0.9999999999999999999999999999999999
dqnextm009 nextminus 1.000000000000000000000000000000001 -> 1.000000000000000000000000000000000
dqnextm010 nextminus 1.000000000000000000000000000000002 -> 1.000000000000000000000000000000001
dqnextm011 nextminus 1.000000000000000000000000000000003 -> 1.000000000000000000000000000000002
dqnextm012 nextminus 1.000000000000000000000000000000004 -> 1.000000000000000000000000000000003
dqnextm013 nextminus 1.000000000000000000000000000000005 -> 1.000000000000000000000000000000004
dqnextm014 nextminus 1.000000000000000000000000000000006 -> 1.000000000000000000000000000000005
dqnextm015 nextminus 1.000000000000000000000000000000007 -> 1.000000000000000000000000000000006
dqnextm016 nextminus 1.000000000000000000000000000000008 -> 1.000000000000000000000000000000007
dqnextm017 nextminus 1.000000000000000000000000000000009 -> 1.000000000000000000000000000000008
dqnextm018 nextminus 1.000000000000000000000000000000010 -> 1.000000000000000000000000000000009
dqnextm019 nextminus 1.000000000000000000000000000000011 -> 1.000000000000000000000000000000010
dqnextm020 nextminus 1.000000000000000000000000000000012 -> 1.000000000000000000000000000000011
dqnextm021 nextminus -0.9999999999999999999999999999999995 -> -0.9999999999999999999999999999999996
dqnextm022 nextminus -0.9999999999999999999999999999999996 -> -0.9999999999999999999999999999999997
dqnextm023 nextminus -0.9999999999999999999999999999999997 -> -0.9999999999999999999999999999999998
dqnextm024 nextminus -0.9999999999999999999999999999999998 -> -0.9999999999999999999999999999999999
dqnextm025 nextminus -0.9999999999999999999999999999999999 -> -1.000000000000000000000000000000000
dqnextm026 nextminus -1.000000000000000000000000000000000 -> -1.000000000000000000000000000000001
dqnextm027 nextminus -1.0 -> -1.000000000000000000000000000000001
dqnextm028 nextminus -1 -> -1.000000000000000000000000000000001
dqnextm029 nextminus -1.000000000000000000000000000000001 -> -1.000000000000000000000000000000002
dqnextm030 nextminus -1.000000000000000000000000000000002 -> -1.000000000000000000000000000000003
dqnextm031 nextminus -1.000000000000000000000000000000003 -> -1.000000000000000000000000000000004
dqnextm032 nextminus -1.000000000000000000000000000000004 -> -1.000000000000000000000000000000005
dqnextm033 nextminus -1.000000000000000000000000000000005 -> -1.000000000000000000000000000000006
dqnextm034 nextminus -1.000000000000000000000000000000006 -> -1.000000000000000000000000000000007
dqnextm035 nextminus -1.000000000000000000000000000000007 -> -1.000000000000000000000000000000008
dqnextm036 nextminus -1.000000000000000000000000000000008 -> -1.000000000000000000000000000000009
dqnextm037 nextminus -1.000000000000000000000000000000009 -> -1.000000000000000000000000000000010
dqnextm038 nextminus -1.000000000000000000000000000000010 -> -1.000000000000000000000000000000011
dqnextm039 nextminus -1.000000000000000000000000000000011 -> -1.000000000000000000000000000000012
-- ultra-tiny inputs
dqnextm062 nextminus 1E-6176 -> 0E-6176
dqnextm065 nextminus -1E-6176 -> -2E-6176
-- Zeros
dqnextm100 nextminus -0 -> -1E-6176
dqnextm101 nextminus 0 -> -1E-6176
dqnextm102 nextminus 0.00 -> -1E-6176
dqnextm103 nextminus -0.00 -> -1E-6176
dqnextm104 nextminus 0E-300 -> -1E-6176
dqnextm105 nextminus 0E+300 -> -1E-6176
dqnextm106 nextminus 0E+30000 -> -1E-6176
dqnextm107 nextminus -0E+30000 -> -1E-6176
-- specials
dqnextm150 nextminus Inf -> 9.999999999999999999999999999999999E+6144
dqnextm151 nextminus -Inf -> -Infinity
dqnextm152 nextminus NaN -> NaN
dqnextm153 nextminus sNaN -> NaN Invalid_operation
dqnextm154 nextminus NaN77 -> NaN77
dqnextm155 nextminus sNaN88 -> NaN88 Invalid_operation
dqnextm156 nextminus -NaN -> -NaN
dqnextm157 nextminus -sNaN -> -NaN Invalid_operation
dqnextm158 nextminus -NaN77 -> -NaN77
dqnextm159 nextminus -sNaN88 -> -NaN88 Invalid_operation
-- Nmax, Nmin, Ntiny, subnormals
dqnextm170 nextminus 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999998E+6144
dqnextm171 nextminus 9.999999999999999999999999999999998E+6144 -> 9.999999999999999999999999999999997E+6144
dqnextm172 nextminus 1E-6143 -> 9.99999999999999999999999999999999E-6144
dqnextm173 nextminus 1.000000000000000000000000000000000E-6143 -> 9.99999999999999999999999999999999E-6144
dqnextm174 nextminus 9E-6176 -> 8E-6176
dqnextm175 nextminus 9.9E-6175 -> 9.8E-6175
dqnextm176 nextminus 9.99999999999999999999999999999E-6147 -> 9.99999999999999999999999999998E-6147
dqnextm177 nextminus 9.99999999999999999999999999999999E-6144 -> 9.99999999999999999999999999999998E-6144
dqnextm178 nextminus 9.99999999999999999999999999999998E-6144 -> 9.99999999999999999999999999999997E-6144
dqnextm179 nextminus 9.99999999999999999999999999999997E-6144 -> 9.99999999999999999999999999999996E-6144
dqnextm180 nextminus 0E-6176 -> -1E-6176
dqnextm181 nextminus 1E-6176 -> 0E-6176
dqnextm182 nextminus 2E-6176 -> 1E-6176
dqnextm183 nextminus -0E-6176 -> -1E-6176
dqnextm184 nextminus -1E-6176 -> -2E-6176
dqnextm185 nextminus -2E-6176 -> -3E-6176
dqnextm186 nextminus -10E-6176 -> -1.1E-6175
dqnextm187 nextminus -100E-6176 -> -1.01E-6174
dqnextm188 nextminus -100000E-6176 -> -1.00001E-6171
dqnextm189 nextminus -1.00000000000000000000000000000E-6143 -> -1.000000000000000000000000000000001E-6143
dqnextm190 nextminus -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000001E-6143
dqnextm191 nextminus -1E-6143 -> -1.000000000000000000000000000000001E-6143
dqnextm192 nextminus -9.999999999999999999999999999999998E+6144 -> -9.999999999999999999999999999999999E+6144
dqnextm193 nextminus -9.999999999999999999999999999999999E+6144 -> -Infinity
-- Null tests
dqnextm900 nextminus # -> NaN Invalid_operation

View file

@ -0,0 +1,124 @@
------------------------------------------------------------------------
-- dqNextPlus.decTest -- decQuad next that is greater [754r nextup] --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
dqnextp001 nextplus 0.9999999999999999999999999999999995 -> 0.9999999999999999999999999999999996
dqnextp002 nextplus 0.9999999999999999999999999999999996 -> 0.9999999999999999999999999999999997
dqnextp003 nextplus 0.9999999999999999999999999999999997 -> 0.9999999999999999999999999999999998
dqnextp004 nextplus 0.9999999999999999999999999999999998 -> 0.9999999999999999999999999999999999
dqnextp005 nextplus 0.9999999999999999999999999999999999 -> 1.000000000000000000000000000000000
dqnextp006 nextplus 1.000000000000000000000000000000000 -> 1.000000000000000000000000000000001
dqnextp007 nextplus 1.0 -> 1.000000000000000000000000000000001
dqnextp008 nextplus 1 -> 1.000000000000000000000000000000001
dqnextp009 nextplus 1.000000000000000000000000000000001 -> 1.000000000000000000000000000000002
dqnextp010 nextplus 1.000000000000000000000000000000002 -> 1.000000000000000000000000000000003
dqnextp011 nextplus 1.000000000000000000000000000000003 -> 1.000000000000000000000000000000004
dqnextp012 nextplus 1.000000000000000000000000000000004 -> 1.000000000000000000000000000000005
dqnextp013 nextplus 1.000000000000000000000000000000005 -> 1.000000000000000000000000000000006
dqnextp014 nextplus 1.000000000000000000000000000000006 -> 1.000000000000000000000000000000007
dqnextp015 nextplus 1.000000000000000000000000000000007 -> 1.000000000000000000000000000000008
dqnextp016 nextplus 1.000000000000000000000000000000008 -> 1.000000000000000000000000000000009
dqnextp017 nextplus 1.000000000000000000000000000000009 -> 1.000000000000000000000000000000010
dqnextp018 nextplus 1.000000000000000000000000000000010 -> 1.000000000000000000000000000000011
dqnextp019 nextplus 1.000000000000000000000000000000011 -> 1.000000000000000000000000000000012
dqnextp021 nextplus -0.9999999999999999999999999999999995 -> -0.9999999999999999999999999999999994
dqnextp022 nextplus -0.9999999999999999999999999999999996 -> -0.9999999999999999999999999999999995
dqnextp023 nextplus -0.9999999999999999999999999999999997 -> -0.9999999999999999999999999999999996
dqnextp024 nextplus -0.9999999999999999999999999999999998 -> -0.9999999999999999999999999999999997
dqnextp025 nextplus -0.9999999999999999999999999999999999 -> -0.9999999999999999999999999999999998
dqnextp026 nextplus -1.000000000000000000000000000000000 -> -0.9999999999999999999999999999999999
dqnextp027 nextplus -1.0 -> -0.9999999999999999999999999999999999
dqnextp028 nextplus -1 -> -0.9999999999999999999999999999999999
dqnextp029 nextplus -1.000000000000000000000000000000001 -> -1.000000000000000000000000000000000
dqnextp030 nextplus -1.000000000000000000000000000000002 -> -1.000000000000000000000000000000001
dqnextp031 nextplus -1.000000000000000000000000000000003 -> -1.000000000000000000000000000000002
dqnextp032 nextplus -1.000000000000000000000000000000004 -> -1.000000000000000000000000000000003
dqnextp033 nextplus -1.000000000000000000000000000000005 -> -1.000000000000000000000000000000004
dqnextp034 nextplus -1.000000000000000000000000000000006 -> -1.000000000000000000000000000000005
dqnextp035 nextplus -1.000000000000000000000000000000007 -> -1.000000000000000000000000000000006
dqnextp036 nextplus -1.000000000000000000000000000000008 -> -1.000000000000000000000000000000007
dqnextp037 nextplus -1.000000000000000000000000000000009 -> -1.000000000000000000000000000000008
dqnextp038 nextplus -1.000000000000000000000000000000010 -> -1.000000000000000000000000000000009
dqnextp039 nextplus -1.000000000000000000000000000000011 -> -1.000000000000000000000000000000010
dqnextp040 nextplus -1.000000000000000000000000000000012 -> -1.000000000000000000000000000000011
-- Zeros
dqnextp100 nextplus 0 -> 1E-6176
dqnextp101 nextplus 0.00 -> 1E-6176
dqnextp102 nextplus 0E-300 -> 1E-6176
dqnextp103 nextplus 0E+300 -> 1E-6176
dqnextp104 nextplus 0E+30000 -> 1E-6176
dqnextp105 nextplus -0 -> 1E-6176
dqnextp106 nextplus -0.00 -> 1E-6176
dqnextp107 nextplus -0E-300 -> 1E-6176
dqnextp108 nextplus -0E+300 -> 1E-6176
dqnextp109 nextplus -0E+30000 -> 1E-6176
-- specials
dqnextp150 nextplus Inf -> Infinity
dqnextp151 nextplus -Inf -> -9.999999999999999999999999999999999E+6144
dqnextp152 nextplus NaN -> NaN
dqnextp153 nextplus sNaN -> NaN Invalid_operation
dqnextp154 nextplus NaN77 -> NaN77
dqnextp155 nextplus sNaN88 -> NaN88 Invalid_operation
dqnextp156 nextplus -NaN -> -NaN
dqnextp157 nextplus -sNaN -> -NaN Invalid_operation
dqnextp158 nextplus -NaN77 -> -NaN77
dqnextp159 nextplus -sNaN88 -> -NaN88 Invalid_operation
-- Nmax, Nmin, Ntiny, subnormals
dqnextp170 nextplus -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999998E+6144
dqnextp171 nextplus -9.999999999999999999999999999999998E+6144 -> -9.999999999999999999999999999999997E+6144
dqnextp172 nextplus -1E-6143 -> -9.99999999999999999999999999999999E-6144
dqnextp173 nextplus -1.000000000000000E-6143 -> -9.99999999999999999999999999999999E-6144
dqnextp174 nextplus -9E-6176 -> -8E-6176
dqnextp175 nextplus -9.9E-6175 -> -9.8E-6175
dqnextp176 nextplus -9.99999999999999999999999999999E-6147 -> -9.99999999999999999999999999998E-6147
dqnextp177 nextplus -9.99999999999999999999999999999999E-6144 -> -9.99999999999999999999999999999998E-6144
dqnextp178 nextplus -9.99999999999999999999999999999998E-6144 -> -9.99999999999999999999999999999997E-6144
dqnextp179 nextplus -9.99999999999999999999999999999997E-6144 -> -9.99999999999999999999999999999996E-6144
dqnextp180 nextplus -0E-6176 -> 1E-6176
dqnextp181 nextplus -1E-6176 -> -0E-6176
dqnextp182 nextplus -2E-6176 -> -1E-6176
dqnextp183 nextplus 0E-6176 -> 1E-6176
dqnextp184 nextplus 1E-6176 -> 2E-6176
dqnextp185 nextplus 2E-6176 -> 3E-6176
dqnextp186 nextplus 10E-6176 -> 1.1E-6175
dqnextp187 nextplus 100E-6176 -> 1.01E-6174
dqnextp188 nextplus 100000E-6176 -> 1.00001E-6171
dqnextp189 nextplus 1.00000000000000000000000000000E-6143 -> 1.000000000000000000000000000000001E-6143
dqnextp190 nextplus 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000001E-6143
dqnextp191 nextplus 1E-6143 -> 1.000000000000000000000000000000001E-6143
dqnextp192 nextplus 9.999999999999999999999999999999998E+6144 -> 9.999999999999999999999999999999999E+6144
dqnextp193 nextplus 9.999999999999999999999999999999999E+6144 -> Infinity
-- Null tests
dqnextp900 nextplus # -> NaN Invalid_operation

View file

@ -0,0 +1,375 @@
------------------------------------------------------------------------
-- dqNextToward.decTest -- decQuad next toward rhs [754r nextafter] --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check with a scattering of numerics
dqnextt001 nexttoward 10 10 -> 10
dqnextt002 nexttoward -10 -10 -> -10
dqnextt003 nexttoward 1 10 -> 1.000000000000000000000000000000001
dqnextt004 nexttoward 1 -10 -> 0.9999999999999999999999999999999999
dqnextt005 nexttoward -1 10 -> -0.9999999999999999999999999999999999
dqnextt006 nexttoward -1 -10 -> -1.000000000000000000000000000000001
dqnextt007 nexttoward 0 10 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt008 nexttoward 0 -10 -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt009 nexttoward 9.999999999999999999999999999999999E+6144 +Infinity -> Infinity Overflow Inexact Rounded
dqnextt010 nexttoward -9.999999999999999999999999999999999E+6144 -Infinity -> -Infinity Overflow Inexact Rounded
dqnextt011 nexttoward 9.999999999999999999999999999999999 10 -> 10.00000000000000000000000000000000
dqnextt012 nexttoward 10 9.999999999999999999999999999999999 -> 9.999999999999999999999999999999999
dqnextt013 nexttoward -9.999999999999999999999999999999999 -10 -> -10.00000000000000000000000000000000
dqnextt014 nexttoward -10 -9.999999999999999999999999999999999 -> -9.999999999999999999999999999999999
dqnextt015 nexttoward 9.999999999999999999999999999999998 10 -> 9.999999999999999999999999999999999
dqnextt016 nexttoward 10 9.999999999999999999999999999999998 -> 9.999999999999999999999999999999999
dqnextt017 nexttoward -9.999999999999999999999999999999998 -10 -> -9.999999999999999999999999999999999
dqnextt018 nexttoward -10 -9.999999999999999999999999999999998 -> -9.999999999999999999999999999999999
------- lhs=rhs
-- finites
dqnextt101 nexttoward 7 7 -> 7
dqnextt102 nexttoward -7 -7 -> -7
dqnextt103 nexttoward 75 75 -> 75
dqnextt104 nexttoward -75 -75 -> -75
dqnextt105 nexttoward 7.50 7.5 -> 7.50
dqnextt106 nexttoward -7.50 -7.50 -> -7.50
dqnextt107 nexttoward 7.500 7.5000 -> 7.500
dqnextt108 nexttoward -7.500 -7.5 -> -7.500
-- zeros
dqnextt111 nexttoward 0 0 -> 0
dqnextt112 nexttoward -0 -0 -> -0
dqnextt113 nexttoward 0E+4 0 -> 0E+4
dqnextt114 nexttoward -0E+4 -0 -> -0E+4
dqnextt115 nexttoward 0.00000000000 0.000000000000 -> 0E-11
dqnextt116 nexttoward -0.00000000000 -0.00 -> -0E-11
dqnextt117 nexttoward 0E-141 0 -> 0E-141
dqnextt118 nexttoward -0E-141 -000 -> -0E-141
-- full coefficients, alternating bits
dqnextt121 nexttoward 268268268 268268268 -> 268268268
dqnextt122 nexttoward -268268268 -268268268 -> -268268268
dqnextt123 nexttoward 134134134 134134134 -> 134134134
dqnextt124 nexttoward -134134134 -134134134 -> -134134134
-- Nmax, Nmin, Ntiny
dqnextt131 nexttoward 9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144
dqnextt132 nexttoward 1E-6143 1E-6143 -> 1E-6143
dqnextt133 nexttoward 1.000000000000000000000000000000000E-6143 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143
dqnextt134 nexttoward 1E-6176 1E-6176 -> 1E-6176
dqnextt135 nexttoward -1E-6176 -1E-6176 -> -1E-6176
dqnextt136 nexttoward -1.000000000000000000000000000000000E-6143 -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143
dqnextt137 nexttoward -1E-6143 -1E-6143 -> -1E-6143
dqnextt138 nexttoward -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144
------- lhs<rhs
dqnextt201 nexttoward 0.9999999999999999999999999999999995 Infinity -> 0.9999999999999999999999999999999996
dqnextt202 nexttoward 0.9999999999999999999999999999999996 Infinity -> 0.9999999999999999999999999999999997
dqnextt203 nexttoward 0.9999999999999999999999999999999997 Infinity -> 0.9999999999999999999999999999999998
dqnextt204 nexttoward 0.9999999999999999999999999999999998 Infinity -> 0.9999999999999999999999999999999999
dqnextt205 nexttoward 0.9999999999999999999999999999999999 Infinity -> 1.000000000000000000000000000000000
dqnextt206 nexttoward 1.000000000000000000000000000000000 Infinity -> 1.000000000000000000000000000000001
dqnextt207 nexttoward 1.0 Infinity -> 1.000000000000000000000000000000001
dqnextt208 nexttoward 1 Infinity -> 1.000000000000000000000000000000001
dqnextt209 nexttoward 1.000000000000000000000000000000001 Infinity -> 1.000000000000000000000000000000002
dqnextt210 nexttoward 1.000000000000000000000000000000002 Infinity -> 1.000000000000000000000000000000003
dqnextt211 nexttoward 1.000000000000000000000000000000003 Infinity -> 1.000000000000000000000000000000004
dqnextt212 nexttoward 1.000000000000000000000000000000004 Infinity -> 1.000000000000000000000000000000005
dqnextt213 nexttoward 1.000000000000000000000000000000005 Infinity -> 1.000000000000000000000000000000006
dqnextt214 nexttoward 1.000000000000000000000000000000006 Infinity -> 1.000000000000000000000000000000007
dqnextt215 nexttoward 1.000000000000000000000000000000007 Infinity -> 1.000000000000000000000000000000008
dqnextt216 nexttoward 1.000000000000000000000000000000008 Infinity -> 1.000000000000000000000000000000009
dqnextt217 nexttoward 1.000000000000000000000000000000009 Infinity -> 1.000000000000000000000000000000010
dqnextt218 nexttoward 1.000000000000000000000000000000010 Infinity -> 1.000000000000000000000000000000011
dqnextt219 nexttoward 1.000000000000000000000000000000011 Infinity -> 1.000000000000000000000000000000012
dqnextt221 nexttoward -0.9999999999999999999999999999999995 Infinity -> -0.9999999999999999999999999999999994
dqnextt222 nexttoward -0.9999999999999999999999999999999996 Infinity -> -0.9999999999999999999999999999999995
dqnextt223 nexttoward -0.9999999999999999999999999999999997 Infinity -> -0.9999999999999999999999999999999996
dqnextt224 nexttoward -0.9999999999999999999999999999999998 Infinity -> -0.9999999999999999999999999999999997
dqnextt225 nexttoward -0.9999999999999999999999999999999999 Infinity -> -0.9999999999999999999999999999999998
dqnextt226 nexttoward -1.000000000000000000000000000000000 Infinity -> -0.9999999999999999999999999999999999
dqnextt227 nexttoward -1.0 Infinity -> -0.9999999999999999999999999999999999
dqnextt228 nexttoward -1 Infinity -> -0.9999999999999999999999999999999999
dqnextt229 nexttoward -1.000000000000000000000000000000001 Infinity -> -1.000000000000000000000000000000000
dqnextt230 nexttoward -1.000000000000000000000000000000002 Infinity -> -1.000000000000000000000000000000001
dqnextt231 nexttoward -1.000000000000000000000000000000003 Infinity -> -1.000000000000000000000000000000002
dqnextt232 nexttoward -1.000000000000000000000000000000004 Infinity -> -1.000000000000000000000000000000003
dqnextt233 nexttoward -1.000000000000000000000000000000005 Infinity -> -1.000000000000000000000000000000004
dqnextt234 nexttoward -1.000000000000000000000000000000006 Infinity -> -1.000000000000000000000000000000005
dqnextt235 nexttoward -1.000000000000000000000000000000007 Infinity -> -1.000000000000000000000000000000006
dqnextt236 nexttoward -1.000000000000000000000000000000008 Infinity -> -1.000000000000000000000000000000007
dqnextt237 nexttoward -1.000000000000000000000000000000009 Infinity -> -1.000000000000000000000000000000008
dqnextt238 nexttoward -1.000000000000000000000000000000010 Infinity -> -1.000000000000000000000000000000009
dqnextt239 nexttoward -1.000000000000000000000000000000011 Infinity -> -1.000000000000000000000000000000010
dqnextt240 nexttoward -1.000000000000000000000000000000012 Infinity -> -1.000000000000000000000000000000011
-- Zeros
dqnextt300 nexttoward 0 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt301 nexttoward 0.00 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt302 nexttoward 0E-300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt303 nexttoward 0E+300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt304 nexttoward 0E+30000 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt305 nexttoward -0 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt306 nexttoward -0.00 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt307 nexttoward -0E-300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt308 nexttoward -0E+300 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt309 nexttoward -0E+30000 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
-- specials
dqnextt350 nexttoward Inf Infinity -> Infinity
dqnextt351 nexttoward -Inf Infinity -> -9.999999999999999999999999999999999E+6144
dqnextt352 nexttoward NaN Infinity -> NaN
dqnextt353 nexttoward sNaN Infinity -> NaN Invalid_operation
dqnextt354 nexttoward NaN77 Infinity -> NaN77
dqnextt355 nexttoward sNaN88 Infinity -> NaN88 Invalid_operation
dqnextt356 nexttoward -NaN Infinity -> -NaN
dqnextt357 nexttoward -sNaN Infinity -> -NaN Invalid_operation
dqnextt358 nexttoward -NaN77 Infinity -> -NaN77
dqnextt359 nexttoward -sNaN88 Infinity -> -NaN88 Invalid_operation
-- Nmax, Nmin, Ntiny, subnormals
dqnextt370 nexttoward -9.999999999999999999999999999999999E+6144 Infinity -> -9.999999999999999999999999999999998E+6144
dqnextt371 nexttoward -9.999999999999999999999999999999998E+6144 Infinity -> -9.999999999999999999999999999999997E+6144
dqnextt372 nexttoward -1E-6143 Infinity -> -9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded
dqnextt373 nexttoward -1.000000000000000E-6143 Infinity -> -9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded
dqnextt374 nexttoward -9E-6176 Infinity -> -8E-6176 Underflow Subnormal Inexact Rounded
dqnextt375 nexttoward -9.9E-6175 Infinity -> -9.8E-6175 Underflow Subnormal Inexact Rounded
dqnextt376 nexttoward -9.99999999999999999999999999999E-6147 Infinity -> -9.99999999999999999999999999998E-6147 Underflow Subnormal Inexact Rounded
dqnextt377 nexttoward -9.99999999999999999999999999999999E-6144 Infinity -> -9.99999999999999999999999999999998E-6144 Underflow Subnormal Inexact Rounded
dqnextt378 nexttoward -9.99999999999999999999999999999998E-6144 Infinity -> -9.99999999999999999999999999999997E-6144 Underflow Subnormal Inexact Rounded
dqnextt379 nexttoward -9.99999999999999999999999999999997E-6144 Infinity -> -9.99999999999999999999999999999996E-6144 Underflow Subnormal Inexact Rounded
dqnextt380 nexttoward -0E-6176 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt381 nexttoward -1E-6176 Infinity -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqnextt382 nexttoward -2E-6176 Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt383 nexttoward 0E-6176 Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt384 nexttoward 1E-6176 Infinity -> 2E-6176 Underflow Subnormal Inexact Rounded
dqnextt385 nexttoward 2E-6176 Infinity -> 3E-6176 Underflow Subnormal Inexact Rounded
dqnextt386 nexttoward 10E-6176 Infinity -> 1.1E-6175 Underflow Subnormal Inexact Rounded
dqnextt387 nexttoward 100E-6176 Infinity -> 1.01E-6174 Underflow Subnormal Inexact Rounded
dqnextt388 nexttoward 100000E-6176 Infinity -> 1.00001E-6171 Underflow Subnormal Inexact Rounded
dqnextt389 nexttoward 1.00000000000000000000000000000E-6143 Infinity -> 1.000000000000000000000000000000001E-6143
dqnextt390 nexttoward 1.000000000000000000000000000000000E-6143 Infinity -> 1.000000000000000000000000000000001E-6143
dqnextt391 nexttoward 1E-6143 Infinity -> 1.000000000000000000000000000000001E-6143
dqnextt392 nexttoward 9.999999999999999999999999999999997E+6144 Infinity -> 9.999999999999999999999999999999998E+6144
dqnextt393 nexttoward 9.999999999999999999999999999999998E+6144 Infinity -> 9.999999999999999999999999999999999E+6144
dqnextt394 nexttoward 9.999999999999999999999999999999999E+6144 Infinity -> Infinity Overflow Inexact Rounded
------- lhs>rhs
dqnextt401 nexttoward 0.9999999999999999999999999999999995 -Infinity -> 0.9999999999999999999999999999999994
dqnextt402 nexttoward 0.9999999999999999999999999999999996 -Infinity -> 0.9999999999999999999999999999999995
dqnextt403 nexttoward 0.9999999999999999999999999999999997 -Infinity -> 0.9999999999999999999999999999999996
dqnextt404 nexttoward 0.9999999999999999999999999999999998 -Infinity -> 0.9999999999999999999999999999999997
dqnextt405 nexttoward 0.9999999999999999999999999999999999 -Infinity -> 0.9999999999999999999999999999999998
dqnextt406 nexttoward 1.000000000000000000000000000000000 -Infinity -> 0.9999999999999999999999999999999999
dqnextt407 nexttoward 1.0 -Infinity -> 0.9999999999999999999999999999999999
dqnextt408 nexttoward 1 -Infinity -> 0.9999999999999999999999999999999999
dqnextt409 nexttoward 1.000000000000000000000000000000001 -Infinity -> 1.000000000000000000000000000000000
dqnextt410 nexttoward 1.000000000000000000000000000000002 -Infinity -> 1.000000000000000000000000000000001
dqnextt411 nexttoward 1.000000000000000000000000000000003 -Infinity -> 1.000000000000000000000000000000002
dqnextt412 nexttoward 1.000000000000000000000000000000004 -Infinity -> 1.000000000000000000000000000000003
dqnextt413 nexttoward 1.000000000000000000000000000000005 -Infinity -> 1.000000000000000000000000000000004
dqnextt414 nexttoward 1.000000000000000000000000000000006 -Infinity -> 1.000000000000000000000000000000005
dqnextt415 nexttoward 1.000000000000000000000000000000007 -Infinity -> 1.000000000000000000000000000000006
dqnextt416 nexttoward 1.000000000000000000000000000000008 -Infinity -> 1.000000000000000000000000000000007
dqnextt417 nexttoward 1.000000000000000000000000000000009 -Infinity -> 1.000000000000000000000000000000008
dqnextt418 nexttoward 1.000000000000000000000000000000010 -Infinity -> 1.000000000000000000000000000000009
dqnextt419 nexttoward 1.000000000000000000000000000000011 -Infinity -> 1.000000000000000000000000000000010
dqnextt420 nexttoward 1.000000000000000000000000000000012 -Infinity -> 1.000000000000000000000000000000011
dqnextt421 nexttoward -0.9999999999999999999999999999999995 -Infinity -> -0.9999999999999999999999999999999996
dqnextt422 nexttoward -0.9999999999999999999999999999999996 -Infinity -> -0.9999999999999999999999999999999997
dqnextt423 nexttoward -0.9999999999999999999999999999999997 -Infinity -> -0.9999999999999999999999999999999998
dqnextt424 nexttoward -0.9999999999999999999999999999999998 -Infinity -> -0.9999999999999999999999999999999999
dqnextt425 nexttoward -0.9999999999999999999999999999999999 -Infinity -> -1.000000000000000000000000000000000
dqnextt426 nexttoward -1.000000000000000000000000000000000 -Infinity -> -1.000000000000000000000000000000001
dqnextt427 nexttoward -1.0 -Infinity -> -1.000000000000000000000000000000001
dqnextt428 nexttoward -1 -Infinity -> -1.000000000000000000000000000000001
dqnextt429 nexttoward -1.000000000000000000000000000000001 -Infinity -> -1.000000000000000000000000000000002
dqnextt430 nexttoward -1.000000000000000000000000000000002 -Infinity -> -1.000000000000000000000000000000003
dqnextt431 nexttoward -1.000000000000000000000000000000003 -Infinity -> -1.000000000000000000000000000000004
dqnextt432 nexttoward -1.000000000000000000000000000000004 -Infinity -> -1.000000000000000000000000000000005
dqnextt433 nexttoward -1.000000000000000000000000000000005 -Infinity -> -1.000000000000000000000000000000006
dqnextt434 nexttoward -1.000000000000000000000000000000006 -Infinity -> -1.000000000000000000000000000000007
dqnextt435 nexttoward -1.000000000000000000000000000000007 -Infinity -> -1.000000000000000000000000000000008
dqnextt436 nexttoward -1.000000000000000000000000000000008 -Infinity -> -1.000000000000000000000000000000009
dqnextt437 nexttoward -1.000000000000000000000000000000009 -Infinity -> -1.000000000000000000000000000000010
dqnextt438 nexttoward -1.000000000000000000000000000000010 -Infinity -> -1.000000000000000000000000000000011
dqnextt439 nexttoward -1.000000000000000000000000000000011 -Infinity -> -1.000000000000000000000000000000012
-- Zeros
dqnextt500 nexttoward -0 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt501 nexttoward 0 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt502 nexttoward 0.00 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt503 nexttoward -0.00 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt504 nexttoward 0E-300 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt505 nexttoward 0E+300 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt506 nexttoward 0E+30000 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt507 nexttoward -0E+30000 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
-- specials
dqnextt550 nexttoward Inf -Infinity -> 9.999999999999999999999999999999999E+6144
dqnextt551 nexttoward -Inf -Infinity -> -Infinity
dqnextt552 nexttoward NaN -Infinity -> NaN
dqnextt553 nexttoward sNaN -Infinity -> NaN Invalid_operation
dqnextt554 nexttoward NaN77 -Infinity -> NaN77
dqnextt555 nexttoward sNaN88 -Infinity -> NaN88 Invalid_operation
dqnextt556 nexttoward -NaN -Infinity -> -NaN
dqnextt557 nexttoward -sNaN -Infinity -> -NaN Invalid_operation
dqnextt558 nexttoward -NaN77 -Infinity -> -NaN77
dqnextt559 nexttoward -sNaN88 -Infinity -> -NaN88 Invalid_operation
-- Nmax, Nmin, Ntiny, subnormals
dqnextt670 nexttoward 9.999999999999999999999999999999999E+6144 -Infinity -> 9.999999999999999999999999999999998E+6144
dqnextt671 nexttoward 9.999999999999999999999999999999998E+6144 -Infinity -> 9.999999999999999999999999999999997E+6144
dqnextt672 nexttoward 1E-6143 -Infinity -> 9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded
dqnextt673 nexttoward 1.000000000000000000000000000000000E-6143 -Infinity -> 9.99999999999999999999999999999999E-6144 Underflow Subnormal Inexact Rounded
dqnextt674 nexttoward 9E-6176 -Infinity -> 8E-6176 Underflow Subnormal Inexact Rounded
dqnextt675 nexttoward 9.9E-6175 -Infinity -> 9.8E-6175 Underflow Subnormal Inexact Rounded
dqnextt676 nexttoward 9.99999999999999999999999999999E-6147 -Infinity -> 9.99999999999999999999999999998E-6147 Underflow Subnormal Inexact Rounded
dqnextt677 nexttoward 9.99999999999999999999999999999999E-6144 -Infinity -> 9.99999999999999999999999999999998E-6144 Underflow Subnormal Inexact Rounded
dqnextt678 nexttoward 9.99999999999999999999999999999998E-6144 -Infinity -> 9.99999999999999999999999999999997E-6144 Underflow Subnormal Inexact Rounded
dqnextt679 nexttoward 9.99999999999999999999999999999997E-6144 -Infinity -> 9.99999999999999999999999999999996E-6144 Underflow Subnormal Inexact Rounded
dqnextt680 nexttoward 0E-6176 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt681 nexttoward 1E-6176 -Infinity -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqnextt682 nexttoward 2E-6176 -Infinity -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt683 nexttoward -0E-6176 -Infinity -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt684 nexttoward -1E-6176 -Infinity -> -2E-6176 Underflow Subnormal Inexact Rounded
dqnextt685 nexttoward -2E-6176 -Infinity -> -3E-6176 Underflow Subnormal Inexact Rounded
dqnextt686 nexttoward -10E-6176 -Infinity -> -1.1E-6175 Underflow Subnormal Inexact Rounded
dqnextt687 nexttoward -100E-6176 -Infinity -> -1.01E-6174 Underflow Subnormal Inexact Rounded
dqnextt688 nexttoward -100000E-6176 -Infinity -> -1.00001E-6171 Underflow Subnormal Inexact Rounded
dqnextt689 nexttoward -1.00000000000000000000000000000E-6143 -Infinity -> -1.000000000000000000000000000000001E-6143
dqnextt690 nexttoward -1.000000000000000000000000000000000E-6143 -Infinity -> -1.000000000000000000000000000000001E-6143
dqnextt691 nexttoward -1E-6143 -Infinity -> -1.000000000000000000000000000000001E-6143
dqnextt692 nexttoward -9.999999999999999999999999999999998E+6144 -Infinity -> -9.999999999999999999999999999999999E+6144
dqnextt693 nexttoward -9.999999999999999999999999999999999E+6144 -Infinity -> -Infinity Overflow Inexact Rounded
------- Specials
dqnextt780 nexttoward -Inf -Inf -> -Infinity
dqnextt781 nexttoward -Inf -1000 -> -9.999999999999999999999999999999999E+6144
dqnextt782 nexttoward -Inf -1 -> -9.999999999999999999999999999999999E+6144
dqnextt783 nexttoward -Inf -0 -> -9.999999999999999999999999999999999E+6144
dqnextt784 nexttoward -Inf 0 -> -9.999999999999999999999999999999999E+6144
dqnextt785 nexttoward -Inf 1 -> -9.999999999999999999999999999999999E+6144
dqnextt786 nexttoward -Inf 1000 -> -9.999999999999999999999999999999999E+6144
dqnextt787 nexttoward -1000 -Inf -> -1000.000000000000000000000000000001
dqnextt788 nexttoward -Inf -Inf -> -Infinity
dqnextt789 nexttoward -1 -Inf -> -1.000000000000000000000000000000001
dqnextt790 nexttoward -0 -Inf -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt791 nexttoward 0 -Inf -> -1E-6176 Underflow Subnormal Inexact Rounded
dqnextt792 nexttoward 1 -Inf -> 0.9999999999999999999999999999999999
dqnextt793 nexttoward 1000 -Inf -> 999.9999999999999999999999999999999
dqnextt794 nexttoward Inf -Inf -> 9.999999999999999999999999999999999E+6144
dqnextt800 nexttoward Inf -Inf -> 9.999999999999999999999999999999999E+6144
dqnextt801 nexttoward Inf -1000 -> 9.999999999999999999999999999999999E+6144
dqnextt802 nexttoward Inf -1 -> 9.999999999999999999999999999999999E+6144
dqnextt803 nexttoward Inf -0 -> 9.999999999999999999999999999999999E+6144
dqnextt804 nexttoward Inf 0 -> 9.999999999999999999999999999999999E+6144
dqnextt805 nexttoward Inf 1 -> 9.999999999999999999999999999999999E+6144
dqnextt806 nexttoward Inf 1000 -> 9.999999999999999999999999999999999E+6144
dqnextt807 nexttoward Inf Inf -> Infinity
dqnextt808 nexttoward -1000 Inf -> -999.9999999999999999999999999999999
dqnextt809 nexttoward -Inf Inf -> -9.999999999999999999999999999999999E+6144
dqnextt810 nexttoward -1 Inf -> -0.9999999999999999999999999999999999
dqnextt811 nexttoward -0 Inf -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt812 nexttoward 0 Inf -> 1E-6176 Underflow Subnormal Inexact Rounded
dqnextt813 nexttoward 1 Inf -> 1.000000000000000000000000000000001
dqnextt814 nexttoward 1000 Inf -> 1000.000000000000000000000000000001
dqnextt815 nexttoward Inf Inf -> Infinity
dqnextt821 nexttoward NaN -Inf -> NaN
dqnextt822 nexttoward NaN -1000 -> NaN
dqnextt823 nexttoward NaN -1 -> NaN
dqnextt824 nexttoward NaN -0 -> NaN
dqnextt825 nexttoward NaN 0 -> NaN
dqnextt826 nexttoward NaN 1 -> NaN
dqnextt827 nexttoward NaN 1000 -> NaN
dqnextt828 nexttoward NaN Inf -> NaN
dqnextt829 nexttoward NaN NaN -> NaN
dqnextt830 nexttoward -Inf NaN -> NaN
dqnextt831 nexttoward -1000 NaN -> NaN
dqnextt832 nexttoward -1 NaN -> NaN
dqnextt833 nexttoward -0 NaN -> NaN
dqnextt834 nexttoward 0 NaN -> NaN
dqnextt835 nexttoward 1 NaN -> NaN
dqnextt836 nexttoward 1000 NaN -> NaN
dqnextt837 nexttoward Inf NaN -> NaN
dqnextt841 nexttoward sNaN -Inf -> NaN Invalid_operation
dqnextt842 nexttoward sNaN -1000 -> NaN Invalid_operation
dqnextt843 nexttoward sNaN -1 -> NaN Invalid_operation
dqnextt844 nexttoward sNaN -0 -> NaN Invalid_operation
dqnextt845 nexttoward sNaN 0 -> NaN Invalid_operation
dqnextt846 nexttoward sNaN 1 -> NaN Invalid_operation
dqnextt847 nexttoward sNaN 1000 -> NaN Invalid_operation
dqnextt848 nexttoward sNaN NaN -> NaN Invalid_operation
dqnextt849 nexttoward sNaN sNaN -> NaN Invalid_operation
dqnextt850 nexttoward NaN sNaN -> NaN Invalid_operation
dqnextt851 nexttoward -Inf sNaN -> NaN Invalid_operation
dqnextt852 nexttoward -1000 sNaN -> NaN Invalid_operation
dqnextt853 nexttoward -1 sNaN -> NaN Invalid_operation
dqnextt854 nexttoward -0 sNaN -> NaN Invalid_operation
dqnextt855 nexttoward 0 sNaN -> NaN Invalid_operation
dqnextt856 nexttoward 1 sNaN -> NaN Invalid_operation
dqnextt857 nexttoward 1000 sNaN -> NaN Invalid_operation
dqnextt858 nexttoward Inf sNaN -> NaN Invalid_operation
dqnextt859 nexttoward NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqnextt861 nexttoward NaN1 -Inf -> NaN1
dqnextt862 nexttoward +NaN2 -1000 -> NaN2
dqnextt863 nexttoward NaN3 1000 -> NaN3
dqnextt864 nexttoward NaN4 Inf -> NaN4
dqnextt865 nexttoward NaN5 +NaN6 -> NaN5
dqnextt866 nexttoward -Inf NaN7 -> NaN7
dqnextt867 nexttoward -1000 NaN8 -> NaN8
dqnextt868 nexttoward 1000 NaN9 -> NaN9
dqnextt869 nexttoward Inf +NaN10 -> NaN10
dqnextt871 nexttoward sNaN11 -Inf -> NaN11 Invalid_operation
dqnextt872 nexttoward sNaN12 -1000 -> NaN12 Invalid_operation
dqnextt873 nexttoward sNaN13 1000 -> NaN13 Invalid_operation
dqnextt874 nexttoward sNaN14 NaN17 -> NaN14 Invalid_operation
dqnextt875 nexttoward sNaN15 sNaN18 -> NaN15 Invalid_operation
dqnextt876 nexttoward NaN16 sNaN19 -> NaN19 Invalid_operation
dqnextt877 nexttoward -Inf +sNaN20 -> NaN20 Invalid_operation
dqnextt878 nexttoward -1000 sNaN21 -> NaN21 Invalid_operation
dqnextt879 nexttoward 1000 sNaN22 -> NaN22 Invalid_operation
dqnextt880 nexttoward Inf sNaN23 -> NaN23 Invalid_operation
dqnextt881 nexttoward +NaN25 +sNaN24 -> NaN24 Invalid_operation
dqnextt882 nexttoward -NaN26 NaN28 -> -NaN26
dqnextt883 nexttoward -sNaN27 sNaN29 -> -NaN27 Invalid_operation
dqnextt884 nexttoward 1000 -NaN30 -> -NaN30
dqnextt885 nexttoward 1000 -sNaN31 -> -NaN31 Invalid_operation
-- Null tests
dqnextt900 nexttoward 1 # -> NaN Invalid_operation
dqnextt901 nexttoward # 1 -> NaN Invalid_operation

View file

@ -0,0 +1,401 @@
------------------------------------------------------------------------
-- dqOr.decTest -- digitwise logical OR for decQuads --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check (truth table)
dqor001 or 0 0 -> 0
dqor002 or 0 1 -> 1
dqor003 or 1 0 -> 1
dqor004 or 1 1 -> 1
dqor005 or 1100 1010 -> 1110
-- and at msd and msd-1
dqor006 or 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0
dqor007 or 0000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000
dqor008 or 1000000000000000000000000000000000 0000000000000000000000000000000000 -> 1000000000000000000000000000000000
dqor009 or 1000000000000000000000000000000000 1000000000000000000000000000000000 -> 1000000000000000000000000000000000
dqor010 or 0000000000000000000000000000000000 0000000000000000000000000000000000 -> 0
dqor011 or 0000000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000
dqor012 or 0100000000000000000000000000000000 0000000000000000000000000000000000 -> 100000000000000000000000000000000
dqor013 or 0100000000000000000000000000000000 0100000000000000000000000000000000 -> 100000000000000000000000000000000
-- Various lengths
dqor601 or 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111111
dqor602 or 1011111111111111111111111111111111 1111111111111111111111111111111101 -> 1111111111111111111111111111111111
dqor603 or 1101111111111111111111111111111111 1111111111111111111111111111111011 -> 1111111111111111111111111111111111
dqor604 or 1110111111111111111111111111111111 1111111111111111111111111111110111 -> 1111111111111111111111111111111111
dqor605 or 1111011111111111111111111111111111 1111111111111111111111111111101111 -> 1111111111111111111111111111111111
dqor606 or 1111101111111111111111111111111111 1111111111111111111111111111011111 -> 1111111111111111111111111111111111
dqor607 or 1111110111111111111111111111111111 1111111111111111111111111110111111 -> 1111111111111111111111111111111111
dqor608 or 1111111011111111111111111111111111 1111111111111111111111111101111111 -> 1111111111111111111111111111111111
dqor609 or 1111111101111111111111111111111111 1111111111111111111111111011111111 -> 1111111111111111111111111111111111
dqor610 or 1111111110111111111111111111111111 1111111111111111111111110111111111 -> 1111111111111111111111111111111111
dqor611 or 1111111111011111111111111111111111 1111111111111111111111101111111111 -> 1111111111111111111111111111111111
dqor612 or 1111111111101111111111111111111111 1111111111111111111111011111111111 -> 1111111111111111111111111111111111
dqor613 or 1111111111110111111111111111111111 1111111111111111111110111111111111 -> 1111111111111111111111111111111111
dqor614 or 1111111111111011111111111111111111 1111111111111111111101111111111111 -> 1111111111111111111111111111111111
dqor615 or 1111111111111101111111111111111111 1111111111111111111011111111111111 -> 1111111111111111111111111111111111
dqor616 or 1111111111111110111111111111111111 1111111111111111110111111111111111 -> 1111111111111111111111111111111111
dqor617 or 1111111111111111011111111111111111 1111111111111111101111111111111111 -> 1111111111111111111111111111111111
dqor618 or 1111111111111111101111111111111111 1111111111111111011111111111111111 -> 1111111111111111111111111111111111
dqor619 or 1111111111111111110111111111111111 1111111111111110111111111111111111 -> 1111111111111111111111111111111111
dqor620 or 1111111111111111111011111111111111 1111111111111101111111111111111111 -> 1111111111111111111111111111111111
dqor621 or 1111111111111111111101111111111111 1111111111111011111111111111111111 -> 1111111111111111111111111111111111
dqor622 or 1111111111111111111110111111111111 1111111111110111111111111111111111 -> 1111111111111111111111111111111111
dqor623 or 1111111111111111111111011111111111 1111111111101111111111111111111111 -> 1111111111111111111111111111111111
dqor624 or 1111111111111111111111101111111111 1111111111011111111111111111111111 -> 1111111111111111111111111111111111
dqor625 or 1111111111111111111111110111111111 1111111110111111111111111111111111 -> 1111111111111111111111111111111111
dqor626 or 1111111111111111111111111011111111 1111111101111111111111111111111111 -> 1111111111111111111111111111111111
dqor627 or 1111111111111111111111111101111111 1111111011111111111111111111111111 -> 1111111111111111111111111111111111
dqor628 or 1111111111111111111111111110111111 1111110111111111111111111111111111 -> 1111111111111111111111111111111111
dqor629 or 1111111111111111111111111111011111 1111101111111111111111111111111111 -> 1111111111111111111111111111111111
dqor630 or 1111111111111111111111111111101111 1111011111111111111111111111111111 -> 1111111111111111111111111111111111
dqor631 or 1111111111111111111111111111110111 1110111111111111111111111111111111 -> 1111111111111111111111111111111111
dqor632 or 1111111111111111111111111111111011 1101111111111111111111111111111111 -> 1111111111111111111111111111111111
dqor633 or 1111111111111111111111111111111101 1011111111111111111111111111111111 -> 1111111111111111111111111111111111
dqor634 or 1111111111111111111111111111111110 0111111111111111111111111111111111 -> 1111111111111111111111111111111111
dqor641 or 1111111111111111111111111111111110 0111111111111111111111111111111111 -> 1111111111111111111111111111111111
dqor642 or 1111111111111111111111111111111101 1011111111111111111111111111111111 -> 1111111111111111111111111111111111
dqor643 or 1111111111111111111111111111111011 1101111111111111111111111111111111 -> 1111111111111111111111111111111111
dqor644 or 1111111111111111111111111111110111 1110111111111111111111111111111111 -> 1111111111111111111111111111111111
dqor645 or 1111111111111111111111111111101111 1111011111111111111111111111111111 -> 1111111111111111111111111111111111
dqor646 or 1111111111111111111111111111011111 1111101111111111111111111111111111 -> 1111111111111111111111111111111111
dqor647 or 1111111111111111111111111110111111 1111110111111111111111111111111111 -> 1111111111111111111111111111111111
dqor648 or 1111111111111111111111111101111111 1111111011111111111111111111111111 -> 1111111111111111111111111111111111
dqor649 or 1111111111111111111111111011111111 1111111101111111111111111111111111 -> 1111111111111111111111111111111111
dqor650 or 1111111111111111111111110111111111 1111111110111111111111111111111111 -> 1111111111111111111111111111111111
dqor651 or 1111111111111111111111101111111111 1111111111011111111111111111111111 -> 1111111111111111111111111111111111
dqor652 or 1111111111111111111111011111111111 1111111111101111111111111111111111 -> 1111111111111111111111111111111111
dqor653 or 1111111111111111111110111111111111 1111111111110111111111111111111111 -> 1111111111111111111111111111111111
dqor654 or 1111111111111111111101111111111111 1111111111111011111111111111111111 -> 1111111111111111111111111111111111
dqor655 or 1111111111111111111011111111111111 1111111111111101111111111111111111 -> 1111111111111111111111111111111111
dqor656 or 1111111111111111110111111111111111 1111111111111110111111111111111111 -> 1111111111111111111111111111111111
dqor657 or 1010101010101010101010101010101010 1010101010101010001010101010101010 -> 1010101010101010101010101010101010
dqor658 or 1111111111111111011111111111111111 1111111111111111101111111111111111 -> 1111111111111111111111111111111111
dqor659 or 1111111111111110111111111111111111 1111111111111111110111111111111111 -> 1111111111111111111111111111111111
dqor660 or 1111111111111101111111111111111111 1111111111111111111011111111111111 -> 1111111111111111111111111111111111
dqor661 or 1111111111111011111111111111111111 1111111111111111111101111111111111 -> 1111111111111111111111111111111111
dqor662 or 1111111111110111111111111111111111 1111111111111111111110111111111111 -> 1111111111111111111111111111111111
dqor663 or 1111111111101111111111111111111111 1111111111111111111111011111111111 -> 1111111111111111111111111111111111
dqor664 or 1111111111011111111111111111111111 1111111111111111111111101111111111 -> 1111111111111111111111111111111111
dqor665 or 1111111110111111111111111111111111 1111111111111111111111110111111111 -> 1111111111111111111111111111111111
dqor666 or 0101010101010101010101010101010101 0101010101010101010101010001010101 -> 101010101010101010101010101010101
dqor667 or 1111111011111111111111111111111111 1111111111111111111111111101111111 -> 1111111111111111111111111111111111
dqor668 or 1111110111111111111111111111111111 1111111111111111111111111110111111 -> 1111111111111111111111111111111111
dqor669 or 1111101111111111111111111111111111 1111111111111111111111111111011111 -> 1111111111111111111111111111111111
dqor670 or 1111011111111111111111111111111111 1111111111111111111111111111101111 -> 1111111111111111111111111111111111
dqor671 or 1110111111111111111111111111111111 1111111111111111111111111111110111 -> 1111111111111111111111111111111111
dqor672 or 1101111111111111111111111111111111 1111111111111111111111111111111011 -> 1111111111111111111111111111111111
dqor673 or 1011111111111111111111111111111111 1111111111111111111111111111111101 -> 1111111111111111111111111111111111
dqor674 or 0111111111111111111111111111111111 1111111111111111111111111111111110 -> 1111111111111111111111111111111111
dqor675 or 0111111111111111111111111111111110 1111111111111111111111111111111110 -> 1111111111111111111111111111111110
dqor676 or 1111111111111111111111111111111110 1111111111111111111111111111111110 -> 1111111111111111111111111111111110
dqor681 or 0111111111111111111111111111111111 0111111111011111111111111111111110 -> 111111111111111111111111111111111
dqor682 or 1011111111111111111111111111111111 1011111110101111111111111111111101 -> 1011111111111111111111111111111111
dqor683 or 1101111111111111111111111111111111 1101111101110111111111111111111011 -> 1101111111111111111111111111111111
dqor684 or 1110111111111111111111111111111111 1110111011111011111111111111110111 -> 1110111111111111111111111111111111
dqor685 or 1111011111111111111111111111111111 1111010111111101111111111111101111 -> 1111011111111111111111111111111111
dqor686 or 1111101111111111111111111111111111 1111101111111110111111111111011111 -> 1111101111111111111111111111111111
dqor687 or 1111110111111111111111111111111111 1111010111111111011111111110111111 -> 1111110111111111111111111111111111
dqor688 or 1111111011111111111111111111111111 1110111011111111101111111101111111 -> 1111111011111111111111111111111111
dqor689 or 1111111101111111111111111111111111 1101111101111111110111111011111111 -> 1111111101111111111111111111111111
dqor690 or 1111111110111111111111111111111111 1011111110111111111011110111111110 -> 1111111110111111111111111111111111
dqor691 or 1111111111011111111111111111111111 0111111111011111111101101111111101 -> 1111111111011111111111111111111111
dqor692 or 1111111111101111111111111111111111 1111111111101111111110011111111011 -> 1111111111101111111111111111111111
dqor693 or 1111111111110111111111111111111111 1111111111110111111110011111110111 -> 1111111111110111111111111111111111
dqor694 or 1111111111111011111111111111111111 1111111111111011111101101111101111 -> 1111111111111011111111111111111111
dqor695 or 1111111111111101111111111111111111 1111111111111101111011110111011111 -> 1111111111111101111111111111111111
dqor696 or 1111111111111110111111111111111111 1111111111111110110111111010111111 -> 1111111111111110111111111111111111
dqor697 or 1111111111111111011111111111111111 1111111111111111001111111101111111 -> 1111111111111111011111111111111111
dqor698 or 1111111111111111101111111111111111 1111111111111111001111111010111111 -> 1111111111111111101111111111111111
dqor699 or 1111111111111111110111111111111111 1111111111111110110111110111011111 -> 1111111111111111110111111111111111
dqor700 or 1111111111111111111011111111111111 1111111111111101111011101111101111 -> 1111111111111111111011111111111111
dqor701 or 1111111111111111111101111111111111 1111111111111011111101011111110111 -> 1111111111111111111101111111111111
dqor702 or 1111111111111111111110111111111111 1111111111110111111110111111111011 -> 1111111111111111111110111111111111
dqor703 or 1111111111111111111111011111111111 1111111111101111111101011111111101 -> 1111111111111111111111011111111111
dqor704 or 1111111111111111111111101111111111 1111111111011111111011101111111110 -> 1111111111111111111111101111111111
dqor705 or 1111111111111111111111110111111111 0111111110111111110111110111111111 -> 1111111111111111111111110111111111
dqor706 or 1111111111111111111111111011111111 1011111101111111101111111011111111 -> 1111111111111111111111111011111111
dqor707 or 1111111111111111111111111101111111 1101111011111111011111111101111111 -> 1111111111111111111111111101111111
dqor708 or 1111111111111111111111111110111111 1110110111111110111111111110111111 -> 1111111111111111111111111110111111
dqor709 or 1111111111111111111111111111011111 1111001111111101111111111111011111 -> 1111111111111111111111111111011111
dqor710 or 1111111111111111111111111111101111 1111001111111011111111111111101111 -> 1111111111111111111111111111101111
dqor711 or 1111111111111111111111111111110111 1110110111110111111111111111110111 -> 1111111111111111111111111111110111
dqor712 or 1111111111111111111111111111111011 1101111011101111111111111111111011 -> 1111111111111111111111111111111011
dqor713 or 1111111111111111111111111111111101 1011111101011111111111111111111101 -> 1111111111111111111111111111111101
dqor714 or 1111111111111111111111111111111110 0111111110111111111111111111111110 -> 1111111111111111111111111111111110
-- 1234567890123456 1234567890123456 1234567890123456
dqor020 or 1111111111111111 1111111111111111 -> 1111111111111111
dqor021 or 111111111111111 111111111111111 -> 111111111111111
dqor022 or 11111111111111 11111111111111 -> 11111111111111
dqor023 or 1111111111111 1111111111111 -> 1111111111111
dqor024 or 111111111111 111111111111 -> 111111111111
dqor025 or 11111111111 11111111111 -> 11111111111
dqor026 or 1111111111 1111111111 -> 1111111111
dqor027 or 111111111 111111111 -> 111111111
dqor028 or 11111111 11111111 -> 11111111
dqor029 or 1111111 1111111 -> 1111111
dqor030 or 111111 111111 -> 111111
dqor031 or 11111 11111 -> 11111
dqor032 or 1111 1111 -> 1111
dqor033 or 111 111 -> 111
dqor034 or 11 11 -> 11
dqor035 or 1 1 -> 1
dqor036 or 0 0 -> 0
dqor042 or 111111110000000 1111111110000000 -> 1111111110000000
dqor043 or 11111110000000 1000000100000000 -> 1011111110000000
dqor044 or 1111110000000 1000001000000000 -> 1001111110000000
dqor045 or 111110000000 1000010000000000 -> 1000111110000000
dqor046 or 11110000000 1000100000000000 -> 1000111110000000
dqor047 or 1110000000 1001000000000000 -> 1001001110000000
dqor048 or 110000000 1010000000000000 -> 1010000110000000
dqor049 or 10000000 1100000000000000 -> 1100000010000000
dqor090 or 011111111 111101111 -> 111111111
dqor091 or 101111111 111101111 -> 111111111
dqor092 or 110111111 111101111 -> 111111111
dqor093 or 111011111 111101111 -> 111111111
dqor094 or 111101111 111101111 -> 111101111
dqor095 or 111110111 111101111 -> 111111111
dqor096 or 111111011 111101111 -> 111111111
dqor097 or 111111101 111101111 -> 111111111
dqor098 or 111111110 111101111 -> 111111111
dqor100 or 111101111 011111111 -> 111111111
dqor101 or 111101111 101111111 -> 111111111
dqor102 or 111101111 110111111 -> 111111111
dqor103 or 111101111 111011111 -> 111111111
dqor104 or 111101111 111101111 -> 111101111
dqor105 or 111101111 111110111 -> 111111111
dqor106 or 111101111 111111011 -> 111111111
dqor107 or 111101111 111111101 -> 111111111
dqor108 or 111101111 111111110 -> 111111111
-- non-0/1 should not be accepted, nor should signs
dqor220 or 111111112 111111111 -> NaN Invalid_operation
dqor221 or 333333333 333333333 -> NaN Invalid_operation
dqor222 or 555555555 555555555 -> NaN Invalid_operation
dqor223 or 777777777 777777777 -> NaN Invalid_operation
dqor224 or 999999999 999999999 -> NaN Invalid_operation
dqor225 or 222222222 999999999 -> NaN Invalid_operation
dqor226 or 444444444 999999999 -> NaN Invalid_operation
dqor227 or 666666666 999999999 -> NaN Invalid_operation
dqor228 or 888888888 999999999 -> NaN Invalid_operation
dqor229 or 999999999 222222222 -> NaN Invalid_operation
dqor230 or 999999999 444444444 -> NaN Invalid_operation
dqor231 or 999999999 666666666 -> NaN Invalid_operation
dqor232 or 999999999 888888888 -> NaN Invalid_operation
-- a few randoms
dqor240 or 567468689 -934981942 -> NaN Invalid_operation
dqor241 or 567367689 934981942 -> NaN Invalid_operation
dqor242 or -631917772 -706014634 -> NaN Invalid_operation
dqor243 or -756253257 138579234 -> NaN Invalid_operation
dqor244 or 835590149 567435400 -> NaN Invalid_operation
-- test MSD
dqor250 or 2000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation
dqor251 or 7000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation
dqor252 or 8000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation
dqor253 or 9000000111000111000111000000000000 1000000111000111000111000000000000 -> NaN Invalid_operation
dqor254 or 2000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation
dqor255 or 7000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation
dqor256 or 8000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation
dqor257 or 9000000111000111000111000000000000 0000000111000111000111000000000000 -> NaN Invalid_operation
dqor258 or 1000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation
dqor259 or 1000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation
dqor260 or 1000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation
dqor261 or 1000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation
dqor262 or 0000000111000111000111000000000000 2000000111000111000111000000000000 -> NaN Invalid_operation
dqor263 or 0000000111000111000111000000000000 7000000111000111000111000000000000 -> NaN Invalid_operation
dqor264 or 0000000111000111000111000000000000 8000000111000111000111000000000000 -> NaN Invalid_operation
dqor265 or 0000000111000111000111000000000000 9000000111000111000111000000000000 -> NaN Invalid_operation
-- test MSD-1
dqor270 or 0200000111000111000111001000000000 1000000111000111000111100000000010 -> NaN Invalid_operation
dqor271 or 0700000111000111000111000100000000 1000000111000111000111010000000100 -> NaN Invalid_operation
dqor272 or 0800000111000111000111000010000000 1000000111000111000111001000001000 -> NaN Invalid_operation
dqor273 or 0900000111000111000111000001000000 1000000111000111000111000100010000 -> NaN Invalid_operation
dqor274 or 1000000111000111000111000000100000 0200000111000111000111000010100000 -> NaN Invalid_operation
dqor275 or 1000000111000111000111000000010000 0700000111000111000111000001000000 -> NaN Invalid_operation
dqor276 or 1000000111000111000111000000001000 0800000111000111000111000010100000 -> NaN Invalid_operation
dqor277 or 1000000111000111000111000000000100 0900000111000111000111000000010000 -> NaN Invalid_operation
-- test LSD
dqor280 or 0010000111000111000111000000000002 1000000111000111000111000100000001 -> NaN Invalid_operation
dqor281 or 0001000111000111000111000000000007 1000000111000111000111001000000011 -> NaN Invalid_operation
dqor282 or 0000000111000111000111100000000008 1000000111000111000111010000000001 -> NaN Invalid_operation
dqor283 or 0000000111000111000111010000000009 1000000111000111000111100000000001 -> NaN Invalid_operation
dqor284 or 1000000111000111000111001000000000 0001000111000111000111000000000002 -> NaN Invalid_operation
dqor285 or 1000000111000111000111000100000000 0010000111000111000111000000000007 -> NaN Invalid_operation
dqor286 or 1000000111000111000111000010000000 0100000111000111000111000000000008 -> NaN Invalid_operation
dqor287 or 1000000111000111000111000001000000 1000000111000111000111000000000009 -> NaN Invalid_operation
-- test Middie
dqor288 or 0010000111000111000111000020000000 1000000111000111000111001000000000 -> NaN Invalid_operation
dqor289 or 0001000111000111000111000070000001 1000000111000111000111000100000000 -> NaN Invalid_operation
dqor290 or 0000000111000111000111100080000010 1000000111000111000111000010000000 -> NaN Invalid_operation
dqor291 or 0000000111000111000111010090000100 1000000111000111000111000001000000 -> NaN Invalid_operation
dqor292 or 1000000111000111000111001000001000 0000000111000111000111000020100000 -> NaN Invalid_operation
dqor293 or 1000000111000111000111000100010000 0000000111000111000111000070010000 -> NaN Invalid_operation
dqor294 or 1000000111000111000111000010100000 0000000111000111000111000080001000 -> NaN Invalid_operation
dqor295 or 1000000111000111000111000001000000 0000000111000111000111000090000100 -> NaN Invalid_operation
-- signs
dqor296 or -1000000111000111000111000001000000 -0000001110001110001110010000000100 -> NaN Invalid_operation
dqor297 or -1000000111000111000111000001000000 0000001110001110001110000010000100 -> NaN Invalid_operation
dqor298 or 1000000111000111000111000001000000 -0000001110001110001110001000000100 -> NaN Invalid_operation
dqor299 or 1000000111000111000111000001000000 0000001110001110001110000011000100 -> 1000001111001111001111000011000100
-- Nmax, Nmin, Ntiny-like
dqor331 or 2 9.99999999E+1999 -> NaN Invalid_operation
dqor332 or 3 1E-1999 -> NaN Invalid_operation
dqor333 or 4 1.00000000E-1999 -> NaN Invalid_operation
dqor334 or 5 1E-1009 -> NaN Invalid_operation
dqor335 or 6 -1E-1009 -> NaN Invalid_operation
dqor336 or 7 -1.00000000E-1999 -> NaN Invalid_operation
dqor337 or 8 -1E-1999 -> NaN Invalid_operation
dqor338 or 9 -9.99999999E+1999 -> NaN Invalid_operation
dqor341 or 9.99999999E+2999 -18 -> NaN Invalid_operation
dqor342 or 1E-2999 01 -> NaN Invalid_operation
dqor343 or 1.00000000E-2999 -18 -> NaN Invalid_operation
dqor344 or 1E-1009 18 -> NaN Invalid_operation
dqor345 or -1E-1009 -10 -> NaN Invalid_operation
dqor346 or -1.00000000E-2999 18 -> NaN Invalid_operation
dqor347 or -1E-2999 10 -> NaN Invalid_operation
dqor348 or -9.99999999E+2999 -18 -> NaN Invalid_operation
-- A few other non-integers
dqor361 or 1.0 1 -> NaN Invalid_operation
dqor362 or 1E+1 1 -> NaN Invalid_operation
dqor363 or 0.0 1 -> NaN Invalid_operation
dqor364 or 0E+1 1 -> NaN Invalid_operation
dqor365 or 9.9 1 -> NaN Invalid_operation
dqor366 or 9E+1 1 -> NaN Invalid_operation
dqor371 or 0 1.0 -> NaN Invalid_operation
dqor372 or 0 1E+1 -> NaN Invalid_operation
dqor373 or 0 0.0 -> NaN Invalid_operation
dqor374 or 0 0E+1 -> NaN Invalid_operation
dqor375 or 0 9.9 -> NaN Invalid_operation
dqor376 or 0 9E+1 -> NaN Invalid_operation
-- All Specials are in error
dqor780 or -Inf -Inf -> NaN Invalid_operation
dqor781 or -Inf -1000 -> NaN Invalid_operation
dqor782 or -Inf -1 -> NaN Invalid_operation
dqor783 or -Inf -0 -> NaN Invalid_operation
dqor784 or -Inf 0 -> NaN Invalid_operation
dqor785 or -Inf 1 -> NaN Invalid_operation
dqor786 or -Inf 1000 -> NaN Invalid_operation
dqor787 or -1000 -Inf -> NaN Invalid_operation
dqor788 or -Inf -Inf -> NaN Invalid_operation
dqor789 or -1 -Inf -> NaN Invalid_operation
dqor790 or -0 -Inf -> NaN Invalid_operation
dqor791 or 0 -Inf -> NaN Invalid_operation
dqor792 or 1 -Inf -> NaN Invalid_operation
dqor793 or 1000 -Inf -> NaN Invalid_operation
dqor794 or Inf -Inf -> NaN Invalid_operation
dqor800 or Inf -Inf -> NaN Invalid_operation
dqor801 or Inf -1000 -> NaN Invalid_operation
dqor802 or Inf -1 -> NaN Invalid_operation
dqor803 or Inf -0 -> NaN Invalid_operation
dqor804 or Inf 0 -> NaN Invalid_operation
dqor805 or Inf 1 -> NaN Invalid_operation
dqor806 or Inf 1000 -> NaN Invalid_operation
dqor807 or Inf Inf -> NaN Invalid_operation
dqor808 or -1000 Inf -> NaN Invalid_operation
dqor809 or -Inf Inf -> NaN Invalid_operation
dqor810 or -1 Inf -> NaN Invalid_operation
dqor811 or -0 Inf -> NaN Invalid_operation
dqor812 or 0 Inf -> NaN Invalid_operation
dqor813 or 1 Inf -> NaN Invalid_operation
dqor814 or 1000 Inf -> NaN Invalid_operation
dqor815 or Inf Inf -> NaN Invalid_operation
dqor821 or NaN -Inf -> NaN Invalid_operation
dqor822 or NaN -1000 -> NaN Invalid_operation
dqor823 or NaN -1 -> NaN Invalid_operation
dqor824 or NaN -0 -> NaN Invalid_operation
dqor825 or NaN 0 -> NaN Invalid_operation
dqor826 or NaN 1 -> NaN Invalid_operation
dqor827 or NaN 1000 -> NaN Invalid_operation
dqor828 or NaN Inf -> NaN Invalid_operation
dqor829 or NaN NaN -> NaN Invalid_operation
dqor830 or -Inf NaN -> NaN Invalid_operation
dqor831 or -1000 NaN -> NaN Invalid_operation
dqor832 or -1 NaN -> NaN Invalid_operation
dqor833 or -0 NaN -> NaN Invalid_operation
dqor834 or 0 NaN -> NaN Invalid_operation
dqor835 or 1 NaN -> NaN Invalid_operation
dqor836 or 1000 NaN -> NaN Invalid_operation
dqor837 or Inf NaN -> NaN Invalid_operation
dqor841 or sNaN -Inf -> NaN Invalid_operation
dqor842 or sNaN -1000 -> NaN Invalid_operation
dqor843 or sNaN -1 -> NaN Invalid_operation
dqor844 or sNaN -0 -> NaN Invalid_operation
dqor845 or sNaN 0 -> NaN Invalid_operation
dqor846 or sNaN 1 -> NaN Invalid_operation
dqor847 or sNaN 1000 -> NaN Invalid_operation
dqor848 or sNaN NaN -> NaN Invalid_operation
dqor849 or sNaN sNaN -> NaN Invalid_operation
dqor850 or NaN sNaN -> NaN Invalid_operation
dqor851 or -Inf sNaN -> NaN Invalid_operation
dqor852 or -1000 sNaN -> NaN Invalid_operation
dqor853 or -1 sNaN -> NaN Invalid_operation
dqor854 or -0 sNaN -> NaN Invalid_operation
dqor855 or 0 sNaN -> NaN Invalid_operation
dqor856 or 1 sNaN -> NaN Invalid_operation
dqor857 or 1000 sNaN -> NaN Invalid_operation
dqor858 or Inf sNaN -> NaN Invalid_operation
dqor859 or NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqor861 or NaN1 -Inf -> NaN Invalid_operation
dqor862 or +NaN2 -1000 -> NaN Invalid_operation
dqor863 or NaN3 1000 -> NaN Invalid_operation
dqor864 or NaN4 Inf -> NaN Invalid_operation
dqor865 or NaN5 +NaN6 -> NaN Invalid_operation
dqor866 or -Inf NaN7 -> NaN Invalid_operation
dqor867 or -1000 NaN8 -> NaN Invalid_operation
dqor868 or 1000 NaN9 -> NaN Invalid_operation
dqor869 or Inf +NaN10 -> NaN Invalid_operation
dqor871 or sNaN11 -Inf -> NaN Invalid_operation
dqor872 or sNaN12 -1000 -> NaN Invalid_operation
dqor873 or sNaN13 1000 -> NaN Invalid_operation
dqor874 or sNaN14 NaN17 -> NaN Invalid_operation
dqor875 or sNaN15 sNaN18 -> NaN Invalid_operation
dqor876 or NaN16 sNaN19 -> NaN Invalid_operation
dqor877 or -Inf +sNaN20 -> NaN Invalid_operation
dqor878 or -1000 sNaN21 -> NaN Invalid_operation
dqor879 or 1000 sNaN22 -> NaN Invalid_operation
dqor880 or Inf sNaN23 -> NaN Invalid_operation
dqor881 or +NaN25 +sNaN24 -> NaN Invalid_operation
dqor882 or -NaN26 NaN28 -> NaN Invalid_operation
dqor883 or -sNaN27 sNaN29 -> NaN Invalid_operation
dqor884 or 1000 -NaN30 -> NaN Invalid_operation
dqor885 or 1000 -sNaN31 -> NaN Invalid_operation

View file

@ -0,0 +1,88 @@
------------------------------------------------------------------------
-- dqPlus.decTest -- decQuad 0+x --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check
dqpls001 plus +7.50 -> 7.50
-- Infinities
dqpls011 plus Infinity -> Infinity
dqpls012 plus -Infinity -> -Infinity
-- NaNs, 0 payload
ddqls021 plus NaN -> NaN
ddqls022 plus -NaN -> -NaN
ddqls023 plus sNaN -> NaN Invalid_operation
ddqls024 plus -sNaN -> -NaN Invalid_operation
-- NaNs, non-0 payload
ddqls031 plus NaN13 -> NaN13
ddqls032 plus -NaN13 -> -NaN13
ddqls033 plus sNaN13 -> NaN13 Invalid_operation
ddqls034 plus -sNaN13 -> -NaN13 Invalid_operation
ddqls035 plus NaN70 -> NaN70
ddqls036 plus -NaN70 -> -NaN70
ddqls037 plus sNaN101 -> NaN101 Invalid_operation
ddqls038 plus -sNaN101 -> -NaN101 Invalid_operation
-- finites
dqpls101 plus 7 -> 7
dqpls102 plus -7 -> -7
dqpls103 plus 75 -> 75
dqpls104 plus -75 -> -75
dqpls105 plus 7.50 -> 7.50
dqpls106 plus -7.50 -> -7.50
dqpls107 plus 7.500 -> 7.500
dqpls108 plus -7.500 -> -7.500
-- zeros
dqpls111 plus 0 -> 0
dqpls112 plus -0 -> 0
dqpls113 plus 0E+4 -> 0E+4
dqpls114 plus -0E+4 -> 0E+4
dqpls115 plus 0.0000 -> 0.0000
dqpls116 plus -0.0000 -> 0.0000
dqpls117 plus 0E-141 -> 0E-141
dqpls118 plus -0E-141 -> 0E-141
-- full coefficients, alternating bits
dqpls121 plus 2682682682682682682682682682682682 -> 2682682682682682682682682682682682
dqpls122 plus -2682682682682682682682682682682682 -> -2682682682682682682682682682682682
dqpls123 plus 1341341341341341341341341341341341 -> 1341341341341341341341341341341341
dqpls124 plus -1341341341341341341341341341341341 -> -1341341341341341341341341341341341
-- Nmax, Nmin, Ntiny
dqpls131 plus 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144
dqpls132 plus 1E-6143 -> 1E-6143
dqpls133 plus 1.000000000000000000000000000000000E-6143 -> 1.000000000000000000000000000000000E-6143
dqpls134 plus 1E-6176 -> 1E-6176 Subnormal
dqpls135 plus -1E-6176 -> -1E-6176 Subnormal
dqpls136 plus -1.000000000000000000000000000000000E-6143 -> -1.000000000000000000000000000000000E-6143
dqpls137 plus -1E-6143 -> -1E-6143
dqpls138 plus -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144

View file

@ -0,0 +1,836 @@
------------------------------------------------------------------------
-- dqQuantize.decTest -- decQuad quantize operation --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- Most of the tests here assume a "regular pattern", where the
-- sign and coefficient are +1.
-- 2004.03.15 Underflow for quantize is suppressed
-- 2005.06.08 More extensive tests for 'does not fit'
-- [Forked from quantize.decTest 2006.11.25]
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqqua001 quantize 0 1e0 -> 0
dqqua002 quantize 1 1e0 -> 1
dqqua003 quantize 0.1 1e+2 -> 0E+2 Inexact Rounded
dqqua005 quantize 0.1 1e+1 -> 0E+1 Inexact Rounded
dqqua006 quantize 0.1 1e0 -> 0 Inexact Rounded
dqqua007 quantize 0.1 1e-1 -> 0.1
dqqua008 quantize 0.1 1e-2 -> 0.10
dqqua009 quantize 0.1 1e-3 -> 0.100
dqqua010 quantize 0.9 1e+2 -> 0E+2 Inexact Rounded
dqqua011 quantize 0.9 1e+1 -> 0E+1 Inexact Rounded
dqqua012 quantize 0.9 1e+0 -> 1 Inexact Rounded
dqqua013 quantize 0.9 1e-1 -> 0.9
dqqua014 quantize 0.9 1e-2 -> 0.90
dqqua015 quantize 0.9 1e-3 -> 0.900
-- negatives
dqqua021 quantize -0 1e0 -> -0
dqqua022 quantize -1 1e0 -> -1
dqqua023 quantize -0.1 1e+2 -> -0E+2 Inexact Rounded
dqqua025 quantize -0.1 1e+1 -> -0E+1 Inexact Rounded
dqqua026 quantize -0.1 1e0 -> -0 Inexact Rounded
dqqua027 quantize -0.1 1e-1 -> -0.1
dqqua028 quantize -0.1 1e-2 -> -0.10
dqqua029 quantize -0.1 1e-3 -> -0.100
dqqua030 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded
dqqua031 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded
dqqua032 quantize -0.9 1e+0 -> -1 Inexact Rounded
dqqua033 quantize -0.9 1e-1 -> -0.9
dqqua034 quantize -0.9 1e-2 -> -0.90
dqqua035 quantize -0.9 1e-3 -> -0.900
dqqua036 quantize -0.5 1e+2 -> -0E+2 Inexact Rounded
dqqua037 quantize -0.5 1e+1 -> -0E+1 Inexact Rounded
dqqua038 quantize -0.5 1e+0 -> -0 Inexact Rounded
dqqua039 quantize -0.5 1e-1 -> -0.5
dqqua040 quantize -0.5 1e-2 -> -0.50
dqqua041 quantize -0.5 1e-3 -> -0.500
dqqua042 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded
dqqua043 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded
dqqua044 quantize -0.9 1e+0 -> -1 Inexact Rounded
dqqua045 quantize -0.9 1e-1 -> -0.9
dqqua046 quantize -0.9 1e-2 -> -0.90
dqqua047 quantize -0.9 1e-3 -> -0.900
-- examples from Specification
dqqua060 quantize 2.17 0.001 -> 2.170
dqqua061 quantize 2.17 0.01 -> 2.17
dqqua062 quantize 2.17 0.1 -> 2.2 Inexact Rounded
dqqua063 quantize 2.17 1e+0 -> 2 Inexact Rounded
dqqua064 quantize 2.17 1e+1 -> 0E+1 Inexact Rounded
dqqua065 quantize -Inf Inf -> -Infinity
dqqua066 quantize 2 Inf -> NaN Invalid_operation
dqqua067 quantize -0.1 1 -> -0 Inexact Rounded
dqqua068 quantize -0 1e+5 -> -0E+5
dqqua069 quantize +123451234567899876543216789012345.6 1e-2 -> NaN Invalid_operation
dqqua070 quantize -987651234567899876543214335236450.6 1e-2 -> NaN Invalid_operation
dqqua071 quantize 217 1e-1 -> 217.0
dqqua072 quantize 217 1e+0 -> 217
dqqua073 quantize 217 1e+1 -> 2.2E+2 Inexact Rounded
dqqua074 quantize 217 1e+2 -> 2E+2 Inexact Rounded
-- general tests ..
dqqua089 quantize 12 1e+4 -> 0E+4 Inexact Rounded
dqqua090 quantize 12 1e+3 -> 0E+3 Inexact Rounded
dqqua091 quantize 12 1e+2 -> 0E+2 Inexact Rounded
dqqua092 quantize 12 1e+1 -> 1E+1 Inexact Rounded
dqqua093 quantize 1.2345 1e-2 -> 1.23 Inexact Rounded
dqqua094 quantize 1.2355 1e-2 -> 1.24 Inexact Rounded
dqqua095 quantize 1.2345 1e-6 -> 1.234500
dqqua096 quantize 9.9999 1e-2 -> 10.00 Inexact Rounded
dqqua097 quantize 0.0001 1e-2 -> 0.00 Inexact Rounded
dqqua098 quantize 0.001 1e-2 -> 0.00 Inexact Rounded
dqqua099 quantize 0.009 1e-2 -> 0.01 Inexact Rounded
dqqua100 quantize 92 1e+2 -> 1E+2 Inexact Rounded
dqqua101 quantize -1 1e0 -> -1
dqqua102 quantize -1 1e-1 -> -1.0
dqqua103 quantize -1 1e-2 -> -1.00
dqqua104 quantize 0 1e0 -> 0
dqqua105 quantize 0 1e-1 -> 0.0
dqqua106 quantize 0 1e-2 -> 0.00
dqqua107 quantize 0.00 1e0 -> 0
dqqua108 quantize 0 1e+1 -> 0E+1
dqqua109 quantize 0 1e+2 -> 0E+2
dqqua110 quantize +1 1e0 -> 1
dqqua111 quantize +1 1e-1 -> 1.0
dqqua112 quantize +1 1e-2 -> 1.00
dqqua120 quantize 1.04 1e-3 -> 1.040
dqqua121 quantize 1.04 1e-2 -> 1.04
dqqua122 quantize 1.04 1e-1 -> 1.0 Inexact Rounded
dqqua123 quantize 1.04 1e0 -> 1 Inexact Rounded
dqqua124 quantize 1.05 1e-3 -> 1.050
dqqua125 quantize 1.05 1e-2 -> 1.05
dqqua126 quantize 1.05 1e-1 -> 1.0 Inexact Rounded
dqqua131 quantize 1.05 1e0 -> 1 Inexact Rounded
dqqua132 quantize 1.06 1e-3 -> 1.060
dqqua133 quantize 1.06 1e-2 -> 1.06
dqqua134 quantize 1.06 1e-1 -> 1.1 Inexact Rounded
dqqua135 quantize 1.06 1e0 -> 1 Inexact Rounded
dqqua140 quantize -10 1e-2 -> -10.00
dqqua141 quantize +1 1e-2 -> 1.00
dqqua142 quantize +10 1e-2 -> 10.00
dqqua143 quantize 1E+37 1e-2 -> NaN Invalid_operation
dqqua144 quantize 1E-37 1e-2 -> 0.00 Inexact Rounded
dqqua145 quantize 1E-3 1e-2 -> 0.00 Inexact Rounded
dqqua146 quantize 1E-2 1e-2 -> 0.01
dqqua147 quantize 1E-1 1e-2 -> 0.10
dqqua148 quantize 0E-37 1e-2 -> 0.00
dqqua150 quantize 1.0600 1e-5 -> 1.06000
dqqua151 quantize 1.0600 1e-4 -> 1.0600
dqqua152 quantize 1.0600 1e-3 -> 1.060 Rounded
dqqua153 quantize 1.0600 1e-2 -> 1.06 Rounded
dqqua154 quantize 1.0600 1e-1 -> 1.1 Inexact Rounded
dqqua155 quantize 1.0600 1e0 -> 1 Inexact Rounded
-- a couple where rounding was different in base tests
rounding: half_up
dqqua157 quantize -0.5 1e+0 -> -1 Inexact Rounded
dqqua158 quantize 1.05 1e-1 -> 1.1 Inexact Rounded
dqqua159 quantize 1.06 1e0 -> 1 Inexact Rounded
rounding: half_even
-- base tests with non-1 coefficients
dqqua161 quantize 0 -9e0 -> 0
dqqua162 quantize 1 -7e0 -> 1
dqqua163 quantize 0.1 -1e+2 -> 0E+2 Inexact Rounded
dqqua165 quantize 0.1 0e+1 -> 0E+1 Inexact Rounded
dqqua166 quantize 0.1 2e0 -> 0 Inexact Rounded
dqqua167 quantize 0.1 3e-1 -> 0.1
dqqua168 quantize 0.1 44e-2 -> 0.10
dqqua169 quantize 0.1 555e-3 -> 0.100
dqqua170 quantize 0.9 6666e+2 -> 0E+2 Inexact Rounded
dqqua171 quantize 0.9 -777e+1 -> 0E+1 Inexact Rounded
dqqua172 quantize 0.9 -88e+0 -> 1 Inexact Rounded
dqqua173 quantize 0.9 -9e-1 -> 0.9
dqqua174 quantize 0.9 0e-2 -> 0.90
dqqua175 quantize 0.9 1.1e-3 -> 0.9000
-- negatives
dqqua181 quantize -0 1.1e0 -> -0.0
dqqua182 quantize -1 -1e0 -> -1
dqqua183 quantize -0.1 11e+2 -> -0E+2 Inexact Rounded
dqqua185 quantize -0.1 111e+1 -> -0E+1 Inexact Rounded
dqqua186 quantize -0.1 71e0 -> -0 Inexact Rounded
dqqua187 quantize -0.1 -91e-1 -> -0.1
dqqua188 quantize -0.1 -.1e-2 -> -0.100
dqqua189 quantize -0.1 -1e-3 -> -0.100
dqqua190 quantize -0.9 0e+2 -> -0E+2 Inexact Rounded
dqqua191 quantize -0.9 -0e+1 -> -0E+1 Inexact Rounded
dqqua192 quantize -0.9 -10e+0 -> -1 Inexact Rounded
dqqua193 quantize -0.9 100e-1 -> -0.9
dqqua194 quantize -0.9 999e-2 -> -0.90
-- +ve exponents ..
dqqua201 quantize -1 1e+0 -> -1
dqqua202 quantize -1 1e+1 -> -0E+1 Inexact Rounded
dqqua203 quantize -1 1e+2 -> -0E+2 Inexact Rounded
dqqua204 quantize 0 1e+0 -> 0
dqqua205 quantize 0 1e+1 -> 0E+1
dqqua206 quantize 0 1e+2 -> 0E+2
dqqua207 quantize +1 1e+0 -> 1
dqqua208 quantize +1 1e+1 -> 0E+1 Inexact Rounded
dqqua209 quantize +1 1e+2 -> 0E+2 Inexact Rounded
dqqua220 quantize 1.04 1e+3 -> 0E+3 Inexact Rounded
dqqua221 quantize 1.04 1e+2 -> 0E+2 Inexact Rounded
dqqua222 quantize 1.04 1e+1 -> 0E+1 Inexact Rounded
dqqua223 quantize 1.04 1e+0 -> 1 Inexact Rounded
dqqua224 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded
dqqua225 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded
dqqua226 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded
dqqua227 quantize 1.05 1e+0 -> 1 Inexact Rounded
dqqua228 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded
dqqua229 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded
dqqua230 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded
dqqua231 quantize 1.05 1e+0 -> 1 Inexact Rounded
dqqua232 quantize 1.06 1e+3 -> 0E+3 Inexact Rounded
dqqua233 quantize 1.06 1e+2 -> 0E+2 Inexact Rounded
dqqua234 quantize 1.06 1e+1 -> 0E+1 Inexact Rounded
dqqua235 quantize 1.06 1e+0 -> 1 Inexact Rounded
dqqua240 quantize -10 1e+1 -> -1E+1 Rounded
dqqua241 quantize +1 1e+1 -> 0E+1 Inexact Rounded
dqqua242 quantize +10 1e+1 -> 1E+1 Rounded
dqqua243 quantize 1E+1 1e+1 -> 1E+1 -- underneath this is E+1
dqqua244 quantize 1E+2 1e+1 -> 1.0E+2 -- underneath this is E+1
dqqua245 quantize 1E+3 1e+1 -> 1.00E+3 -- underneath this is E+1
dqqua246 quantize 1E+4 1e+1 -> 1.000E+4 -- underneath this is E+1
dqqua247 quantize 1E+5 1e+1 -> 1.0000E+5 -- underneath this is E+1
dqqua248 quantize 1E+6 1e+1 -> 1.00000E+6 -- underneath this is E+1
dqqua249 quantize 1E+7 1e+1 -> 1.000000E+7 -- underneath this is E+1
dqqua250 quantize 1E+8 1e+1 -> 1.0000000E+8 -- underneath this is E+1
dqqua251 quantize 1E+9 1e+1 -> 1.00000000E+9 -- underneath this is E+1
-- next one tries to add 9 zeros
dqqua252 quantize 1E+37 1e+1 -> NaN Invalid_operation
dqqua253 quantize 1E-37 1e+1 -> 0E+1 Inexact Rounded
dqqua254 quantize 1E-2 1e+1 -> 0E+1 Inexact Rounded
dqqua255 quantize 0E-37 1e+1 -> 0E+1
dqqua256 quantize -0E-37 1e+1 -> -0E+1
dqqua257 quantize -0E-1 1e+1 -> -0E+1
dqqua258 quantize -0 1e+1 -> -0E+1
dqqua259 quantize -0E+1 1e+1 -> -0E+1
dqqua260 quantize -10 1e+2 -> -0E+2 Inexact Rounded
dqqua261 quantize +1 1e+2 -> 0E+2 Inexact Rounded
dqqua262 quantize +10 1e+2 -> 0E+2 Inexact Rounded
dqqua263 quantize 1E+1 1e+2 -> 0E+2 Inexact Rounded
dqqua264 quantize 1E+2 1e+2 -> 1E+2
dqqua265 quantize 1E+3 1e+2 -> 1.0E+3
dqqua266 quantize 1E+4 1e+2 -> 1.00E+4
dqqua267 quantize 1E+5 1e+2 -> 1.000E+5
dqqua268 quantize 1E+6 1e+2 -> 1.0000E+6
dqqua269 quantize 1E+7 1e+2 -> 1.00000E+7
dqqua270 quantize 1E+8 1e+2 -> 1.000000E+8
dqqua271 quantize 1E+9 1e+2 -> 1.0000000E+9
dqqua272 quantize 1E+10 1e+2 -> 1.00000000E+10
dqqua273 quantize 1E-10 1e+2 -> 0E+2 Inexact Rounded
dqqua274 quantize 1E-2 1e+2 -> 0E+2 Inexact Rounded
dqqua275 quantize 0E-10 1e+2 -> 0E+2
dqqua280 quantize -10 1e+3 -> -0E+3 Inexact Rounded
dqqua281 quantize +1 1e+3 -> 0E+3 Inexact Rounded
dqqua282 quantize +10 1e+3 -> 0E+3 Inexact Rounded
dqqua283 quantize 1E+1 1e+3 -> 0E+3 Inexact Rounded
dqqua284 quantize 1E+2 1e+3 -> 0E+3 Inexact Rounded
dqqua285 quantize 1E+3 1e+3 -> 1E+3
dqqua286 quantize 1E+4 1e+3 -> 1.0E+4
dqqua287 quantize 1E+5 1e+3 -> 1.00E+5
dqqua288 quantize 1E+6 1e+3 -> 1.000E+6
dqqua289 quantize 1E+7 1e+3 -> 1.0000E+7
dqqua290 quantize 1E+8 1e+3 -> 1.00000E+8
dqqua291 quantize 1E+9 1e+3 -> 1.000000E+9
dqqua292 quantize 1E+10 1e+3 -> 1.0000000E+10
dqqua293 quantize 1E-10 1e+3 -> 0E+3 Inexact Rounded
dqqua294 quantize 1E-2 1e+3 -> 0E+3 Inexact Rounded
dqqua295 quantize 0E-10 1e+3 -> 0E+3
-- round up from below [sign wrong in JIT compiler once]
dqqua300 quantize 0.0078 1e-5 -> 0.00780
dqqua301 quantize 0.0078 1e-4 -> 0.0078
dqqua302 quantize 0.0078 1e-3 -> 0.008 Inexact Rounded
dqqua303 quantize 0.0078 1e-2 -> 0.01 Inexact Rounded
dqqua304 quantize 0.0078 1e-1 -> 0.0 Inexact Rounded
dqqua305 quantize 0.0078 1e0 -> 0 Inexact Rounded
dqqua306 quantize 0.0078 1e+1 -> 0E+1 Inexact Rounded
dqqua307 quantize 0.0078 1e+2 -> 0E+2 Inexact Rounded
dqqua310 quantize -0.0078 1e-5 -> -0.00780
dqqua311 quantize -0.0078 1e-4 -> -0.0078
dqqua312 quantize -0.0078 1e-3 -> -0.008 Inexact Rounded
dqqua313 quantize -0.0078 1e-2 -> -0.01 Inexact Rounded
dqqua314 quantize -0.0078 1e-1 -> -0.0 Inexact Rounded
dqqua315 quantize -0.0078 1e0 -> -0 Inexact Rounded
dqqua316 quantize -0.0078 1e+1 -> -0E+1 Inexact Rounded
dqqua317 quantize -0.0078 1e+2 -> -0E+2 Inexact Rounded
dqqua320 quantize 0.078 1e-5 -> 0.07800
dqqua321 quantize 0.078 1e-4 -> 0.0780
dqqua322 quantize 0.078 1e-3 -> 0.078
dqqua323 quantize 0.078 1e-2 -> 0.08 Inexact Rounded
dqqua324 quantize 0.078 1e-1 -> 0.1 Inexact Rounded
dqqua325 quantize 0.078 1e0 -> 0 Inexact Rounded
dqqua326 quantize 0.078 1e+1 -> 0E+1 Inexact Rounded
dqqua327 quantize 0.078 1e+2 -> 0E+2 Inexact Rounded
dqqua330 quantize -0.078 1e-5 -> -0.07800
dqqua331 quantize -0.078 1e-4 -> -0.0780
dqqua332 quantize -0.078 1e-3 -> -0.078
dqqua333 quantize -0.078 1e-2 -> -0.08 Inexact Rounded
dqqua334 quantize -0.078 1e-1 -> -0.1 Inexact Rounded
dqqua335 quantize -0.078 1e0 -> -0 Inexact Rounded
dqqua336 quantize -0.078 1e+1 -> -0E+1 Inexact Rounded
dqqua337 quantize -0.078 1e+2 -> -0E+2 Inexact Rounded
dqqua340 quantize 0.78 1e-5 -> 0.78000
dqqua341 quantize 0.78 1e-4 -> 0.7800
dqqua342 quantize 0.78 1e-3 -> 0.780
dqqua343 quantize 0.78 1e-2 -> 0.78
dqqua344 quantize 0.78 1e-1 -> 0.8 Inexact Rounded
dqqua345 quantize 0.78 1e0 -> 1 Inexact Rounded
dqqua346 quantize 0.78 1e+1 -> 0E+1 Inexact Rounded
dqqua347 quantize 0.78 1e+2 -> 0E+2 Inexact Rounded
dqqua350 quantize -0.78 1e-5 -> -0.78000
dqqua351 quantize -0.78 1e-4 -> -0.7800
dqqua352 quantize -0.78 1e-3 -> -0.780
dqqua353 quantize -0.78 1e-2 -> -0.78
dqqua354 quantize -0.78 1e-1 -> -0.8 Inexact Rounded
dqqua355 quantize -0.78 1e0 -> -1 Inexact Rounded
dqqua356 quantize -0.78 1e+1 -> -0E+1 Inexact Rounded
dqqua357 quantize -0.78 1e+2 -> -0E+2 Inexact Rounded
dqqua360 quantize 7.8 1e-5 -> 7.80000
dqqua361 quantize 7.8 1e-4 -> 7.8000
dqqua362 quantize 7.8 1e-3 -> 7.800
dqqua363 quantize 7.8 1e-2 -> 7.80
dqqua364 quantize 7.8 1e-1 -> 7.8
dqqua365 quantize 7.8 1e0 -> 8 Inexact Rounded
dqqua366 quantize 7.8 1e+1 -> 1E+1 Inexact Rounded
dqqua367 quantize 7.8 1e+2 -> 0E+2 Inexact Rounded
dqqua368 quantize 7.8 1e+3 -> 0E+3 Inexact Rounded
dqqua370 quantize -7.8 1e-5 -> -7.80000
dqqua371 quantize -7.8 1e-4 -> -7.8000
dqqua372 quantize -7.8 1e-3 -> -7.800
dqqua373 quantize -7.8 1e-2 -> -7.80
dqqua374 quantize -7.8 1e-1 -> -7.8
dqqua375 quantize -7.8 1e0 -> -8 Inexact Rounded
dqqua376 quantize -7.8 1e+1 -> -1E+1 Inexact Rounded
dqqua377 quantize -7.8 1e+2 -> -0E+2 Inexact Rounded
dqqua378 quantize -7.8 1e+3 -> -0E+3 Inexact Rounded
-- some individuals
dqqua380 quantize 1122334455667788991234567352364.506 1e-2 -> 1122334455667788991234567352364.51 Inexact Rounded
dqqua381 quantize 11223344556677889912345673523645.06 1e-2 -> 11223344556677889912345673523645.06
dqqua382 quantize 112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation
dqqua383 quantize 1122334455667788991234567352364506 1e-2 -> NaN Invalid_operation
dqqua384 quantize -1122334455667788991234567352364.506 1e-2 -> -1122334455667788991234567352364.51 Inexact Rounded
dqqua385 quantize -11223344556677889912345673523645.06 1e-2 -> -11223344556677889912345673523645.06
dqqua386 quantize -112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation
dqqua387 quantize -1122334455667788991234567352364506 1e-2 -> NaN Invalid_operation
rounding: down
dqqua389 quantize 112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation
rounding: half_up
-- and a few more from e-mail discussions
dqqua391 quantize 11223344556677889912345678912.34567 1e-3 -> 11223344556677889912345678912.346 Inexact Rounded
dqqua392 quantize 112233445566778899123456789123.4567 1e-3 -> 112233445566778899123456789123.457 Inexact Rounded
dqqua393 quantize 1122334455667788991234567891234567. 1e-3 -> NaN Invalid_operation
-- some 9999 round-up cases
dqqua400 quantize 9.999 1e-5 -> 9.99900
dqqua401 quantize 9.999 1e-4 -> 9.9990
dqqua402 quantize 9.999 1e-3 -> 9.999
dqqua403 quantize 9.999 1e-2 -> 10.00 Inexact Rounded
dqqua404 quantize 9.999 1e-1 -> 10.0 Inexact Rounded
dqqua405 quantize 9.999 1e0 -> 10 Inexact Rounded
dqqua406 quantize 9.999 1e1 -> 1E+1 Inexact Rounded
dqqua407 quantize 9.999 1e2 -> 0E+2 Inexact Rounded
dqqua410 quantize 0.999 1e-5 -> 0.99900
dqqua411 quantize 0.999 1e-4 -> 0.9990
dqqua412 quantize 0.999 1e-3 -> 0.999
dqqua413 quantize 0.999 1e-2 -> 1.00 Inexact Rounded
dqqua414 quantize 0.999 1e-1 -> 1.0 Inexact Rounded
dqqua415 quantize 0.999 1e0 -> 1 Inexact Rounded
dqqua416 quantize 0.999 1e1 -> 0E+1 Inexact Rounded
dqqua420 quantize 0.0999 1e-5 -> 0.09990
dqqua421 quantize 0.0999 1e-4 -> 0.0999
dqqua422 quantize 0.0999 1e-3 -> 0.100 Inexact Rounded
dqqua423 quantize 0.0999 1e-2 -> 0.10 Inexact Rounded
dqqua424 quantize 0.0999 1e-1 -> 0.1 Inexact Rounded
dqqua425 quantize 0.0999 1e0 -> 0 Inexact Rounded
dqqua426 quantize 0.0999 1e1 -> 0E+1 Inexact Rounded
dqqua430 quantize 0.00999 1e-5 -> 0.00999
dqqua431 quantize 0.00999 1e-4 -> 0.0100 Inexact Rounded
dqqua432 quantize 0.00999 1e-3 -> 0.010 Inexact Rounded
dqqua433 quantize 0.00999 1e-2 -> 0.01 Inexact Rounded
dqqua434 quantize 0.00999 1e-1 -> 0.0 Inexact Rounded
dqqua435 quantize 0.00999 1e0 -> 0 Inexact Rounded
dqqua436 quantize 0.00999 1e1 -> 0E+1 Inexact Rounded
dqqua440 quantize 0.000999 1e-5 -> 0.00100 Inexact Rounded
dqqua441 quantize 0.000999 1e-4 -> 0.0010 Inexact Rounded
dqqua442 quantize 0.000999 1e-3 -> 0.001 Inexact Rounded
dqqua443 quantize 0.000999 1e-2 -> 0.00 Inexact Rounded
dqqua444 quantize 0.000999 1e-1 -> 0.0 Inexact Rounded
dqqua445 quantize 0.000999 1e0 -> 0 Inexact Rounded
dqqua446 quantize 0.000999 1e1 -> 0E+1 Inexact Rounded
dqqua1001 quantize 0.000 0.001 -> 0.000
dqqua1002 quantize 0.001 0.001 -> 0.001
dqqua1003 quantize 0.0012 0.001 -> 0.001 Inexact Rounded
dqqua1004 quantize 0.0018 0.001 -> 0.002 Inexact Rounded
dqqua1005 quantize 0.501 0.001 -> 0.501
dqqua1006 quantize 0.5012 0.001 -> 0.501 Inexact Rounded
dqqua1007 quantize 0.5018 0.001 -> 0.502 Inexact Rounded
dqqua1008 quantize 0.999 0.001 -> 0.999
dqqua481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
dqqua482 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded
dqqua483 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded
dqqua484 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded
dqqua485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
dqqua486 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded
-- a potential double-round
dqqua487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
dqqua488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
dqqua491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
dqqua492 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded
dqqua493 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded
dqqua494 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded
dqqua495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
dqqua496 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded
dqqua497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
dqqua498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
-- Zeros
dqqua500 quantize 0 1e1 -> 0E+1
dqqua501 quantize 0 1e0 -> 0
dqqua502 quantize 0 1e-1 -> 0.0
dqqua503 quantize 0.0 1e-1 -> 0.0
dqqua504 quantize 0.0 1e0 -> 0
dqqua505 quantize 0.0 1e+1 -> 0E+1
dqqua506 quantize 0E+1 1e-1 -> 0.0
dqqua507 quantize 0E+1 1e0 -> 0
dqqua508 quantize 0E+1 1e+1 -> 0E+1
dqqua509 quantize -0 1e1 -> -0E+1
dqqua510 quantize -0 1e0 -> -0
dqqua511 quantize -0 1e-1 -> -0.0
dqqua512 quantize -0.0 1e-1 -> -0.0
dqqua513 quantize -0.0 1e0 -> -0
dqqua514 quantize -0.0 1e+1 -> -0E+1
dqqua515 quantize -0E+1 1e-1 -> -0.0
dqqua516 quantize -0E+1 1e0 -> -0
dqqua517 quantize -0E+1 1e+1 -> -0E+1
-- #519 here once a problem
dqqua518 quantize 0 0E-3 -> 0.000
dqqua519 quantize 0 0E-33 -> 0E-33
dqqua520 quantize 0.00000000000000000000000000000000 0E-33 -> 0E-33
dqqua521 quantize 0.000000000000000000000000000000000 0E-33 -> 0E-33
-- Some non-zeros with lots of padding on the right
dqqua523 quantize 1 0E-33 -> 1.000000000000000000000000000000000
dqqua524 quantize 12 0E-32 -> 12.00000000000000000000000000000000
dqqua525 quantize 123 0E-31 -> 123.0000000000000000000000000000000
dqqua526 quantize 123 0E-32 -> NaN Invalid_operation
dqqua527 quantize 123.4 0E-31 -> 123.4000000000000000000000000000000
dqqua528 quantize 123.4 0E-32 -> NaN Invalid_operation
-- Suspicious RHS values
dqqua530 quantize 1.234 1e359 -> 0E+359 Inexact Rounded
dqqua531 quantize 123.456 1e359 -> 0E+359 Inexact Rounded
dqqua532 quantize 1.234 1e359 -> 0E+359 Inexact Rounded
dqqua533 quantize 123.456 1e359 -> 0E+359 Inexact Rounded
-- next four are "won't fit" overflows
dqqua536 quantize 1.234 1e-299 -> NaN Invalid_operation
dqqua537 quantize 123.456 1e-299 -> NaN Invalid_operation
dqqua538 quantize 1.234 1e-299 -> NaN Invalid_operation
dqqua539 quantize 123.456 1e-299 -> NaN Invalid_operation
dqqua542 quantize 1.234E+299 1e299 -> 1E+299 Inexact Rounded
dqqua543 quantize 1.234E+298 1e299 -> 0E+299 Inexact Rounded
dqqua544 quantize 1.234 1e299 -> 0E+299 Inexact Rounded
dqqua547 quantize 0 1e-299 -> 0E-299
-- next two are "won't fit" overflows
dqqua548 quantize 1.234 1e-299 -> NaN Invalid_operation
dqqua549 quantize 1.234 1e-300 -> NaN Invalid_operation
-- [more below]
-- Specials
dqqua580 quantize Inf -Inf -> Infinity
dqqua581 quantize Inf 1e-299 -> NaN Invalid_operation
dqqua582 quantize Inf 1e-1 -> NaN Invalid_operation
dqqua583 quantize Inf 1e0 -> NaN Invalid_operation
dqqua584 quantize Inf 1e1 -> NaN Invalid_operation
dqqua585 quantize Inf 1e299 -> NaN Invalid_operation
dqqua586 quantize Inf Inf -> Infinity
dqqua587 quantize -1000 Inf -> NaN Invalid_operation
dqqua588 quantize -Inf Inf -> -Infinity
dqqua589 quantize -1 Inf -> NaN Invalid_operation
dqqua590 quantize 0 Inf -> NaN Invalid_operation
dqqua591 quantize 1 Inf -> NaN Invalid_operation
dqqua592 quantize 1000 Inf -> NaN Invalid_operation
dqqua593 quantize Inf Inf -> Infinity
dqqua594 quantize Inf 1e-0 -> NaN Invalid_operation
dqqua595 quantize -0 Inf -> NaN Invalid_operation
dqqua600 quantize -Inf -Inf -> -Infinity
dqqua601 quantize -Inf 1e-299 -> NaN Invalid_operation
dqqua602 quantize -Inf 1e-1 -> NaN Invalid_operation
dqqua603 quantize -Inf 1e0 -> NaN Invalid_operation
dqqua604 quantize -Inf 1e1 -> NaN Invalid_operation
dqqua605 quantize -Inf 1e299 -> NaN Invalid_operation
dqqua606 quantize -Inf Inf -> -Infinity
dqqua607 quantize -1000 Inf -> NaN Invalid_operation
dqqua608 quantize -Inf -Inf -> -Infinity
dqqua609 quantize -1 -Inf -> NaN Invalid_operation
dqqua610 quantize 0 -Inf -> NaN Invalid_operation
dqqua611 quantize 1 -Inf -> NaN Invalid_operation
dqqua612 quantize 1000 -Inf -> NaN Invalid_operation
dqqua613 quantize Inf -Inf -> Infinity
dqqua614 quantize -Inf 1e-0 -> NaN Invalid_operation
dqqua615 quantize -0 -Inf -> NaN Invalid_operation
dqqua621 quantize NaN -Inf -> NaN
dqqua622 quantize NaN 1e-299 -> NaN
dqqua623 quantize NaN 1e-1 -> NaN
dqqua624 quantize NaN 1e0 -> NaN
dqqua625 quantize NaN 1e1 -> NaN
dqqua626 quantize NaN 1e299 -> NaN
dqqua627 quantize NaN Inf -> NaN
dqqua628 quantize NaN NaN -> NaN
dqqua629 quantize -Inf NaN -> NaN
dqqua630 quantize -1000 NaN -> NaN
dqqua631 quantize -1 NaN -> NaN
dqqua632 quantize 0 NaN -> NaN
dqqua633 quantize 1 NaN -> NaN
dqqua634 quantize 1000 NaN -> NaN
dqqua635 quantize Inf NaN -> NaN
dqqua636 quantize NaN 1e-0 -> NaN
dqqua637 quantize -0 NaN -> NaN
dqqua641 quantize sNaN -Inf -> NaN Invalid_operation
dqqua642 quantize sNaN 1e-299 -> NaN Invalid_operation
dqqua643 quantize sNaN 1e-1 -> NaN Invalid_operation
dqqua644 quantize sNaN 1e0 -> NaN Invalid_operation
dqqua645 quantize sNaN 1e1 -> NaN Invalid_operation
dqqua646 quantize sNaN 1e299 -> NaN Invalid_operation
dqqua647 quantize sNaN NaN -> NaN Invalid_operation
dqqua648 quantize sNaN sNaN -> NaN Invalid_operation
dqqua649 quantize NaN sNaN -> NaN Invalid_operation
dqqua650 quantize -Inf sNaN -> NaN Invalid_operation
dqqua651 quantize -1000 sNaN -> NaN Invalid_operation
dqqua652 quantize -1 sNaN -> NaN Invalid_operation
dqqua653 quantize 0 sNaN -> NaN Invalid_operation
dqqua654 quantize 1 sNaN -> NaN Invalid_operation
dqqua655 quantize 1000 sNaN -> NaN Invalid_operation
dqqua656 quantize Inf sNaN -> NaN Invalid_operation
dqqua657 quantize NaN sNaN -> NaN Invalid_operation
dqqua658 quantize sNaN 1e-0 -> NaN Invalid_operation
dqqua659 quantize -0 sNaN -> NaN Invalid_operation
-- propagating NaNs
dqqua661 quantize NaN9 -Inf -> NaN9
dqqua662 quantize NaN8 919 -> NaN8
dqqua663 quantize NaN71 Inf -> NaN71
dqqua664 quantize NaN6 NaN5 -> NaN6
dqqua665 quantize -Inf NaN4 -> NaN4
dqqua666 quantize -919 NaN31 -> NaN31
dqqua667 quantize Inf NaN2 -> NaN2
dqqua671 quantize sNaN99 -Inf -> NaN99 Invalid_operation
dqqua672 quantize sNaN98 -11 -> NaN98 Invalid_operation
dqqua673 quantize sNaN97 NaN -> NaN97 Invalid_operation
dqqua674 quantize sNaN16 sNaN94 -> NaN16 Invalid_operation
dqqua675 quantize NaN95 sNaN93 -> NaN93 Invalid_operation
dqqua676 quantize -Inf sNaN92 -> NaN92 Invalid_operation
dqqua677 quantize 088 sNaN91 -> NaN91 Invalid_operation
dqqua678 quantize Inf sNaN90 -> NaN90 Invalid_operation
dqqua679 quantize NaN sNaN88 -> NaN88 Invalid_operation
dqqua681 quantize -NaN9 -Inf -> -NaN9
dqqua682 quantize -NaN8 919 -> -NaN8
dqqua683 quantize -NaN71 Inf -> -NaN71
dqqua684 quantize -NaN6 -NaN5 -> -NaN6
dqqua685 quantize -Inf -NaN4 -> -NaN4
dqqua686 quantize -919 -NaN31 -> -NaN31
dqqua687 quantize Inf -NaN2 -> -NaN2
dqqua691 quantize -sNaN99 -Inf -> -NaN99 Invalid_operation
dqqua692 quantize -sNaN98 -11 -> -NaN98 Invalid_operation
dqqua693 quantize -sNaN97 NaN -> -NaN97 Invalid_operation
dqqua694 quantize -sNaN16 sNaN94 -> -NaN16 Invalid_operation
dqqua695 quantize -NaN95 -sNaN93 -> -NaN93 Invalid_operation
dqqua696 quantize -Inf -sNaN92 -> -NaN92 Invalid_operation
dqqua697 quantize 088 -sNaN91 -> -NaN91 Invalid_operation
dqqua698 quantize Inf -sNaN90 -> -NaN90 Invalid_operation
dqqua699 quantize NaN -sNaN88 -> -NaN88 Invalid_operation
-- subnormals and underflow
dqqua710 quantize 1.00E-6143 1e-6143 -> 1E-6143 Rounded
dqqua711 quantize 0.1E-6143 2e-6144 -> 1E-6144 Subnormal
dqqua712 quantize 0.10E-6143 3e-6144 -> 1E-6144 Subnormal Rounded
dqqua713 quantize 0.100E-6143 4e-6144 -> 1E-6144 Subnormal Rounded
dqqua714 quantize 0.01E-6143 5e-6145 -> 1E-6145 Subnormal
-- next is rounded to Emin
dqqua715 quantize 0.999E-6143 1e-6143 -> 1E-6143 Inexact Rounded
dqqua716 quantize 0.099E-6143 10e-6144 -> 1E-6144 Inexact Rounded Subnormal
dqqua717 quantize 0.009E-6143 1e-6145 -> 1E-6145 Inexact Rounded Subnormal
dqqua718 quantize 0.001E-6143 1e-6145 -> 0E-6145 Inexact Rounded
dqqua719 quantize 0.0009E-6143 1e-6145 -> 0E-6145 Inexact Rounded
dqqua720 quantize 0.0001E-6143 1e-6145 -> 0E-6145 Inexact Rounded
dqqua730 quantize -1.00E-6143 1e-6143 -> -1E-6143 Rounded
dqqua731 quantize -0.1E-6143 1e-6143 -> -0E-6143 Rounded Inexact
dqqua732 quantize -0.10E-6143 1e-6143 -> -0E-6143 Rounded Inexact
dqqua733 quantize -0.100E-6143 1e-6143 -> -0E-6143 Rounded Inexact
dqqua734 quantize -0.01E-6143 1e-6143 -> -0E-6143 Inexact Rounded
-- next is rounded to Emin
dqqua735 quantize -0.999E-6143 90e-6143 -> -1E-6143 Inexact Rounded
dqqua736 quantize -0.099E-6143 -1e-6143 -> -0E-6143 Inexact Rounded
dqqua737 quantize -0.009E-6143 -1e-6143 -> -0E-6143 Inexact Rounded
dqqua738 quantize -0.001E-6143 -0e-6143 -> -0E-6143 Inexact Rounded
dqqua739 quantize -0.0001E-6143 0e-6143 -> -0E-6143 Inexact Rounded
dqqua740 quantize -1.00E-6143 1e-6144 -> -1.0E-6143 Rounded
dqqua741 quantize -0.1E-6143 1e-6144 -> -1E-6144 Subnormal
dqqua742 quantize -0.10E-6143 1e-6144 -> -1E-6144 Subnormal Rounded
dqqua743 quantize -0.100E-6143 1e-6144 -> -1E-6144 Subnormal Rounded
dqqua744 quantize -0.01E-6143 1e-6144 -> -0E-6144 Inexact Rounded
-- next is rounded to Emin
dqqua745 quantize -0.999E-6143 1e-6144 -> -1.0E-6143 Inexact Rounded
dqqua746 quantize -0.099E-6143 1e-6144 -> -1E-6144 Inexact Rounded Subnormal
dqqua747 quantize -0.009E-6143 1e-6144 -> -0E-6144 Inexact Rounded
dqqua748 quantize -0.001E-6143 1e-6144 -> -0E-6144 Inexact Rounded
dqqua749 quantize -0.0001E-6143 1e-6144 -> -0E-6144 Inexact Rounded
dqqua750 quantize -1.00E-6143 1e-6145 -> -1.00E-6143
dqqua751 quantize -0.1E-6143 1e-6145 -> -1.0E-6144 Subnormal
dqqua752 quantize -0.10E-6143 1e-6145 -> -1.0E-6144 Subnormal
dqqua753 quantize -0.100E-6143 1e-6145 -> -1.0E-6144 Subnormal Rounded
dqqua754 quantize -0.01E-6143 1e-6145 -> -1E-6145 Subnormal
-- next is rounded to Emin
dqqua755 quantize -0.999E-6143 1e-6145 -> -1.00E-6143 Inexact Rounded
dqqua756 quantize -0.099E-6143 1e-6145 -> -1.0E-6144 Inexact Rounded Subnormal
dqqua757 quantize -0.009E-6143 1e-6145 -> -1E-6145 Inexact Rounded Subnormal
dqqua758 quantize -0.001E-6143 1e-6145 -> -0E-6145 Inexact Rounded
dqqua759 quantize -0.0001E-6143 1e-6145 -> -0E-6145 Inexact Rounded
dqqua760 quantize -1.00E-6143 1e-6146 -> -1.000E-6143
dqqua761 quantize -0.1E-6143 1e-6146 -> -1.00E-6144 Subnormal
dqqua762 quantize -0.10E-6143 1e-6146 -> -1.00E-6144 Subnormal
dqqua763 quantize -0.100E-6143 1e-6146 -> -1.00E-6144 Subnormal
dqqua764 quantize -0.01E-6143 1e-6146 -> -1.0E-6145 Subnormal
dqqua765 quantize -0.999E-6143 1e-6146 -> -9.99E-6144 Subnormal
dqqua766 quantize -0.099E-6143 1e-6146 -> -9.9E-6145 Subnormal
dqqua767 quantize -0.009E-6143 1e-6146 -> -9E-6146 Subnormal
dqqua768 quantize -0.001E-6143 1e-6146 -> -1E-6146 Subnormal
dqqua769 quantize -0.0001E-6143 1e-6146 -> -0E-6146 Inexact Rounded
-- More from Fung Lee
-- the next four would appear to be in error, but they are misleading (the
-- operands will be clamped to a lower exponent) and so are omitted
-- dqqua1021 quantize 8.666666666666000E+6144 1.000000000000000E+6144 -> 8.666666666666000000000000000000000E+6144 Clamped
-- dqqua1022 quantize -8.666666666666000E+6144 1.000000000000000E+6144 -> -8.666666666666000000000000000000000E+6144 Clamped
-- dqqua1027 quantize 8.666666666666000E+323 1E+31 -> NaN Invalid_operation
-- dqqua1030 quantize 8.66666666E+3 1E+3 -> 9E+3 Inexact Rounded
-- Int and uInt32 edge values for testing conversions
dqqua1040 quantize -2147483646 0 -> -2147483646
dqqua1041 quantize -2147483647 0 -> -2147483647
dqqua1042 quantize -2147483648 0 -> -2147483648
dqqua1043 quantize -2147483649 0 -> -2147483649
dqqua1044 quantize 2147483646 0 -> 2147483646
dqqua1045 quantize 2147483647 0 -> 2147483647
dqqua1046 quantize 2147483648 0 -> 2147483648
dqqua1047 quantize 2147483649 0 -> 2147483649
dqqua1048 quantize 4294967294 0 -> 4294967294
dqqua1049 quantize 4294967295 0 -> 4294967295
dqqua1050 quantize 4294967296 0 -> 4294967296
dqqua1051 quantize 4294967297 0 -> 4294967297
-- Rounding swathe
rounding: half_even
dqqua1100 quantize 1.2300 1.00 -> 1.23 Rounded
dqqua1101 quantize 1.2301 1.00 -> 1.23 Inexact Rounded
dqqua1102 quantize 1.2310 1.00 -> 1.23 Inexact Rounded
dqqua1103 quantize 1.2350 1.00 -> 1.24 Inexact Rounded
dqqua1104 quantize 1.2351 1.00 -> 1.24 Inexact Rounded
dqqua1105 quantize 1.2450 1.00 -> 1.24 Inexact Rounded
dqqua1106 quantize 1.2451 1.00 -> 1.25 Inexact Rounded
dqqua1107 quantize 1.2360 1.00 -> 1.24 Inexact Rounded
dqqua1108 quantize 1.2370 1.00 -> 1.24 Inexact Rounded
dqqua1109 quantize 1.2399 1.00 -> 1.24 Inexact Rounded
rounding: half_up
dqqua1200 quantize 1.2300 1.00 -> 1.23 Rounded
dqqua1201 quantize 1.2301 1.00 -> 1.23 Inexact Rounded
dqqua1202 quantize 1.2310 1.00 -> 1.23 Inexact Rounded
dqqua1203 quantize 1.2350 1.00 -> 1.24 Inexact Rounded
dqqua1204 quantize 1.2351 1.00 -> 1.24 Inexact Rounded
dqqua1205 quantize 1.2450 1.00 -> 1.25 Inexact Rounded
dqqua1206 quantize 1.2451 1.00 -> 1.25 Inexact Rounded
dqqua1207 quantize 1.2360 1.00 -> 1.24 Inexact Rounded
dqqua1208 quantize 1.2370 1.00 -> 1.24 Inexact Rounded
dqqua1209 quantize 1.2399 1.00 -> 1.24 Inexact Rounded
rounding: half_down
dqqua1300 quantize 1.2300 1.00 -> 1.23 Rounded
dqqua1301 quantize 1.2301 1.00 -> 1.23 Inexact Rounded
dqqua1302 quantize 1.2310 1.00 -> 1.23 Inexact Rounded
dqqua1303 quantize 1.2350 1.00 -> 1.23 Inexact Rounded
dqqua1304 quantize 1.2351 1.00 -> 1.24 Inexact Rounded
dqqua1305 quantize 1.2450 1.00 -> 1.24 Inexact Rounded
dqqua1306 quantize 1.2451 1.00 -> 1.25 Inexact Rounded
dqqua1307 quantize 1.2360 1.00 -> 1.24 Inexact Rounded
dqqua1308 quantize 1.2370 1.00 -> 1.24 Inexact Rounded
dqqua1309 quantize 1.2399 1.00 -> 1.24 Inexact Rounded
rounding: up
dqqua1400 quantize 1.2300 1.00 -> 1.23 Rounded
dqqua1401 quantize 1.2301 1.00 -> 1.24 Inexact Rounded
dqqua1402 quantize 1.2310 1.00 -> 1.24 Inexact Rounded
dqqua1403 quantize 1.2350 1.00 -> 1.24 Inexact Rounded
dqqua1404 quantize 1.2351 1.00 -> 1.24 Inexact Rounded
dqqua1405 quantize 1.2450 1.00 -> 1.25 Inexact Rounded
dqqua1406 quantize 1.2451 1.00 -> 1.25 Inexact Rounded
dqqua1407 quantize 1.2360 1.00 -> 1.24 Inexact Rounded
dqqua1408 quantize 1.2370 1.00 -> 1.24 Inexact Rounded
dqqua1409 quantize 1.2399 1.00 -> 1.24 Inexact Rounded
dqqua1411 quantize -1.2399 1.00 -> -1.24 Inexact Rounded
rounding: down
dqqua1500 quantize 1.2300 1.00 -> 1.23 Rounded
dqqua1501 quantize 1.2301 1.00 -> 1.23 Inexact Rounded
dqqua1502 quantize 1.2310 1.00 -> 1.23 Inexact Rounded
dqqua1503 quantize 1.2350 1.00 -> 1.23 Inexact Rounded
dqqua1504 quantize 1.2351 1.00 -> 1.23 Inexact Rounded
dqqua1505 quantize 1.2450 1.00 -> 1.24 Inexact Rounded
dqqua1506 quantize 1.2451 1.00 -> 1.24 Inexact Rounded
dqqua1507 quantize 1.2360 1.00 -> 1.23 Inexact Rounded
dqqua1508 quantize 1.2370 1.00 -> 1.23 Inexact Rounded
dqqua1509 quantize 1.2399 1.00 -> 1.23 Inexact Rounded
dqqua1511 quantize -1.2399 1.00 -> -1.23 Inexact Rounded
rounding: ceiling
dqqua1600 quantize 1.2300 1.00 -> 1.23 Rounded
dqqua1601 quantize 1.2301 1.00 -> 1.24 Inexact Rounded
dqqua1602 quantize 1.2310 1.00 -> 1.24 Inexact Rounded
dqqua1603 quantize 1.2350 1.00 -> 1.24 Inexact Rounded
dqqua1604 quantize 1.2351 1.00 -> 1.24 Inexact Rounded
dqqua1605 quantize 1.2450 1.00 -> 1.25 Inexact Rounded
dqqua1606 quantize 1.2451 1.00 -> 1.25 Inexact Rounded
dqqua1607 quantize 1.2360 1.00 -> 1.24 Inexact Rounded
dqqua1608 quantize 1.2370 1.00 -> 1.24 Inexact Rounded
dqqua1609 quantize 1.2399 1.00 -> 1.24 Inexact Rounded
dqqua1611 quantize -1.2399 1.00 -> -1.23 Inexact Rounded
rounding: floor
dqqua1700 quantize 1.2300 1.00 -> 1.23 Rounded
dqqua1701 quantize 1.2301 1.00 -> 1.23 Inexact Rounded
dqqua1702 quantize 1.2310 1.00 -> 1.23 Inexact Rounded
dqqua1703 quantize 1.2350 1.00 -> 1.23 Inexact Rounded
dqqua1704 quantize 1.2351 1.00 -> 1.23 Inexact Rounded
dqqua1705 quantize 1.2450 1.00 -> 1.24 Inexact Rounded
dqqua1706 quantize 1.2451 1.00 -> 1.24 Inexact Rounded
dqqua1707 quantize 1.2360 1.00 -> 1.23 Inexact Rounded
dqqua1708 quantize 1.2370 1.00 -> 1.23 Inexact Rounded
dqqua1709 quantize 1.2399 1.00 -> 1.23 Inexact Rounded
dqqua1711 quantize -1.2399 1.00 -> -1.24 Inexact Rounded
rounding: 05up
dqqua1800 quantize 1.2000 1.00 -> 1.20 Rounded
dqqua1801 quantize 1.2001 1.00 -> 1.21 Inexact Rounded
dqqua1802 quantize 1.2010 1.00 -> 1.21 Inexact Rounded
dqqua1803 quantize 1.2050 1.00 -> 1.21 Inexact Rounded
dqqua1804 quantize 1.2051 1.00 -> 1.21 Inexact Rounded
dqqua1807 quantize 1.2060 1.00 -> 1.21 Inexact Rounded
dqqua1808 quantize 1.2070 1.00 -> 1.21 Inexact Rounded
dqqua1809 quantize 1.2099 1.00 -> 1.21 Inexact Rounded
dqqua1811 quantize -1.2099 1.00 -> -1.21 Inexact Rounded
dqqua1900 quantize 1.2100 1.00 -> 1.21 Rounded
dqqua1901 quantize 1.2101 1.00 -> 1.21 Inexact Rounded
dqqua1902 quantize 1.2110 1.00 -> 1.21 Inexact Rounded
dqqua1903 quantize 1.2150 1.00 -> 1.21 Inexact Rounded
dqqua1904 quantize 1.2151 1.00 -> 1.21 Inexact Rounded
dqqua1907 quantize 1.2160 1.00 -> 1.21 Inexact Rounded
dqqua1908 quantize 1.2170 1.00 -> 1.21 Inexact Rounded
dqqua1909 quantize 1.2199 1.00 -> 1.21 Inexact Rounded
dqqua1911 quantize -1.2199 1.00 -> -1.21 Inexact Rounded
dqqua2000 quantize 1.2400 1.00 -> 1.24 Rounded
dqqua2001 quantize 1.2401 1.00 -> 1.24 Inexact Rounded
dqqua2002 quantize 1.2410 1.00 -> 1.24 Inexact Rounded
dqqua2003 quantize 1.2450 1.00 -> 1.24 Inexact Rounded
dqqua2004 quantize 1.2451 1.00 -> 1.24 Inexact Rounded
dqqua2007 quantize 1.2460 1.00 -> 1.24 Inexact Rounded
dqqua2008 quantize 1.2470 1.00 -> 1.24 Inexact Rounded
dqqua2009 quantize 1.2499 1.00 -> 1.24 Inexact Rounded
dqqua2011 quantize -1.2499 1.00 -> -1.24 Inexact Rounded
dqqua2100 quantize 1.2500 1.00 -> 1.25 Rounded
dqqua2101 quantize 1.2501 1.00 -> 1.26 Inexact Rounded
dqqua2102 quantize 1.2510 1.00 -> 1.26 Inexact Rounded
dqqua2103 quantize 1.2550 1.00 -> 1.26 Inexact Rounded
dqqua2104 quantize 1.2551 1.00 -> 1.26 Inexact Rounded
dqqua2107 quantize 1.2560 1.00 -> 1.26 Inexact Rounded
dqqua2108 quantize 1.2570 1.00 -> 1.26 Inexact Rounded
dqqua2109 quantize 1.2599 1.00 -> 1.26 Inexact Rounded
dqqua2111 quantize -1.2599 1.00 -> -1.26 Inexact Rounded
dqqua2200 quantize 1.2600 1.00 -> 1.26 Rounded
dqqua2201 quantize 1.2601 1.00 -> 1.26 Inexact Rounded
dqqua2202 quantize 1.2610 1.00 -> 1.26 Inexact Rounded
dqqua2203 quantize 1.2650 1.00 -> 1.26 Inexact Rounded
dqqua2204 quantize 1.2651 1.00 -> 1.26 Inexact Rounded
dqqua2207 quantize 1.2660 1.00 -> 1.26 Inexact Rounded
dqqua2208 quantize 1.2670 1.00 -> 1.26 Inexact Rounded
dqqua2209 quantize 1.2699 1.00 -> 1.26 Inexact Rounded
dqqua2211 quantize -1.2699 1.00 -> -1.26 Inexact Rounded
dqqua2300 quantize 1.2900 1.00 -> 1.29 Rounded
dqqua2301 quantize 1.2901 1.00 -> 1.29 Inexact Rounded
dqqua2302 quantize 1.2910 1.00 -> 1.29 Inexact Rounded
dqqua2303 quantize 1.2950 1.00 -> 1.29 Inexact Rounded
dqqua2304 quantize 1.2951 1.00 -> 1.29 Inexact Rounded
dqqua2307 quantize 1.2960 1.00 -> 1.29 Inexact Rounded
dqqua2308 quantize 1.2970 1.00 -> 1.29 Inexact Rounded
dqqua2309 quantize 1.2999 1.00 -> 1.29 Inexact Rounded
dqqua2311 quantize -1.2999 1.00 -> -1.29 Inexact Rounded
-- Null tests
dqqua998 quantize 10 # -> NaN Invalid_operation
dqqua999 quantize # 1e10 -> NaN Invalid_operation

View file

@ -0,0 +1,183 @@
------------------------------------------------------------------------
-- dqReduce.decTest -- remove trailing zeros from a decQuad --
-- Copyright (c) IBM Corporation, 2003, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
dqred001 reduce '1' -> '1'
dqred002 reduce '-1' -> '-1'
dqred003 reduce '1.00' -> '1'
dqred004 reduce '-1.00' -> '-1'
dqred005 reduce '0' -> '0'
dqred006 reduce '0.00' -> '0'
dqred007 reduce '00.0' -> '0'
dqred008 reduce '00.00' -> '0'
dqred009 reduce '00' -> '0'
dqred010 reduce '0E+1' -> '0'
dqred011 reduce '0E+5' -> '0'
dqred012 reduce '-2' -> '-2'
dqred013 reduce '2' -> '2'
dqred014 reduce '-2.00' -> '-2'
dqred015 reduce '2.00' -> '2'
dqred016 reduce '-0' -> '-0'
dqred017 reduce '-0.00' -> '-0'
dqred018 reduce '-00.0' -> '-0'
dqred019 reduce '-00.00' -> '-0'
dqred020 reduce '-00' -> '-0'
dqred021 reduce '-0E+5' -> '-0'
dqred022 reduce '-0E+1' -> '-0'
dqred030 reduce '+0.1' -> '0.1'
dqred031 reduce '-0.1' -> '-0.1'
dqred032 reduce '+0.01' -> '0.01'
dqred033 reduce '-0.01' -> '-0.01'
dqred034 reduce '+0.001' -> '0.001'
dqred035 reduce '-0.001' -> '-0.001'
dqred036 reduce '+0.000001' -> '0.000001'
dqred037 reduce '-0.000001' -> '-0.000001'
dqred038 reduce '+0.000000000001' -> '1E-12'
dqred039 reduce '-0.000000000001' -> '-1E-12'
dqred041 reduce 1.1 -> 1.1
dqred042 reduce 1.10 -> 1.1
dqred043 reduce 1.100 -> 1.1
dqred044 reduce 1.110 -> 1.11
dqred045 reduce -1.1 -> -1.1
dqred046 reduce -1.10 -> -1.1
dqred047 reduce -1.100 -> -1.1
dqred048 reduce -1.110 -> -1.11
dqred049 reduce 9.9 -> 9.9
dqred050 reduce 9.90 -> 9.9
dqred051 reduce 9.900 -> 9.9
dqred052 reduce 9.990 -> 9.99
dqred053 reduce -9.9 -> -9.9
dqred054 reduce -9.90 -> -9.9
dqred055 reduce -9.900 -> -9.9
dqred056 reduce -9.990 -> -9.99
-- some trailing fractional zeros with zeros in units
dqred060 reduce 10.0 -> 1E+1
dqred061 reduce 10.00 -> 1E+1
dqred062 reduce 100.0 -> 1E+2
dqred063 reduce 100.00 -> 1E+2
dqred064 reduce 1.1000E+3 -> 1.1E+3
dqred065 reduce 1.10000E+3 -> 1.1E+3
dqred066 reduce -10.0 -> -1E+1
dqred067 reduce -10.00 -> -1E+1
dqred068 reduce -100.0 -> -1E+2
dqred069 reduce -100.00 -> -1E+2
dqred070 reduce -1.1000E+3 -> -1.1E+3
dqred071 reduce -1.10000E+3 -> -1.1E+3
-- some insignificant trailing zeros with positive exponent
dqred080 reduce 10E+1 -> 1E+2
dqred081 reduce 100E+1 -> 1E+3
dqred082 reduce 1.0E+2 -> 1E+2
dqred083 reduce 1.0E+3 -> 1E+3
dqred084 reduce 1.1E+3 -> 1.1E+3
dqred085 reduce 1.00E+3 -> 1E+3
dqred086 reduce 1.10E+3 -> 1.1E+3
dqred087 reduce -10E+1 -> -1E+2
dqred088 reduce -100E+1 -> -1E+3
dqred089 reduce -1.0E+2 -> -1E+2
dqred090 reduce -1.0E+3 -> -1E+3
dqred091 reduce -1.1E+3 -> -1.1E+3
dqred092 reduce -1.00E+3 -> -1E+3
dqred093 reduce -1.10E+3 -> -1.1E+3
-- some significant trailing zeros, were we to be trimming
dqred100 reduce 11 -> 11
dqred101 reduce 10 -> 1E+1
dqred102 reduce 10. -> 1E+1
dqred103 reduce 1.1E+1 -> 11
dqred104 reduce 1.0E+1 -> 1E+1
dqred105 reduce 1.10E+2 -> 1.1E+2
dqred106 reduce 1.00E+2 -> 1E+2
dqred107 reduce 1.100E+3 -> 1.1E+3
dqred108 reduce 1.000E+3 -> 1E+3
dqred109 reduce 1.000000E+6 -> 1E+6
dqred110 reduce -11 -> -11
dqred111 reduce -10 -> -1E+1
dqred112 reduce -10. -> -1E+1
dqred113 reduce -1.1E+1 -> -11
dqred114 reduce -1.0E+1 -> -1E+1
dqred115 reduce -1.10E+2 -> -1.1E+2
dqred116 reduce -1.00E+2 -> -1E+2
dqred117 reduce -1.100E+3 -> -1.1E+3
dqred118 reduce -1.000E+3 -> -1E+3
dqred119 reduce -1.00000E+5 -> -1E+5
dqred120 reduce -1.000000E+6 -> -1E+6
dqred121 reduce -10.00000E+6 -> -1E+7
dqred122 reduce -100.0000E+6 -> -1E+8
dqred123 reduce -1000.000E+6 -> -1E+9
dqred124 reduce -10000.00E+6 -> -1E+10
dqred125 reduce -100000.0E+6 -> -1E+11
dqred126 reduce -1000000.E+6 -> -1E+12
-- examples from decArith
dqred140 reduce '2.1' -> '2.1'
dqred141 reduce '-2.0' -> '-2'
dqred142 reduce '1.200' -> '1.2'
dqred143 reduce '-120' -> '-1.2E+2'
dqred144 reduce '120.00' -> '1.2E+2'
dqred145 reduce '0.00' -> '0'
-- Nmax, Nmin, Ntiny
-- note origami effect on some of these
dqred151 reduce 9.999999999999999999999999999999999E+6144 -> 9.999999999999999999999999999999999E+6144
dqred152 reduce 9.999999999999999999999999000000000E+6140 -> 9.99999999999999999999999900000E+6140
dqred153 reduce 9.999999999999999999999999999990000E+6144 -> 9.999999999999999999999999999990000E+6144
dqred154 reduce 1E-6143 -> 1E-6143
dqred155 reduce 1.000000000000000000000000000000000E-6143 -> 1E-6143
dqred156 reduce 2.000E-6173 -> 2E-6173 Subnormal
dqred157 reduce 1E-6176 -> 1E-6176 Subnormal
dqred161 reduce -1E-6176 -> -1E-6176 Subnormal
dqred162 reduce -2.000E-6173 -> -2E-6173 Subnormal
dqred163 reduce -1.000000000000000000000000000000000E-6143 -> -1E-6143
dqred164 reduce -1E-6143 -> -1E-6143
dqred165 reduce -9.999999999999999999999999000000000E+6140 -> -9.99999999999999999999999900000E+6140
dqred166 reduce -9.999999999999999999999999999990000E+6144 -> -9.999999999999999999999999999990000E+6144
dqred167 reduce -9.999999999999999999999999999999990E+6144 -> -9.999999999999999999999999999999990E+6144
dqred168 reduce -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144
dqred169 reduce -9.999999999999999999999999999999990E+6144 -> -9.999999999999999999999999999999990E+6144
-- specials (reduce does not affect payload)
dqred820 reduce 'Inf' -> 'Infinity'
dqred821 reduce '-Inf' -> '-Infinity'
dqred822 reduce NaN -> NaN
dqred823 reduce sNaN -> NaN Invalid_operation
dqred824 reduce NaN101 -> NaN101
dqred825 reduce sNaN010 -> NaN10 Invalid_operation
dqred827 reduce -NaN -> -NaN
dqred828 reduce -sNaN -> -NaN Invalid_operation
dqred829 reduce -NaN101 -> -NaN101
dqred830 reduce -sNaN010 -> -NaN10 Invalid_operation
-- Null test
dqred900 reduce # -> NaN Invalid_operation

View file

@ -0,0 +1,597 @@
------------------------------------------------------------------------
-- dqRemainder.decTest -- decQuad remainder --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks (as base, above)
dqrem001 remainder 1 1 -> 0
dqrem002 remainder 2 1 -> 0
dqrem003 remainder 1 2 -> 1
dqrem004 remainder 2 2 -> 0
dqrem005 remainder 0 1 -> 0
dqrem006 remainder 0 2 -> 0
dqrem007 remainder 1 3 -> 1
dqrem008 remainder 2 3 -> 2
dqrem009 remainder 3 3 -> 0
dqrem010 remainder 2.4 1 -> 0.4
dqrem011 remainder 2.4 -1 -> 0.4
dqrem012 remainder -2.4 1 -> -0.4
dqrem013 remainder -2.4 -1 -> -0.4
dqrem014 remainder 2.40 1 -> 0.40
dqrem015 remainder 2.400 1 -> 0.400
dqrem016 remainder 2.4 2 -> 0.4
dqrem017 remainder 2.400 2 -> 0.400
dqrem018 remainder 2. 2 -> 0
dqrem019 remainder 20 20 -> 0
dqrem020 remainder 187 187 -> 0
dqrem021 remainder 5 2 -> 1
dqrem022 remainder 5 2.0 -> 1.0
dqrem023 remainder 5 2.000 -> 1.000
dqrem024 remainder 5 0.200 -> 0.000
dqrem025 remainder 5 0.200 -> 0.000
dqrem030 remainder 1 2 -> 1
dqrem031 remainder 1 4 -> 1
dqrem032 remainder 1 8 -> 1
dqrem033 remainder 1 16 -> 1
dqrem034 remainder 1 32 -> 1
dqrem035 remainder 1 64 -> 1
dqrem040 remainder 1 -2 -> 1
dqrem041 remainder 1 -4 -> 1
dqrem042 remainder 1 -8 -> 1
dqrem043 remainder 1 -16 -> 1
dqrem044 remainder 1 -32 -> 1
dqrem045 remainder 1 -64 -> 1
dqrem050 remainder -1 2 -> -1
dqrem051 remainder -1 4 -> -1
dqrem052 remainder -1 8 -> -1
dqrem053 remainder -1 16 -> -1
dqrem054 remainder -1 32 -> -1
dqrem055 remainder -1 64 -> -1
dqrem060 remainder -1 -2 -> -1
dqrem061 remainder -1 -4 -> -1
dqrem062 remainder -1 -8 -> -1
dqrem063 remainder -1 -16 -> -1
dqrem064 remainder -1 -32 -> -1
dqrem065 remainder -1 -64 -> -1
dqrem066 remainder 999999999 1 -> 0
dqrem067 remainder 999999999.4 1 -> 0.4
dqrem068 remainder 999999999.5 1 -> 0.5
dqrem069 remainder 999999999.9 1 -> 0.9
dqrem070 remainder 999999999.999 1 -> 0.999
dqrem071 remainder 999999.999999 1 -> 0.999999
dqrem072 remainder 9 1 -> 0
dqrem080 remainder 0. 1 -> 0
dqrem081 remainder .0 1 -> 0.0
dqrem082 remainder 0.00 1 -> 0.00
dqrem083 remainder 0.00E+9 1 -> 0
dqrem084 remainder 0.00E+3 1 -> 0
dqrem085 remainder 0.00E+2 1 -> 0
dqrem086 remainder 0.00E+1 1 -> 0.0
dqrem087 remainder 0.00E+0 1 -> 0.00
dqrem088 remainder 0.00E-0 1 -> 0.00
dqrem089 remainder 0.00E-1 1 -> 0.000
dqrem090 remainder 0.00E-2 1 -> 0.0000
dqrem091 remainder 0.00E-3 1 -> 0.00000
dqrem092 remainder 0.00E-4 1 -> 0.000000
dqrem093 remainder 0.00E-5 1 -> 0E-7
dqrem094 remainder 0.00E-6 1 -> 0E-8
dqrem095 remainder 0.0000E-50 1 -> 0E-54
-- Various flavours of remainder by 0
dqrem101 remainder 0 0 -> NaN Division_undefined
dqrem102 remainder 0 -0 -> NaN Division_undefined
dqrem103 remainder -0 0 -> NaN Division_undefined
dqrem104 remainder -0 -0 -> NaN Division_undefined
dqrem105 remainder 0.0E5 0 -> NaN Division_undefined
dqrem106 remainder 0.000 0 -> NaN Division_undefined
-- [Some think this next group should be Division_by_zero exception, but
-- IEEE 854 is explicit that it is Invalid operation .. for
-- remainder-near, anyway]
dqrem107 remainder 0.0001 0 -> NaN Invalid_operation
dqrem108 remainder 0.01 0 -> NaN Invalid_operation
dqrem109 remainder 0.1 0 -> NaN Invalid_operation
dqrem110 remainder 1 0 -> NaN Invalid_operation
dqrem111 remainder 1 0.0 -> NaN Invalid_operation
dqrem112 remainder 10 0.0 -> NaN Invalid_operation
dqrem113 remainder 1E+100 0.0 -> NaN Invalid_operation
dqrem114 remainder 1E+380 0 -> NaN Invalid_operation
dqrem115 remainder 0.0001 -0 -> NaN Invalid_operation
dqrem116 remainder 0.01 -0 -> NaN Invalid_operation
dqrem119 remainder 0.1 -0 -> NaN Invalid_operation
dqrem120 remainder 1 -0 -> NaN Invalid_operation
dqrem121 remainder 1 -0.0 -> NaN Invalid_operation
dqrem122 remainder 10 -0.0 -> NaN Invalid_operation
dqrem123 remainder 1E+100 -0.0 -> NaN Invalid_operation
dqrem124 remainder 1E+384 -0 -> NaN Invalid_operation
-- and zeros on left
dqrem130 remainder 0 1 -> 0
dqrem131 remainder 0 -1 -> 0
dqrem132 remainder 0.0 1 -> 0.0
dqrem133 remainder 0.0 -1 -> 0.0
dqrem134 remainder -0 1 -> -0
dqrem135 remainder -0 -1 -> -0
dqrem136 remainder -0.0 1 -> -0.0
dqrem137 remainder -0.0 -1 -> -0.0
-- 0.5ers
dqrem143 remainder 0.5 2 -> 0.5
dqrem144 remainder 0.5 2.1 -> 0.5
dqrem145 remainder 0.5 2.01 -> 0.50
dqrem146 remainder 0.5 2.001 -> 0.500
dqrem147 remainder 0.50 2 -> 0.50
dqrem148 remainder 0.50 2.01 -> 0.50
dqrem149 remainder 0.50 2.001 -> 0.500
-- steadies
dqrem150 remainder 1 1 -> 0
dqrem151 remainder 1 2 -> 1
dqrem152 remainder 1 3 -> 1
dqrem153 remainder 1 4 -> 1
dqrem154 remainder 1 5 -> 1
dqrem155 remainder 1 6 -> 1
dqrem156 remainder 1 7 -> 1
dqrem157 remainder 1 8 -> 1
dqrem158 remainder 1 9 -> 1
dqrem159 remainder 1 10 -> 1
dqrem160 remainder 1 1 -> 0
dqrem161 remainder 2 1 -> 0
dqrem162 remainder 3 1 -> 0
dqrem163 remainder 4 1 -> 0
dqrem164 remainder 5 1 -> 0
dqrem165 remainder 6 1 -> 0
dqrem166 remainder 7 1 -> 0
dqrem167 remainder 8 1 -> 0
dqrem168 remainder 9 1 -> 0
dqrem169 remainder 10 1 -> 0
-- some differences from remainderNear
dqrem171 remainder 0.4 1.020 -> 0.400
dqrem172 remainder 0.50 1.020 -> 0.500
dqrem173 remainder 0.51 1.020 -> 0.510
dqrem174 remainder 0.52 1.020 -> 0.520
dqrem175 remainder 0.6 1.020 -> 0.600
-- More flavours of remainder by 0
dqrem201 remainder 0 0 -> NaN Division_undefined
dqrem202 remainder 0.0E5 0 -> NaN Division_undefined
dqrem203 remainder 0.000 0 -> NaN Division_undefined
dqrem204 remainder 0.0001 0 -> NaN Invalid_operation
dqrem205 remainder 0.01 0 -> NaN Invalid_operation
dqrem206 remainder 0.1 0 -> NaN Invalid_operation
dqrem207 remainder 1 0 -> NaN Invalid_operation
dqrem208 remainder 1 0.0 -> NaN Invalid_operation
dqrem209 remainder 10 0.0 -> NaN Invalid_operation
dqrem210 remainder 1E+100 0.0 -> NaN Invalid_operation
dqrem211 remainder 1E+380 0 -> NaN Invalid_operation
-- some differences from remainderNear
dqrem231 remainder -0.4 1.020 -> -0.400
dqrem232 remainder -0.50 1.020 -> -0.500
dqrem233 remainder -0.51 1.020 -> -0.510
dqrem234 remainder -0.52 1.020 -> -0.520
dqrem235 remainder -0.6 1.020 -> -0.600
-- high Xs
dqrem240 remainder 1E+2 1.00 -> 0.00
-- dqrem3xx are from DiagBigDecimal
dqrem301 remainder 1 3 -> 1
dqrem302 remainder 5 5 -> 0
dqrem303 remainder 13 10 -> 3
dqrem304 remainder 13 50 -> 13
dqrem305 remainder 13 100 -> 13
dqrem306 remainder 13 1000 -> 13
dqrem307 remainder .13 1 -> 0.13
dqrem308 remainder 0.133 1 -> 0.133
dqrem309 remainder 0.1033 1 -> 0.1033
dqrem310 remainder 1.033 1 -> 0.033
dqrem311 remainder 10.33 1 -> 0.33
dqrem312 remainder 10.33 10 -> 0.33
dqrem313 remainder 103.3 1 -> 0.3
dqrem314 remainder 133 10 -> 3
dqrem315 remainder 1033 10 -> 3
dqrem316 remainder 1033 50 -> 33
dqrem317 remainder 101.0 3 -> 2.0
dqrem318 remainder 102.0 3 -> 0.0
dqrem319 remainder 103.0 3 -> 1.0
dqrem320 remainder 2.40 1 -> 0.40
dqrem321 remainder 2.400 1 -> 0.400
dqrem322 remainder 2.4 1 -> 0.4
dqrem323 remainder 2.4 2 -> 0.4
dqrem324 remainder 2.400 2 -> 0.400
dqrem325 remainder 1 0.3 -> 0.1
dqrem326 remainder 1 0.30 -> 0.10
dqrem327 remainder 1 0.300 -> 0.100
dqrem328 remainder 1 0.3000 -> 0.1000
dqrem329 remainder 1.0 0.3 -> 0.1
dqrem330 remainder 1.00 0.3 -> 0.10
dqrem331 remainder 1.000 0.3 -> 0.100
dqrem332 remainder 1.0000 0.3 -> 0.1000
dqrem333 remainder 0.5 2 -> 0.5
dqrem334 remainder 0.5 2.1 -> 0.5
dqrem335 remainder 0.5 2.01 -> 0.50
dqrem336 remainder 0.5 2.001 -> 0.500
dqrem337 remainder 0.50 2 -> 0.50
dqrem338 remainder 0.50 2.01 -> 0.50
dqrem339 remainder 0.50 2.001 -> 0.500
dqrem340 remainder 0.5 0.5000001 -> 0.5000000
dqrem341 remainder 0.5 0.50000001 -> 0.50000000
dqrem342 remainder 0.5 0.500000001 -> 0.500000000
dqrem343 remainder 0.5 0.5000000001 -> 0.5000000000
dqrem344 remainder 0.5 0.50000000001 -> 0.50000000000
dqrem345 remainder 0.5 0.4999999 -> 1E-7
dqrem346 remainder 0.5 0.49999999 -> 1E-8
dqrem347 remainder 0.5 0.499999999 -> 1E-9
dqrem348 remainder 0.5 0.4999999999 -> 1E-10
dqrem349 remainder 0.5 0.49999999999 -> 1E-11
dqrem350 remainder 0.5 0.499999999999 -> 1E-12
dqrem351 remainder 0.03 7 -> 0.03
dqrem352 remainder 5 2 -> 1
dqrem353 remainder 4.1 2 -> 0.1
dqrem354 remainder 4.01 2 -> 0.01
dqrem355 remainder 4.001 2 -> 0.001
dqrem356 remainder 4.0001 2 -> 0.0001
dqrem357 remainder 4.00001 2 -> 0.00001
dqrem358 remainder 4.000001 2 -> 0.000001
dqrem359 remainder 4.0000001 2 -> 1E-7
dqrem360 remainder 1.2 0.7345 -> 0.4655
dqrem361 remainder 0.8 12 -> 0.8
dqrem362 remainder 0.8 0.2 -> 0.0
dqrem363 remainder 0.8 0.3 -> 0.2
dqrem364 remainder 0.800 12 -> 0.800
dqrem365 remainder 0.800 1.7 -> 0.800
dqrem366 remainder 2.400 2 -> 0.400
dqrem371 remainder 2.400 2 -> 0.400
dqrem381 remainder 12345 1 -> 0
dqrem382 remainder 12345 1.0001 -> 0.7657
dqrem383 remainder 12345 1.001 -> 0.668
dqrem384 remainder 12345 1.01 -> 0.78
dqrem385 remainder 12345 1.1 -> 0.8
dqrem386 remainder 12355 4 -> 3
dqrem387 remainder 12345 4 -> 1
dqrem388 remainder 12355 4.0001 -> 2.6912
dqrem389 remainder 12345 4.0001 -> 0.6914
dqrem390 remainder 12345 4.9 -> 1.9
dqrem391 remainder 12345 4.99 -> 4.73
dqrem392 remainder 12345 4.999 -> 2.469
dqrem393 remainder 12345 4.9999 -> 0.2469
dqrem394 remainder 12345 5 -> 0
dqrem395 remainder 12345 5.0001 -> 4.7532
dqrem396 remainder 12345 5.001 -> 2.532
dqrem397 remainder 12345 5.01 -> 0.36
dqrem398 remainder 12345 5.1 -> 3.0
-- the nasty division-by-1 cases
dqrem401 remainder 0.5 1 -> 0.5
dqrem402 remainder 0.55 1 -> 0.55
dqrem403 remainder 0.555 1 -> 0.555
dqrem404 remainder 0.5555 1 -> 0.5555
dqrem405 remainder 0.55555 1 -> 0.55555
dqrem406 remainder 0.555555 1 -> 0.555555
dqrem407 remainder 0.5555555 1 -> 0.5555555
dqrem408 remainder 0.55555555 1 -> 0.55555555
dqrem409 remainder 0.555555555 1 -> 0.555555555
-- folddowns
dqrem421 remainder 1E+6144 1 -> NaN Division_impossible
dqrem422 remainder 1E+6144 1E+6143 -> 0E+6111 Clamped
dqrem423 remainder 1E+6144 2E+6143 -> 0E+6111 Clamped
dqrem424 remainder 1E+6144 3E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped
dqrem425 remainder 1E+6144 4E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped
dqrem426 remainder 1E+6144 5E+6143 -> 0E+6111 Clamped
dqrem427 remainder 1E+6144 6E+6143 -> 4.00000000000000000000000000000000E+6143 Clamped
dqrem428 remainder 1E+6144 7E+6143 -> 3.00000000000000000000000000000000E+6143 Clamped
dqrem429 remainder 1E+6144 8E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped
dqrem430 remainder 1E+6144 9E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped
-- tinies
dqrem431 remainder 1E-6175 1E-6176 -> 0E-6176
dqrem432 remainder 1E-6175 2E-6176 -> 0E-6176
dqrem433 remainder 1E-6175 3E-6176 -> 1E-6176 Subnormal
dqrem434 remainder 1E-6175 4E-6176 -> 2E-6176 Subnormal
dqrem435 remainder 1E-6175 5E-6176 -> 0E-6176
dqrem436 remainder 1E-6175 6E-6176 -> 4E-6176 Subnormal
dqrem437 remainder 1E-6175 7E-6176 -> 3E-6176 Subnormal
dqrem438 remainder 1E-6175 8E-6176 -> 2E-6176 Subnormal
dqrem439 remainder 1E-6175 9E-6176 -> 1E-6176 Subnormal
dqrem440 remainder 1E-6175 10E-6176 -> 0E-6176
dqrem441 remainder 1E-6175 11E-6176 -> 1.0E-6175 Subnormal
dqrem442 remainder 100E-6175 11E-6176 -> 1.0E-6175 Subnormal
dqrem443 remainder 100E-6175 20E-6176 -> 0E-6176
dqrem444 remainder 100E-6175 21E-6176 -> 1.3E-6175 Subnormal
dqrem445 remainder 100E-6175 30E-6176 -> 1.0E-6175 Subnormal
-- zero signs
dqrem650 remainder 1 1 -> 0
dqrem651 remainder -1 1 -> -0
dqrem652 remainder 1 -1 -> 0
dqrem653 remainder -1 -1 -> -0
dqrem654 remainder 0 1 -> 0
dqrem655 remainder -0 1 -> -0
dqrem656 remainder 0 -1 -> 0
dqrem657 remainder -0 -1 -> -0
dqrem658 remainder 0.00 1 -> 0.00
dqrem659 remainder -0.00 1 -> -0.00
-- Specials
dqrem680 remainder Inf -Inf -> NaN Invalid_operation
dqrem681 remainder Inf -1000 -> NaN Invalid_operation
dqrem682 remainder Inf -1 -> NaN Invalid_operation
dqrem683 remainder Inf 0 -> NaN Invalid_operation
dqrem684 remainder Inf -0 -> NaN Invalid_operation
dqrem685 remainder Inf 1 -> NaN Invalid_operation
dqrem686 remainder Inf 1000 -> NaN Invalid_operation
dqrem687 remainder Inf Inf -> NaN Invalid_operation
dqrem688 remainder -1000 Inf -> -1000
dqrem689 remainder -Inf Inf -> NaN Invalid_operation
dqrem691 remainder -1 Inf -> -1
dqrem692 remainder 0 Inf -> 0
dqrem693 remainder -0 Inf -> -0
dqrem694 remainder 1 Inf -> 1
dqrem695 remainder 1000 Inf -> 1000
dqrem696 remainder Inf Inf -> NaN Invalid_operation
dqrem700 remainder -Inf -Inf -> NaN Invalid_operation
dqrem701 remainder -Inf -1000 -> NaN Invalid_operation
dqrem702 remainder -Inf -1 -> NaN Invalid_operation
dqrem703 remainder -Inf -0 -> NaN Invalid_operation
dqrem704 remainder -Inf 0 -> NaN Invalid_operation
dqrem705 remainder -Inf 1 -> NaN Invalid_operation
dqrem706 remainder -Inf 1000 -> NaN Invalid_operation
dqrem707 remainder -Inf Inf -> NaN Invalid_operation
dqrem708 remainder -Inf -Inf -> NaN Invalid_operation
dqrem709 remainder -1000 Inf -> -1000
dqrem710 remainder -1 -Inf -> -1
dqrem711 remainder -0 -Inf -> -0
dqrem712 remainder 0 -Inf -> 0
dqrem713 remainder 1 -Inf -> 1
dqrem714 remainder 1000 -Inf -> 1000
dqrem715 remainder Inf -Inf -> NaN Invalid_operation
dqrem721 remainder NaN -Inf -> NaN
dqrem722 remainder NaN -1000 -> NaN
dqrem723 remainder NaN -1 -> NaN
dqrem724 remainder NaN -0 -> NaN
dqrem725 remainder -NaN 0 -> -NaN
dqrem726 remainder NaN 1 -> NaN
dqrem727 remainder NaN 1000 -> NaN
dqrem728 remainder NaN Inf -> NaN
dqrem729 remainder NaN -NaN -> NaN
dqrem730 remainder -Inf NaN -> NaN
dqrem731 remainder -1000 NaN -> NaN
dqrem732 remainder -1 NaN -> NaN
dqrem733 remainder -0 -NaN -> -NaN
dqrem734 remainder 0 NaN -> NaN
dqrem735 remainder 1 -NaN -> -NaN
dqrem736 remainder 1000 NaN -> NaN
dqrem737 remainder Inf NaN -> NaN
dqrem741 remainder sNaN -Inf -> NaN Invalid_operation
dqrem742 remainder sNaN -1000 -> NaN Invalid_operation
dqrem743 remainder -sNaN -1 -> -NaN Invalid_operation
dqrem744 remainder sNaN -0 -> NaN Invalid_operation
dqrem745 remainder sNaN 0 -> NaN Invalid_operation
dqrem746 remainder sNaN 1 -> NaN Invalid_operation
dqrem747 remainder sNaN 1000 -> NaN Invalid_operation
dqrem749 remainder sNaN NaN -> NaN Invalid_operation
dqrem750 remainder sNaN sNaN -> NaN Invalid_operation
dqrem751 remainder NaN sNaN -> NaN Invalid_operation
dqrem752 remainder -Inf sNaN -> NaN Invalid_operation
dqrem753 remainder -1000 sNaN -> NaN Invalid_operation
dqrem754 remainder -1 sNaN -> NaN Invalid_operation
dqrem755 remainder -0 sNaN -> NaN Invalid_operation
dqrem756 remainder 0 sNaN -> NaN Invalid_operation
dqrem757 remainder 1 sNaN -> NaN Invalid_operation
dqrem758 remainder 1000 sNaN -> NaN Invalid_operation
dqrem759 remainder Inf -sNaN -> -NaN Invalid_operation
-- propaging NaNs
dqrem760 remainder NaN1 NaN7 -> NaN1
dqrem761 remainder sNaN2 NaN8 -> NaN2 Invalid_operation
dqrem762 remainder NaN3 sNaN9 -> NaN9 Invalid_operation
dqrem763 remainder sNaN4 sNaN10 -> NaN4 Invalid_operation
dqrem764 remainder 15 NaN11 -> NaN11
dqrem765 remainder NaN6 NaN12 -> NaN6
dqrem766 remainder Inf NaN13 -> NaN13
dqrem767 remainder NaN14 -Inf -> NaN14
dqrem768 remainder 0 NaN15 -> NaN15
dqrem769 remainder NaN16 -0 -> NaN16
-- edge cases of impossible
dqrem770 remainder 1234568888888887777777777890123456 10 -> 6
dqrem771 remainder 1234568888888887777777777890123456 1 -> 0
dqrem772 remainder 1234568888888887777777777890123456 0.1 -> NaN Division_impossible
dqrem773 remainder 1234568888888887777777777890123456 0.01 -> NaN Division_impossible
-- long operand checks
dqrem801 remainder 12345678000 100 -> 0
dqrem802 remainder 1 12345678000 -> 1
dqrem803 remainder 1234567800 10 -> 0
dqrem804 remainder 1 1234567800 -> 1
dqrem805 remainder 1234567890 10 -> 0
dqrem806 remainder 1 1234567890 -> 1
dqrem807 remainder 1234567891 10 -> 1
dqrem808 remainder 1 1234567891 -> 1
dqrem809 remainder 12345678901 100 -> 1
dqrem810 remainder 1 12345678901 -> 1
dqrem811 remainder 1234567896 10 -> 6
dqrem812 remainder 1 1234567896 -> 1
dqrem821 remainder 12345678000 100 -> 0
dqrem822 remainder 1 12345678000 -> 1
dqrem823 remainder 1234567800 10 -> 0
dqrem824 remainder 1 1234567800 -> 1
dqrem825 remainder 1234567890 10 -> 0
dqrem826 remainder 1 1234567890 -> 1
dqrem827 remainder 1234567891 10 -> 1
dqrem828 remainder 1 1234567891 -> 1
dqrem829 remainder 12345678901 100 -> 1
dqrem830 remainder 1 12345678901 -> 1
dqrem831 remainder 1234567896 10 -> 6
dqrem832 remainder 1 1234567896 -> 1
-- from divideint
dqrem840 remainder 100000000.0 1 -> 0.0
dqrem841 remainder 100000000.4 1 -> 0.4
dqrem842 remainder 100000000.5 1 -> 0.5
dqrem843 remainder 100000000.9 1 -> 0.9
dqrem844 remainder 100000000.999 1 -> 0.999
dqrem850 remainder 100000003 5 -> 3
dqrem851 remainder 10000003 5 -> 3
dqrem852 remainder 1000003 5 -> 3
dqrem853 remainder 100003 5 -> 3
dqrem854 remainder 10003 5 -> 3
dqrem855 remainder 1003 5 -> 3
dqrem856 remainder 103 5 -> 3
dqrem857 remainder 13 5 -> 3
dqrem858 remainder 1 5 -> 1
-- Vladimir's cases 1234567890123456
dqrem860 remainder 123.0e1 1000000000000000 -> 1230
dqrem861 remainder 1230 1000000000000000 -> 1230
dqrem862 remainder 12.3e2 1000000000000000 -> 1230
dqrem863 remainder 1.23e3 1000000000000000 -> 1230
dqrem864 remainder 123e1 1000000000000000 -> 1230
dqrem870 remainder 123e1 1000000000000000 -> 1230
dqrem871 remainder 123e1 100000000000000 -> 1230
dqrem872 remainder 123e1 10000000000000 -> 1230
dqrem873 remainder 123e1 1000000000000 -> 1230
dqrem874 remainder 123e1 100000000000 -> 1230
dqrem875 remainder 123e1 10000000000 -> 1230
dqrem876 remainder 123e1 1000000000 -> 1230
dqrem877 remainder 123e1 100000000 -> 1230
dqrem878 remainder 1230 100000000 -> 1230
dqrem879 remainder 123e1 10000000 -> 1230
dqrem880 remainder 123e1 1000000 -> 1230
dqrem881 remainder 123e1 100000 -> 1230
dqrem882 remainder 123e1 10000 -> 1230
dqrem883 remainder 123e1 1000 -> 230
dqrem884 remainder 123e1 100 -> 30
dqrem885 remainder 123e1 10 -> 0
dqrem886 remainder 123e1 1 -> 0
dqrem890 remainder 123e1 2000000000000000 -> 1230
dqrem891 remainder 123e1 200000000000000 -> 1230
dqrem892 remainder 123e1 20000000000000 -> 1230
dqrem893 remainder 123e1 2000000000000 -> 1230
dqrem894 remainder 123e1 200000000000 -> 1230
dqrem895 remainder 123e1 20000000000 -> 1230
dqrem896 remainder 123e1 2000000000 -> 1230
dqrem897 remainder 123e1 200000000 -> 1230
dqrem899 remainder 123e1 20000000 -> 1230
dqrem900 remainder 123e1 2000000 -> 1230
dqrem901 remainder 123e1 200000 -> 1230
dqrem902 remainder 123e1 20000 -> 1230
dqrem903 remainder 123e1 2000 -> 1230
dqrem904 remainder 123e1 200 -> 30
dqrem905 remainder 123e1 20 -> 10
dqrem906 remainder 123e1 2 -> 0
dqrem910 remainder 123e1 5000000000000000 -> 1230
dqrem911 remainder 123e1 500000000000000 -> 1230
dqrem912 remainder 123e1 50000000000000 -> 1230
dqrem913 remainder 123e1 5000000000000 -> 1230
dqrem914 remainder 123e1 500000000000 -> 1230
dqrem915 remainder 123e1 50000000000 -> 1230
dqrem916 remainder 123e1 5000000000 -> 1230
dqrem917 remainder 123e1 500000000 -> 1230
dqrem919 remainder 123e1 50000000 -> 1230
dqrem920 remainder 123e1 5000000 -> 1230
dqrem921 remainder 123e1 500000 -> 1230
dqrem922 remainder 123e1 50000 -> 1230
dqrem923 remainder 123e1 5000 -> 1230
dqrem924 remainder 123e1 500 -> 230
dqrem925 remainder 123e1 50 -> 30
dqrem926 remainder 123e1 5 -> 0
dqrem930 remainder 123e1 9000000000000000 -> 1230
dqrem931 remainder 123e1 900000000000000 -> 1230
dqrem932 remainder 123e1 90000000000000 -> 1230
dqrem933 remainder 123e1 9000000000000 -> 1230
dqrem934 remainder 123e1 900000000000 -> 1230
dqrem935 remainder 123e1 90000000000 -> 1230
dqrem936 remainder 123e1 9000000000 -> 1230
dqrem937 remainder 123e1 900000000 -> 1230
dqrem939 remainder 123e1 90000000 -> 1230
dqrem940 remainder 123e1 9000000 -> 1230
dqrem941 remainder 123e1 900000 -> 1230
dqrem942 remainder 123e1 90000 -> 1230
dqrem943 remainder 123e1 9000 -> 1230
dqrem944 remainder 123e1 900 -> 330
dqrem945 remainder 123e1 90 -> 60
dqrem946 remainder 123e1 9 -> 6
dqrem950 remainder 123e1 1000000000000000 -> 1230
dqrem961 remainder 123e1 2999999999999999 -> 1230
dqrem962 remainder 123e1 3999999999999999 -> 1230
dqrem963 remainder 123e1 4999999999999999 -> 1230
dqrem964 remainder 123e1 5999999999999999 -> 1230
dqrem965 remainder 123e1 6999999999999999 -> 1230
dqrem966 remainder 123e1 7999999999999999 -> 1230
dqrem967 remainder 123e1 8999999999999999 -> 1230
dqrem968 remainder 123e1 9999999999999999 -> 1230
dqrem969 remainder 123e1 9876543210987654 -> 1230
dqrem980 remainder 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally
-- overflow and underflow tests [from divide]
dqrem1051 remainder 1e+277 1e-311 -> NaN Division_impossible
dqrem1052 remainder 1e+277 -1e-311 -> NaN Division_impossible
dqrem1053 remainder -1e+277 1e-311 -> NaN Division_impossible
dqrem1054 remainder -1e+277 -1e-311 -> NaN Division_impossible
dqrem1055 remainder 1e-277 1e+311 -> 1E-277
dqrem1056 remainder 1e-277 -1e+311 -> 1E-277
dqrem1057 remainder -1e-277 1e+311 -> -1E-277
dqrem1058 remainder -1e-277 -1e+311 -> -1E-277
-- Gyuris example
dqrem1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143
-- destructive subtract
dqrem1120 remainder 1234567890123456789012345678901234 1.000000000000000000000000000000001 -> 0.765432109876543210987654321098768
dqrem1121 remainder 1234567890123456789012345678901234 1.00000000000000000000000000000001 -> 0.65432109876543210987654321098779
dqrem1122 remainder 1234567890123456789012345678901234 1.0000000000000000000000000000001 -> 0.5432109876543210987654321098890
dqrem1123 remainder 1234567890123456789012345678901255 4.000000000000000000000000000000001 -> 2.691358027469135802746913580274687
dqrem1124 remainder 1234567890123456789012345678901234 4.000000000000000000000000000000001 -> 1.691358027469135802746913580274692
dqrem1125 remainder 1234567890123456789012345678901234 4.9999999999999999999999999999999 -> 3.6913578024691357802469135780251
dqrem1126 remainder 1234567890123456789012345678901234 4.99999999999999999999999999999999 -> 1.46913578024691357802469135780247
dqrem1127 remainder 1234567890123456789012345678901234 4.999999999999999999999999999999999 -> 4.246913578024691357802469135780246
dqrem1128 remainder 1234567890123456789012345678901234 5.0000000000000000000000000000001 -> 4.3086421975308642197530864219759
-- Null tests
dqrem1000 remainder 10 # -> NaN Invalid_operation
dqrem1001 remainder # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,631 @@
------------------------------------------------------------------------
-- dqRemainderNear.decTest -- decQuad remainder-near --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks (as base, above)
dqrmn001 remaindernear 1 1 -> 0
dqrmn002 remaindernear 2 1 -> 0
dqrmn003 remaindernear 1 2 -> 1
dqrmn004 remaindernear 2 2 -> 0
dqrmn005 remaindernear 0 1 -> 0
dqrmn006 remaindernear 0 2 -> 0
dqrmn007 remaindernear 1 3 -> 1
dqrmn008 remaindernear 2 3 -> -1
dqrmn009 remaindernear 3 3 -> 0
dqrmn010 remaindernear 2.4 1 -> 0.4
dqrmn011 remaindernear 2.4 -1 -> 0.4
dqrmn012 remaindernear -2.4 1 -> -0.4
dqrmn013 remaindernear -2.4 -1 -> -0.4
dqrmn014 remaindernear 2.40 1 -> 0.40
dqrmn015 remaindernear 2.400 1 -> 0.400
dqrmn016 remaindernear 2.4 2 -> 0.4
dqrmn017 remaindernear 2.400 2 -> 0.400
dqrmn018 remaindernear 2. 2 -> 0
dqrmn019 remaindernear 20 20 -> 0
dqrmn020 remaindernear 187 187 -> 0
dqrmn021 remaindernear 5 2 -> 1
dqrmn022 remaindernear 5 2.0 -> 1.0
dqrmn023 remaindernear 5 2.000 -> 1.000
dqrmn024 remaindernear 5 0.200 -> 0.000
dqrmn025 remaindernear 5 0.200 -> 0.000
dqrmn030 remaindernear 1 2 -> 1
dqrmn031 remaindernear 1 4 -> 1
dqrmn032 remaindernear 1 8 -> 1
dqrmn033 remaindernear 1 16 -> 1
dqrmn034 remaindernear 1 32 -> 1
dqrmn035 remaindernear 1 64 -> 1
dqrmn040 remaindernear 1 -2 -> 1
dqrmn041 remaindernear 1 -4 -> 1
dqrmn042 remaindernear 1 -8 -> 1
dqrmn043 remaindernear 1 -16 -> 1
dqrmn044 remaindernear 1 -32 -> 1
dqrmn045 remaindernear 1 -64 -> 1
dqrmn050 remaindernear -1 2 -> -1
dqrmn051 remaindernear -1 4 -> -1
dqrmn052 remaindernear -1 8 -> -1
dqrmn053 remaindernear -1 16 -> -1
dqrmn054 remaindernear -1 32 -> -1
dqrmn055 remaindernear -1 64 -> -1
dqrmn060 remaindernear -1 -2 -> -1
dqrmn061 remaindernear -1 -4 -> -1
dqrmn062 remaindernear -1 -8 -> -1
dqrmn063 remaindernear -1 -16 -> -1
dqrmn064 remaindernear -1 -32 -> -1
dqrmn065 remaindernear -1 -64 -> -1
dqrmn066 remaindernear 9.9 1 -> -0.1
dqrmn067 remaindernear 99.7 1 -> -0.3
dqrmn068 remaindernear 999999999 1 -> 0
dqrmn069 remaindernear 999999999.4 1 -> 0.4
dqrmn070 remaindernear 999999999.5 1 -> -0.5
dqrmn071 remaindernear 999999999.9 1 -> -0.1
dqrmn072 remaindernear 999999999.999 1 -> -0.001
dqrmn073 remaindernear 999999.999999 1 -> -0.000001
dqrmn074 remaindernear 9 1 -> 0
dqrmn075 remaindernear 9999999999999999 1 -> 0
dqrmn076 remaindernear 9999999999999999 2 -> -1
dqrmn077 remaindernear 9999999999999999 3 -> 0
dqrmn078 remaindernear 9999999999999999 4 -> -1
dqrmn080 remaindernear 0. 1 -> 0
dqrmn081 remaindernear .0 1 -> 0.0
dqrmn082 remaindernear 0.00 1 -> 0.00
dqrmn083 remaindernear 0.00E+9 1 -> 0
dqrmn084 remaindernear 0.00E+3 1 -> 0
dqrmn085 remaindernear 0.00E+2 1 -> 0
dqrmn086 remaindernear 0.00E+1 1 -> 0.0
dqrmn087 remaindernear 0.00E+0 1 -> 0.00
dqrmn088 remaindernear 0.00E-0 1 -> 0.00
dqrmn089 remaindernear 0.00E-1 1 -> 0.000
dqrmn090 remaindernear 0.00E-2 1 -> 0.0000
dqrmn091 remaindernear 0.00E-3 1 -> 0.00000
dqrmn092 remaindernear 0.00E-4 1 -> 0.000000
dqrmn093 remaindernear 0.00E-5 1 -> 0E-7
dqrmn094 remaindernear 0.00E-6 1 -> 0E-8
dqrmn095 remaindernear 0.0000E-50 1 -> 0E-54
-- Various flavours of remaindernear by 0
dqrmn101 remaindernear 0 0 -> NaN Division_undefined
dqrmn102 remaindernear 0 -0 -> NaN Division_undefined
dqrmn103 remaindernear -0 0 -> NaN Division_undefined
dqrmn104 remaindernear -0 -0 -> NaN Division_undefined
dqrmn105 remaindernear 0.0E5 0 -> NaN Division_undefined
dqrmn106 remaindernear 0.000 0 -> NaN Division_undefined
-- [Some think this next group should be Division_by_zero exception, but
-- IEEE 854 is explicit that it is Invalid operation .. for
-- remainder-near, anyway]
dqrmn107 remaindernear 0.0001 0 -> NaN Invalid_operation
dqrmn108 remaindernear 0.01 0 -> NaN Invalid_operation
dqrmn109 remaindernear 0.1 0 -> NaN Invalid_operation
dqrmn110 remaindernear 1 0 -> NaN Invalid_operation
dqrmn111 remaindernear 1 0.0 -> NaN Invalid_operation
dqrmn112 remaindernear 10 0.0 -> NaN Invalid_operation
dqrmn113 remaindernear 1E+100 0.0 -> NaN Invalid_operation
dqrmn114 remaindernear 1E+380 0 -> NaN Invalid_operation
dqrmn115 remaindernear 0.0001 -0 -> NaN Invalid_operation
dqrmn116 remaindernear 0.01 -0 -> NaN Invalid_operation
dqrmn119 remaindernear 0.1 -0 -> NaN Invalid_operation
dqrmn120 remaindernear 1 -0 -> NaN Invalid_operation
dqrmn121 remaindernear 1 -0.0 -> NaN Invalid_operation
dqrmn122 remaindernear 10 -0.0 -> NaN Invalid_operation
dqrmn123 remaindernear 1E+100 -0.0 -> NaN Invalid_operation
dqrmn124 remaindernear 1E+384 -0 -> NaN Invalid_operation
-- and zeros on left
dqrmn130 remaindernear 0 1 -> 0
dqrmn131 remaindernear 0 -1 -> 0
dqrmn132 remaindernear 0.0 1 -> 0.0
dqrmn133 remaindernear 0.0 -1 -> 0.0
dqrmn134 remaindernear -0 1 -> -0
dqrmn135 remaindernear -0 -1 -> -0
dqrmn136 remaindernear -0.0 1 -> -0.0
dqrmn137 remaindernear -0.0 -1 -> -0.0
-- 0.5ers
dqrmn143 remaindernear 0.5 2 -> 0.5
dqrmn144 remaindernear 0.5 2.1 -> 0.5
dqrmn145 remaindernear 0.5 2.01 -> 0.50
dqrmn146 remaindernear 0.5 2.001 -> 0.500
dqrmn147 remaindernear 0.50 2 -> 0.50
dqrmn148 remaindernear 0.50 2.01 -> 0.50
dqrmn149 remaindernear 0.50 2.001 -> 0.500
-- steadies
dqrmn150 remaindernear 1 1 -> 0
dqrmn151 remaindernear 1 2 -> 1
dqrmn152 remaindernear 1 3 -> 1
dqrmn153 remaindernear 1 4 -> 1
dqrmn154 remaindernear 1 5 -> 1
dqrmn155 remaindernear 1 6 -> 1
dqrmn156 remaindernear 1 7 -> 1
dqrmn157 remaindernear 1 8 -> 1
dqrmn158 remaindernear 1 9 -> 1
dqrmn159 remaindernear 1 10 -> 1
dqrmn160 remaindernear 1 1 -> 0
dqrmn161 remaindernear 2 1 -> 0
dqrmn162 remaindernear 3 1 -> 0
dqrmn163 remaindernear 4 1 -> 0
dqrmn164 remaindernear 5 1 -> 0
dqrmn165 remaindernear 6 1 -> 0
dqrmn166 remaindernear 7 1 -> 0
dqrmn167 remaindernear 8 1 -> 0
dqrmn168 remaindernear 9 1 -> 0
dqrmn169 remaindernear 10 1 -> 0
-- some differences from remainder
dqrmn171 remaindernear 0.4 1.020 -> 0.400
dqrmn172 remaindernear 0.50 1.020 -> 0.500
dqrmn173 remaindernear 0.51 1.020 -> 0.510
dqrmn174 remaindernear 0.52 1.020 -> -0.500
dqrmn175 remaindernear 0.6 1.020 -> -0.420
-- More flavours of remaindernear by 0
dqrmn201 remaindernear 0 0 -> NaN Division_undefined
dqrmn202 remaindernear 0.0E5 0 -> NaN Division_undefined
dqrmn203 remaindernear 0.000 0 -> NaN Division_undefined
dqrmn204 remaindernear 0.0001 0 -> NaN Invalid_operation
dqrmn205 remaindernear 0.01 0 -> NaN Invalid_operation
dqrmn206 remaindernear 0.1 0 -> NaN Invalid_operation
dqrmn207 remaindernear 1 0 -> NaN Invalid_operation
dqrmn208 remaindernear 1 0.0 -> NaN Invalid_operation
dqrmn209 remaindernear 10 0.0 -> NaN Invalid_operation
dqrmn210 remaindernear 1E+100 0.0 -> NaN Invalid_operation
dqrmn211 remaindernear 1E+380 0 -> NaN Invalid_operation
-- tests from the extended specification
dqrmn221 remaindernear 2.1 3 -> -0.9
dqrmn222 remaindernear 10 6 -> -2
dqrmn223 remaindernear 10 3 -> 1
dqrmn224 remaindernear -10 3 -> -1
dqrmn225 remaindernear 10.2 1 -> 0.2
dqrmn226 remaindernear 10 0.3 -> 0.1
dqrmn227 remaindernear 3.6 1.3 -> -0.3
-- some differences from remainder
dqrmn231 remaindernear -0.4 1.020 -> -0.400
dqrmn232 remaindernear -0.50 1.020 -> -0.500
dqrmn233 remaindernear -0.51 1.020 -> -0.510
dqrmn234 remaindernear -0.52 1.020 -> 0.500
dqrmn235 remaindernear -0.6 1.020 -> 0.420
-- high Xs
dqrmn240 remaindernear 1E+2 1.00 -> 0.00
-- dqrmn3xx are from DiagBigDecimal
dqrmn301 remaindernear 1 3 -> 1
dqrmn302 remaindernear 5 5 -> 0
dqrmn303 remaindernear 13 10 -> 3
dqrmn304 remaindernear 13 50 -> 13
dqrmn305 remaindernear 13 100 -> 13
dqrmn306 remaindernear 13 1000 -> 13
dqrmn307 remaindernear .13 1 -> 0.13
dqrmn308 remaindernear 0.133 1 -> 0.133
dqrmn309 remaindernear 0.1033 1 -> 0.1033
dqrmn310 remaindernear 1.033 1 -> 0.033
dqrmn311 remaindernear 10.33 1 -> 0.33
dqrmn312 remaindernear 10.33 10 -> 0.33
dqrmn313 remaindernear 103.3 1 -> 0.3
dqrmn314 remaindernear 133 10 -> 3
dqrmn315 remaindernear 1033 10 -> 3
dqrmn316 remaindernear 1033 50 -> -17
dqrmn317 remaindernear 101.0 3 -> -1.0
dqrmn318 remaindernear 102.0 3 -> 0.0
dqrmn319 remaindernear 103.0 3 -> 1.0
dqrmn320 remaindernear 2.40 1 -> 0.40
dqrmn321 remaindernear 2.400 1 -> 0.400
dqrmn322 remaindernear 2.4 1 -> 0.4
dqrmn323 remaindernear 2.4 2 -> 0.4
dqrmn324 remaindernear 2.400 2 -> 0.400
dqrmn325 remaindernear 1 0.3 -> 0.1
dqrmn326 remaindernear 1 0.30 -> 0.10
dqrmn327 remaindernear 1 0.300 -> 0.100
dqrmn328 remaindernear 1 0.3000 -> 0.1000
dqrmn329 remaindernear 1.0 0.3 -> 0.1
dqrmn330 remaindernear 1.00 0.3 -> 0.10
dqrmn331 remaindernear 1.000 0.3 -> 0.100
dqrmn332 remaindernear 1.0000 0.3 -> 0.1000
dqrmn333 remaindernear 0.5 2 -> 0.5
dqrmn334 remaindernear 0.5 2.1 -> 0.5
dqrmn335 remaindernear 0.5 2.01 -> 0.50
dqrmn336 remaindernear 0.5 2.001 -> 0.500
dqrmn337 remaindernear 0.50 2 -> 0.50
dqrmn338 remaindernear 0.50 2.01 -> 0.50
dqrmn339 remaindernear 0.50 2.001 -> 0.500
dqrmn340 remaindernear 0.5 0.5000001 -> -1E-7
dqrmn341 remaindernear 0.5 0.50000001 -> -1E-8
dqrmn342 remaindernear 0.5 0.500000001 -> -1E-9
dqrmn343 remaindernear 0.5 0.5000000001 -> -1E-10
dqrmn344 remaindernear 0.5 0.50000000001 -> -1E-11
dqrmn345 remaindernear 0.5 0.4999999 -> 1E-7
dqrmn346 remaindernear 0.5 0.49999999 -> 1E-8
dqrmn347 remaindernear 0.5 0.499999999 -> 1E-9
dqrmn348 remaindernear 0.5 0.4999999999 -> 1E-10
dqrmn349 remaindernear 0.5 0.49999999999 -> 1E-11
dqrmn350 remaindernear 0.5 0.499999999999 -> 1E-12
dqrmn351 remaindernear 0.03 7 -> 0.03
dqrmn352 remaindernear 5 2 -> 1
dqrmn353 remaindernear 4.1 2 -> 0.1
dqrmn354 remaindernear 4.01 2 -> 0.01
dqrmn355 remaindernear 4.001 2 -> 0.001
dqrmn356 remaindernear 4.0001 2 -> 0.0001
dqrmn357 remaindernear 4.00001 2 -> 0.00001
dqrmn358 remaindernear 4.000001 2 -> 0.000001
dqrmn359 remaindernear 4.0000001 2 -> 1E-7
dqrmn360 remaindernear 1.2 0.7345 -> -0.2690
dqrmn361 remaindernear 0.8 12 -> 0.8
dqrmn362 remaindernear 0.8 0.2 -> 0.0
dqrmn363 remaindernear 0.8 0.3 -> -0.1
dqrmn364 remaindernear 0.800 12 -> 0.800
dqrmn365 remaindernear 0.800 1.7 -> 0.800
dqrmn366 remaindernear 2.400 2 -> 0.400
-- round to even
dqrmn371 remaindernear 121 2 -> 1
dqrmn372 remaindernear 122 2 -> 0
dqrmn373 remaindernear 123 2 -> -1
dqrmn374 remaindernear 124 2 -> 0
dqrmn375 remaindernear 125 2 -> 1
dqrmn376 remaindernear 126 2 -> 0
dqrmn377 remaindernear 127 2 -> -1
dqrmn381 remaindernear 12345 1 -> 0
dqrmn382 remaindernear 12345 1.0001 -> -0.2344
dqrmn383 remaindernear 12345 1.001 -> -0.333
dqrmn384 remaindernear 12345 1.01 -> -0.23
dqrmn385 remaindernear 12345 1.1 -> -0.3
dqrmn386 remaindernear 12355 4 -> -1
dqrmn387 remaindernear 12345 4 -> 1
dqrmn388 remaindernear 12355 4.0001 -> -1.3089
dqrmn389 remaindernear 12345 4.0001 -> 0.6914
dqrmn390 remaindernear 12345 4.9 -> 1.9
dqrmn391 remaindernear 12345 4.99 -> -0.26
dqrmn392 remaindernear 12345 4.999 -> 2.469
dqrmn393 remaindernear 12345 4.9999 -> 0.2469
dqrmn394 remaindernear 12345 5 -> 0
dqrmn395 remaindernear 12345 5.0001 -> -0.2469
dqrmn396 remaindernear 12345 5.001 -> -2.469
dqrmn397 remaindernear 12345 5.01 -> 0.36
dqrmn398 remaindernear 12345 5.1 -> -2.1
-- the nasty division-by-1 cases
dqrmn401 remaindernear 0.4 1 -> 0.4
dqrmn402 remaindernear 0.45 1 -> 0.45
dqrmn403 remaindernear 0.455 1 -> 0.455
dqrmn404 remaindernear 0.4555 1 -> 0.4555
dqrmn405 remaindernear 0.45555 1 -> 0.45555
dqrmn406 remaindernear 0.455555 1 -> 0.455555
dqrmn407 remaindernear 0.4555555 1 -> 0.4555555
dqrmn408 remaindernear 0.45555555 1 -> 0.45555555
dqrmn409 remaindernear 0.455555555 1 -> 0.455555555
-- with spill... [412 exercises sticktab loop]
dqrmn411 remaindernear 0.5 1 -> 0.5
dqrmn412 remaindernear 0.55 1 -> -0.45
dqrmn413 remaindernear 0.555 1 -> -0.445
dqrmn414 remaindernear 0.5555 1 -> -0.4445
dqrmn415 remaindernear 0.55555 1 -> -0.44445
dqrmn416 remaindernear 0.555555 1 -> -0.444445
dqrmn417 remaindernear 0.5555555 1 -> -0.4444445
dqrmn418 remaindernear 0.55555555 1 -> -0.44444445
dqrmn419 remaindernear 0.555555555 1 -> -0.444444445
-- folddowns
dqrmn421 remaindernear 1E+6144 1 -> NaN Division_impossible
dqrmn422 remaindernear 1E+6144 1E+6143 -> 0E+6111 Clamped
dqrmn423 remaindernear 1E+6144 2E+6143 -> 0E+6111 Clamped
dqrmn424 remaindernear 1E+6144 3E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped
dqrmn425 remaindernear 1E+6144 4E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped
dqrmn426 remaindernear 1E+6144 5E+6143 -> 0E+6111 Clamped
dqrmn427 remaindernear 1E+6144 6E+6143 -> -2.00000000000000000000000000000000E+6143 Clamped
dqrmn428 remaindernear 1E+6144 7E+6143 -> 3.00000000000000000000000000000000E+6143 Clamped
dqrmn429 remaindernear 1E+6144 8E+6143 -> 2.00000000000000000000000000000000E+6143 Clamped
dqrmn430 remaindernear 1E+6144 9E+6143 -> 1.00000000000000000000000000000000E+6143 Clamped
-- tinies
dqrmn431 remaindernear 1E-6175 1E-6176 -> 0E-6176
dqrmn432 remaindernear 1E-6175 2E-6176 -> 0E-6176
dqrmn433 remaindernear 1E-6175 3E-6176 -> 1E-6176 Subnormal
dqrmn434 remaindernear 1E-6175 4E-6176 -> 2E-6176 Subnormal
dqrmn435 remaindernear 1E-6175 5E-6176 -> 0E-6176
dqrmn436 remaindernear 1E-6175 6E-6176 -> -2E-6176 Subnormal
dqrmn437 remaindernear 1E-6175 7E-6176 -> 3E-6176 Subnormal
dqrmn438 remaindernear 1E-6175 8E-6176 -> 2E-6176 Subnormal
dqrmn439 remaindernear 1E-6175 9E-6176 -> 1E-6176 Subnormal
dqrmn440 remaindernear 1E-6175 10E-6176 -> 0E-6176
dqrmn441 remaindernear 1E-6175 11E-6176 -> -1E-6176 Subnormal
dqrmn442 remaindernear 100E-6175 11E-6176 -> -1E-6176 Subnormal
dqrmn443 remaindernear 100E-6175 20E-6176 -> 0E-6176
dqrmn444 remaindernear 100E-6175 21E-6176 -> -8E-6176 Subnormal
dqrmn445 remaindernear 100E-6175 30E-6176 -> 1.0E-6175 Subnormal
-- zero signs
dqrmn650 remaindernear 1 1 -> 0
dqrmn651 remaindernear -1 1 -> -0
dqrmn652 remaindernear 1 -1 -> 0
dqrmn653 remaindernear -1 -1 -> -0
dqrmn654 remaindernear 0 1 -> 0
dqrmn655 remaindernear -0 1 -> -0
dqrmn656 remaindernear 0 -1 -> 0
dqrmn657 remaindernear -0 -1 -> -0
dqrmn658 remaindernear 0.00 1 -> 0.00
dqrmn659 remaindernear -0.00 1 -> -0.00
-- Specials
dqrmn680 remaindernear Inf -Inf -> NaN Invalid_operation
dqrmn681 remaindernear Inf -1000 -> NaN Invalid_operation
dqrmn682 remaindernear Inf -1 -> NaN Invalid_operation
dqrmn683 remaindernear Inf 0 -> NaN Invalid_operation
dqrmn684 remaindernear Inf -0 -> NaN Invalid_operation
dqrmn685 remaindernear Inf 1 -> NaN Invalid_operation
dqrmn686 remaindernear Inf 1000 -> NaN Invalid_operation
dqrmn687 remaindernear Inf Inf -> NaN Invalid_operation
dqrmn688 remaindernear -1000 Inf -> -1000
dqrmn689 remaindernear -Inf Inf -> NaN Invalid_operation
dqrmn691 remaindernear -1 Inf -> -1
dqrmn692 remaindernear 0 Inf -> 0
dqrmn693 remaindernear -0 Inf -> -0
dqrmn694 remaindernear 1 Inf -> 1
dqrmn695 remaindernear 1000 Inf -> 1000
dqrmn696 remaindernear Inf Inf -> NaN Invalid_operation
dqrmn700 remaindernear -Inf -Inf -> NaN Invalid_operation
dqrmn701 remaindernear -Inf -1000 -> NaN Invalid_operation
dqrmn702 remaindernear -Inf -1 -> NaN Invalid_operation
dqrmn703 remaindernear -Inf -0 -> NaN Invalid_operation
dqrmn704 remaindernear -Inf 0 -> NaN Invalid_operation
dqrmn705 remaindernear -Inf 1 -> NaN Invalid_operation
dqrmn706 remaindernear -Inf 1000 -> NaN Invalid_operation
dqrmn707 remaindernear -Inf Inf -> NaN Invalid_operation
dqrmn708 remaindernear -Inf -Inf -> NaN Invalid_operation
dqrmn709 remaindernear -1000 Inf -> -1000
dqrmn710 remaindernear -1 -Inf -> -1
dqrmn711 remaindernear -0 -Inf -> -0
dqrmn712 remaindernear 0 -Inf -> 0
dqrmn713 remaindernear 1 -Inf -> 1
dqrmn714 remaindernear 1000 -Inf -> 1000
dqrmn715 remaindernear Inf -Inf -> NaN Invalid_operation
dqrmn721 remaindernear NaN -Inf -> NaN
dqrmn722 remaindernear NaN -1000 -> NaN
dqrmn723 remaindernear NaN -1 -> NaN
dqrmn724 remaindernear NaN -0 -> NaN
dqrmn725 remaindernear -NaN 0 -> -NaN
dqrmn726 remaindernear NaN 1 -> NaN
dqrmn727 remaindernear NaN 1000 -> NaN
dqrmn728 remaindernear NaN Inf -> NaN
dqrmn729 remaindernear NaN -NaN -> NaN
dqrmn730 remaindernear -Inf NaN -> NaN
dqrmn731 remaindernear -1000 NaN -> NaN
dqrmn732 remaindernear -1 NaN -> NaN
dqrmn733 remaindernear -0 -NaN -> -NaN
dqrmn734 remaindernear 0 NaN -> NaN
dqrmn735 remaindernear 1 -NaN -> -NaN
dqrmn736 remaindernear 1000 NaN -> NaN
dqrmn737 remaindernear Inf NaN -> NaN
dqrmn741 remaindernear sNaN -Inf -> NaN Invalid_operation
dqrmn742 remaindernear sNaN -1000 -> NaN Invalid_operation
dqrmn743 remaindernear -sNaN -1 -> -NaN Invalid_operation
dqrmn744 remaindernear sNaN -0 -> NaN Invalid_operation
dqrmn745 remaindernear sNaN 0 -> NaN Invalid_operation
dqrmn746 remaindernear sNaN 1 -> NaN Invalid_operation
dqrmn747 remaindernear sNaN 1000 -> NaN Invalid_operation
dqrmn749 remaindernear sNaN NaN -> NaN Invalid_operation
dqrmn750 remaindernear sNaN sNaN -> NaN Invalid_operation
dqrmn751 remaindernear NaN sNaN -> NaN Invalid_operation
dqrmn752 remaindernear -Inf sNaN -> NaN Invalid_operation
dqrmn753 remaindernear -1000 sNaN -> NaN Invalid_operation
dqrmn754 remaindernear -1 sNaN -> NaN Invalid_operation
dqrmn755 remaindernear -0 sNaN -> NaN Invalid_operation
dqrmn756 remaindernear 0 sNaN -> NaN Invalid_operation
dqrmn757 remaindernear 1 sNaN -> NaN Invalid_operation
dqrmn758 remaindernear 1000 sNaN -> NaN Invalid_operation
dqrmn759 remaindernear Inf -sNaN -> -NaN Invalid_operation
-- propaging NaNs
dqrmn760 remaindernear NaN1 NaN7 -> NaN1
dqrmn761 remaindernear sNaN2 NaN8 -> NaN2 Invalid_operation
dqrmn762 remaindernear NaN3 sNaN9 -> NaN9 Invalid_operation
dqrmn763 remaindernear sNaN4 sNaN10 -> NaN4 Invalid_operation
dqrmn764 remaindernear 15 NaN11 -> NaN11
dqrmn765 remaindernear NaN6 NaN12 -> NaN6
dqrmn766 remaindernear Inf NaN13 -> NaN13
dqrmn767 remaindernear NaN14 -Inf -> NaN14
dqrmn768 remaindernear 0 NaN15 -> NaN15
dqrmn769 remaindernear NaN16 -0 -> NaN16
-- edge cases of impossible
dqrmn770 remaindernear 1234500000000000000000067890123456 10 -> -4
dqrmn771 remaindernear 1234500000000000000000067890123456 1 -> 0
dqrmn772 remaindernear 1234500000000000000000067890123456 0.1 -> NaN Division_impossible
dqrmn773 remaindernear 1234500000000000000000067890123456 0.01 -> NaN Division_impossible
-- long operand checks
dqrmn801 remaindernear 12345678000 100 -> 0
dqrmn802 remaindernear 1 12345678000 -> 1
dqrmn803 remaindernear 1234567800 10 -> 0
dqrmn804 remaindernear 1 1234567800 -> 1
dqrmn805 remaindernear 1234567890 10 -> 0
dqrmn806 remaindernear 1 1234567890 -> 1
dqrmn807 remaindernear 1234567891 10 -> 1
dqrmn808 remaindernear 1 1234567891 -> 1
dqrmn809 remaindernear 12345678901 100 -> 1
dqrmn810 remaindernear 1 12345678901 -> 1
dqrmn811 remaindernear 1234567896 10 -> -4
dqrmn812 remaindernear 1 1234567896 -> 1
dqrmn821 remaindernear 12345678000 100 -> 0
dqrmn822 remaindernear 1 12345678000 -> 1
dqrmn823 remaindernear 1234567800 10 -> 0
dqrmn824 remaindernear 1 1234567800 -> 1
dqrmn825 remaindernear 1234567890 10 -> 0
dqrmn826 remaindernear 1 1234567890 -> 1
dqrmn827 remaindernear 1234567891 10 -> 1
dqrmn828 remaindernear 1 1234567891 -> 1
dqrmn829 remaindernear 12345678901 100 -> 1
dqrmn830 remaindernear 1 12345678901 -> 1
dqrmn831 remaindernear 1234567896 10 -> -4
dqrmn832 remaindernear 1 1234567896 -> 1
-- from divideint
dqrmn840 remaindernear 100000000.0 1 -> 0.0
dqrmn841 remaindernear 100000000.4 1 -> 0.4
dqrmn842 remaindernear 100000000.5 1 -> 0.5
dqrmn843 remaindernear 100000000.9 1 -> -0.1
dqrmn844 remaindernear 100000000.999 1 -> -0.001
dqrmn850 remaindernear 100000003 5 -> -2
dqrmn851 remaindernear 10000003 5 -> -2
dqrmn852 remaindernear 1000003 5 -> -2
dqrmn853 remaindernear 100003 5 -> -2
dqrmn854 remaindernear 10003 5 -> -2
dqrmn855 remaindernear 1003 5 -> -2
dqrmn856 remaindernear 103 5 -> -2
dqrmn857 remaindernear 13 5 -> -2
dqrmn858 remaindernear 1 5 -> 1
-- Vladimir's cases 1234567890123456
dqrmn860 remaindernear 123.0e1 1000000000000000 -> 1230
dqrmn861 remaindernear 1230 1000000000000000 -> 1230
dqrmn862 remaindernear 12.3e2 1000000000000000 -> 1230
dqrmn863 remaindernear 1.23e3 1000000000000000 -> 1230
dqrmn864 remaindernear 123e1 1000000000000000 -> 1230
dqrmn870 remaindernear 123e1 1000000000000000 -> 1230
dqrmn871 remaindernear 123e1 100000000000000 -> 1230
dqrmn872 remaindernear 123e1 10000000000000 -> 1230
dqrmn873 remaindernear 123e1 1000000000000 -> 1230
dqrmn874 remaindernear 123e1 100000000000 -> 1230
dqrmn875 remaindernear 123e1 10000000000 -> 1230
dqrmn876 remaindernear 123e1 1000000000 -> 1230
dqrmn877 remaindernear 123e1 100000000 -> 1230
dqrmn878 remaindernear 1230 100000000 -> 1230
dqrmn879 remaindernear 123e1 10000000 -> 1230
dqrmn880 remaindernear 123e1 1000000 -> 1230
dqrmn881 remaindernear 123e1 100000 -> 1230
dqrmn882 remaindernear 123e1 10000 -> 1230
dqrmn883 remaindernear 123e1 1000 -> 230
dqrmn884 remaindernear 123e1 100 -> 30
dqrmn885 remaindernear 123e1 10 -> 0
dqrmn886 remaindernear 123e1 1 -> 0
dqrmn890 remaindernear 123e1 2000000000000000 -> 1230
dqrmn891 remaindernear 123e1 200000000000000 -> 1230
dqrmn892 remaindernear 123e1 20000000000000 -> 1230
dqrmn893 remaindernear 123e1 2000000000000 -> 1230
dqrmn894 remaindernear 123e1 200000000000 -> 1230
dqrmn895 remaindernear 123e1 20000000000 -> 1230
dqrmn896 remaindernear 123e1 2000000000 -> 1230
dqrmn897 remaindernear 123e1 200000000 -> 1230
dqrmn899 remaindernear 123e1 20000000 -> 1230
dqrmn900 remaindernear 123e1 2000000 -> 1230
dqrmn901 remaindernear 123e1 200000 -> 1230
dqrmn902 remaindernear 123e1 20000 -> 1230
dqrmn903 remaindernear 123e1 2000 -> -770
dqrmn904 remaindernear 123e1 200 -> 30
dqrmn905 remaindernear 123e1 20 -> -10
dqrmn906 remaindernear 123e1 2 -> 0
dqrmn910 remaindernear 123e1 5000000000000000 -> 1230
dqrmn911 remaindernear 123e1 500000000000000 -> 1230
dqrmn912 remaindernear 123e1 50000000000000 -> 1230
dqrmn913 remaindernear 123e1 5000000000000 -> 1230
dqrmn914 remaindernear 123e1 500000000000 -> 1230
dqrmn915 remaindernear 123e1 50000000000 -> 1230
dqrmn916 remaindernear 123e1 5000000000 -> 1230
dqrmn917 remaindernear 123e1 500000000 -> 1230
dqrmn919 remaindernear 123e1 50000000 -> 1230
dqrmn920 remaindernear 123e1 5000000 -> 1230
dqrmn921 remaindernear 123e1 500000 -> 1230
dqrmn922 remaindernear 123e1 50000 -> 1230
dqrmn923 remaindernear 123e1 5000 -> 1230
dqrmn924 remaindernear 123e1 500 -> 230
dqrmn925 remaindernear 123e1 50 -> -20
dqrmn926 remaindernear 123e1 5 -> 0
dqrmn930 remaindernear 123e1 9000000000000000 -> 1230
dqrmn931 remaindernear 123e1 900000000000000 -> 1230
dqrmn932 remaindernear 123e1 90000000000000 -> 1230
dqrmn933 remaindernear 123e1 9000000000000 -> 1230
dqrmn934 remaindernear 123e1 900000000000 -> 1230
dqrmn935 remaindernear 123e1 90000000000 -> 1230
dqrmn936 remaindernear 123e1 9000000000 -> 1230
dqrmn937 remaindernear 123e1 900000000 -> 1230
dqrmn939 remaindernear 123e1 90000000 -> 1230
dqrmn940 remaindernear 123e1 9000000 -> 1230
dqrmn941 remaindernear 123e1 900000 -> 1230
dqrmn942 remaindernear 123e1 90000 -> 1230
dqrmn943 remaindernear 123e1 9000 -> 1230
dqrmn944 remaindernear 123e1 900 -> 330
dqrmn945 remaindernear 123e1 90 -> -30
dqrmn946 remaindernear 123e1 9 -> -3
dqrmn950 remaindernear 123e1 1000000000000000 -> 1230
dqrmn961 remaindernear 123e1 2999999999999999 -> 1230
dqrmn962 remaindernear 123e1 3999999999999999 -> 1230
dqrmn963 remaindernear 123e1 4999999999999999 -> 1230
dqrmn964 remaindernear 123e1 5999999999999999 -> 1230
dqrmn965 remaindernear 123e1 6999999999999999 -> 1230
dqrmn966 remaindernear 123e1 7999999999999999 -> 1230
dqrmn967 remaindernear 123e1 8999999999999999 -> 1230
dqrmn968 remaindernear 123e1 9999999999999999 -> 1230
dqrmn969 remaindernear 123e1 9876543210987654 -> 1230
dqrmn980 remaindernear 123e1 1000E299 -> 1.23E+3 -- 123E+1 internally
-- overflow and underflow tests [from divide]
dqrmn1051 remaindernear 1e+277 1e-311 -> NaN Division_impossible
dqrmn1052 remaindernear 1e+277 -1e-311 -> NaN Division_impossible
dqrmn1053 remaindernear -1e+277 1e-311 -> NaN Division_impossible
dqrmn1054 remaindernear -1e+277 -1e-311 -> NaN Division_impossible
dqrmn1055 remaindernear 1e-277 1e+311 -> 1E-277
dqrmn1056 remaindernear 1e-277 -1e+311 -> 1E-277
dqrmn1057 remaindernear -1e-277 1e+311 -> -1E-277
dqrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277
-- Gyuris example
dqrmn1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143
-- destructive subtract
dqrmn1101 remaindernear 1234567890123456789012345678901234 1.000000000000000000000000000000001 -> -0.234567890123456789012345678901233
dqrmn1102 remaindernear 1234567890123456789012345678901234 1.00000000000000000000000000000001 -> -0.34567890123456789012345678901222
dqrmn1103 remaindernear 1234567890123456789012345678901234 1.0000000000000000000000000000001 -> -0.4567890123456789012345678901111
dqrmn1104 remaindernear 1234567890123456789012345678901255 4.000000000000000000000000000000001 -> -1.308641972530864197253086419725314
dqrmn1105 remaindernear 1234567890123456789012345678901234 4.000000000000000000000000000000001 -> 1.691358027469135802746913580274692
dqrmn1106 remaindernear 1234567890123456789012345678901234 4.9999999999999999999999999999999 -> -1.3086421975308642197530864219748
dqrmn1107 remaindernear 1234567890123456789012345678901234 4.99999999999999999999999999999999 -> 1.46913578024691357802469135780247
dqrmn1108 remaindernear 1234567890123456789012345678901234 4.999999999999999999999999999999999 -> -0.753086421975308642197530864219753
dqrmn1109 remaindernear 1234567890123456789012345678901234 5.000000000000000000000000000000001 -> -1.246913578024691357802469135780247
dqrmn1110 remaindernear 1234567890123456789012345678901234 5.00000000000000000000000000000001 -> 1.53086421975308642197530864219754
dqrmn1111 remaindernear 1234567890123456789012345678901234 5.0000000000000000000000000000001 -> -0.6913578024691357802469135780242
-- Null tests
dqrmn1000 remaindernear 10 # -> NaN Invalid_operation
dqrmn1001 remaindernear # 10 -> NaN Invalid_operation

View file

@ -0,0 +1,298 @@
------------------------------------------------------------------------
-- dqRotate.decTest -- rotate decQuad coefficient left or right --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check
dqrot001 rotate 0 0 -> 0
dqrot002 rotate 0 2 -> 0
dqrot003 rotate 1 2 -> 100
dqrot004 rotate 1 33 -> 1000000000000000000000000000000000
dqrot005 rotate 1 34 -> 1
dqrot006 rotate 1 -1 -> 1000000000000000000000000000000000
dqrot007 rotate 0 -2 -> 0
dqrot008 rotate 1234567890123456789012345678901234 -1 -> 4123456789012345678901234567890123
dqrot009 rotate 1234567890123456789012345678901234 -33 -> 2345678901234567890123456789012341
dqrot010 rotate 1234567890123456789012345678901234 -34 -> 1234567890123456789012345678901234
dqrot011 rotate 9934567890123456789012345678901234 -33 -> 9345678901234567890123456789012349
dqrot012 rotate 9934567890123456789012345678901234 -34 -> 9934567890123456789012345678901234
-- rhs must be an integer
dqrot015 rotate 1 1.5 -> NaN Invalid_operation
dqrot016 rotate 1 1.0 -> NaN Invalid_operation
dqrot017 rotate 1 0.1 -> NaN Invalid_operation
dqrot018 rotate 1 0.0 -> NaN Invalid_operation
dqrot019 rotate 1 1E+1 -> NaN Invalid_operation
dqrot020 rotate 1 1E+99 -> NaN Invalid_operation
dqrot021 rotate 1 Inf -> NaN Invalid_operation
dqrot022 rotate 1 -Inf -> NaN Invalid_operation
-- and |rhs| <= precision
dqrot025 rotate 1 -1000 -> NaN Invalid_operation
dqrot026 rotate 1 -35 -> NaN Invalid_operation
dqrot027 rotate 1 35 -> NaN Invalid_operation
dqrot028 rotate 1 1000 -> NaN Invalid_operation
-- full pattern
dqrot030 rotate 1234567890123456789012345678901234 -34 -> 1234567890123456789012345678901234
dqrot031 rotate 1234567890123456789012345678901234 -33 -> 2345678901234567890123456789012341
dqrot032 rotate 1234567890123456789012345678901234 -32 -> 3456789012345678901234567890123412
dqrot033 rotate 1234567890123456789012345678901234 -31 -> 4567890123456789012345678901234123
dqrot034 rotate 1234567890123456789012345678901234 -30 -> 5678901234567890123456789012341234
dqrot035 rotate 1234567890123456789012345678901234 -29 -> 6789012345678901234567890123412345
dqrot036 rotate 1234567890123456789012345678901234 -28 -> 7890123456789012345678901234123456
dqrot037 rotate 1234567890123456789012345678901234 -27 -> 8901234567890123456789012341234567
dqrot038 rotate 1234567890123456789012345678901234 -26 -> 9012345678901234567890123412345678
dqrot039 rotate 1234567890123456789012345678901234 -25 -> 123456789012345678901234123456789
dqrot040 rotate 1234567890123456789012345678901234 -24 -> 1234567890123456789012341234567890
dqrot041 rotate 1234567890123456789012345678901234 -23 -> 2345678901234567890123412345678901
dqrot042 rotate 1234567890123456789012345678901234 -22 -> 3456789012345678901234123456789012
dqrot043 rotate 1234567890123456789012345678901234 -21 -> 4567890123456789012341234567890123
dqrot044 rotate 1234567890123456789012345678901234 -20 -> 5678901234567890123412345678901234
dqrot045 rotate 1234567890123456789012345678901234 -19 -> 6789012345678901234123456789012345
dqrot047 rotate 1234567890123456789012345678901234 -18 -> 7890123456789012341234567890123456
dqrot048 rotate 1234567890123456789012345678901234 -17 -> 8901234567890123412345678901234567
dqrot049 rotate 1234567890123456789012345678901234 -16 -> 9012345678901234123456789012345678
dqrot050 rotate 1234567890123456789012345678901234 -15 -> 123456789012341234567890123456789
dqrot051 rotate 1234567890123456789012345678901234 -14 -> 1234567890123412345678901234567890
dqrot052 rotate 1234567890123456789012345678901234 -13 -> 2345678901234123456789012345678901
dqrot053 rotate 1234567890123456789012345678901234 -12 -> 3456789012341234567890123456789012
dqrot054 rotate 1234567890123456789012345678901234 -11 -> 4567890123412345678901234567890123
dqrot055 rotate 1234567890123456789012345678901234 -10 -> 5678901234123456789012345678901234
dqrot056 rotate 1234567890123456789012345678901234 -9 -> 6789012341234567890123456789012345
dqrot057 rotate 1234567890123456789012345678901234 -8 -> 7890123412345678901234567890123456
dqrot058 rotate 1234567890123456789012345678901234 -7 -> 8901234123456789012345678901234567
dqrot059 rotate 1234567890123456789012345678901234 -6 -> 9012341234567890123456789012345678
dqrot060 rotate 1234567890123456789012345678901234 -5 -> 123412345678901234567890123456789
dqrot061 rotate 1234567890123456789012345678901234 -4 -> 1234123456789012345678901234567890
dqrot062 rotate 1234567890123456789012345678901234 -3 -> 2341234567890123456789012345678901
dqrot063 rotate 1234567890123456789012345678901234 -2 -> 3412345678901234567890123456789012
dqrot064 rotate 1234567890123456789012345678901234 -1 -> 4123456789012345678901234567890123
dqrot065 rotate 1234567890123456789012345678901234 -0 -> 1234567890123456789012345678901234
dqrot066 rotate 1234567890123456789012345678901234 +0 -> 1234567890123456789012345678901234
dqrot067 rotate 1234567890123456789012345678901234 +1 -> 2345678901234567890123456789012341
dqrot068 rotate 1234567890123456789012345678901234 +2 -> 3456789012345678901234567890123412
dqrot069 rotate 1234567890123456789012345678901234 +3 -> 4567890123456789012345678901234123
dqrot070 rotate 1234567890123456789012345678901234 +4 -> 5678901234567890123456789012341234
dqrot071 rotate 1234567890123456789012345678901234 +5 -> 6789012345678901234567890123412345
dqrot072 rotate 1234567890123456789012345678901234 +6 -> 7890123456789012345678901234123456
dqrot073 rotate 1234567890123456789012345678901234 +7 -> 8901234567890123456789012341234567
dqrot074 rotate 1234567890123456789012345678901234 +8 -> 9012345678901234567890123412345678
dqrot075 rotate 1234567890123456789012345678901234 +9 -> 123456789012345678901234123456789
dqrot076 rotate 1234567890123456789012345678901234 +10 -> 1234567890123456789012341234567890
dqrot077 rotate 1234567890123456789012345678901234 +11 -> 2345678901234567890123412345678901
dqrot078 rotate 1234567890123456789012345678901234 +12 -> 3456789012345678901234123456789012
dqrot079 rotate 1234567890123456789012345678901234 +13 -> 4567890123456789012341234567890123
dqrot080 rotate 1234567890123456789012345678901234 +14 -> 5678901234567890123412345678901234
dqrot081 rotate 1234567890123456789012345678901234 +15 -> 6789012345678901234123456789012345
dqrot082 rotate 1234567890123456789012345678901234 +16 -> 7890123456789012341234567890123456
dqrot083 rotate 1234567890123456789012345678901234 +17 -> 8901234567890123412345678901234567
dqrot084 rotate 1234567890123456789012345678901234 +18 -> 9012345678901234123456789012345678
dqrot085 rotate 1234567890123456789012345678901234 +19 -> 123456789012341234567890123456789
dqrot086 rotate 1234567890123456789012345678901234 +20 -> 1234567890123412345678901234567890
dqrot087 rotate 1234567890123456789012345678901234 +21 -> 2345678901234123456789012345678901
dqrot088 rotate 1234567890123456789012345678901234 +22 -> 3456789012341234567890123456789012
dqrot089 rotate 1234567890123456789012345678901234 +23 -> 4567890123412345678901234567890123
dqrot090 rotate 1234567890123456789012345678901234 +24 -> 5678901234123456789012345678901234
dqrot091 rotate 1234567890123456789012345678901234 +25 -> 6789012341234567890123456789012345
dqrot092 rotate 1234567890123456789012345678901234 +26 -> 7890123412345678901234567890123456
dqrot093 rotate 1234567890123456789012345678901234 +27 -> 8901234123456789012345678901234567
dqrot094 rotate 1234567890123456789012345678901234 +28 -> 9012341234567890123456789012345678
dqrot095 rotate 1234567890123456789012345678901234 +29 -> 123412345678901234567890123456789
dqrot096 rotate 1234567890123456789012345678901234 +30 -> 1234123456789012345678901234567890
dqrot097 rotate 1234567890123456789012345678901234 +31 -> 2341234567890123456789012345678901
dqrot098 rotate 1234567890123456789012345678901234 +32 -> 3412345678901234567890123456789012
dqrot099 rotate 1234567890123456789012345678901234 +33 -> 4123456789012345678901234567890123
dqrot100 rotate 1234567890123456789012345678901234 +34 -> 1234567890123456789012345678901234
-- zeros
dqrot270 rotate 0E-10 +29 -> 0E-10
dqrot271 rotate 0E-10 -29 -> 0E-10
dqrot272 rotate 0.000 +29 -> 0.000
dqrot273 rotate 0.000 -29 -> 0.000
dqrot274 rotate 0E+10 +29 -> 0E+10
dqrot275 rotate 0E+10 -29 -> 0E+10
dqrot276 rotate -0E-10 +29 -> -0E-10
dqrot277 rotate -0E-10 -29 -> -0E-10
dqrot278 rotate -0.000 +29 -> -0.000
dqrot279 rotate -0.000 -29 -> -0.000
dqrot280 rotate -0E+10 +29 -> -0E+10
dqrot281 rotate -0E+10 -29 -> -0E+10
-- Nmax, Nmin, Ntiny
dqrot141 rotate 9.999999999999999999999999999999999E+6144 -1 -> 9.999999999999999999999999999999999E+6144
dqrot142 rotate 9.999999999999999999999999999999999E+6144 -33 -> 9.999999999999999999999999999999999E+6144
dqrot143 rotate 9.999999999999999999999999999999999E+6144 1 -> 9.999999999999999999999999999999999E+6144
dqrot144 rotate 9.999999999999999999999999999999999E+6144 33 -> 9.999999999999999999999999999999999E+6144
dqrot145 rotate 1E-6143 -1 -> 1.000000000000000000000000000000000E-6110
dqrot146 rotate 1E-6143 -33 -> 1.0E-6142
dqrot147 rotate 1E-6143 1 -> 1.0E-6142
dqrot148 rotate 1E-6143 33 -> 1.000000000000000000000000000000000E-6110
dqrot151 rotate 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144
dqrot152 rotate 1.000000000000000000000000000000000E-6143 -33 -> 1E-6176
dqrot153 rotate 1.000000000000000000000000000000000E-6143 1 -> 1E-6176
dqrot154 rotate 1.000000000000000000000000000000000E-6143 33 -> 1.00000000000000000000000000000000E-6144
dqrot155 rotate 9.000000000000000000000000000000000E-6143 -1 -> 9.00000000000000000000000000000000E-6144
dqrot156 rotate 9.000000000000000000000000000000000E-6143 -33 -> 9E-6176
dqrot157 rotate 9.000000000000000000000000000000000E-6143 1 -> 9E-6176
dqrot158 rotate 9.000000000000000000000000000000000E-6143 33 -> 9.00000000000000000000000000000000E-6144
dqrot160 rotate 1E-6176 -1 -> 1.000000000000000000000000000000000E-6143
dqrot161 rotate 1E-6176 -33 -> 1.0E-6175
dqrot162 rotate 1E-6176 1 -> 1.0E-6175
dqrot163 rotate 1E-6176 33 -> 1.000000000000000000000000000000000E-6143
-- negatives
dqrot171 rotate -9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6144
dqrot172 rotate -9.999999999999999999999999999999999E+6144 -33 -> -9.999999999999999999999999999999999E+6144
dqrot173 rotate -9.999999999999999999999999999999999E+6144 1 -> -9.999999999999999999999999999999999E+6144
dqrot174 rotate -9.999999999999999999999999999999999E+6144 33 -> -9.999999999999999999999999999999999E+6144
dqrot175 rotate -1E-6143 -1 -> -1.000000000000000000000000000000000E-6110
dqrot176 rotate -1E-6143 -33 -> -1.0E-6142
dqrot177 rotate -1E-6143 1 -> -1.0E-6142
dqrot178 rotate -1E-6143 33 -> -1.000000000000000000000000000000000E-6110
dqrot181 rotate -1.000000000000000000000000000000000E-6143 -1 -> -1.00000000000000000000000000000000E-6144
dqrot182 rotate -1.000000000000000000000000000000000E-6143 -33 -> -1E-6176
dqrot183 rotate -1.000000000000000000000000000000000E-6143 1 -> -1E-6176
dqrot184 rotate -1.000000000000000000000000000000000E-6143 33 -> -1.00000000000000000000000000000000E-6144
dqrot185 rotate -9.000000000000000000000000000000000E-6143 -1 -> -9.00000000000000000000000000000000E-6144
dqrot186 rotate -9.000000000000000000000000000000000E-6143 -33 -> -9E-6176
dqrot187 rotate -9.000000000000000000000000000000000E-6143 1 -> -9E-6176
dqrot188 rotate -9.000000000000000000000000000000000E-6143 33 -> -9.00000000000000000000000000000000E-6144
dqrot190 rotate -1E-6176 -1 -> -1.000000000000000000000000000000000E-6143
dqrot191 rotate -1E-6176 -33 -> -1.0E-6175
dqrot192 rotate -1E-6176 1 -> -1.0E-6175
dqrot193 rotate -1E-6176 33 -> -1.000000000000000000000000000000000E-6143
-- more negatives (of sanities)
dqrot201 rotate -0 0 -> -0
dqrot202 rotate -0 2 -> -0
dqrot203 rotate -1 2 -> -100
dqrot204 rotate -1 33 -> -1000000000000000000000000000000000
dqrot205 rotate -1 34 -> -1
dqrot206 rotate -1 -1 -> -1000000000000000000000000000000000
dqrot207 rotate -0 -2 -> -0
dqrot208 rotate -1234567890123456789012345678901234 -1 -> -4123456789012345678901234567890123
dqrot209 rotate -1234567890123456789012345678901234 -33 -> -2345678901234567890123456789012341
dqrot210 rotate -1234567890123456789012345678901234 -34 -> -1234567890123456789012345678901234
dqrot211 rotate -9934567890123456789012345678901234 -33 -> -9345678901234567890123456789012349
dqrot212 rotate -9934567890123456789012345678901234 -34 -> -9934567890123456789012345678901234
-- Specials; NaNs are handled as usual
dqrot781 rotate -Inf -8 -> -Infinity
dqrot782 rotate -Inf -1 -> -Infinity
dqrot783 rotate -Inf -0 -> -Infinity
dqrot784 rotate -Inf 0 -> -Infinity
dqrot785 rotate -Inf 1 -> -Infinity
dqrot786 rotate -Inf 8 -> -Infinity
dqrot787 rotate -1000 -Inf -> NaN Invalid_operation
dqrot788 rotate -Inf -Inf -> NaN Invalid_operation
dqrot789 rotate -1 -Inf -> NaN Invalid_operation
dqrot790 rotate -0 -Inf -> NaN Invalid_operation
dqrot791 rotate 0 -Inf -> NaN Invalid_operation
dqrot792 rotate 1 -Inf -> NaN Invalid_operation
dqrot793 rotate 1000 -Inf -> NaN Invalid_operation
dqrot794 rotate Inf -Inf -> NaN Invalid_operation
dqrot800 rotate Inf -Inf -> NaN Invalid_operation
dqrot801 rotate Inf -8 -> Infinity
dqrot802 rotate Inf -1 -> Infinity
dqrot803 rotate Inf -0 -> Infinity
dqrot804 rotate Inf 0 -> Infinity
dqrot805 rotate Inf 1 -> Infinity
dqrot806 rotate Inf 8 -> Infinity
dqrot807 rotate Inf Inf -> NaN Invalid_operation
dqrot808 rotate -1000 Inf -> NaN Invalid_operation
dqrot809 rotate -Inf Inf -> NaN Invalid_operation
dqrot810 rotate -1 Inf -> NaN Invalid_operation
dqrot811 rotate -0 Inf -> NaN Invalid_operation
dqrot812 rotate 0 Inf -> NaN Invalid_operation
dqrot813 rotate 1 Inf -> NaN Invalid_operation
dqrot814 rotate 1000 Inf -> NaN Invalid_operation
dqrot815 rotate Inf Inf -> NaN Invalid_operation
dqrot821 rotate NaN -Inf -> NaN
dqrot822 rotate NaN -1000 -> NaN
dqrot823 rotate NaN -1 -> NaN
dqrot824 rotate NaN -0 -> NaN
dqrot825 rotate NaN 0 -> NaN
dqrot826 rotate NaN 1 -> NaN
dqrot827 rotate NaN 1000 -> NaN
dqrot828 rotate NaN Inf -> NaN
dqrot829 rotate NaN NaN -> NaN
dqrot830 rotate -Inf NaN -> NaN
dqrot831 rotate -1000 NaN -> NaN
dqrot832 rotate -1 NaN -> NaN
dqrot833 rotate -0 NaN -> NaN
dqrot834 rotate 0 NaN -> NaN
dqrot835 rotate 1 NaN -> NaN
dqrot836 rotate 1000 NaN -> NaN
dqrot837 rotate Inf NaN -> NaN
dqrot841 rotate sNaN -Inf -> NaN Invalid_operation
dqrot842 rotate sNaN -1000 -> NaN Invalid_operation
dqrot843 rotate sNaN -1 -> NaN Invalid_operation
dqrot844 rotate sNaN -0 -> NaN Invalid_operation
dqrot845 rotate sNaN 0 -> NaN Invalid_operation
dqrot846 rotate sNaN 1 -> NaN Invalid_operation
dqrot847 rotate sNaN 1000 -> NaN Invalid_operation
dqrot848 rotate sNaN NaN -> NaN Invalid_operation
dqrot849 rotate sNaN sNaN -> NaN Invalid_operation
dqrot850 rotate NaN sNaN -> NaN Invalid_operation
dqrot851 rotate -Inf sNaN -> NaN Invalid_operation
dqrot852 rotate -1000 sNaN -> NaN Invalid_operation
dqrot853 rotate -1 sNaN -> NaN Invalid_operation
dqrot854 rotate -0 sNaN -> NaN Invalid_operation
dqrot855 rotate 0 sNaN -> NaN Invalid_operation
dqrot856 rotate 1 sNaN -> NaN Invalid_operation
dqrot857 rotate 1000 sNaN -> NaN Invalid_operation
dqrot858 rotate Inf sNaN -> NaN Invalid_operation
dqrot859 rotate NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqrot861 rotate NaN1 -Inf -> NaN1
dqrot862 rotate +NaN2 -1000 -> NaN2
dqrot863 rotate NaN3 1000 -> NaN3
dqrot864 rotate NaN4 Inf -> NaN4
dqrot865 rotate NaN5 +NaN6 -> NaN5
dqrot866 rotate -Inf NaN7 -> NaN7
dqrot867 rotate -1000 NaN8 -> NaN8
dqrot868 rotate 1000 NaN9 -> NaN9
dqrot869 rotate Inf +NaN10 -> NaN10
dqrot871 rotate sNaN11 -Inf -> NaN11 Invalid_operation
dqrot872 rotate sNaN12 -1000 -> NaN12 Invalid_operation
dqrot873 rotate sNaN13 1000 -> NaN13 Invalid_operation
dqrot874 rotate sNaN14 NaN17 -> NaN14 Invalid_operation
dqrot875 rotate sNaN15 sNaN18 -> NaN15 Invalid_operation
dqrot876 rotate NaN16 sNaN19 -> NaN19 Invalid_operation
dqrot877 rotate -Inf +sNaN20 -> NaN20 Invalid_operation
dqrot878 rotate -1000 sNaN21 -> NaN21 Invalid_operation
dqrot879 rotate 1000 sNaN22 -> NaN22 Invalid_operation
dqrot880 rotate Inf sNaN23 -> NaN23 Invalid_operation
dqrot881 rotate +NaN25 +sNaN24 -> NaN24 Invalid_operation
dqrot882 rotate -NaN26 NaN28 -> -NaN26
dqrot883 rotate -sNaN27 sNaN29 -> -NaN27 Invalid_operation
dqrot884 rotate 1000 -NaN30 -> -NaN30
dqrot885 rotate 1000 -sNaN31 -> -NaN31 Invalid_operation

View file

@ -0,0 +1,389 @@
------------------------------------------------------------------------
-- dqSameQuantum.decTest -- check decQuad quantums match --
-- Copyright (c) IBM Corporation, 2001, 2008. 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.59
-- All operands and results are decQuads.
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
dqsamq001 samequantum 0 0 -> 1
dqsamq002 samequantum 0 1 -> 1
dqsamq003 samequantum 1 0 -> 1
dqsamq004 samequantum 1 1 -> 1
dqsamq011 samequantum 10 1E+1 -> 0
dqsamq012 samequantum 10E+1 10E+1 -> 1
dqsamq013 samequantum 100 10E+1 -> 0
dqsamq014 samequantum 100 1E+2 -> 0
dqsamq015 samequantum 0.1 1E-2 -> 0
dqsamq016 samequantum 0.1 1E-1 -> 1
dqsamq017 samequantum 0.1 1E-0 -> 0
dqsamq018 samequantum 999 999 -> 1
dqsamq019 samequantum 999E-1 99.9 -> 1
dqsamq020 samequantum 111E-1 22.2 -> 1
dqsamq021 samequantum 111E-1 1234.2 -> 1
-- zeros
dqsamq030 samequantum 0.0 1.1 -> 1
dqsamq031 samequantum 0.0 1.11 -> 0
dqsamq032 samequantum 0.0 0 -> 0
dqsamq033 samequantum 0.0 0.0 -> 1
dqsamq034 samequantum 0.0 0.00 -> 0
dqsamq035 samequantum 0E+1 0E+0 -> 0
dqsamq036 samequantum 0E+1 0E+1 -> 1
dqsamq037 samequantum 0E+1 0E+2 -> 0
dqsamq038 samequantum 0E-17 0E-16 -> 0
dqsamq039 samequantum 0E-17 0E-17 -> 1
dqsamq040 samequantum 0E-17 0E-18 -> 0
dqsamq041 samequantum 0E-17 0.0E-15 -> 0
dqsamq042 samequantum 0E-17 0.0E-16 -> 1
dqsamq043 samequantum 0E-17 0.0E-17 -> 0
dqsamq044 samequantum -0E-17 0.0E-16 -> 1
dqsamq045 samequantum 0E-17 -0.0E-17 -> 0
dqsamq046 samequantum 0E-17 -0.0E-16 -> 1
dqsamq047 samequantum -0E-17 0.0E-17 -> 0
dqsamq048 samequantum -0E-17 -0.0E-16 -> 1
dqsamq049 samequantum -0E-17 -0.0E-17 -> 0
-- Nmax, Nmin, Ntiny
dqsamq051 samequantum 9.99999999999999999999999999999999E+6144 9.99999999999999999999999999999999E+6144 -> 1
dqsamq052 samequantum 1E-6143 1E-6143 -> 1
dqsamq053 samequantum 1.00000000000000000000000000000000E-6143 1.00000000000000000000000000000000E-6143 -> 1
dqsamq054 samequantum 1E-6176 1E-6176 -> 1
dqsamq055 samequantum 9.99999999999999999999999999999999E+6144 9.99999999999999999999999999999999E+6144 -> 1
dqsamq056 samequantum 1E-6143 1E-6143 -> 1
dqsamq057 samequantum 1.00000000000000000000000000000000E-6143 1.00000000000000000000000000000000E-6143 -> 1
dqsamq058 samequantum 1E-6176 1E-6176 -> 1
dqsamq061 samequantum -1E-6176 -1E-6176 -> 1
dqsamq062 samequantum -1.00000000000000000000000000000000E-6143 -1.00000000000000000000000000000000E-6143 -> 1
dqsamq063 samequantum -1E-6143 -1E-6143 -> 1
dqsamq064 samequantum -9.99999999999999999999999999999999E+6144 -9.99999999999999999999999999999999E+6144 -> 1
dqsamq065 samequantum -1E-6176 -1E-6176 -> 1
dqsamq066 samequantum -1.00000000000000000000000000000000E-6143 -1.00000000000000000000000000000000E-6143 -> 1
dqsamq067 samequantum -1E-6143 -1E-6143 -> 1
dqsamq068 samequantum -9.99999999999999999999999999999999E+6144 -9.99999999999999999999999999999999E+6144 -> 1
dqsamq071 samequantum -4E-6176 -1E-6176 -> 1
dqsamq072 samequantum -4.00000000000000000000000000000000E-6143 -1.00000000000000000000000000004000E-6143 -> 1
dqsamq073 samequantum -4E-6143 -1E-6143 -> 1
dqsamq074 samequantum -4.99999999999999999999999999999999E+6144 -9.99949999999999999999999999999999E+6144 -> 1
dqsamq075 samequantum -4E-6176 -1E-6176 -> 1
dqsamq076 samequantum -4.00000000000000000000000000000000E-6143 -1.00400000000000000000000000000000E-6143 -> 1
dqsamq077 samequantum -4E-6143 -1E-6143 -> 1
dqsamq078 samequantum -4.99999999999999999999999999999999E+6144 -9.94999999999999999999999999999999E+6144 -> 1
dqsamq081 samequantum -4E-1006 -1E-6176 -> 0
dqsamq082 samequantum -4.00000000000000000000000000000000E-6143 -1.00004000000000000000000000000000E-6136 -> 0
dqsamq083 samequantum -4E-6140 -1E-6143 -> 0
dqsamq084 samequantum -4.99999999999999999999999999999999E+6144 -9.99949999999999999999999999999999E+6136 -> 0
dqsamq085 samequantum -4E-1006 -1E-6176 -> 0
dqsamq086 samequantum -4.00000000000000000000000000000000E-6143 -1.00400000000000000000000000000000E-6136 -> 0
dqsamq087 samequantum -4E-6133 -1E-6143 -> 0
dqsamq088 samequantum -4.99999999999999999999999999999999E+6144 -9.94999999999999999999999999999999E+6136 -> 0
-- specials & combinations
dqsamq0110 samequantum -Inf -Inf -> 1
dqsamq0111 samequantum -Inf Inf -> 1
dqsamq0112 samequantum -Inf NaN -> 0
dqsamq0113 samequantum -Inf -7E+3 -> 0
dqsamq0114 samequantum -Inf -7 -> 0
dqsamq0115 samequantum -Inf -7E-3 -> 0
dqsamq0116 samequantum -Inf -0E-3 -> 0
dqsamq0117 samequantum -Inf -0 -> 0
dqsamq0118 samequantum -Inf -0E+3 -> 0
dqsamq0119 samequantum -Inf 0E-3 -> 0
dqsamq0120 samequantum -Inf 0 -> 0
dqsamq0121 samequantum -Inf 0E+3 -> 0
dqsamq0122 samequantum -Inf 7E-3 -> 0
dqsamq0123 samequantum -Inf 7 -> 0
dqsamq0124 samequantum -Inf 7E+3 -> 0
dqsamq0125 samequantum -Inf sNaN -> 0
dqsamq0210 samequantum Inf -Inf -> 1
dqsamq0211 samequantum Inf Inf -> 1
dqsamq0212 samequantum Inf NaN -> 0
dqsamq0213 samequantum Inf -7E+3 -> 0
dqsamq0214 samequantum Inf -7 -> 0
dqsamq0215 samequantum Inf -7E-3 -> 0
dqsamq0216 samequantum Inf -0E-3 -> 0
dqsamq0217 samequantum Inf -0 -> 0
dqsamq0218 samequantum Inf -0E+3 -> 0
dqsamq0219 samequantum Inf 0E-3 -> 0
dqsamq0220 samequantum Inf 0 -> 0
dqsamq0221 samequantum Inf 0E+3 -> 0
dqsamq0222 samequantum Inf 7E-3 -> 0
dqsamq0223 samequantum Inf 7 -> 0
dqsamq0224 samequantum Inf 7E+3 -> 0
dqsamq0225 samequantum Inf sNaN -> 0
dqsamq0310 samequantum NaN -Inf -> 0
dqsamq0311 samequantum NaN Inf -> 0
dqsamq0312 samequantum NaN NaN -> 1
dqsamq0313 samequantum NaN -7E+3 -> 0
dqsamq0314 samequantum NaN -7 -> 0
dqsamq0315 samequantum NaN -7E-3 -> 0
dqsamq0316 samequantum NaN -0E-3 -> 0
dqsamq0317 samequantum NaN -0 -> 0
dqsamq0318 samequantum NaN -0E+3 -> 0
dqsamq0319 samequantum NaN 0E-3 -> 0
dqsamq0320 samequantum NaN 0 -> 0
dqsamq0321 samequantum NaN 0E+3 -> 0
dqsamq0322 samequantum NaN 7E-3 -> 0
dqsamq0323 samequantum NaN 7 -> 0
dqsamq0324 samequantum NaN 7E+3 -> 0
dqsamq0325 samequantum NaN sNaN -> 1
dqsamq0410 samequantum -7E+3 -Inf -> 0
dqsamq0411 samequantum -7E+3 Inf -> 0
dqsamq0412 samequantum -7E+3 NaN -> 0
dqsamq0413 samequantum -7E+3 -7E+3 -> 1
dqsamq0414 samequantum -7E+3 -7 -> 0
dqsamq0415 samequantum -7E+3 -7E-3 -> 0
dqsamq0416 samequantum -7E+3 -0E-3 -> 0
dqsamq0417 samequantum -7E+3 -0 -> 0
dqsamq0418 samequantum -7E+3 -0E+3 -> 1
dqsamq0419 samequantum -7E+3 0E-3 -> 0
dqsamq0420 samequantum -7E+3 0 -> 0
dqsamq0421 samequantum -7E+3 0E+3 -> 1
dqsamq0422 samequantum -7E+3 7E-3 -> 0
dqsamq0423 samequantum -7E+3 7 -> 0
dqsamq0424 samequantum -7E+3 7E+3 -> 1
dqsamq0425 samequantum -7E+3 sNaN -> 0
dqsamq0510 samequantum -7 -Inf -> 0
dqsamq0511 samequantum -7 Inf -> 0
dqsamq0512 samequantum -7 NaN -> 0
dqsamq0513 samequantum -7 -7E+3 -> 0
dqsamq0514 samequantum -7 -7 -> 1
dqsamq0515 samequantum -7 -7E-3 -> 0
dqsamq0516 samequantum -7 -0E-3 -> 0
dqsamq0517 samequantum -7 -0 -> 1
dqsamq0518 samequantum -7 -0E+3 -> 0
dqsamq0519 samequantum -7 0E-3 -> 0
dqsamq0520 samequantum -7 0 -> 1
dqsamq0521 samequantum -7 0E+3 -> 0
dqsamq0522 samequantum -7 7E-3 -> 0
dqsamq0523 samequantum -7 7 -> 1
dqsamq0524 samequantum -7 7E+3 -> 0
dqsamq0525 samequantum -7 sNaN -> 0
dqsamq0610 samequantum -7E-3 -Inf -> 0
dqsamq0611 samequantum -7E-3 Inf -> 0
dqsamq0612 samequantum -7E-3 NaN -> 0
dqsamq0613 samequantum -7E-3 -7E+3 -> 0
dqsamq0614 samequantum -7E-3 -7 -> 0
dqsamq0615 samequantum -7E-3 -7E-3 -> 1
dqsamq0616 samequantum -7E-3 -0E-3 -> 1
dqsamq0617 samequantum -7E-3 -0 -> 0
dqsamq0618 samequantum -7E-3 -0E+3 -> 0
dqsamq0619 samequantum -7E-3 0E-3 -> 1
dqsamq0620 samequantum -7E-3 0 -> 0
dqsamq0621 samequantum -7E-3 0E+3 -> 0
dqsamq0622 samequantum -7E-3 7E-3 -> 1
dqsamq0623 samequantum -7E-3 7 -> 0
dqsamq0624 samequantum -7E-3 7E+3 -> 0
dqsamq0625 samequantum -7E-3 sNaN -> 0
dqsamq0710 samequantum -0E-3 -Inf -> 0
dqsamq0711 samequantum -0E-3 Inf -> 0
dqsamq0712 samequantum -0E-3 NaN -> 0
dqsamq0713 samequantum -0E-3 -7E+3 -> 0
dqsamq0714 samequantum -0E-3 -7 -> 0
dqsamq0715 samequantum -0E-3 -7E-3 -> 1
dqsamq0716 samequantum -0E-3 -0E-3 -> 1
dqsamq0717 samequantum -0E-3 -0 -> 0
dqsamq0718 samequantum -0E-3 -0E+3 -> 0
dqsamq0719 samequantum -0E-3 0E-3 -> 1
dqsamq0720 samequantum -0E-3 0 -> 0
dqsamq0721 samequantum -0E-3 0E+3 -> 0
dqsamq0722 samequantum -0E-3 7E-3 -> 1
dqsamq0723 samequantum -0E-3 7 -> 0
dqsamq0724 samequantum -0E-3 7E+3 -> 0
dqsamq0725 samequantum -0E-3 sNaN -> 0
dqsamq0810 samequantum -0 -Inf -> 0
dqsamq0811 samequantum -0 Inf -> 0
dqsamq0812 samequantum -0 NaN -> 0
dqsamq0813 samequantum -0 -7E+3 -> 0
dqsamq0814 samequantum -0 -7 -> 1
dqsamq0815 samequantum -0 -7E-3 -> 0
dqsamq0816 samequantum -0 -0E-3 -> 0
dqsamq0817 samequantum -0 -0 -> 1
dqsamq0818 samequantum -0 -0E+3 -> 0
dqsamq0819 samequantum -0 0E-3 -> 0
dqsamq0820 samequantum -0 0 -> 1
dqsamq0821 samequantum -0 0E+3 -> 0
dqsamq0822 samequantum -0 7E-3 -> 0
dqsamq0823 samequantum -0 7 -> 1
dqsamq0824 samequantum -0 7E+3 -> 0
dqsamq0825 samequantum -0 sNaN -> 0
dqsamq0910 samequantum -0E+3 -Inf -> 0
dqsamq0911 samequantum -0E+3 Inf -> 0
dqsamq0912 samequantum -0E+3 NaN -> 0
dqsamq0913 samequantum -0E+3 -7E+3 -> 1
dqsamq0914 samequantum -0E+3 -7 -> 0
dqsamq0915 samequantum -0E+3 -7E-3 -> 0
dqsamq0916 samequantum -0E+3 -0E-3 -> 0
dqsamq0917 samequantum -0E+3 -0 -> 0
dqsamq0918 samequantum -0E+3 -0E+3 -> 1
dqsamq0919 samequantum -0E+3 0E-3 -> 0
dqsamq0920 samequantum -0E+3 0 -> 0
dqsamq0921 samequantum -0E+3 0E+3 -> 1
dqsamq0922 samequantum -0E+3 7E-3 -> 0
dqsamq0923 samequantum -0E+3 7 -> 0
dqsamq0924 samequantum -0E+3 7E+3 -> 1
dqsamq0925 samequantum -0E+3 sNaN -> 0
dqsamq1110 samequantum 0E-3 -Inf -> 0
dqsamq1111 samequantum 0E-3 Inf -> 0
dqsamq1112 samequantum 0E-3 NaN -> 0
dqsamq1113 samequantum 0E-3 -7E+3 -> 0
dqsamq1114 samequantum 0E-3 -7 -> 0
dqsamq1115 samequantum 0E-3 -7E-3 -> 1
dqsamq1116 samequantum 0E-3 -0E-3 -> 1
dqsamq1117 samequantum 0E-3 -0 -> 0
dqsamq1118 samequantum 0E-3 -0E+3 -> 0
dqsamq1119 samequantum 0E-3 0E-3 -> 1
dqsamq1120 samequantum 0E-3 0 -> 0
dqsamq1121 samequantum 0E-3 0E+3 -> 0
dqsamq1122 samequantum 0E-3 7E-3 -> 1
dqsamq1123 samequantum 0E-3 7 -> 0
dqsamq1124 samequantum 0E-3 7E+3 -> 0
dqsamq1125 samequantum 0E-3 sNaN -> 0
dqsamq1210 samequantum 0 -Inf -> 0
dqsamq1211 samequantum 0 Inf -> 0
dqsamq1212 samequantum 0 NaN -> 0
dqsamq1213 samequantum 0 -7E+3 -> 0
dqsamq1214 samequantum 0 -7 -> 1
dqsamq1215 samequantum 0 -7E-3 -> 0
dqsamq1216 samequantum 0 -0E-3 -> 0
dqsamq1217 samequantum 0 -0 -> 1
dqsamq1218 samequantum 0 -0E+3 -> 0
dqsamq1219 samequantum 0 0E-3 -> 0
dqsamq1220 samequantum 0 0 -> 1
dqsamq1221 samequantum 0 0E+3 -> 0
dqsamq1222 samequantum 0 7E-3 -> 0
dqsamq1223 samequantum 0 7 -> 1
dqsamq1224 samequantum 0 7E+3 -> 0
dqsamq1225 samequantum 0 sNaN -> 0
dqsamq1310 samequantum 0E+3 -Inf -> 0
dqsamq1311 samequantum 0E+3 Inf -> 0
dqsamq1312 samequantum 0E+3 NaN -> 0
dqsamq1313 samequantum 0E+3 -7E+3 -> 1
dqsamq1314 samequantum 0E+3 -7 -> 0
dqsamq1315 samequantum 0E+3 -7E-3 -> 0
dqsamq1316 samequantum 0E+3 -0E-3 -> 0
dqsamq1317 samequantum 0E+3 -0 -> 0
dqsamq1318 samequantum 0E+3 -0E+3 -> 1
dqsamq1319 samequantum 0E+3 0E-3 -> 0
dqsamq1320 samequantum 0E+3 0 -> 0
dqsamq1321 samequantum 0E+3 0E+3 -> 1
dqsamq1322 samequantum 0E+3 7E-3 -> 0
dqsamq1323 samequantum 0E+3 7 -> 0
dqsamq1324 samequantum 0E+3 7E+3 -> 1
dqsamq1325 samequantum 0E+3 sNaN -> 0
dqsamq1410 samequantum 7E-3 -Inf -> 0
dqsamq1411 samequantum 7E-3 Inf -> 0
dqsamq1412 samequantum 7E-3 NaN -> 0
dqsamq1413 samequantum 7E-3 -7E+3 -> 0
dqsamq1414 samequantum 7E-3 -7 -> 0
dqsamq1415 samequantum 7E-3 -7E-3 -> 1
dqsamq1416 samequantum 7E-3 -0E-3 -> 1
dqsamq1417 samequantum 7E-3 -0 -> 0
dqsamq1418 samequantum 7E-3 -0E+3 -> 0
dqsamq1419 samequantum 7E-3 0E-3 -> 1
dqsamq1420 samequantum 7E-3 0 -> 0
dqsamq1421 samequantum 7E-3 0E+3 -> 0
dqsamq1422 samequantum 7E-3 7E-3 -> 1
dqsamq1423 samequantum 7E-3 7 -> 0
dqsamq1424 samequantum 7E-3 7E+3 -> 0
dqsamq1425 samequantum 7E-3 sNaN -> 0
dqsamq1510 samequantum 7 -Inf -> 0
dqsamq1511 samequantum 7 Inf -> 0
dqsamq1512 samequantum 7 NaN -> 0
dqsamq1513 samequantum 7 -7E+3 -> 0
dqsamq1514 samequantum 7 -7 -> 1
dqsamq1515 samequantum 7 -7E-3 -> 0
dqsamq1516 samequantum 7 -0E-3 -> 0
dqsamq1517 samequantum 7 -0 -> 1
dqsamq1518 samequantum 7 -0E+3 -> 0
dqsamq1519 samequantum 7 0E-3 -> 0
dqsamq1520 samequantum 7 0 -> 1
dqsamq1521 samequantum 7 0E+3 -> 0
dqsamq1522 samequantum 7 7E-3 -> 0
dqsamq1523 samequantum 7 7 -> 1
dqsamq1524 samequantum 7 7E+3 -> 0
dqsamq1525 samequantum 7 sNaN -> 0
dqsamq1610 samequantum 7E+3 -Inf -> 0
dqsamq1611 samequantum 7E+3 Inf -> 0
dqsamq1612 samequantum 7E+3 NaN -> 0
dqsamq1613 samequantum 7E+3 -7E+3 -> 1
dqsamq1614 samequantum 7E+3 -7 -> 0
dqsamq1615 samequantum 7E+3 -7E-3 -> 0
dqsamq1616 samequantum 7E+3 -0E-3 -> 0
dqsamq1617 samequantum 7E+3 -0 -> 0
dqsamq1618 samequantum 7E+3 -0E+3 -> 1
dqsamq1619 samequantum 7E+3 0E-3 -> 0
dqsamq1620 samequantum 7E+3 0 -> 0
dqsamq1621 samequantum 7E+3 0E+3 -> 1
dqsamq1622 samequantum 7E+3 7E-3 -> 0
dqsamq1623 samequantum 7E+3 7 -> 0
dqsamq1624 samequantum 7E+3 7E+3 -> 1
dqsamq1625 samequantum 7E+3 sNaN -> 0
dqsamq1710 samequantum sNaN -Inf -> 0
dqsamq1711 samequantum sNaN Inf -> 0
dqsamq1712 samequantum sNaN NaN -> 1
dqsamq1713 samequantum sNaN -7E+3 -> 0
dqsamq1714 samequantum sNaN -7 -> 0
dqsamq1715 samequantum sNaN -7E-3 -> 0
dqsamq1716 samequantum sNaN -0E-3 -> 0
dqsamq1717 samequantum sNaN -0 -> 0
dqsamq1718 samequantum sNaN -0E+3 -> 0
dqsamq1719 samequantum sNaN 0E-3 -> 0
dqsamq1720 samequantum sNaN 0 -> 0
dqsamq1721 samequantum sNaN 0E+3 -> 0
dqsamq1722 samequantum sNaN 7E-3 -> 0
dqsamq1723 samequantum sNaN 7 -> 0
dqsamq1724 samequantum sNaN 7E+3 -> 0
dqsamq1725 samequantum sNaN sNaN -> 1
-- noisy NaNs
dqsamq1730 samequantum sNaN3 sNaN3 -> 1
dqsamq1731 samequantum sNaN3 sNaN4 -> 1
dqsamq1732 samequantum NaN3 NaN3 -> 1
dqsamq1733 samequantum NaN3 NaN4 -> 1
dqsamq1734 samequantum sNaN3 3 -> 0
dqsamq1735 samequantum NaN3 3 -> 0
dqsamq1736 samequantum 4 sNaN4 -> 0
dqsamq1737 samequantum 3 NaN3 -> 0
dqsamq1738 samequantum Inf sNaN4 -> 0
dqsamq1739 samequantum -Inf NaN3 -> 0

View file

@ -0,0 +1,260 @@
------------------------------------------------------------------------
-- dqScalebB.decTest -- scale a decQuad by powers of 10 --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Max |rhs| is 2*(6144+34) = 12356
-- Sanity checks
dqscb001 scaleb 7.50 10 -> 7.50E+10
dqscb002 scaleb 7.50 3 -> 7.50E+3
dqscb003 scaleb 7.50 2 -> 750
dqscb004 scaleb 7.50 1 -> 75.0
dqscb005 scaleb 7.50 0 -> 7.50
dqscb006 scaleb 7.50 -1 -> 0.750
dqscb007 scaleb 7.50 -2 -> 0.0750
dqscb008 scaleb 7.50 -10 -> 7.50E-10
dqscb009 scaleb -7.50 3 -> -7.50E+3
dqscb010 scaleb -7.50 2 -> -750
dqscb011 scaleb -7.50 1 -> -75.0
dqscb012 scaleb -7.50 0 -> -7.50
dqscb013 scaleb -7.50 -1 -> -0.750
-- Infinities
dqscb014 scaleb Infinity 1 -> Infinity
dqscb015 scaleb -Infinity 2 -> -Infinity
dqscb016 scaleb Infinity -1 -> Infinity
dqscb017 scaleb -Infinity -2 -> -Infinity
-- Next two are somewhat undefined in 754r; treat as non-integer
dqscb018 scaleb 10 Infinity -> NaN Invalid_operation
dqscb019 scaleb 10 -Infinity -> NaN Invalid_operation
-- NaNs are undefined in 754r; assume usual processing
-- NaNs, 0 payload
dqscb021 scaleb NaN 1 -> NaN
dqscb022 scaleb -NaN -1 -> -NaN
dqscb023 scaleb sNaN 1 -> NaN Invalid_operation
dqscb024 scaleb -sNaN 1 -> -NaN Invalid_operation
dqscb025 scaleb 4 NaN -> NaN
dqscb026 scaleb -Inf -NaN -> -NaN
dqscb027 scaleb 4 sNaN -> NaN Invalid_operation
dqscb028 scaleb Inf -sNaN -> -NaN Invalid_operation
-- non-integer RHS
dqscb030 scaleb 1.23 1 -> 12.3
dqscb031 scaleb 1.23 1.00 -> NaN Invalid_operation
dqscb032 scaleb 1.23 1.1 -> NaN Invalid_operation
dqscb033 scaleb 1.23 1.01 -> NaN Invalid_operation
dqscb034 scaleb 1.23 0.01 -> NaN Invalid_operation
dqscb035 scaleb 1.23 0.11 -> NaN Invalid_operation
dqscb036 scaleb 1.23 0.999999999 -> NaN Invalid_operation
dqscb037 scaleb 1.23 -1 -> 0.123
dqscb0614 scaleb 1.23 -1.00 -> NaN Invalid_operation
dqscb039 scaleb 1.23 -1.1 -> NaN Invalid_operation
dqscb040 scaleb 1.23 -1.01 -> NaN Invalid_operation
dqscb041 scaleb 1.23 -0.01 -> NaN Invalid_operation
dqscb042 scaleb 1.23 -0.11 -> NaN Invalid_operation
dqscb043 scaleb 1.23 -0.999999999 -> NaN Invalid_operation
dqscb044 scaleb 1.23 0.1 -> NaN Invalid_operation
dqscb045 scaleb 1.23 1E+1 -> NaN Invalid_operation
dqscb046 scaleb 1.23 1.1234E+6 -> NaN Invalid_operation
dqscb047 scaleb 1.23 1.123E+4 -> NaN Invalid_operation
-- out-of range RHS
dqscb120 scaleb 1.23 12355 -> Infinity Overflow Inexact Rounded
dqscb121 scaleb 1.23 12356 -> Infinity Overflow Inexact Rounded
dqscb122 scaleb 1.23 12357 -> NaN Invalid_operation
dqscb123 scaleb 1.23 12358 -> NaN Invalid_operation
dqscb124 scaleb 1.23 -12355 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqscb125 scaleb 1.23 -12356 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqscb126 scaleb 1.23 -12357 -> NaN Invalid_operation
dqscb127 scaleb 1.23 -12358 -> NaN Invalid_operation
-- NaNs, non-0 payload
-- propagating NaNs
dqscb861 scaleb NaN01 -Inf -> NaN1
dqscb862 scaleb -NaN02 -1000 -> -NaN2
dqscb863 scaleb NaN03 1000 -> NaN3
dqscb864 scaleb NaN04 Inf -> NaN4
dqscb865 scaleb NaN05 NaN61 -> NaN5
dqscb866 scaleb -Inf -NaN71 -> -NaN71
dqscb867 scaleb -1000 NaN81 -> NaN81
dqscb868 scaleb 1000 NaN91 -> NaN91
dqscb869 scaleb Inf NaN101 -> NaN101
dqscb871 scaleb sNaN011 -Inf -> NaN11 Invalid_operation
dqscb872 scaleb sNaN012 -1000 -> NaN12 Invalid_operation
dqscb873 scaleb -sNaN013 1000 -> -NaN13 Invalid_operation
dqscb874 scaleb sNaN014 NaN171 -> NaN14 Invalid_operation
dqscb875 scaleb sNaN015 sNaN181 -> NaN15 Invalid_operation
dqscb876 scaleb NaN016 sNaN191 -> NaN191 Invalid_operation
dqscb877 scaleb -Inf sNaN201 -> NaN201 Invalid_operation
dqscb878 scaleb -1000 sNaN211 -> NaN211 Invalid_operation
dqscb879 scaleb 1000 -sNaN221 -> -NaN221 Invalid_operation
dqscb880 scaleb Inf sNaN231 -> NaN231 Invalid_operation
dqscb881 scaleb NaN025 sNaN241 -> NaN241 Invalid_operation
-- finites
dqscb051 scaleb 7 -2 -> 0.07
dqscb052 scaleb -7 -2 -> -0.07
dqscb053 scaleb 75 -2 -> 0.75
dqscb054 scaleb -75 -2 -> -0.75
dqscb055 scaleb 7.50 -2 -> 0.0750
dqscb056 scaleb -7.50 -2 -> -0.0750
dqscb057 scaleb 7.500 -2 -> 0.07500
dqscb058 scaleb -7.500 -2 -> -0.07500
dqscb061 scaleb 7 -1 -> 0.7
dqscb062 scaleb -7 -1 -> -0.7
dqscb063 scaleb 75 -1 -> 7.5
dqscb064 scaleb -75 -1 -> -7.5
dqscb065 scaleb 7.50 -1 -> 0.750
dqscb066 scaleb -7.50 -1 -> -0.750
dqscb067 scaleb 7.500 -1 -> 0.7500
dqscb068 scaleb -7.500 -1 -> -0.7500
dqscb071 scaleb 7 0 -> 7
dqscb072 scaleb -7 0 -> -7
dqscb073 scaleb 75 0 -> 75
dqscb074 scaleb -75 0 -> -75
dqscb075 scaleb 7.50 0 -> 7.50
dqscb076 scaleb -7.50 0 -> -7.50
dqscb077 scaleb 7.500 0 -> 7.500
dqscb078 scaleb -7.500 0 -> -7.500
dqscb081 scaleb 7 1 -> 7E+1
dqscb082 scaleb -7 1 -> -7E+1
dqscb083 scaleb 75 1 -> 7.5E+2
dqscb084 scaleb -75 1 -> -7.5E+2
dqscb085 scaleb 7.50 1 -> 75.0
dqscb086 scaleb -7.50 1 -> -75.0
dqscb087 scaleb 7.500 1 -> 75.00
dqscb088 scaleb -7.500 1 -> -75.00
dqscb091 scaleb 7 2 -> 7E+2
dqscb092 scaleb -7 2 -> -7E+2
dqscb093 scaleb 75 2 -> 7.5E+3
dqscb094 scaleb -75 2 -> -7.5E+3
dqscb095 scaleb 7.50 2 -> 750
dqscb096 scaleb -7.50 2 -> -750
dqscb097 scaleb 7.500 2 -> 750.0
dqscb098 scaleb -7.500 2 -> -750.0
-- zeros
dqscb111 scaleb 0 1 -> 0E+1
dqscb112 scaleb -0 2 -> -0E+2
dqscb113 scaleb 0E+4 3 -> 0E+7
dqscb114 scaleb -0E+4 4 -> -0E+8
dqscb115 scaleb 0.0000 5 -> 0E+1
dqscb116 scaleb -0.0000 6 -> -0E+2
dqscb117 scaleb 0E-141 7 -> 0E-134
dqscb118 scaleb -0E-141 8 -> -0E-133
-- Nmax, Nmin, Ntiny
dqscb132 scaleb 9.999999999999999999999999999999999E+6144 +6144 -> Infinity Overflow Inexact Rounded
dqscb133 scaleb 9.999999999999999999999999999999999E+6144 +10 -> Infinity Overflow Inexact Rounded
dqscb134 scaleb 9.999999999999999999999999999999999E+6144 +1 -> Infinity Overflow Inexact Rounded
dqscb135 scaleb 9.999999999999999999999999999999999E+6144 0 -> 9.999999999999999999999999999999999E+6144
dqscb136 scaleb 9.999999999999999999999999999999999E+6144 -1 -> 9.999999999999999999999999999999999E+6143
dqscb137 scaleb 1E-6143 +1 -> 1E-6142
dqscb1614 scaleb 1E-6143 -0 -> 1E-6143
dqscb139 scaleb 1E-6143 -1 -> 1E-6144 Subnormal
dqscb140 scaleb 1.000000000000000000000000000000000E-6143 +1 -> 1.000000000000000000000000000000000E-6142
dqscb141 scaleb 1.000000000000000000000000000000000E-6143 0 -> 1.000000000000000000000000000000000E-6143
dqscb142 scaleb 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144 Subnormal Rounded
dqscb143 scaleb 1E-6176 +1 -> 1E-6175 Subnormal
dqscb144 scaleb 1E-6176 -0 -> 1E-6176 Subnormal
dqscb145 scaleb 1E-6176 -1 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqscb150 scaleb -1E-6176 +1 -> -1E-6175 Subnormal
dqscb151 scaleb -1E-6176 -0 -> -1E-6176 Subnormal
dqscb152 scaleb -1E-6176 -1 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqscb153 scaleb -1.000000000000000000000000000000000E-6143 +1 -> -1.000000000000000000000000000000000E-6142
dqscb154 scaleb -1.000000000000000000000000000000000E-6143 +0 -> -1.000000000000000000000000000000000E-6143
dqscb155 scaleb -1.000000000000000000000000000000000E-6143 -1 -> -1.00000000000000000000000000000000E-6144 Subnormal Rounded
dqscb156 scaleb -1E-6143 +1 -> -1E-6142
dqscb157 scaleb -1E-6143 -0 -> -1E-6143
dqscb158 scaleb -1E-6143 -1 -> -1E-6144 Subnormal
dqscb159 scaleb -9.999999999999999999999999999999999E+6144 +1 -> -Infinity Overflow Inexact Rounded
dqscb160 scaleb -9.999999999999999999999999999999999E+6144 +0 -> -9.999999999999999999999999999999999E+6144
dqscb161 scaleb -9.999999999999999999999999999999999E+6144 -1 -> -9.999999999999999999999999999999999E+6143
dqscb162 scaleb -9E+6144 +1 -> -Infinity Overflow Inexact Rounded
dqscb163 scaleb -1E+6144 +1 -> -Infinity Overflow Inexact Rounded
-- some Origami
-- (these check that overflow is being done correctly)
dqscb171 scaleb 1000E+6109 +1 -> 1.000E+6113
dqscb172 scaleb 1000E+6110 +1 -> 1.000E+6114
dqscb173 scaleb 1000E+6111 +1 -> 1.0000E+6115 Clamped
dqscb174 scaleb 1000E+6112 +1 -> 1.00000E+6116 Clamped
dqscb175 scaleb 1000E+6113 +1 -> 1.000000E+6117 Clamped
dqscb176 scaleb 1000E+6114 +1 -> 1.0000000E+6118 Clamped
dqscb177 scaleb 1000E+6131 +1 -> 1.000000000000000000000000E+6135 Clamped
dqscb178 scaleb 1000E+6132 +1 -> 1.0000000000000000000000000E+6136 Clamped
dqscb179 scaleb 1000E+6133 +1 -> 1.00000000000000000000000000E+6137 Clamped
dqscb180 scaleb 1000E+6134 +1 -> 1.000000000000000000000000000E+6138 Clamped
dqscb181 scaleb 1000E+6135 +1 -> 1.0000000000000000000000000000E+6139 Clamped
dqscb182 scaleb 1000E+6136 +1 -> 1.00000000000000000000000000000E+6140 Clamped
dqscb183 scaleb 1000E+6137 +1 -> 1.000000000000000000000000000000E+6141 Clamped
dqscb184 scaleb 1000E+6138 +1 -> 1.0000000000000000000000000000000E+6142 Clamped
dqscb185 scaleb 1000E+6139 +1 -> 1.00000000000000000000000000000000E+6143 Clamped
dqscb186 scaleb 1000E+6140 +1 -> 1.000000000000000000000000000000000E+6144 Clamped
dqscb187 scaleb 1000E+6141 +1 -> Infinity Overflow Inexact Rounded
-- and a few more subnormal truncations
-- (these check that underflow is being done correctly)
dqscb221 scaleb 1.000000000000000000000000000000000E-6143 0 -> 1.000000000000000000000000000000000E-6143
dqscb222 scaleb 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144 Subnormal Rounded
dqscb223 scaleb 1.000000000000000000000000000000000E-6143 -2 -> 1.0000000000000000000000000000000E-6145 Subnormal Rounded
dqscb224 scaleb 1.000000000000000000000000000000000E-6143 -3 -> 1.000000000000000000000000000000E-6146 Subnormal Rounded
dqscb225 scaleb 1.000000000000000000000000000000000E-6143 -4 -> 1.00000000000000000000000000000E-6147 Subnormal Rounded
dqscb226 scaleb 1.000000000000000000000000000000000E-6143 -5 -> 1.0000000000000000000000000000E-6148 Subnormal Rounded
dqscb227 scaleb 1.000000000000000000000000000000000E-6143 -6 -> 1.000000000000000000000000000E-6149 Subnormal Rounded
dqscb228 scaleb 1.000000000000000000000000000000000E-6143 -7 -> 1.00000000000000000000000000E-6150 Subnormal Rounded
dqscb229 scaleb 1.000000000000000000000000000000000E-6143 -8 -> 1.0000000000000000000000000E-6151 Subnormal Rounded
dqscb230 scaleb 1.000000000000000000000000000000000E-6143 -9 -> 1.000000000000000000000000E-6152 Subnormal Rounded
dqscb231 scaleb 1.000000000000000000000000000000000E-6143 -10 -> 1.00000000000000000000000E-6153 Subnormal Rounded
dqscb232 scaleb 1.000000000000000000000000000000000E-6143 -11 -> 1.0000000000000000000000E-6154 Subnormal Rounded
dqscb233 scaleb 1.000000000000000000000000000000000E-6143 -12 -> 1.000000000000000000000E-6155 Subnormal Rounded
dqscb234 scaleb 1.000000000000000000000000000000000E-6143 -13 -> 1.00000000000000000000E-6156 Subnormal Rounded
dqscb235 scaleb 1.000000000000000000000000000000000E-6143 -14 -> 1.0000000000000000000E-6157 Subnormal Rounded
dqscb236 scaleb 1.000000000000000000000000000000000E-6143 -15 -> 1.000000000000000000E-6158 Subnormal Rounded
dqscb237 scaleb 1.000000000000000000000000000000000E-6143 -16 -> 1.00000000000000000E-6159 Subnormal Rounded
dqscb238 scaleb 1.000000000000000000000000000000000E-6143 -17 -> 1.0000000000000000E-6160 Subnormal Rounded
dqscb239 scaleb 1.000000000000000000000000000000000E-6143 -18 -> 1.000000000000000E-6161 Subnormal Rounded
dqscb202 scaleb 1.000000000000000000000000000000000E-6143 -19 -> 1.00000000000000E-6162 Subnormal Rounded
dqscb203 scaleb 1.000000000000000000000000000000000E-6143 -20 -> 1.0000000000000E-6163 Subnormal Rounded
dqscb204 scaleb 1.000000000000000000000000000000000E-6143 -21 -> 1.000000000000E-6164 Subnormal Rounded
dqscb205 scaleb 1.000000000000000000000000000000000E-6143 -22 -> 1.00000000000E-6165 Subnormal Rounded
dqscb206 scaleb 1.000000000000000000000000000000000E-6143 -23 -> 1.0000000000E-6166 Subnormal Rounded
dqscb207 scaleb 1.000000000000000000000000000000000E-6143 -24 -> 1.000000000E-6167 Subnormal Rounded
dqscb208 scaleb 1.000000000000000000000000000000000E-6143 -25 -> 1.00000000E-6168 Subnormal Rounded
dqscb209 scaleb 1.000000000000000000000000000000000E-6143 -26 -> 1.0000000E-6169 Subnormal Rounded
dqscb210 scaleb 1.000000000000000000000000000000000E-6143 -27 -> 1.000000E-6170 Subnormal Rounded
dqscb211 scaleb 1.000000000000000000000000000000000E-6143 -28 -> 1.00000E-6171 Subnormal Rounded
dqscb212 scaleb 1.000000000000000000000000000000000E-6143 -29 -> 1.0000E-6172 Subnormal Rounded
dqscb213 scaleb 1.000000000000000000000000000000000E-6143 -30 -> 1.000E-6173 Subnormal Rounded
dqscb214 scaleb 1.000000000000000000000000000000000E-6143 -31 -> 1.00E-6174 Subnormal Rounded
dqscb215 scaleb 1.000000000000000000000000000000000E-6143 -32 -> 1.0E-6175 Subnormal Rounded
dqscb216 scaleb 1.000000000000000000000000000000000E-6143 -33 -> 1E-6176 Subnormal Rounded
dqscb217 scaleb 1.000000000000000000000000000000000E-6143 -34 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqscb218 scaleb 1.000000000000000000000000000000000E-6143 -35 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

View file

@ -0,0 +1,298 @@
------------------------------------------------------------------------
-- dqShift.decTest -- shift decQuad coefficient left or right --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- Sanity check
dqshi001 shift 0 0 -> 0
dqshi002 shift 0 2 -> 0
dqshi003 shift 1 2 -> 100
dqshi004 shift 1 33 -> 1000000000000000000000000000000000
dqshi005 shift 1 34 -> 0
dqshi006 shift 1 -1 -> 0
dqshi007 shift 0 -2 -> 0
dqshi008 shift 1234567890123456789012345678901234 -1 -> 123456789012345678901234567890123
dqshi009 shift 1234567890123456789012345678901234 -33 -> 1
dqshi010 shift 1234567890123456789012345678901234 -34 -> 0
dqshi011 shift 9934567890123456789012345678901234 -33 -> 9
dqshi012 shift 9934567890123456789012345678901234 -34 -> 0
-- rhs must be an integer
dqshi015 shift 1 1.5 -> NaN Invalid_operation
dqshi016 shift 1 1.0 -> NaN Invalid_operation
dqshi017 shift 1 0.1 -> NaN Invalid_operation
dqshi018 shift 1 0.0 -> NaN Invalid_operation
dqshi019 shift 1 1E+1 -> NaN Invalid_operation
dqshi020 shift 1 1E+99 -> NaN Invalid_operation
dqshi021 shift 1 Inf -> NaN Invalid_operation
dqshi022 shift 1 -Inf -> NaN Invalid_operation
-- and |rhs| <= precision
dqshi025 shift 1 -1000 -> NaN Invalid_operation
dqshi026 shift 1 -35 -> NaN Invalid_operation
dqshi027 shift 1 35 -> NaN Invalid_operation
dqshi028 shift 1 1000 -> NaN Invalid_operation
-- full shifting pattern
dqshi030 shift 1234567890123456789012345678901234 -34 -> 0
dqshi031 shift 1234567890123456789012345678901234 -33 -> 1
dqshi032 shift 1234567890123456789012345678901234 -32 -> 12
dqshi033 shift 1234567890123456789012345678901234 -31 -> 123
dqshi034 shift 1234567890123456789012345678901234 -30 -> 1234
dqshi035 shift 1234567890123456789012345678901234 -29 -> 12345
dqshi036 shift 1234567890123456789012345678901234 -28 -> 123456
dqshi037 shift 1234567890123456789012345678901234 -27 -> 1234567
dqshi038 shift 1234567890123456789012345678901234 -26 -> 12345678
dqshi039 shift 1234567890123456789012345678901234 -25 -> 123456789
dqshi040 shift 1234567890123456789012345678901234 -24 -> 1234567890
dqshi041 shift 1234567890123456789012345678901234 -23 -> 12345678901
dqshi042 shift 1234567890123456789012345678901234 -22 -> 123456789012
dqshi043 shift 1234567890123456789012345678901234 -21 -> 1234567890123
dqshi044 shift 1234567890123456789012345678901234 -20 -> 12345678901234
dqshi045 shift 1234567890123456789012345678901234 -19 -> 123456789012345
dqshi047 shift 1234567890123456789012345678901234 -18 -> 1234567890123456
dqshi048 shift 1234567890123456789012345678901234 -17 -> 12345678901234567
dqshi049 shift 1234567890123456789012345678901234 -16 -> 123456789012345678
dqshi050 shift 1234567890123456789012345678901234 -15 -> 1234567890123456789
dqshi051 shift 1234567890123456789012345678901234 -14 -> 12345678901234567890
dqshi052 shift 1234567890123456789012345678901234 -13 -> 123456789012345678901
dqshi053 shift 1234567890123456789012345678901234 -12 -> 1234567890123456789012
dqshi054 shift 1234567890123456789012345678901234 -11 -> 12345678901234567890123
dqshi055 shift 1234567890123456789012345678901234 -10 -> 123456789012345678901234
dqshi056 shift 1234567890123456789012345678901234 -9 -> 1234567890123456789012345
dqshi057 shift 1234567890123456789012345678901234 -8 -> 12345678901234567890123456
dqshi058 shift 1234567890123456789012345678901234 -7 -> 123456789012345678901234567
dqshi059 shift 1234567890123456789012345678901234 -6 -> 1234567890123456789012345678
dqshi060 shift 1234567890123456789012345678901234 -5 -> 12345678901234567890123456789
dqshi061 shift 1234567890123456789012345678901234 -4 -> 123456789012345678901234567890
dqshi062 shift 1234567890123456789012345678901234 -3 -> 1234567890123456789012345678901
dqshi063 shift 1234567890123456789012345678901234 -2 -> 12345678901234567890123456789012
dqshi064 shift 1234567890123456789012345678901234 -1 -> 123456789012345678901234567890123
dqshi065 shift 1234567890123456789012345678901234 -0 -> 1234567890123456789012345678901234
dqshi066 shift 1234567890123456789012345678901234 +0 -> 1234567890123456789012345678901234
dqshi067 shift 1234567890123456789012345678901234 +1 -> 2345678901234567890123456789012340
dqshi068 shift 1234567890123456789012345678901234 +2 -> 3456789012345678901234567890123400
dqshi069 shift 1234567890123456789012345678901234 +3 -> 4567890123456789012345678901234000
dqshi070 shift 1234567890123456789012345678901234 +4 -> 5678901234567890123456789012340000
dqshi071 shift 1234567890123456789012345678901234 +5 -> 6789012345678901234567890123400000
dqshi072 shift 1234567890123456789012345678901234 +6 -> 7890123456789012345678901234000000
dqshi073 shift 1234567890123456789012345678901234 +7 -> 8901234567890123456789012340000000
dqshi074 shift 1234567890123456789012345678901234 +8 -> 9012345678901234567890123400000000
dqshi075 shift 1234567890123456789012345678901234 +9 -> 123456789012345678901234000000000
dqshi076 shift 1234567890123456789012345678901234 +10 -> 1234567890123456789012340000000000
dqshi077 shift 1234567890123456789012345678901234 +11 -> 2345678901234567890123400000000000
dqshi078 shift 1234567890123456789012345678901234 +12 -> 3456789012345678901234000000000000
dqshi079 shift 1234567890123456789012345678901234 +13 -> 4567890123456789012340000000000000
dqshi080 shift 1234567890123456789012345678901234 +14 -> 5678901234567890123400000000000000
dqshi081 shift 1234567890123456789012345678901234 +15 -> 6789012345678901234000000000000000
dqshi082 shift 1234567890123456789012345678901234 +16 -> 7890123456789012340000000000000000
dqshi083 shift 1234567890123456789012345678901234 +17 -> 8901234567890123400000000000000000
dqshi084 shift 1234567890123456789012345678901234 +18 -> 9012345678901234000000000000000000
dqshi085 shift 1234567890123456789012345678901234 +19 -> 123456789012340000000000000000000
dqshi086 shift 1234567890123456789012345678901234 +20 -> 1234567890123400000000000000000000
dqshi087 shift 1234567890123456789012345678901234 +21 -> 2345678901234000000000000000000000
dqshi088 shift 1234567890123456789012345678901234 +22 -> 3456789012340000000000000000000000
dqshi089 shift 1234567890123456789012345678901234 +23 -> 4567890123400000000000000000000000
dqshi090 shift 1234567890123456789012345678901234 +24 -> 5678901234000000000000000000000000
dqshi091 shift 1234567890123456789012345678901234 +25 -> 6789012340000000000000000000000000
dqshi092 shift 1234567890123456789012345678901234 +26 -> 7890123400000000000000000000000000
dqshi093 shift 1234567890123456789012345678901234 +27 -> 8901234000000000000000000000000000
dqshi094 shift 1234567890123456789012345678901234 +28 -> 9012340000000000000000000000000000
dqshi095 shift 1234567890123456789012345678901234 +29 -> 123400000000000000000000000000000
dqshi096 shift 1234567890123456789012345678901234 +30 -> 1234000000000000000000000000000000
dqshi097 shift 1234567890123456789012345678901234 +31 -> 2340000000000000000000000000000000
dqshi098 shift 1234567890123456789012345678901234 +32 -> 3400000000000000000000000000000000
dqshi099 shift 1234567890123456789012345678901234 +33 -> 4000000000000000000000000000000000
dqshi100 shift 1234567890123456789012345678901234 +34 -> 0
-- zeros
dqshi270 shift 0E-10 +29 -> 0E-10
dqshi271 shift 0E-10 -29 -> 0E-10
dqshi272 shift 0.000 +29 -> 0.000
dqshi273 shift 0.000 -29 -> 0.000
dqshi274 shift 0E+10 +29 -> 0E+10
dqshi275 shift 0E+10 -29 -> 0E+10
dqshi276 shift -0E-10 +29 -> -0E-10
dqshi277 shift -0E-10 -29 -> -0E-10
dqshi278 shift -0.000 +29 -> -0.000
dqshi279 shift -0.000 -29 -> -0.000
dqshi280 shift -0E+10 +29 -> -0E+10
dqshi281 shift -0E+10 -29 -> -0E+10
-- Nmax, Nmin, Ntiny
dqshi141 shift 9.999999999999999999999999999999999E+6144 -1 -> 9.99999999999999999999999999999999E+6143
dqshi142 shift 9.999999999999999999999999999999999E+6144 -33 -> 9E+6111
dqshi143 shift 9.999999999999999999999999999999999E+6144 1 -> 9.999999999999999999999999999999990E+6144
dqshi144 shift 9.999999999999999999999999999999999E+6144 33 -> 9.000000000000000000000000000000000E+6144
dqshi145 shift 1E-6143 -1 -> 0E-6143
dqshi146 shift 1E-6143 -33 -> 0E-6143
dqshi147 shift 1E-6143 1 -> 1.0E-6142
dqshi148 shift 1E-6143 33 -> 1.000000000000000000000000000000000E-6110
dqshi151 shift 1.000000000000000000000000000000000E-6143 -1 -> 1.00000000000000000000000000000000E-6144
dqshi152 shift 1.000000000000000000000000000000000E-6143 -33 -> 1E-6176
dqshi153 shift 1.000000000000000000000000000000000E-6143 1 -> 0E-6176
dqshi154 shift 1.000000000000000000000000000000000E-6143 33 -> 0E-6176
dqshi155 shift 9.000000000000000000000000000000000E-6143 -1 -> 9.00000000000000000000000000000000E-6144
dqshi156 shift 9.000000000000000000000000000000000E-6143 -33 -> 9E-6176
dqshi157 shift 9.000000000000000000000000000000000E-6143 1 -> 0E-6176
dqshi158 shift 9.000000000000000000000000000000000E-6143 33 -> 0E-6176
dqshi160 shift 1E-6176 -1 -> 0E-6176
dqshi161 shift 1E-6176 -33 -> 0E-6176
dqshi162 shift 1E-6176 1 -> 1.0E-6175
dqshi163 shift 1E-6176 33 -> 1.000000000000000000000000000000000E-6143
-- negatives
dqshi171 shift -9.999999999999999999999999999999999E+6144 -1 -> -9.99999999999999999999999999999999E+6143
dqshi172 shift -9.999999999999999999999999999999999E+6144 -33 -> -9E+6111
dqshi173 shift -9.999999999999999999999999999999999E+6144 1 -> -9.999999999999999999999999999999990E+6144
dqshi174 shift -9.999999999999999999999999999999999E+6144 33 -> -9.000000000000000000000000000000000E+6144
dqshi175 shift -1E-6143 -1 -> -0E-6143
dqshi176 shift -1E-6143 -33 -> -0E-6143
dqshi177 shift -1E-6143 1 -> -1.0E-6142
dqshi178 shift -1E-6143 33 -> -1.000000000000000000000000000000000E-6110
dqshi181 shift -1.000000000000000000000000000000000E-6143 -1 -> -1.00000000000000000000000000000000E-6144
dqshi182 shift -1.000000000000000000000000000000000E-6143 -33 -> -1E-6176
dqshi183 shift -1.000000000000000000000000000000000E-6143 1 -> -0E-6176
dqshi184 shift -1.000000000000000000000000000000000E-6143 33 -> -0E-6176
dqshi185 shift -9.000000000000000000000000000000000E-6143 -1 -> -9.00000000000000000000000000000000E-6144
dqshi186 shift -9.000000000000000000000000000000000E-6143 -33 -> -9E-6176
dqshi187 shift -9.000000000000000000000000000000000E-6143 1 -> -0E-6176
dqshi188 shift -9.000000000000000000000000000000000E-6143 33 -> -0E-6176
dqshi190 shift -1E-6176 -1 -> -0E-6176
dqshi191 shift -1E-6176 -33 -> -0E-6176
dqshi192 shift -1E-6176 1 -> -1.0E-6175
dqshi193 shift -1E-6176 33 -> -1.000000000000000000000000000000000E-6143
-- more negatives (of sanities)
dqshi201 shift -0 0 -> -0
dqshi202 shift -0 2 -> -0
dqshi203 shift -1 2 -> -100
dqshi204 shift -1 33 -> -1000000000000000000000000000000000
dqshi205 shift -1 34 -> -0
dqshi206 shift -1 -1 -> -0
dqshi207 shift -0 -2 -> -0
dqshi208 shift -1234567890123456789012345678901234 -1 -> -123456789012345678901234567890123
dqshi209 shift -1234567890123456789012345678901234 -33 -> -1
dqshi210 shift -1234567890123456789012345678901234 -34 -> -0
dqshi211 shift -9934567890123456789012345678901234 -33 -> -9
dqshi212 shift -9934567890123456789012345678901234 -34 -> -0
-- Specials; NaNs are handled as usual
dqshi781 shift -Inf -8 -> -Infinity
dqshi782 shift -Inf -1 -> -Infinity
dqshi783 shift -Inf -0 -> -Infinity
dqshi784 shift -Inf 0 -> -Infinity
dqshi785 shift -Inf 1 -> -Infinity
dqshi786 shift -Inf 8 -> -Infinity
dqshi787 shift -1000 -Inf -> NaN Invalid_operation
dqshi788 shift -Inf -Inf -> NaN Invalid_operation
dqshi789 shift -1 -Inf -> NaN Invalid_operation
dqshi790 shift -0 -Inf -> NaN Invalid_operation
dqshi791 shift 0 -Inf -> NaN Invalid_operation
dqshi792 shift 1 -Inf -> NaN Invalid_operation
dqshi793 shift 1000 -Inf -> NaN Invalid_operation
dqshi794 shift Inf -Inf -> NaN Invalid_operation
dqshi800 shift Inf -Inf -> NaN Invalid_operation
dqshi801 shift Inf -8 -> Infinity
dqshi802 shift Inf -1 -> Infinity
dqshi803 shift Inf -0 -> Infinity
dqshi804 shift Inf 0 -> Infinity
dqshi805 shift Inf 1 -> Infinity
dqshi806 shift Inf 8 -> Infinity
dqshi807 shift Inf Inf -> NaN Invalid_operation
dqshi808 shift -1000 Inf -> NaN Invalid_operation
dqshi809 shift -Inf Inf -> NaN Invalid_operation
dqshi810 shift -1 Inf -> NaN Invalid_operation
dqshi811 shift -0 Inf -> NaN Invalid_operation
dqshi812 shift 0 Inf -> NaN Invalid_operation
dqshi813 shift 1 Inf -> NaN Invalid_operation
dqshi814 shift 1000 Inf -> NaN Invalid_operation
dqshi815 shift Inf Inf -> NaN Invalid_operation
dqshi821 shift NaN -Inf -> NaN
dqshi822 shift NaN -1000 -> NaN
dqshi823 shift NaN -1 -> NaN
dqshi824 shift NaN -0 -> NaN
dqshi825 shift NaN 0 -> NaN
dqshi826 shift NaN 1 -> NaN
dqshi827 shift NaN 1000 -> NaN
dqshi828 shift NaN Inf -> NaN
dqshi829 shift NaN NaN -> NaN
dqshi830 shift -Inf NaN -> NaN
dqshi831 shift -1000 NaN -> NaN
dqshi832 shift -1 NaN -> NaN
dqshi833 shift -0 NaN -> NaN
dqshi834 shift 0 NaN -> NaN
dqshi835 shift 1 NaN -> NaN
dqshi836 shift 1000 NaN -> NaN
dqshi837 shift Inf NaN -> NaN
dqshi841 shift sNaN -Inf -> NaN Invalid_operation
dqshi842 shift sNaN -1000 -> NaN Invalid_operation
dqshi843 shift sNaN -1 -> NaN Invalid_operation
dqshi844 shift sNaN -0 -> NaN Invalid_operation
dqshi845 shift sNaN 0 -> NaN Invalid_operation
dqshi846 shift sNaN 1 -> NaN Invalid_operation
dqshi847 shift sNaN 1000 -> NaN Invalid_operation
dqshi848 shift sNaN NaN -> NaN Invalid_operation
dqshi849 shift sNaN sNaN -> NaN Invalid_operation
dqshi850 shift NaN sNaN -> NaN Invalid_operation
dqshi851 shift -Inf sNaN -> NaN Invalid_operation
dqshi852 shift -1000 sNaN -> NaN Invalid_operation
dqshi853 shift -1 sNaN -> NaN Invalid_operation
dqshi854 shift -0 sNaN -> NaN Invalid_operation
dqshi855 shift 0 sNaN -> NaN Invalid_operation
dqshi856 shift 1 sNaN -> NaN Invalid_operation
dqshi857 shift 1000 sNaN -> NaN Invalid_operation
dqshi858 shift Inf sNaN -> NaN Invalid_operation
dqshi859 shift NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqshi861 shift NaN1 -Inf -> NaN1
dqshi862 shift +NaN2 -1000 -> NaN2
dqshi863 shift NaN3 1000 -> NaN3
dqshi864 shift NaN4 Inf -> NaN4
dqshi865 shift NaN5 +NaN6 -> NaN5
dqshi866 shift -Inf NaN7 -> NaN7
dqshi867 shift -1000 NaN8 -> NaN8
dqshi868 shift 1000 NaN9 -> NaN9
dqshi869 shift Inf +NaN10 -> NaN10
dqshi871 shift sNaN11 -Inf -> NaN11 Invalid_operation
dqshi872 shift sNaN12 -1000 -> NaN12 Invalid_operation
dqshi873 shift sNaN13 1000 -> NaN13 Invalid_operation
dqshi874 shift sNaN14 NaN17 -> NaN14 Invalid_operation
dqshi875 shift sNaN15 sNaN18 -> NaN15 Invalid_operation
dqshi876 shift NaN16 sNaN19 -> NaN19 Invalid_operation
dqshi877 shift -Inf +sNaN20 -> NaN20 Invalid_operation
dqshi878 shift -1000 sNaN21 -> NaN21 Invalid_operation
dqshi879 shift 1000 sNaN22 -> NaN22 Invalid_operation
dqshi880 shift Inf sNaN23 -> NaN23 Invalid_operation
dqshi881 shift +NaN25 +sNaN24 -> NaN24 Invalid_operation
dqshi882 shift -NaN26 NaN28 -> -NaN26
dqshi883 shift -sNaN27 sNaN29 -> -NaN27 Invalid_operation
dqshi884 shift 1000 -NaN30 -> -NaN30
dqshi885 shift 1000 -sNaN31 -> -NaN31 Invalid_operation

View file

@ -0,0 +1,635 @@
------------------------------------------------------------------------
-- dqSubtract.decTest -- decQuad subtraction --
-- Copyright (c) IBM Corporation, 1981, 2008. 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.59
-- This set of tests are for decQuads only; all arguments are
-- representable in a decQuad
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- [first group are 'quick confidence check']
dqsub001 subtract 0 0 -> '0'
dqsub002 subtract 1 1 -> '0'
dqsub003 subtract 1 2 -> '-1'
dqsub004 subtract 2 1 -> '1'
dqsub005 subtract 2 2 -> '0'
dqsub006 subtract 3 2 -> '1'
dqsub007 subtract 2 3 -> '-1'
dqsub011 subtract -0 0 -> '-0'
dqsub012 subtract -1 1 -> '-2'
dqsub013 subtract -1 2 -> '-3'
dqsub014 subtract -2 1 -> '-3'
dqsub015 subtract -2 2 -> '-4'
dqsub016 subtract -3 2 -> '-5'
dqsub017 subtract -2 3 -> '-5'
dqsub021 subtract 0 -0 -> '0'
dqsub022 subtract 1 -1 -> '2'
dqsub023 subtract 1 -2 -> '3'
dqsub024 subtract 2 -1 -> '3'
dqsub025 subtract 2 -2 -> '4'
dqsub026 subtract 3 -2 -> '5'
dqsub027 subtract 2 -3 -> '5'
dqsub030 subtract 11 1 -> 10
dqsub031 subtract 10 1 -> 9
dqsub032 subtract 9 1 -> 8
dqsub033 subtract 1 1 -> 0
dqsub034 subtract 0 1 -> -1
dqsub035 subtract -1 1 -> -2
dqsub036 subtract -9 1 -> -10
dqsub037 subtract -10 1 -> -11
dqsub038 subtract -11 1 -> -12
dqsub040 subtract '5.75' '3.3' -> '2.45'
dqsub041 subtract '5' '-3' -> '8'
dqsub042 subtract '-5' '-3' -> '-2'
dqsub043 subtract '-7' '2.5' -> '-9.5'
dqsub044 subtract '0.7' '0.3' -> '0.4'
dqsub045 subtract '1.3' '0.3' -> '1.0'
dqsub046 subtract '1.25' '1.25' -> '0.00'
dqsub050 subtract '1.23456789' '1.00000000' -> '0.23456789'
dqsub051 subtract '1.23456789' '1.00000089' -> '0.23456700'
dqsub060 subtract '70' '10000e+34' -> '-1.000000000000000000000000000000000E+38' Inexact Rounded
dqsub061 subtract '700' '10000e+34' -> '-1.000000000000000000000000000000000E+38' Inexact Rounded
dqsub062 subtract '7000' '10000e+34' -> '-9.999999999999999999999999999999999E+37' Inexact Rounded
dqsub063 subtract '70000' '10000e+34' -> '-9.999999999999999999999999999999993E+37' Rounded
dqsub064 subtract '700000' '10000e+34' -> '-9.999999999999999999999999999999930E+37' Rounded
-- symmetry:
dqsub065 subtract '10000e+34' '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
dqsub066 subtract '10000e+34' '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
dqsub067 subtract '10000e+34' '7000' -> '9.999999999999999999999999999999999E+37' Inexact Rounded
dqsub068 subtract '10000e+34' '70000' -> '9.999999999999999999999999999999993E+37' Rounded
dqsub069 subtract '10000e+34' '700000' -> '9.999999999999999999999999999999930E+37' Rounded
-- some of the next group are really constructor tests
dqsub090 subtract '00.0' '0.0' -> '0.0'
dqsub091 subtract '00.0' '0.00' -> '0.00'
dqsub092 subtract '0.00' '00.0' -> '0.00'
dqsub093 subtract '00.0' '0.00' -> '0.00'
dqsub094 subtract '0.00' '00.0' -> '0.00'
dqsub095 subtract '3' '.3' -> '2.7'
dqsub096 subtract '3.' '.3' -> '2.7'
dqsub097 subtract '3.0' '.3' -> '2.7'
dqsub098 subtract '3.00' '.3' -> '2.70'
dqsub099 subtract '3' '3' -> '0'
dqsub100 subtract '3' '+3' -> '0'
dqsub101 subtract '3' '-3' -> '6'
dqsub102 subtract '3' '0.3' -> '2.7'
dqsub103 subtract '3.' '0.3' -> '2.7'
dqsub104 subtract '3.0' '0.3' -> '2.7'
dqsub105 subtract '3.00' '0.3' -> '2.70'
dqsub106 subtract '3' '3.0' -> '0.0'
dqsub107 subtract '3' '+3.0' -> '0.0'
dqsub108 subtract '3' '-3.0' -> '6.0'
-- the above all from add; massaged and extended. Now some new ones...
-- [particularly important for comparisons]
-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7
-- with input rounding.
dqsub120 subtract '10.23456784' '10.23456789' -> '-5E-8'
dqsub121 subtract '10.23456785' '10.23456789' -> '-4E-8'
dqsub122 subtract '10.23456786' '10.23456789' -> '-3E-8'
dqsub123 subtract '10.23456787' '10.23456789' -> '-2E-8'
dqsub124 subtract '10.23456788' '10.23456789' -> '-1E-8'
dqsub125 subtract '10.23456789' '10.23456789' -> '0E-8'
dqsub126 subtract '10.23456790' '10.23456789' -> '1E-8'
dqsub127 subtract '10.23456791' '10.23456789' -> '2E-8'
dqsub128 subtract '10.23456792' '10.23456789' -> '3E-8'
dqsub129 subtract '10.23456793' '10.23456789' -> '4E-8'
dqsub130 subtract '10.23456794' '10.23456789' -> '5E-8'
dqsub131 subtract '10.23456781' '10.23456786' -> '-5E-8'
dqsub132 subtract '10.23456782' '10.23456786' -> '-4E-8'
dqsub133 subtract '10.23456783' '10.23456786' -> '-3E-8'
dqsub134 subtract '10.23456784' '10.23456786' -> '-2E-8'
dqsub135 subtract '10.23456785' '10.23456786' -> '-1E-8'
dqsub136 subtract '10.23456786' '10.23456786' -> '0E-8'
dqsub137 subtract '10.23456787' '10.23456786' -> '1E-8'
dqsub138 subtract '10.23456788' '10.23456786' -> '2E-8'
dqsub139 subtract '10.23456789' '10.23456786' -> '3E-8'
dqsub140 subtract '10.23456790' '10.23456786' -> '4E-8'
dqsub141 subtract '10.23456791' '10.23456786' -> '5E-8'
dqsub142 subtract '1' '0.999999999' -> '1E-9'
dqsub143 subtract '0.999999999' '1' -> '-1E-9'
dqsub144 subtract '-10.23456780' '-10.23456786' -> '6E-8'
dqsub145 subtract '-10.23456790' '-10.23456786' -> '-4E-8'
dqsub146 subtract '-10.23456791' '-10.23456786' -> '-5E-8'
-- additional scaled arithmetic tests [0.97 problem]
dqsub160 subtract '0' '.1' -> '-0.1'
dqsub161 subtract '00' '.97983' -> '-0.97983'
dqsub162 subtract '0' '.9' -> '-0.9'
dqsub163 subtract '0' '0.102' -> '-0.102'
dqsub164 subtract '0' '.4' -> '-0.4'
dqsub165 subtract '0' '.307' -> '-0.307'
dqsub166 subtract '0' '.43822' -> '-0.43822'
dqsub167 subtract '0' '.911' -> '-0.911'
dqsub168 subtract '.0' '.02' -> '-0.02'
dqsub169 subtract '00' '.392' -> '-0.392'
dqsub170 subtract '0' '.26' -> '-0.26'
dqsub171 subtract '0' '0.51' -> '-0.51'
dqsub172 subtract '0' '.2234' -> '-0.2234'
dqsub173 subtract '0' '.2' -> '-0.2'
dqsub174 subtract '.0' '.0008' -> '-0.0008'
-- 0. on left
dqsub180 subtract '0.0' '-.1' -> '0.1'
dqsub181 subtract '0.00' '-.97983' -> '0.97983'
dqsub182 subtract '0.0' '-.9' -> '0.9'
dqsub183 subtract '0.0' '-0.102' -> '0.102'
dqsub184 subtract '0.0' '-.4' -> '0.4'
dqsub185 subtract '0.0' '-.307' -> '0.307'
dqsub186 subtract '0.0' '-.43822' -> '0.43822'
dqsub187 subtract '0.0' '-.911' -> '0.911'
dqsub188 subtract '0.0' '-.02' -> '0.02'
dqsub189 subtract '0.00' '-.392' -> '0.392'
dqsub190 subtract '0.0' '-.26' -> '0.26'
dqsub191 subtract '0.0' '-0.51' -> '0.51'
dqsub192 subtract '0.0' '-.2234' -> '0.2234'
dqsub193 subtract '0.0' '-.2' -> '0.2'
dqsub194 subtract '0.0' '-.0008' -> '0.0008'
-- negatives of same
dqsub200 subtract '0' '-.1' -> '0.1'
dqsub201 subtract '00' '-.97983' -> '0.97983'
dqsub202 subtract '0' '-.9' -> '0.9'
dqsub203 subtract '0' '-0.102' -> '0.102'
dqsub204 subtract '0' '-.4' -> '0.4'
dqsub205 subtract '0' '-.307' -> '0.307'
dqsub206 subtract '0' '-.43822' -> '0.43822'
dqsub207 subtract '0' '-.911' -> '0.911'
dqsub208 subtract '.0' '-.02' -> '0.02'
dqsub209 subtract '00' '-.392' -> '0.392'
dqsub210 subtract '0' '-.26' -> '0.26'
dqsub211 subtract '0' '-0.51' -> '0.51'
dqsub212 subtract '0' '-.2234' -> '0.2234'
dqsub213 subtract '0' '-.2' -> '0.2'
dqsub214 subtract '.0' '-.0008' -> '0.0008'
-- more fixed, LHS swaps [really the same as testcases under add]
dqsub220 subtract '-56267E-12' 0 -> '-5.6267E-8'
dqsub221 subtract '-56267E-11' 0 -> '-5.6267E-7'
dqsub222 subtract '-56267E-10' 0 -> '-0.0000056267'
dqsub223 subtract '-56267E-9' 0 -> '-0.000056267'
dqsub224 subtract '-56267E-8' 0 -> '-0.00056267'
dqsub225 subtract '-56267E-7' 0 -> '-0.0056267'
dqsub226 subtract '-56267E-6' 0 -> '-0.056267'
dqsub227 subtract '-56267E-5' 0 -> '-0.56267'
dqsub228 subtract '-56267E-2' 0 -> '-562.67'
dqsub229 subtract '-56267E-1' 0 -> '-5626.7'
dqsub230 subtract '-56267E-0' 0 -> '-56267'
-- symmetry ...
dqsub240 subtract 0 '-56267E-12' -> '5.6267E-8'
dqsub241 subtract 0 '-56267E-11' -> '5.6267E-7'
dqsub242 subtract 0 '-56267E-10' -> '0.0000056267'
dqsub243 subtract 0 '-56267E-9' -> '0.000056267'
dqsub244 subtract 0 '-56267E-8' -> '0.00056267'
dqsub245 subtract 0 '-56267E-7' -> '0.0056267'
dqsub246 subtract 0 '-56267E-6' -> '0.056267'
dqsub247 subtract 0 '-56267E-5' -> '0.56267'
dqsub248 subtract 0 '-56267E-2' -> '562.67'
dqsub249 subtract 0 '-56267E-1' -> '5626.7'
dqsub250 subtract 0 '-56267E-0' -> '56267'
-- now some more from the 'new' add
dqsub301 subtract '1.23456789' '1.00000000' -> '0.23456789'
dqsub302 subtract '1.23456789' '1.00000011' -> '0.23456778'
-- some carrying effects
dqsub321 subtract '0.9998' '0.0000' -> '0.9998'
dqsub322 subtract '0.9998' '0.0001' -> '0.9997'
dqsub323 subtract '0.9998' '0.0002' -> '0.9996'
dqsub324 subtract '0.9998' '0.0003' -> '0.9995'
dqsub325 subtract '0.9998' '-0.0000' -> '0.9998'
dqsub326 subtract '0.9998' '-0.0001' -> '0.9999'
dqsub327 subtract '0.9998' '-0.0002' -> '1.0000'
dqsub328 subtract '0.9998' '-0.0003' -> '1.0001'
-- internal boundaries
dqsub346 subtract '10000e+9' '7' -> '9999999999993'
dqsub347 subtract '10000e+9' '70' -> '9999999999930'
dqsub348 subtract '10000e+9' '700' -> '9999999999300'
dqsub349 subtract '10000e+9' '7000' -> '9999999993000'
dqsub350 subtract '10000e+9' '70000' -> '9999999930000'
dqsub351 subtract '10000e+9' '700000' -> '9999999300000'
dqsub352 subtract '7' '10000e+9' -> '-9999999999993'
dqsub353 subtract '70' '10000e+9' -> '-9999999999930'
dqsub354 subtract '700' '10000e+9' -> '-9999999999300'
dqsub355 subtract '7000' '10000e+9' -> '-9999999993000'
dqsub356 subtract '70000' '10000e+9' -> '-9999999930000'
dqsub357 subtract '700000' '10000e+9' -> '-9999999300000'
-- zero preservation
dqsub361 subtract 1 '0.0001' -> '0.9999'
dqsub362 subtract 1 '0.00001' -> '0.99999'
dqsub363 subtract 1 '0.000001' -> '0.999999'
dqsub364 subtract 1 '0.0000000000000000000000000000000001' -> '0.9999999999999999999999999999999999'
dqsub365 subtract 1 '0.00000000000000000000000000000000001' -> '1.000000000000000000000000000000000' Inexact Rounded
dqsub366 subtract 1 '0.000000000000000000000000000000000001' -> '1.000000000000000000000000000000000' Inexact Rounded
-- some funny zeros [in case of bad signum]
dqsub370 subtract 1 0 -> 1
dqsub371 subtract 1 0. -> 1
dqsub372 subtract 1 .0 -> 1.0
dqsub373 subtract 1 0.0 -> 1.0
dqsub374 subtract 0 1 -> -1
dqsub375 subtract 0. 1 -> -1
dqsub376 subtract .0 1 -> -1.0
dqsub377 subtract 0.0 1 -> -1.0
-- leading 0 digit before round
dqsub910 subtract -103519362 -51897955.3 -> -51621406.7
dqsub911 subtract 159579.444 89827.5229 -> 69751.9211
dqsub920 subtract 333.0000000000000000000000000123456 33.00000000000000000000000001234566 -> 299.9999999999999999999999999999999 Inexact Rounded
dqsub921 subtract 333.0000000000000000000000000123456 33.00000000000000000000000001234565 -> 300.0000000000000000000000000000000 Inexact Rounded
dqsub922 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234565 -> 99.99999999999999999999999999999995
dqsub923 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234564 -> 99.99999999999999999999999999999996
dqsub924 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234540 -> 100.0000000000000000000000000000002 Rounded
dqsub925 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234560 -> 90.00000000000000000000000000000000
dqsub926 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234561 -> 89.99999999999999999999999999999999
dqsub927 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234566 -> 89.99999999999999999999999999999994
dqsub928 subtract 101.0000000000000000000000000123456 91.00000000000000000000000001234566 -> 9.99999999999999999999999999999994
dqsub929 subtract 101.0000000000000000000000000123456 99.00000000000000000000000001234566 -> 1.99999999999999999999999999999994
-- more LHS swaps [were fixed]
dqsub390 subtract '-56267E-10' 0 -> '-0.0000056267'
dqsub391 subtract '-56267E-6' 0 -> '-0.056267'
dqsub392 subtract '-56267E-5' 0 -> '-0.56267'
dqsub393 subtract '-56267E-4' 0 -> '-5.6267'
dqsub394 subtract '-56267E-3' 0 -> '-56.267'
dqsub395 subtract '-56267E-2' 0 -> '-562.67'
dqsub396 subtract '-56267E-1' 0 -> '-5626.7'
dqsub397 subtract '-56267E-0' 0 -> '-56267'
dqsub398 subtract '-5E-10' 0 -> '-5E-10'
dqsub399 subtract '-5E-7' 0 -> '-5E-7'
dqsub400 subtract '-5E-6' 0 -> '-0.000005'
dqsub401 subtract '-5E-5' 0 -> '-0.00005'
dqsub402 subtract '-5E-4' 0 -> '-0.0005'
dqsub403 subtract '-5E-1' 0 -> '-0.5'
dqsub404 subtract '-5E0' 0 -> '-5'
dqsub405 subtract '-5E1' 0 -> '-50'
dqsub406 subtract '-5E5' 0 -> '-500000'
dqsub407 subtract '-5E33' 0 -> '-5000000000000000000000000000000000'
dqsub408 subtract '-5E34' 0 -> '-5.000000000000000000000000000000000E+34' Rounded
dqsub409 subtract '-5E35' 0 -> '-5.000000000000000000000000000000000E+35' Rounded
dqsub410 subtract '-5E36' 0 -> '-5.000000000000000000000000000000000E+36' Rounded
dqsub411 subtract '-5E100' 0 -> '-5.000000000000000000000000000000000E+100' Rounded
-- more RHS swaps [were fixed]
dqsub420 subtract 0 '-56267E-10' -> '0.0000056267'
dqsub421 subtract 0 '-56267E-6' -> '0.056267'
dqsub422 subtract 0 '-56267E-5' -> '0.56267'
dqsub423 subtract 0 '-56267E-4' -> '5.6267'
dqsub424 subtract 0 '-56267E-3' -> '56.267'
dqsub425 subtract 0 '-56267E-2' -> '562.67'
dqsub426 subtract 0 '-56267E-1' -> '5626.7'
dqsub427 subtract 0 '-56267E-0' -> '56267'
dqsub428 subtract 0 '-5E-10' -> '5E-10'
dqsub429 subtract 0 '-5E-7' -> '5E-7'
dqsub430 subtract 0 '-5E-6' -> '0.000005'
dqsub431 subtract 0 '-5E-5' -> '0.00005'
dqsub432 subtract 0 '-5E-4' -> '0.0005'
dqsub433 subtract 0 '-5E-1' -> '0.5'
dqsub434 subtract 0 '-5E0' -> '5'
dqsub435 subtract 0 '-5E1' -> '50'
dqsub436 subtract 0 '-5E5' -> '500000'
dqsub437 subtract 0 '-5E33' -> '5000000000000000000000000000000000'
dqsub438 subtract 0 '-5E34' -> '5.000000000000000000000000000000000E+34' Rounded
dqsub439 subtract 0 '-5E35' -> '5.000000000000000000000000000000000E+35' Rounded
dqsub440 subtract 0 '-5E36' -> '5.000000000000000000000000000000000E+36' Rounded
dqsub441 subtract 0 '-5E100' -> '5.000000000000000000000000000000000E+100' Rounded
-- try borderline precision, with carries, etc.
dqsub461 subtract '1E+16' '1' -> '9999999999999999'
dqsub462 subtract '1E+12' '-1.111' -> '1000000000001.111'
dqsub463 subtract '1.111' '-1E+12' -> '1000000000001.111'
dqsub464 subtract '-1' '-1E+16' -> '9999999999999999'
dqsub465 subtract '7E+15' '1' -> '6999999999999999'
dqsub466 subtract '7E+12' '-1.111' -> '7000000000001.111'
dqsub467 subtract '1.111' '-7E+12' -> '7000000000001.111'
dqsub468 subtract '-1' '-7E+15' -> '6999999999999999'
-- 1234567890123456 1234567890123456 1 23456789012345
dqsub470 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555563' -> '1.000000000000000000000000000000001' Inexact Rounded
dqsub471 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555562' -> '1.000000000000000000000000000000001' Inexact Rounded
dqsub472 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555561' -> '1.000000000000000000000000000000000' Inexact Rounded
dqsub473 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555560' -> '1.000000000000000000000000000000000' Inexact Rounded
dqsub474 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555559' -> '1.000000000000000000000000000000000' Inexact Rounded
dqsub475 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555558' -> '1.000000000000000000000000000000000' Inexact Rounded
dqsub476 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555557' -> '1.000000000000000000000000000000000' Inexact Rounded
dqsub477 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555556' -> '1.000000000000000000000000000000000' Rounded
dqsub478 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999'
dqsub479 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555554' -> '0.9999999999999999999999999999999998'
dqsub480 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555553' -> '0.9999999999999999999999999999999997'
dqsub481 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555552' -> '0.9999999999999999999999999999999996'
dqsub482 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555551' -> '0.9999999999999999999999999999999995'
dqsub483 subtract '0.4444444444444444444444444444444444' '-0.5555555555555555555555555555555550' -> '0.9999999999999999999999999999999994'
-- and some more, including residue effects and different roundings
rounding: half_up
dqsub500 subtract '1231234555555555555555555567456789' 0 -> '1231234555555555555555555567456789'
dqsub501 subtract '1231234555555555555555555567456789' 0.000000001 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub502 subtract '1231234555555555555555555567456789' 0.000001 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub503 subtract '1231234555555555555555555567456789' 0.1 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub504 subtract '1231234555555555555555555567456789' 0.4 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub505 subtract '1231234555555555555555555567456789' 0.49 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub506 subtract '1231234555555555555555555567456789' 0.499999 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub507 subtract '1231234555555555555555555567456789' 0.499999999 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub508 subtract '1231234555555555555555555567456789' 0.5 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub509 subtract '1231234555555555555555555567456789' 0.500000001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub510 subtract '1231234555555555555555555567456789' 0.500001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub511 subtract '1231234555555555555555555567456789' 0.51 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub512 subtract '1231234555555555555555555567456789' 0.6 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub513 subtract '1231234555555555555555555567456789' 0.9 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub514 subtract '1231234555555555555555555567456789' 0.99999 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub515 subtract '1231234555555555555555555567456789' 0.999999999 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub516 subtract '1231234555555555555555555567456789' 1 -> '1231234555555555555555555567456788'
dqsub517 subtract '1231234555555555555555555567456789' 1.000000001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub518 subtract '1231234555555555555555555567456789' 1.00001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub519 subtract '1231234555555555555555555567456789' 1.1 -> '1231234555555555555555555567456788' Inexact Rounded
rounding: half_even
dqsub520 subtract '1231234555555555555555555567456789' 0 -> '1231234555555555555555555567456789'
dqsub521 subtract '1231234555555555555555555567456789' 0.000000001 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub522 subtract '1231234555555555555555555567456789' 0.000001 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub523 subtract '1231234555555555555555555567456789' 0.1 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub524 subtract '1231234555555555555555555567456789' 0.4 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub525 subtract '1231234555555555555555555567456789' 0.49 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub526 subtract '1231234555555555555555555567456789' 0.499999 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub527 subtract '1231234555555555555555555567456789' 0.499999999 -> '1231234555555555555555555567456789' Inexact Rounded
dqsub528 subtract '1231234555555555555555555567456789' 0.5 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub529 subtract '1231234555555555555555555567456789' 0.500000001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub530 subtract '1231234555555555555555555567456789' 0.500001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub531 subtract '1231234555555555555555555567456789' 0.51 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub532 subtract '1231234555555555555555555567456789' 0.6 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub533 subtract '1231234555555555555555555567456789' 0.9 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub534 subtract '1231234555555555555555555567456789' 0.99999 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub535 subtract '1231234555555555555555555567456789' 0.999999999 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub536 subtract '1231234555555555555555555567456789' 1 -> '1231234555555555555555555567456788'
dqsub537 subtract '1231234555555555555555555567456789' 1.00000001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub538 subtract '1231234555555555555555555567456789' 1.00001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub539 subtract '1231234555555555555555555567456789' 1.1 -> '1231234555555555555555555567456788' Inexact Rounded
-- critical few with even bottom digit...
dqsub540 subtract '1231234555555555555555555567456788' 0.499999999 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub541 subtract '1231234555555555555555555567456788' 0.5 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub542 subtract '1231234555555555555555555567456788' 0.500000001 -> '1231234555555555555555555567456787' Inexact Rounded
rounding: down
dqsub550 subtract '1231234555555555555555555567456789' 0 -> '1231234555555555555555555567456789'
dqsub551 subtract '1231234555555555555555555567456789' 0.000000001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub552 subtract '1231234555555555555555555567456789' 0.000001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub553 subtract '1231234555555555555555555567456789' 0.1 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub554 subtract '1231234555555555555555555567456789' 0.4 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub555 subtract '1231234555555555555555555567456789' 0.49 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub556 subtract '1231234555555555555555555567456789' 0.499999 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub557 subtract '1231234555555555555555555567456789' 0.499999999 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub558 subtract '1231234555555555555555555567456789' 0.5 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub559 subtract '1231234555555555555555555567456789' 0.500000001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub560 subtract '1231234555555555555555555567456789' 0.500001 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub561 subtract '1231234555555555555555555567456789' 0.51 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub562 subtract '1231234555555555555555555567456789' 0.6 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub563 subtract '1231234555555555555555555567456789' 0.9 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub564 subtract '1231234555555555555555555567456789' 0.99999 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub565 subtract '1231234555555555555555555567456789' 0.999999999 -> '1231234555555555555555555567456788' Inexact Rounded
dqsub566 subtract '1231234555555555555555555567456789' 1 -> '1231234555555555555555555567456788'
dqsub567 subtract '1231234555555555555555555567456789' 1.00000001 -> '1231234555555555555555555567456787' Inexact Rounded
dqsub568 subtract '1231234555555555555555555567456789' 1.00001 -> '1231234555555555555555555567456787' Inexact Rounded
dqsub569 subtract '1231234555555555555555555567456789' 1.1 -> '1231234555555555555555555567456787' Inexact Rounded
-- symmetry...
rounding: half_up
dqsub600 subtract 0 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789'
dqsub601 subtract 0.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub602 subtract 0.000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub603 subtract 0.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub604 subtract 0.4 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub605 subtract 0.49 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub606 subtract 0.499999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub607 subtract 0.499999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub608 subtract 0.5 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub609 subtract 0.500000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub610 subtract 0.500001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub611 subtract 0.51 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub612 subtract 0.6 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub613 subtract 0.9 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub614 subtract 0.99999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub615 subtract 0.999999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub616 subtract 1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788'
dqsub617 subtract 1.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub618 subtract 1.00001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub619 subtract 1.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
rounding: half_even
dqsub620 subtract 0 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789'
dqsub621 subtract 0.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub622 subtract 0.000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub623 subtract 0.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub624 subtract 0.4 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub625 subtract 0.49 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub626 subtract 0.499999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub627 subtract 0.499999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
dqsub628 subtract 0.5 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub629 subtract 0.500000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub630 subtract 0.500001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub631 subtract 0.51 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub632 subtract 0.6 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub633 subtract 0.9 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub634 subtract 0.99999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub635 subtract 0.999999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub636 subtract 1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788'
dqsub637 subtract 1.00000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub638 subtract 1.00001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub639 subtract 1.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-- critical few with even bottom digit...
dqsub640 subtract 0.499999999 '1231234555555555555555555567456788' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub641 subtract 0.5 '1231234555555555555555555567456788' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub642 subtract 0.500000001 '1231234555555555555555555567456788' -> '-1231234555555555555555555567456787' Inexact Rounded
rounding: down
dqsub650 subtract 0 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789'
dqsub651 subtract 0.000000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub652 subtract 0.000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub653 subtract 0.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub654 subtract 0.4 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub655 subtract 0.49 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub656 subtract 0.499999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub657 subtract 0.499999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub658 subtract 0.5 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub659 subtract 0.500000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub660 subtract 0.500001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub661 subtract 0.51 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub662 subtract 0.6 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub663 subtract 0.9 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub664 subtract 0.99999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub665 subtract 0.999999999 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
dqsub666 subtract 1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788'
dqsub667 subtract 1.00000001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded
dqsub668 subtract 1.00001 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded
dqsub669 subtract 1.1 '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded
-- lots of leading zeros in intermediate result, and showing effects of
-- input rounding would have affected the following
rounding: half_up
dqsub670 subtract '1234567456789' '1234567456788.1' -> 0.9
dqsub671 subtract '1234567456789' '1234567456788.9' -> 0.1
dqsub672 subtract '1234567456789' '1234567456789.1' -> -0.1
dqsub673 subtract '1234567456789' '1234567456789.5' -> -0.5
dqsub674 subtract '1234567456789' '1234567456789.9' -> -0.9
rounding: half_even
dqsub680 subtract '1234567456789' '1234567456788.1' -> 0.9
dqsub681 subtract '1234567456789' '1234567456788.9' -> 0.1
dqsub682 subtract '1234567456789' '1234567456789.1' -> -0.1
dqsub683 subtract '1234567456789' '1234567456789.5' -> -0.5
dqsub684 subtract '1234567456789' '1234567456789.9' -> -0.9
dqsub685 subtract '1234567456788' '1234567456787.1' -> 0.9
dqsub686 subtract '1234567456788' '1234567456787.9' -> 0.1
dqsub687 subtract '1234567456788' '1234567456788.1' -> -0.1
dqsub688 subtract '1234567456788' '1234567456788.5' -> -0.5
dqsub689 subtract '1234567456788' '1234567456788.9' -> -0.9
rounding: down
dqsub690 subtract '1234567456789' '1234567456788.1' -> 0.9
dqsub691 subtract '1234567456789' '1234567456788.9' -> 0.1
dqsub692 subtract '1234567456789' '1234567456789.1' -> -0.1
dqsub693 subtract '1234567456789' '1234567456789.5' -> -0.5
dqsub694 subtract '1234567456789' '1234567456789.9' -> -0.9
-- Specials
dqsub780 subtract -Inf Inf -> -Infinity
dqsub781 subtract -Inf 1000 -> -Infinity
dqsub782 subtract -Inf 1 -> -Infinity
dqsub783 subtract -Inf -0 -> -Infinity
dqsub784 subtract -Inf -1 -> -Infinity
dqsub785 subtract -Inf -1000 -> -Infinity
dqsub787 subtract -1000 Inf -> -Infinity
dqsub788 subtract -Inf Inf -> -Infinity
dqsub789 subtract -1 Inf -> -Infinity
dqsub790 subtract 0 Inf -> -Infinity
dqsub791 subtract 1 Inf -> -Infinity
dqsub792 subtract 1000 Inf -> -Infinity
dqsub800 subtract Inf Inf -> NaN Invalid_operation
dqsub801 subtract Inf 1000 -> Infinity
dqsub802 subtract Inf 1 -> Infinity
dqsub803 subtract Inf 0 -> Infinity
dqsub804 subtract Inf -0 -> Infinity
dqsub805 subtract Inf -1 -> Infinity
dqsub806 subtract Inf -1000 -> Infinity
dqsub807 subtract Inf -Inf -> Infinity
dqsub808 subtract -1000 -Inf -> Infinity
dqsub809 subtract -Inf -Inf -> NaN Invalid_operation
dqsub810 subtract -1 -Inf -> Infinity
dqsub811 subtract -0 -Inf -> Infinity
dqsub812 subtract 0 -Inf -> Infinity
dqsub813 subtract 1 -Inf -> Infinity
dqsub814 subtract 1000 -Inf -> Infinity
dqsub815 subtract Inf -Inf -> Infinity
dqsub821 subtract NaN Inf -> NaN
dqsub822 subtract -NaN 1000 -> -NaN
dqsub823 subtract NaN 1 -> NaN
dqsub824 subtract NaN 0 -> NaN
dqsub825 subtract NaN -0 -> NaN
dqsub826 subtract NaN -1 -> NaN
dqsub827 subtract NaN -1000 -> NaN
dqsub828 subtract NaN -Inf -> NaN
dqsub829 subtract -NaN NaN -> -NaN
dqsub830 subtract -Inf NaN -> NaN
dqsub831 subtract -1000 NaN -> NaN
dqsub832 subtract -1 NaN -> NaN
dqsub833 subtract -0 NaN -> NaN
dqsub834 subtract 0 NaN -> NaN
dqsub835 subtract 1 NaN -> NaN
dqsub836 subtract 1000 -NaN -> -NaN
dqsub837 subtract Inf NaN -> NaN
dqsub841 subtract sNaN Inf -> NaN Invalid_operation
dqsub842 subtract -sNaN 1000 -> -NaN Invalid_operation
dqsub843 subtract sNaN 1 -> NaN Invalid_operation
dqsub844 subtract sNaN 0 -> NaN Invalid_operation
dqsub845 subtract sNaN -0 -> NaN Invalid_operation
dqsub846 subtract sNaN -1 -> NaN Invalid_operation
dqsub847 subtract sNaN -1000 -> NaN Invalid_operation
dqsub848 subtract sNaN NaN -> NaN Invalid_operation
dqsub849 subtract sNaN sNaN -> NaN Invalid_operation
dqsub850 subtract NaN sNaN -> NaN Invalid_operation
dqsub851 subtract -Inf -sNaN -> -NaN Invalid_operation
dqsub852 subtract -1000 sNaN -> NaN Invalid_operation
dqsub853 subtract -1 sNaN -> NaN Invalid_operation
dqsub854 subtract -0 sNaN -> NaN Invalid_operation
dqsub855 subtract 0 sNaN -> NaN Invalid_operation
dqsub856 subtract 1 sNaN -> NaN Invalid_operation
dqsub857 subtract 1000 sNaN -> NaN Invalid_operation
dqsub858 subtract Inf sNaN -> NaN Invalid_operation
dqsub859 subtract NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqsub861 subtract NaN01 -Inf -> NaN1
dqsub862 subtract -NaN02 -1000 -> -NaN2
dqsub863 subtract NaN03 1000 -> NaN3
dqsub864 subtract NaN04 Inf -> NaN4
dqsub865 subtract NaN05 NaN61 -> NaN5
dqsub866 subtract -Inf -NaN71 -> -NaN71
dqsub867 subtract -1000 NaN81 -> NaN81
dqsub868 subtract 1000 NaN91 -> NaN91
dqsub869 subtract Inf NaN101 -> NaN101
dqsub871 subtract sNaN011 -Inf -> NaN11 Invalid_operation
dqsub872 subtract sNaN012 -1000 -> NaN12 Invalid_operation
dqsub873 subtract -sNaN013 1000 -> -NaN13 Invalid_operation
dqsub874 subtract sNaN014 NaN171 -> NaN14 Invalid_operation
dqsub875 subtract sNaN015 sNaN181 -> NaN15 Invalid_operation
dqsub876 subtract NaN016 sNaN191 -> NaN191 Invalid_operation
dqsub877 subtract -Inf sNaN201 -> NaN201 Invalid_operation
dqsub878 subtract -1000 sNaN211 -> NaN211 Invalid_operation
dqsub879 subtract 1000 -sNaN221 -> -NaN221 Invalid_operation
dqsub880 subtract Inf sNaN231 -> NaN231 Invalid_operation
dqsub881 subtract NaN025 sNaN241 -> NaN241 Invalid_operation
-- edge case spills
dqsub901 subtract 2.E-3 1.002 -> -1.000
dqsub902 subtract 2.0E-3 1.002 -> -1.0000
dqsub903 subtract 2.00E-3 1.0020 -> -1.00000
dqsub904 subtract 2.000E-3 1.00200 -> -1.000000
dqsub905 subtract 2.0000E-3 1.002000 -> -1.0000000
dqsub906 subtract 2.00000E-3 1.0020000 -> -1.00000000
dqsub907 subtract 2.000000E-3 1.00200000 -> -1.000000000
dqsub908 subtract 2.0000000E-3 1.002000000 -> -1.0000000000
-- subnormals and overflows covered under Add
-- Examples from SQL proposal (Krishna Kulkarni)
dqsub1125 subtract 130E-2 120E-2 -> 0.10
dqsub1126 subtract 130E-2 12E-1 -> 0.10
dqsub1127 subtract 130E-2 1E0 -> 0.30
dqsub1128 subtract 1E2 1E4 -> -9.9E+3
-- Null tests
dqsub9990 subtract 10 # -> NaN Invalid_operation
dqsub9991 subtract # 10 -> NaN Invalid_operation

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