mirror of https://github.com/python/cpython
Move Decimal from the sandbox into production.
This commit is contained in:
parent
2ccf5d689b
commit
7c85fa4a52
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,161 @@
|
|||
------------------------------------------------------------------------
|
||||
-- abs.decTest -- decimal absolute value --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
-- This set of tests primarily tests the existence of the operator.
|
||||
-- Additon, subtraction, rounding, and more overflows are tested
|
||||
-- elsewhere.
|
||||
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
extended: 1
|
||||
|
||||
absx001 abs '1' -> '1'
|
||||
absx002 abs '-1' -> '1'
|
||||
absx003 abs '1.00' -> '1.00'
|
||||
absx004 abs '-1.00' -> '1.00'
|
||||
absx005 abs '0' -> '0'
|
||||
absx006 abs '0.00' -> '0.00'
|
||||
absx007 abs '00.0' -> '0.0'
|
||||
absx008 abs '00.00' -> '0.00'
|
||||
absx009 abs '00' -> '0'
|
||||
|
||||
absx010 abs '-2' -> '2'
|
||||
absx011 abs '2' -> '2'
|
||||
absx012 abs '-2.00' -> '2.00'
|
||||
absx013 abs '2.00' -> '2.00'
|
||||
absx014 abs '-0' -> '0'
|
||||
absx015 abs '-0.00' -> '0.00'
|
||||
absx016 abs '-00.0' -> '0.0'
|
||||
absx017 abs '-00.00' -> '0.00'
|
||||
absx018 abs '-00' -> '0'
|
||||
|
||||
absx020 abs '-2000000' -> '2000000'
|
||||
absx021 abs '2000000' -> '2000000'
|
||||
precision: 7
|
||||
absx022 abs '-2000000' -> '2000000'
|
||||
absx023 abs '2000000' -> '2000000'
|
||||
precision: 6
|
||||
absx024 abs '-2000000' -> '2.00000E+6' Rounded
|
||||
absx025 abs '2000000' -> '2.00000E+6' Rounded
|
||||
precision: 3
|
||||
absx026 abs '-2000000' -> '2.00E+6' Rounded
|
||||
absx027 abs '2000000' -> '2.00E+6' Rounded
|
||||
|
||||
absx030 abs '+0.1' -> '0.1'
|
||||
absx031 abs '-0.1' -> '0.1'
|
||||
absx032 abs '+0.01' -> '0.01'
|
||||
absx033 abs '-0.01' -> '0.01'
|
||||
absx034 abs '+0.001' -> '0.001'
|
||||
absx035 abs '-0.001' -> '0.001'
|
||||
absx036 abs '+0.000001' -> '0.000001'
|
||||
absx037 abs '-0.000001' -> '0.000001'
|
||||
absx038 abs '+0.000000000001' -> '1E-12'
|
||||
absx039 abs '-0.000000000001' -> '1E-12'
|
||||
|
||||
-- examples from decArith
|
||||
precision: 9
|
||||
absx040 abs '2.1' -> '2.1'
|
||||
absx041 abs '-100' -> '100'
|
||||
absx042 abs '101.5' -> '101.5'
|
||||
absx043 abs '-101.5' -> '101.5'
|
||||
|
||||
-- more fixed, potential LHS swaps/overlays if done by subtract 0
|
||||
precision: 9
|
||||
absx060 abs '-56267E-10' -> '0.0000056267'
|
||||
absx061 abs '-56267E-5' -> '0.56267'
|
||||
absx062 abs '-56267E-2' -> '562.67'
|
||||
absx063 abs '-56267E-1' -> '5626.7'
|
||||
absx065 abs '-56267E-0' -> '56267'
|
||||
|
||||
-- overflow tests
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 3
|
||||
absx120 abs 9.999E+999999999 -> Infinity Inexact Overflow Rounded
|
||||
|
||||
-- subnormals and underflow
|
||||
precision: 3
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
absx210 abs 1.00E-999 -> 1.00E-999
|
||||
absx211 abs 0.1E-999 -> 1E-1000 Subnormal
|
||||
absx212 abs 0.10E-999 -> 1.0E-1000 Subnormal
|
||||
absx213 abs 0.100E-999 -> 1.0E-1000 Subnormal Rounded
|
||||
absx214 abs 0.01E-999 -> 1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
absx215 abs 0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow
|
||||
absx216 abs 0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
absx217 abs 0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
|
||||
absx218 abs 0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
absx219 abs 0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
absx220 abs 0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
|
||||
absx230 abs -1.00E-999 -> 1.00E-999
|
||||
absx231 abs -0.1E-999 -> 1E-1000 Subnormal
|
||||
absx232 abs -0.10E-999 -> 1.0E-1000 Subnormal
|
||||
absx233 abs -0.100E-999 -> 1.0E-1000 Subnormal Rounded
|
||||
absx234 abs -0.01E-999 -> 1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
absx235 abs -0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow
|
||||
absx236 abs -0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
absx237 abs -0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
|
||||
absx238 abs -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
absx239 abs -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
absx240 abs -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
|
||||
-- long operand tests
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
absx301 abs 12345678000 -> 1.23456780E+10 Rounded
|
||||
absx302 abs 1234567800 -> 1.23456780E+9 Rounded
|
||||
absx303 abs 1234567890 -> 1.23456789E+9 Rounded
|
||||
absx304 abs 1234567891 -> 1.23456789E+9 Inexact Rounded
|
||||
absx305 abs 12345678901 -> 1.23456789E+10 Inexact Rounded
|
||||
absx306 abs 1234567896 -> 1.23456790E+9 Inexact Rounded
|
||||
|
||||
precision: 15
|
||||
absx321 abs 12345678000 -> 12345678000
|
||||
absx322 abs 1234567800 -> 1234567800
|
||||
absx323 abs 1234567890 -> 1234567890
|
||||
absx324 abs 1234567891 -> 1234567891
|
||||
absx325 abs 12345678901 -> 12345678901
|
||||
absx326 abs 1234567896 -> 1234567896
|
||||
|
||||
|
||||
-- Specials
|
||||
precision: 9
|
||||
|
||||
-- specials
|
||||
absx520 abs 'Inf' -> 'Infinity'
|
||||
absx521 abs '-Inf' -> 'Infinity'
|
||||
absx522 abs NaN -> NaN
|
||||
absx523 abs sNaN -> NaN Invalid_operation
|
||||
absx524 abs NaN22 -> NaN22
|
||||
absx525 abs sNaN33 -> NaN33 Invalid_operation
|
||||
absx526 abs -NaN22 -> -NaN22
|
||||
absx527 abs -sNaN33 -> -NaN33 Invalid_operation
|
||||
|
||||
-- Null tests
|
||||
absx900 abs # -> NaN Invalid_operation
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,197 @@
|
|||
------------------------------------------------------------------------
|
||||
-- clamp.decTest -- clamped exponent tests (format-independent) --
|
||||
-- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
-- This set of tests uses the same limits as the 8-byte concrete
|
||||
-- representation, but applies clamping without using format-specific
|
||||
-- conversions.
|
||||
|
||||
extended: 1
|
||||
precision: 16
|
||||
rounding: half_even
|
||||
maxExponent: 384
|
||||
minExponent: -383
|
||||
clamp: 1
|
||||
|
||||
-- General testcases
|
||||
|
||||
-- Normality
|
||||
clam010 apply 1234567890123456 -> 1234567890123456
|
||||
clam011 apply 1234567890123456.0 -> 1234567890123456 Rounded
|
||||
clam012 apply 1234567890123456.1 -> 1234567890123456 Rounded Inexact
|
||||
clam013 apply -1234567890123456 -> -1234567890123456
|
||||
clam014 apply -1234567890123456.0 -> -1234567890123456 Rounded
|
||||
clam015 apply -1234567890123456.1 -> -1234567890123456 Rounded Inexact
|
||||
|
||||
|
||||
-- Nmax and similar
|
||||
clam022 apply 9.999999999999999E+384 -> 9.999999999999999E+384
|
||||
clam024 apply 1.234567890123456E+384 -> 1.234567890123456E+384
|
||||
-- fold-downs (more below)
|
||||
clam030 apply 1.23E+384 -> 1.230000000000000E+384 Clamped
|
||||
clam032 apply 1E+384 -> 1.000000000000000E+384 Clamped
|
||||
|
||||
clam051 apply 12345 -> 12345
|
||||
clam053 apply 1234 -> 1234
|
||||
clam055 apply 123 -> 123
|
||||
clam057 apply 12 -> 12
|
||||
clam059 apply 1 -> 1
|
||||
clam061 apply 1.23 -> 1.23
|
||||
clam063 apply 123.45 -> 123.45
|
||||
|
||||
-- Nmin and below
|
||||
clam071 apply 1E-383 -> 1E-383
|
||||
clam073 apply 1.000000000000000E-383 -> 1.000000000000000E-383
|
||||
clam075 apply 1.000000000000001E-383 -> 1.000000000000001E-383
|
||||
|
||||
clam077 apply 0.100000000000000E-383 -> 1.00000000000000E-384 Subnormal
|
||||
clam079 apply 0.000000000000010E-383 -> 1.0E-397 Subnormal
|
||||
clam081 apply 0.00000000000001E-383 -> 1E-397 Subnormal
|
||||
clam083 apply 0.000000000000001E-383 -> 1E-398 Subnormal
|
||||
|
||||
-- underflows
|
||||
clam090 apply 1e-398 -> #0000000000000001 Subnormal
|
||||
clam091 apply 1.9e-398 -> #0000000000000002 Subnormal Underflow Inexact Rounded
|
||||
clam092 apply 1.1e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
||||
clam093 apply 1.00000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
||||
clam094 apply 1.00000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
||||
clam095 apply 1.000000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
||||
clam096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
|
||||
clam097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
|
||||
clam098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
|
||||
clam099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
|
||||
|
||||
-- Same again, negatives
|
||||
-- Nmax and similar
|
||||
clam122 apply -9.999999999999999E+384 -> -9.999999999999999E+384
|
||||
clam124 apply -1.234567890123456E+384 -> -1.234567890123456E+384
|
||||
-- fold-downs (more below)
|
||||
clam130 apply -1.23E+384 -> -1.230000000000000E+384 Clamped
|
||||
clam132 apply -1E+384 -> -1.000000000000000E+384 Clamped
|
||||
|
||||
clam151 apply -12345 -> -12345
|
||||
clam153 apply -1234 -> -1234
|
||||
clam155 apply -123 -> -123
|
||||
clam157 apply -12 -> -12
|
||||
clam159 apply -1 -> -1
|
||||
clam161 apply -1.23 -> -1.23
|
||||
clam163 apply -123.45 -> -123.45
|
||||
|
||||
-- Nmin and below
|
||||
clam171 apply -1E-383 -> -1E-383
|
||||
clam173 apply -1.000000000000000E-383 -> -1.000000000000000E-383
|
||||
clam175 apply -1.000000000000001E-383 -> -1.000000000000001E-383
|
||||
|
||||
clam177 apply -0.100000000000000E-383 -> -1.00000000000000E-384 Subnormal
|
||||
clam179 apply -0.000000000000010E-383 -> -1.0E-397 Subnormal
|
||||
clam181 apply -0.00000000000001E-383 -> -1E-397 Subnormal
|
||||
clam183 apply -0.000000000000001E-383 -> -1E-398 Subnormal
|
||||
|
||||
-- underflows
|
||||
clam189 apply -1e-398 -> #8000000000000001 Subnormal
|
||||
clam190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded
|
||||
clam191 apply -1.9e-398 -> #8000000000000002 Subnormal Underflow Inexact Rounded
|
||||
clam192 apply -1.1e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
||||
clam193 apply -1.00000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
||||
clam194 apply -1.00000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
||||
clam195 apply -1.000000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
||||
clam196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
|
||||
clam197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
|
||||
clam198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
|
||||
clam199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
|
||||
|
||||
-- zeros
|
||||
clam401 apply 0E-500 -> 0E-398 Clamped
|
||||
clam402 apply 0E-400 -> 0E-398 Clamped
|
||||
clam403 apply 0E-398 -> 0E-398
|
||||
clam404 apply 0.000000000000000E-383 -> 0E-398
|
||||
clam405 apply 0E-2 -> 0.00
|
||||
clam406 apply 0 -> 0
|
||||
clam407 apply 0E+3 -> 0E+3
|
||||
clam408 apply 0E+369 -> 0E+369
|
||||
-- clamped zeros...
|
||||
clam410 apply 0E+370 -> 0E+369 Clamped
|
||||
clam411 apply 0E+384 -> 0E+369 Clamped
|
||||
clam412 apply 0E+400 -> 0E+369 Clamped
|
||||
clam413 apply 0E+500 -> 0E+369 Clamped
|
||||
|
||||
-- negative zeros
|
||||
clam420 apply -0E-500 -> -0E-398 Clamped
|
||||
clam421 apply -0E-400 -> -0E-398 Clamped
|
||||
clam422 apply -0E-398 -> -0E-398
|
||||
clam423 apply -0.000000000000000E-383 -> -0E-398
|
||||
clam424 apply -0E-2 -> -0.00
|
||||
clam425 apply -0 -> -0
|
||||
clam426 apply -0E+3 -> -0E+3
|
||||
clam427 apply -0E+369 -> -0E+369
|
||||
-- clamped zeros...
|
||||
clam431 apply -0E+370 -> -0E+369 Clamped
|
||||
clam432 apply -0E+384 -> -0E+369 Clamped
|
||||
clam433 apply -0E+400 -> -0E+369 Clamped
|
||||
clam434 apply -0E+500 -> -0E+369 Clamped
|
||||
|
||||
-- fold-down full sequence
|
||||
clam601 apply 1E+384 -> 1.000000000000000E+384 Clamped
|
||||
clam603 apply 1E+383 -> 1.00000000000000E+383 Clamped
|
||||
clam605 apply 1E+382 -> 1.0000000000000E+382 Clamped
|
||||
clam607 apply 1E+381 -> 1.000000000000E+381 Clamped
|
||||
clam609 apply 1E+380 -> 1.00000000000E+380 Clamped
|
||||
clam611 apply 1E+379 -> 1.0000000000E+379 Clamped
|
||||
clam613 apply 1E+378 -> 1.000000000E+378 Clamped
|
||||
clam615 apply 1E+377 -> 1.00000000E+377 Clamped
|
||||
clam617 apply 1E+376 -> 1.0000000E+376 Clamped
|
||||
clam619 apply 1E+375 -> 1.000000E+375 Clamped
|
||||
clam621 apply 1E+374 -> 1.00000E+374 Clamped
|
||||
clam623 apply 1E+373 -> 1.0000E+373 Clamped
|
||||
clam625 apply 1E+372 -> 1.000E+372 Clamped
|
||||
clam627 apply 1E+371 -> 1.00E+371 Clamped
|
||||
clam629 apply 1E+370 -> 1.0E+370 Clamped
|
||||
clam631 apply 1E+369 -> 1E+369
|
||||
clam633 apply 1E+368 -> 1E+368
|
||||
-- same with 9s
|
||||
clam641 apply 9E+384 -> 9.000000000000000E+384 Clamped
|
||||
clam643 apply 9E+383 -> 9.00000000000000E+383 Clamped
|
||||
clam645 apply 9E+382 -> 9.0000000000000E+382 Clamped
|
||||
clam647 apply 9E+381 -> 9.000000000000E+381 Clamped
|
||||
clam649 apply 9E+380 -> 9.00000000000E+380 Clamped
|
||||
clam651 apply 9E+379 -> 9.0000000000E+379 Clamped
|
||||
clam653 apply 9E+378 -> 9.000000000E+378 Clamped
|
||||
clam655 apply 9E+377 -> 9.00000000E+377 Clamped
|
||||
clam657 apply 9E+376 -> 9.0000000E+376 Clamped
|
||||
clam659 apply 9E+375 -> 9.000000E+375 Clamped
|
||||
clam661 apply 9E+374 -> 9.00000E+374 Clamped
|
||||
clam663 apply 9E+373 -> 9.0000E+373 Clamped
|
||||
clam665 apply 9E+372 -> 9.000E+372 Clamped
|
||||
clam667 apply 9E+371 -> 9.00E+371 Clamped
|
||||
clam669 apply 9E+370 -> 9.0E+370 Clamped
|
||||
clam671 apply 9E+369 -> 9E+369
|
||||
clam673 apply 9E+368 -> 9E+368
|
||||
|
||||
-- example from documentation
|
||||
precision: 7
|
||||
rounding: half_even
|
||||
maxExponent: +96
|
||||
minExponent: -95
|
||||
|
||||
clamp: 0
|
||||
clam700 apply 1.23E+96 -> 1.23E+96
|
||||
|
||||
clamp: 1
|
||||
clam701 apply 1.23E+96 -> 1.230000E+96 Clamped
|
|
@ -0,0 +1,717 @@
|
|||
------------------------------------------------------------------------
|
||||
-- compare.decTest -- decimal comparison --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
-- Note that we cannot assume add/subtract tests cover paths adequately,
|
||||
-- here, because the code might be quite different (comparison cannot
|
||||
-- overflow or underflow, so actual subtractions are not necesary).
|
||||
|
||||
extended: 1
|
||||
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
|
||||
-- sanity checks
|
||||
comx001 compare -2 -2 -> 0
|
||||
comx002 compare -2 -1 -> -1
|
||||
comx003 compare -2 0 -> -1
|
||||
comx004 compare -2 1 -> -1
|
||||
comx005 compare -2 2 -> -1
|
||||
comx006 compare -1 -2 -> 1
|
||||
comx007 compare -1 -1 -> 0
|
||||
comx008 compare -1 0 -> -1
|
||||
comx009 compare -1 1 -> -1
|
||||
comx010 compare -1 2 -> -1
|
||||
comx011 compare 0 -2 -> 1
|
||||
comx012 compare 0 -1 -> 1
|
||||
comx013 compare 0 0 -> 0
|
||||
comx014 compare 0 1 -> -1
|
||||
comx015 compare 0 2 -> -1
|
||||
comx016 compare 1 -2 -> 1
|
||||
comx017 compare 1 -1 -> 1
|
||||
comx018 compare 1 0 -> 1
|
||||
comx019 compare 1 1 -> 0
|
||||
comx020 compare 1 2 -> -1
|
||||
comx021 compare 2 -2 -> 1
|
||||
comx022 compare 2 -1 -> 1
|
||||
comx023 compare 2 0 -> 1
|
||||
comx025 compare 2 1 -> 1
|
||||
comx026 compare 2 2 -> 0
|
||||
|
||||
comx031 compare -20 -20 -> 0
|
||||
comx032 compare -20 -10 -> -1
|
||||
comx033 compare -20 00 -> -1
|
||||
comx034 compare -20 10 -> -1
|
||||
comx035 compare -20 20 -> -1
|
||||
comx036 compare -10 -20 -> 1
|
||||
comx037 compare -10 -10 -> 0
|
||||
comx038 compare -10 00 -> -1
|
||||
comx039 compare -10 10 -> -1
|
||||
comx040 compare -10 20 -> -1
|
||||
comx041 compare 00 -20 -> 1
|
||||
comx042 compare 00 -10 -> 1
|
||||
comx043 compare 00 00 -> 0
|
||||
comx044 compare 00 10 -> -1
|
||||
comx045 compare 00 20 -> -1
|
||||
comx046 compare 10 -20 -> 1
|
||||
comx047 compare 10 -10 -> 1
|
||||
comx048 compare 10 00 -> 1
|
||||
comx049 compare 10 10 -> 0
|
||||
comx050 compare 10 20 -> -1
|
||||
comx051 compare 20 -20 -> 1
|
||||
comx052 compare 20 -10 -> 1
|
||||
comx053 compare 20 00 -> 1
|
||||
comx055 compare 20 10 -> 1
|
||||
comx056 compare 20 20 -> 0
|
||||
|
||||
comx061 compare -2.0 -2.0 -> 0
|
||||
comx062 compare -2.0 -1.0 -> -1
|
||||
comx063 compare -2.0 0.0 -> -1
|
||||
comx064 compare -2.0 1.0 -> -1
|
||||
comx065 compare -2.0 2.0 -> -1
|
||||
comx066 compare -1.0 -2.0 -> 1
|
||||
comx067 compare -1.0 -1.0 -> 0
|
||||
comx068 compare -1.0 0.0 -> -1
|
||||
comx069 compare -1.0 1.0 -> -1
|
||||
comx070 compare -1.0 2.0 -> -1
|
||||
comx071 compare 0.0 -2.0 -> 1
|
||||
comx072 compare 0.0 -1.0 -> 1
|
||||
comx073 compare 0.0 0.0 -> 0
|
||||
comx074 compare 0.0 1.0 -> -1
|
||||
comx075 compare 0.0 2.0 -> -1
|
||||
comx076 compare 1.0 -2.0 -> 1
|
||||
comx077 compare 1.0 -1.0 -> 1
|
||||
comx078 compare 1.0 0.0 -> 1
|
||||
comx079 compare 1.0 1.0 -> 0
|
||||
comx080 compare 1.0 2.0 -> -1
|
||||
comx081 compare 2.0 -2.0 -> 1
|
||||
comx082 compare 2.0 -1.0 -> 1
|
||||
comx083 compare 2.0 0.0 -> 1
|
||||
comx085 compare 2.0 1.0 -> 1
|
||||
comx086 compare 2.0 2.0 -> 0
|
||||
|
||||
-- now some cases which might overflow if subtract were used
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
comx090 compare 9.99999999E+999999999 9.99999999E+999999999 -> 0
|
||||
comx091 compare -9.99999999E+999999999 9.99999999E+999999999 -> -1
|
||||
comx092 compare 9.99999999E+999999999 -9.99999999E+999999999 -> 1
|
||||
comx093 compare -9.99999999E+999999999 -9.99999999E+999999999 -> 0
|
||||
|
||||
-- some differing length/exponent cases
|
||||
comx100 compare 7.0 7.0 -> 0
|
||||
comx101 compare 7.0 7 -> 0
|
||||
comx102 compare 7 7.0 -> 0
|
||||
comx103 compare 7E+0 7.0 -> 0
|
||||
comx104 compare 70E-1 7.0 -> 0
|
||||
comx105 compare 0.7E+1 7 -> 0
|
||||
comx106 compare 70E-1 7 -> 0
|
||||
comx107 compare 7.0 7E+0 -> 0
|
||||
comx108 compare 7.0 70E-1 -> 0
|
||||
comx109 compare 7 0.7E+1 -> 0
|
||||
comx110 compare 7 70E-1 -> 0
|
||||
|
||||
comx120 compare 8.0 7.0 -> 1
|
||||
comx121 compare 8.0 7 -> 1
|
||||
comx122 compare 8 7.0 -> 1
|
||||
comx123 compare 8E+0 7.0 -> 1
|
||||
comx124 compare 80E-1 7.0 -> 1
|
||||
comx125 compare 0.8E+1 7 -> 1
|
||||
comx126 compare 80E-1 7 -> 1
|
||||
comx127 compare 8.0 7E+0 -> 1
|
||||
comx128 compare 8.0 70E-1 -> 1
|
||||
comx129 compare 8 0.7E+1 -> 1
|
||||
comx130 compare 8 70E-1 -> 1
|
||||
|
||||
comx140 compare 8.0 9.0 -> -1
|
||||
comx141 compare 8.0 9 -> -1
|
||||
comx142 compare 8 9.0 -> -1
|
||||
comx143 compare 8E+0 9.0 -> -1
|
||||
comx144 compare 80E-1 9.0 -> -1
|
||||
comx145 compare 0.8E+1 9 -> -1
|
||||
comx146 compare 80E-1 9 -> -1
|
||||
comx147 compare 8.0 9E+0 -> -1
|
||||
comx148 compare 8.0 90E-1 -> -1
|
||||
comx149 compare 8 0.9E+1 -> -1
|
||||
comx150 compare 8 90E-1 -> -1
|
||||
|
||||
-- and again, with sign changes -+ ..
|
||||
comx200 compare -7.0 7.0 -> -1
|
||||
comx201 compare -7.0 7 -> -1
|
||||
comx202 compare -7 7.0 -> -1
|
||||
comx203 compare -7E+0 7.0 -> -1
|
||||
comx204 compare -70E-1 7.0 -> -1
|
||||
comx205 compare -0.7E+1 7 -> -1
|
||||
comx206 compare -70E-1 7 -> -1
|
||||
comx207 compare -7.0 7E+0 -> -1
|
||||
comx208 compare -7.0 70E-1 -> -1
|
||||
comx209 compare -7 0.7E+1 -> -1
|
||||
comx210 compare -7 70E-1 -> -1
|
||||
|
||||
comx220 compare -8.0 7.0 -> -1
|
||||
comx221 compare -8.0 7 -> -1
|
||||
comx222 compare -8 7.0 -> -1
|
||||
comx223 compare -8E+0 7.0 -> -1
|
||||
comx224 compare -80E-1 7.0 -> -1
|
||||
comx225 compare -0.8E+1 7 -> -1
|
||||
comx226 compare -80E-1 7 -> -1
|
||||
comx227 compare -8.0 7E+0 -> -1
|
||||
comx228 compare -8.0 70E-1 -> -1
|
||||
comx229 compare -8 0.7E+1 -> -1
|
||||
comx230 compare -8 70E-1 -> -1
|
||||
|
||||
comx240 compare -8.0 9.0 -> -1
|
||||
comx241 compare -8.0 9 -> -1
|
||||
comx242 compare -8 9.0 -> -1
|
||||
comx243 compare -8E+0 9.0 -> -1
|
||||
comx244 compare -80E-1 9.0 -> -1
|
||||
comx245 compare -0.8E+1 9 -> -1
|
||||
comx246 compare -80E-1 9 -> -1
|
||||
comx247 compare -8.0 9E+0 -> -1
|
||||
comx248 compare -8.0 90E-1 -> -1
|
||||
comx249 compare -8 0.9E+1 -> -1
|
||||
comx250 compare -8 90E-1 -> -1
|
||||
|
||||
-- and again, with sign changes +- ..
|
||||
comx300 compare 7.0 -7.0 -> 1
|
||||
comx301 compare 7.0 -7 -> 1
|
||||
comx302 compare 7 -7.0 -> 1
|
||||
comx303 compare 7E+0 -7.0 -> 1
|
||||
comx304 compare 70E-1 -7.0 -> 1
|
||||
comx305 compare .7E+1 -7 -> 1
|
||||
comx306 compare 70E-1 -7 -> 1
|
||||
comx307 compare 7.0 -7E+0 -> 1
|
||||
comx308 compare 7.0 -70E-1 -> 1
|
||||
comx309 compare 7 -.7E+1 -> 1
|
||||
comx310 compare 7 -70E-1 -> 1
|
||||
|
||||
comx320 compare 8.0 -7.0 -> 1
|
||||
comx321 compare 8.0 -7 -> 1
|
||||
comx322 compare 8 -7.0 -> 1
|
||||
comx323 compare 8E+0 -7.0 -> 1
|
||||
comx324 compare 80E-1 -7.0 -> 1
|
||||
comx325 compare .8E+1 -7 -> 1
|
||||
comx326 compare 80E-1 -7 -> 1
|
||||
comx327 compare 8.0 -7E+0 -> 1
|
||||
comx328 compare 8.0 -70E-1 -> 1
|
||||
comx329 compare 8 -.7E+1 -> 1
|
||||
comx330 compare 8 -70E-1 -> 1
|
||||
|
||||
comx340 compare 8.0 -9.0 -> 1
|
||||
comx341 compare 8.0 -9 -> 1
|
||||
comx342 compare 8 -9.0 -> 1
|
||||
comx343 compare 8E+0 -9.0 -> 1
|
||||
comx344 compare 80E-1 -9.0 -> 1
|
||||
comx345 compare .8E+1 -9 -> 1
|
||||
comx346 compare 80E-1 -9 -> 1
|
||||
comx347 compare 8.0 -9E+0 -> 1
|
||||
comx348 compare 8.0 -90E-1 -> 1
|
||||
comx349 compare 8 -.9E+1 -> 1
|
||||
comx350 compare 8 -90E-1 -> 1
|
||||
|
||||
-- and again, with sign changes -- ..
|
||||
comx400 compare -7.0 -7.0 -> 0
|
||||
comx401 compare -7.0 -7 -> 0
|
||||
comx402 compare -7 -7.0 -> 0
|
||||
comx403 compare -7E+0 -7.0 -> 0
|
||||
comx404 compare -70E-1 -7.0 -> 0
|
||||
comx405 compare -.7E+1 -7 -> 0
|
||||
comx406 compare -70E-1 -7 -> 0
|
||||
comx407 compare -7.0 -7E+0 -> 0
|
||||
comx408 compare -7.0 -70E-1 -> 0
|
||||
comx409 compare -7 -.7E+1 -> 0
|
||||
comx410 compare -7 -70E-1 -> 0
|
||||
|
||||
comx420 compare -8.0 -7.0 -> -1
|
||||
comx421 compare -8.0 -7 -> -1
|
||||
comx422 compare -8 -7.0 -> -1
|
||||
comx423 compare -8E+0 -7.0 -> -1
|
||||
comx424 compare -80E-1 -7.0 -> -1
|
||||
comx425 compare -.8E+1 -7 -> -1
|
||||
comx426 compare -80E-1 -7 -> -1
|
||||
comx427 compare -8.0 -7E+0 -> -1
|
||||
comx428 compare -8.0 -70E-1 -> -1
|
||||
comx429 compare -8 -.7E+1 -> -1
|
||||
comx430 compare -8 -70E-1 -> -1
|
||||
|
||||
comx440 compare -8.0 -9.0 -> 1
|
||||
comx441 compare -8.0 -9 -> 1
|
||||
comx442 compare -8 -9.0 -> 1
|
||||
comx443 compare -8E+0 -9.0 -> 1
|
||||
comx444 compare -80E-1 -9.0 -> 1
|
||||
comx445 compare -.8E+1 -9 -> 1
|
||||
comx446 compare -80E-1 -9 -> 1
|
||||
comx447 compare -8.0 -9E+0 -> 1
|
||||
comx448 compare -8.0 -90E-1 -> 1
|
||||
comx449 compare -8 -.9E+1 -> 1
|
||||
comx450 compare -8 -90E-1 -> 1
|
||||
|
||||
|
||||
-- testcases that subtract to lots of zeros at boundaries [pgr]
|
||||
precision: 40
|
||||
comx470 compare 123.4560000000000000E789 123.456E789 -> 0
|
||||
comx471 compare 123.456000000000000E-89 123.456E-89 -> 0
|
||||
comx472 compare 123.45600000000000E789 123.456E789 -> 0
|
||||
comx473 compare 123.4560000000000E-89 123.456E-89 -> 0
|
||||
comx474 compare 123.456000000000E789 123.456E789 -> 0
|
||||
comx475 compare 123.45600000000E-89 123.456E-89 -> 0
|
||||
comx476 compare 123.4560000000E789 123.456E789 -> 0
|
||||
comx477 compare 123.456000000E-89 123.456E-89 -> 0
|
||||
comx478 compare 123.45600000E789 123.456E789 -> 0
|
||||
comx479 compare 123.4560000E-89 123.456E-89 -> 0
|
||||
comx480 compare 123.456000E789 123.456E789 -> 0
|
||||
comx481 compare 123.45600E-89 123.456E-89 -> 0
|
||||
comx482 compare 123.4560E789 123.456E789 -> 0
|
||||
comx483 compare 123.456E-89 123.456E-89 -> 0
|
||||
comx484 compare 123.456E-89 123.4560000000000000E-89 -> 0
|
||||
comx485 compare 123.456E789 123.456000000000000E789 -> 0
|
||||
comx486 compare 123.456E-89 123.45600000000000E-89 -> 0
|
||||
comx487 compare 123.456E789 123.4560000000000E789 -> 0
|
||||
comx488 compare 123.456E-89 123.456000000000E-89 -> 0
|
||||
comx489 compare 123.456E789 123.45600000000E789 -> 0
|
||||
comx490 compare 123.456E-89 123.4560000000E-89 -> 0
|
||||
comx491 compare 123.456E789 123.456000000E789 -> 0
|
||||
comx492 compare 123.456E-89 123.45600000E-89 -> 0
|
||||
comx493 compare 123.456E789 123.4560000E789 -> 0
|
||||
comx494 compare 123.456E-89 123.456000E-89 -> 0
|
||||
comx495 compare 123.456E789 123.45600E789 -> 0
|
||||
comx496 compare 123.456E-89 123.4560E-89 -> 0
|
||||
comx497 compare 123.456E789 123.456E789 -> 0
|
||||
|
||||
-- wide-ranging, around precision; signs equal
|
||||
precision: 9
|
||||
comx500 compare 1 1E-15 -> 1
|
||||
comx501 compare 1 1E-14 -> 1
|
||||
comx502 compare 1 1E-13 -> 1
|
||||
comx503 compare 1 1E-12 -> 1
|
||||
comx504 compare 1 1E-11 -> 1
|
||||
comx505 compare 1 1E-10 -> 1
|
||||
comx506 compare 1 1E-9 -> 1
|
||||
comx507 compare 1 1E-8 -> 1
|
||||
comx508 compare 1 1E-7 -> 1
|
||||
comx509 compare 1 1E-6 -> 1
|
||||
comx510 compare 1 1E-5 -> 1
|
||||
comx511 compare 1 1E-4 -> 1
|
||||
comx512 compare 1 1E-3 -> 1
|
||||
comx513 compare 1 1E-2 -> 1
|
||||
comx514 compare 1 1E-1 -> 1
|
||||
comx515 compare 1 1E-0 -> 0
|
||||
comx516 compare 1 1E+1 -> -1
|
||||
comx517 compare 1 1E+2 -> -1
|
||||
comx518 compare 1 1E+3 -> -1
|
||||
comx519 compare 1 1E+4 -> -1
|
||||
comx521 compare 1 1E+5 -> -1
|
||||
comx522 compare 1 1E+6 -> -1
|
||||
comx523 compare 1 1E+7 -> -1
|
||||
comx524 compare 1 1E+8 -> -1
|
||||
comx525 compare 1 1E+9 -> -1
|
||||
comx526 compare 1 1E+10 -> -1
|
||||
comx527 compare 1 1E+11 -> -1
|
||||
comx528 compare 1 1E+12 -> -1
|
||||
comx529 compare 1 1E+13 -> -1
|
||||
comx530 compare 1 1E+14 -> -1
|
||||
comx531 compare 1 1E+15 -> -1
|
||||
-- LR swap
|
||||
comx540 compare 1E-15 1 -> -1
|
||||
comx541 compare 1E-14 1 -> -1
|
||||
comx542 compare 1E-13 1 -> -1
|
||||
comx543 compare 1E-12 1 -> -1
|
||||
comx544 compare 1E-11 1 -> -1
|
||||
comx545 compare 1E-10 1 -> -1
|
||||
comx546 compare 1E-9 1 -> -1
|
||||
comx547 compare 1E-8 1 -> -1
|
||||
comx548 compare 1E-7 1 -> -1
|
||||
comx549 compare 1E-6 1 -> -1
|
||||
comx550 compare 1E-5 1 -> -1
|
||||
comx551 compare 1E-4 1 -> -1
|
||||
comx552 compare 1E-3 1 -> -1
|
||||
comx553 compare 1E-2 1 -> -1
|
||||
comx554 compare 1E-1 1 -> -1
|
||||
comx555 compare 1E-0 1 -> 0
|
||||
comx556 compare 1E+1 1 -> 1
|
||||
comx557 compare 1E+2 1 -> 1
|
||||
comx558 compare 1E+3 1 -> 1
|
||||
comx559 compare 1E+4 1 -> 1
|
||||
comx561 compare 1E+5 1 -> 1
|
||||
comx562 compare 1E+6 1 -> 1
|
||||
comx563 compare 1E+7 1 -> 1
|
||||
comx564 compare 1E+8 1 -> 1
|
||||
comx565 compare 1E+9 1 -> 1
|
||||
comx566 compare 1E+10 1 -> 1
|
||||
comx567 compare 1E+11 1 -> 1
|
||||
comx568 compare 1E+12 1 -> 1
|
||||
comx569 compare 1E+13 1 -> 1
|
||||
comx570 compare 1E+14 1 -> 1
|
||||
comx571 compare 1E+15 1 -> 1
|
||||
-- similar with an useful coefficient, one side only
|
||||
comx580 compare 0.000000987654321 1E-15 -> 1
|
||||
comx581 compare 0.000000987654321 1E-14 -> 1
|
||||
comx582 compare 0.000000987654321 1E-13 -> 1
|
||||
comx583 compare 0.000000987654321 1E-12 -> 1
|
||||
comx584 compare 0.000000987654321 1E-11 -> 1
|
||||
comx585 compare 0.000000987654321 1E-10 -> 1
|
||||
comx586 compare 0.000000987654321 1E-9 -> 1
|
||||
comx587 compare 0.000000987654321 1E-8 -> 1
|
||||
comx588 compare 0.000000987654321 1E-7 -> 1
|
||||
comx589 compare 0.000000987654321 1E-6 -> -1
|
||||
comx590 compare 0.000000987654321 1E-5 -> -1
|
||||
comx591 compare 0.000000987654321 1E-4 -> -1
|
||||
comx592 compare 0.000000987654321 1E-3 -> -1
|
||||
comx593 compare 0.000000987654321 1E-2 -> -1
|
||||
comx594 compare 0.000000987654321 1E-1 -> -1
|
||||
comx595 compare 0.000000987654321 1E-0 -> -1
|
||||
comx596 compare 0.000000987654321 1E+1 -> -1
|
||||
comx597 compare 0.000000987654321 1E+2 -> -1
|
||||
comx598 compare 0.000000987654321 1E+3 -> -1
|
||||
comx599 compare 0.000000987654321 1E+4 -> -1
|
||||
|
||||
-- check some unit-y traps
|
||||
precision: 20
|
||||
comx600 compare 12 12.2345 -> -1
|
||||
comx601 compare 12.0 12.2345 -> -1
|
||||
comx602 compare 12.00 12.2345 -> -1
|
||||
comx603 compare 12.000 12.2345 -> -1
|
||||
comx604 compare 12.0000 12.2345 -> -1
|
||||
comx605 compare 12.00000 12.2345 -> -1
|
||||
comx606 compare 12.000000 12.2345 -> -1
|
||||
comx607 compare 12.0000000 12.2345 -> -1
|
||||
comx608 compare 12.00000000 12.2345 -> -1
|
||||
comx609 compare 12.000000000 12.2345 -> -1
|
||||
comx610 compare 12.1234 12 -> 1
|
||||
comx611 compare 12.1234 12.0 -> 1
|
||||
comx612 compare 12.1234 12.00 -> 1
|
||||
comx613 compare 12.1234 12.000 -> 1
|
||||
comx614 compare 12.1234 12.0000 -> 1
|
||||
comx615 compare 12.1234 12.00000 -> 1
|
||||
comx616 compare 12.1234 12.000000 -> 1
|
||||
comx617 compare 12.1234 12.0000000 -> 1
|
||||
comx618 compare 12.1234 12.00000000 -> 1
|
||||
comx619 compare 12.1234 12.000000000 -> 1
|
||||
comx620 compare -12 -12.2345 -> 1
|
||||
comx621 compare -12.0 -12.2345 -> 1
|
||||
comx622 compare -12.00 -12.2345 -> 1
|
||||
comx623 compare -12.000 -12.2345 -> 1
|
||||
comx624 compare -12.0000 -12.2345 -> 1
|
||||
comx625 compare -12.00000 -12.2345 -> 1
|
||||
comx626 compare -12.000000 -12.2345 -> 1
|
||||
comx627 compare -12.0000000 -12.2345 -> 1
|
||||
comx628 compare -12.00000000 -12.2345 -> 1
|
||||
comx629 compare -12.000000000 -12.2345 -> 1
|
||||
comx630 compare -12.1234 -12 -> -1
|
||||
comx631 compare -12.1234 -12.0 -> -1
|
||||
comx632 compare -12.1234 -12.00 -> -1
|
||||
comx633 compare -12.1234 -12.000 -> -1
|
||||
comx634 compare -12.1234 -12.0000 -> -1
|
||||
comx635 compare -12.1234 -12.00000 -> -1
|
||||
comx636 compare -12.1234 -12.000000 -> -1
|
||||
comx637 compare -12.1234 -12.0000000 -> -1
|
||||
comx638 compare -12.1234 -12.00000000 -> -1
|
||||
comx639 compare -12.1234 -12.000000000 -> -1
|
||||
precision: 9
|
||||
|
||||
-- extended zeros
|
||||
comx640 compare 0 0 -> 0
|
||||
comx641 compare 0 -0 -> 0
|
||||
comx642 compare 0 -0.0 -> 0
|
||||
comx643 compare 0 0.0 -> 0
|
||||
comx644 compare -0 0 -> 0
|
||||
comx645 compare -0 -0 -> 0
|
||||
comx646 compare -0 -0.0 -> 0
|
||||
comx647 compare -0 0.0 -> 0
|
||||
comx648 compare 0.0 0 -> 0
|
||||
comx649 compare 0.0 -0 -> 0
|
||||
comx650 compare 0.0 -0.0 -> 0
|
||||
comx651 compare 0.0 0.0 -> 0
|
||||
comx652 compare -0.0 0 -> 0
|
||||
comx653 compare -0.0 -0 -> 0
|
||||
comx654 compare -0.0 -0.0 -> 0
|
||||
comx655 compare -0.0 0.0 -> 0
|
||||
|
||||
comx656 compare -0E1 0.0 -> 0
|
||||
comx657 compare -0E2 0.0 -> 0
|
||||
comx658 compare 0E1 0.0 -> 0
|
||||
comx659 compare 0E2 0.0 -> 0
|
||||
comx660 compare -0E1 0 -> 0
|
||||
comx661 compare -0E2 0 -> 0
|
||||
comx662 compare 0E1 0 -> 0
|
||||
comx663 compare 0E2 0 -> 0
|
||||
comx664 compare -0E1 -0E1 -> 0
|
||||
comx665 compare -0E2 -0E1 -> 0
|
||||
comx666 compare 0E1 -0E1 -> 0
|
||||
comx667 compare 0E2 -0E1 -> 0
|
||||
comx668 compare -0E1 -0E2 -> 0
|
||||
comx669 compare -0E2 -0E2 -> 0
|
||||
comx670 compare 0E1 -0E2 -> 0
|
||||
comx671 compare 0E2 -0E2 -> 0
|
||||
comx672 compare -0E1 0E1 -> 0
|
||||
comx673 compare -0E2 0E1 -> 0
|
||||
comx674 compare 0E1 0E1 -> 0
|
||||
comx675 compare 0E2 0E1 -> 0
|
||||
comx676 compare -0E1 0E2 -> 0
|
||||
comx677 compare -0E2 0E2 -> 0
|
||||
comx678 compare 0E1 0E2 -> 0
|
||||
comx679 compare 0E2 0E2 -> 0
|
||||
|
||||
-- trailing zeros; unit-y
|
||||
precision: 20
|
||||
comx680 compare 12 12 -> 0
|
||||
comx681 compare 12 12.0 -> 0
|
||||
comx682 compare 12 12.00 -> 0
|
||||
comx683 compare 12 12.000 -> 0
|
||||
comx684 compare 12 12.0000 -> 0
|
||||
comx685 compare 12 12.00000 -> 0
|
||||
comx686 compare 12 12.000000 -> 0
|
||||
comx687 compare 12 12.0000000 -> 0
|
||||
comx688 compare 12 12.00000000 -> 0
|
||||
comx689 compare 12 12.000000000 -> 0
|
||||
comx690 compare 12 12 -> 0
|
||||
comx691 compare 12.0 12 -> 0
|
||||
comx692 compare 12.00 12 -> 0
|
||||
comx693 compare 12.000 12 -> 0
|
||||
comx694 compare 12.0000 12 -> 0
|
||||
comx695 compare 12.00000 12 -> 0
|
||||
comx696 compare 12.000000 12 -> 0
|
||||
comx697 compare 12.0000000 12 -> 0
|
||||
comx698 compare 12.00000000 12 -> 0
|
||||
comx699 compare 12.000000000 12 -> 0
|
||||
|
||||
-- long operand checks
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
comx701 compare 12345678000 1 -> 1
|
||||
comx702 compare 1 12345678000 -> -1
|
||||
comx703 compare 1234567800 1 -> 1
|
||||
comx704 compare 1 1234567800 -> -1
|
||||
comx705 compare 1234567890 1 -> 1
|
||||
comx706 compare 1 1234567890 -> -1
|
||||
comx707 compare 1234567891 1 -> 1
|
||||
comx708 compare 1 1234567891 -> -1
|
||||
comx709 compare 12345678901 1 -> 1
|
||||
comx710 compare 1 12345678901 -> -1
|
||||
comx711 compare 1234567896 1 -> 1
|
||||
comx712 compare 1 1234567896 -> -1
|
||||
comx713 compare -1234567891 1 -> -1
|
||||
comx714 compare 1 -1234567891 -> 1
|
||||
comx715 compare -12345678901 1 -> -1
|
||||
comx716 compare 1 -12345678901 -> 1
|
||||
comx717 compare -1234567896 1 -> -1
|
||||
comx718 compare 1 -1234567896 -> 1
|
||||
|
||||
precision: 15
|
||||
-- same with plenty of precision
|
||||
comx721 compare 12345678000 1 -> 1
|
||||
comx722 compare 1 12345678000 -> -1
|
||||
comx723 compare 1234567800 1 -> 1
|
||||
comx724 compare 1 1234567800 -> -1
|
||||
comx725 compare 1234567890 1 -> 1
|
||||
comx726 compare 1 1234567890 -> -1
|
||||
comx727 compare 1234567891 1 -> 1
|
||||
comx728 compare 1 1234567891 -> -1
|
||||
comx729 compare 12345678901 1 -> 1
|
||||
comx730 compare 1 12345678901 -> -1
|
||||
comx731 compare 1234567896 1 -> 1
|
||||
comx732 compare 1 1234567896 -> -1
|
||||
|
||||
-- residue cases
|
||||
precision: 5
|
||||
comx740 compare 1 0.9999999 -> 1
|
||||
comx741 compare 1 0.999999 -> 1
|
||||
comx742 compare 1 0.99999 -> 1
|
||||
comx743 compare 1 1.0000 -> 0
|
||||
comx744 compare 1 1.00001 -> -1
|
||||
comx745 compare 1 1.000001 -> -1
|
||||
comx746 compare 1 1.0000001 -> -1
|
||||
comx750 compare 0.9999999 1 -> -1
|
||||
comx751 compare 0.999999 1 -> -1
|
||||
comx752 compare 0.99999 1 -> -1
|
||||
comx753 compare 1.0000 1 -> 0
|
||||
comx754 compare 1.00001 1 -> 1
|
||||
comx755 compare 1.000001 1 -> 1
|
||||
comx756 compare 1.0000001 1 -> 1
|
||||
|
||||
-- a selection of longies
|
||||
comx760 compare -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1
|
||||
comx761 compare -36852134.84194296250843579428931 -36852134.84194296250843579428931 -> 0
|
||||
comx762 compare -36852134.94194296250843579428931 -36852134.84194296250843579428931 -> -1
|
||||
comx763 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
-- precisions above or below the difference should have no effect
|
||||
precision: 11
|
||||
comx764 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
precision: 10
|
||||
comx765 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
precision: 9
|
||||
comx766 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
precision: 8
|
||||
comx767 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
precision: 7
|
||||
comx768 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
precision: 6
|
||||
comx769 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
precision: 5
|
||||
comx770 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
precision: 4
|
||||
comx771 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
precision: 3
|
||||
comx772 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
precision: 2
|
||||
comx773 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
precision: 1
|
||||
comx774 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
|
||||
|
||||
-- Specials
|
||||
precision: 9
|
||||
comx780 compare Inf -Inf -> 1
|
||||
comx781 compare Inf -1000 -> 1
|
||||
comx782 compare Inf -1 -> 1
|
||||
comx783 compare Inf -0 -> 1
|
||||
comx784 compare Inf 0 -> 1
|
||||
comx785 compare Inf 1 -> 1
|
||||
comx786 compare Inf 1000 -> 1
|
||||
comx787 compare Inf Inf -> 0
|
||||
comx788 compare -1000 Inf -> -1
|
||||
comx789 compare -Inf Inf -> -1
|
||||
comx790 compare -1 Inf -> -1
|
||||
comx791 compare -0 Inf -> -1
|
||||
comx792 compare 0 Inf -> -1
|
||||
comx793 compare 1 Inf -> -1
|
||||
comx794 compare 1000 Inf -> -1
|
||||
comx795 compare Inf Inf -> 0
|
||||
|
||||
comx800 compare -Inf -Inf -> 0
|
||||
comx801 compare -Inf -1000 -> -1
|
||||
comx802 compare -Inf -1 -> -1
|
||||
comx803 compare -Inf -0 -> -1
|
||||
comx804 compare -Inf 0 -> -1
|
||||
comx805 compare -Inf 1 -> -1
|
||||
comx806 compare -Inf 1000 -> -1
|
||||
comx807 compare -Inf Inf -> -1
|
||||
comx808 compare -Inf -Inf -> 0
|
||||
comx809 compare -1000 -Inf -> 1
|
||||
comx810 compare -1 -Inf -> 1
|
||||
comx811 compare -0 -Inf -> 1
|
||||
comx812 compare 0 -Inf -> 1
|
||||
comx813 compare 1 -Inf -> 1
|
||||
comx814 compare 1000 -Inf -> 1
|
||||
comx815 compare Inf -Inf -> 1
|
||||
|
||||
comx821 compare NaN -Inf -> NaN
|
||||
comx822 compare NaN -1000 -> NaN
|
||||
comx823 compare NaN -1 -> NaN
|
||||
comx824 compare NaN -0 -> NaN
|
||||
comx825 compare NaN 0 -> NaN
|
||||
comx826 compare NaN 1 -> NaN
|
||||
comx827 compare NaN 1000 -> NaN
|
||||
comx828 compare NaN Inf -> NaN
|
||||
comx829 compare NaN NaN -> NaN
|
||||
comx830 compare -Inf NaN -> NaN
|
||||
comx831 compare -1000 NaN -> NaN
|
||||
comx832 compare -1 NaN -> NaN
|
||||
comx833 compare -0 NaN -> NaN
|
||||
comx834 compare 0 NaN -> NaN
|
||||
comx835 compare 1 NaN -> NaN
|
||||
comx836 compare 1000 NaN -> NaN
|
||||
comx837 compare Inf NaN -> NaN
|
||||
comx838 compare -NaN -NaN -> -NaN
|
||||
comx839 compare +NaN -NaN -> NaN
|
||||
comx840 compare -NaN +NaN -> -NaN
|
||||
|
||||
comx841 compare sNaN -Inf -> NaN Invalid_operation
|
||||
comx842 compare sNaN -1000 -> NaN Invalid_operation
|
||||
comx843 compare sNaN -1 -> NaN Invalid_operation
|
||||
comx844 compare sNaN -0 -> NaN Invalid_operation
|
||||
comx845 compare sNaN 0 -> NaN Invalid_operation
|
||||
comx846 compare sNaN 1 -> NaN Invalid_operation
|
||||
comx847 compare sNaN 1000 -> NaN Invalid_operation
|
||||
comx848 compare sNaN NaN -> NaN Invalid_operation
|
||||
comx849 compare sNaN sNaN -> NaN Invalid_operation
|
||||
comx850 compare NaN sNaN -> NaN Invalid_operation
|
||||
comx851 compare -Inf sNaN -> NaN Invalid_operation
|
||||
comx852 compare -1000 sNaN -> NaN Invalid_operation
|
||||
comx853 compare -1 sNaN -> NaN Invalid_operation
|
||||
comx854 compare -0 sNaN -> NaN Invalid_operation
|
||||
comx855 compare 0 sNaN -> NaN Invalid_operation
|
||||
comx856 compare 1 sNaN -> NaN Invalid_operation
|
||||
comx857 compare 1000 sNaN -> NaN Invalid_operation
|
||||
comx858 compare Inf sNaN -> NaN Invalid_operation
|
||||
comx859 compare NaN sNaN -> NaN Invalid_operation
|
||||
|
||||
-- propagating NaNs
|
||||
comx860 compare NaN9 -Inf -> NaN9
|
||||
comx861 compare NaN8 999 -> NaN8
|
||||
comx862 compare NaN77 Inf -> NaN77
|
||||
comx863 compare -NaN67 NaN5 -> -NaN67
|
||||
comx864 compare -Inf -NaN4 -> -NaN4
|
||||
comx865 compare -999 -NaN33 -> -NaN33
|
||||
comx866 compare Inf NaN2 -> NaN2
|
||||
comx867 compare -NaN41 -NaN42 -> -NaN41
|
||||
comx868 compare +NaN41 -NaN42 -> NaN41
|
||||
comx869 compare -NaN41 +NaN42 -> -NaN41
|
||||
comx870 compare +NaN41 +NaN42 -> NaN41
|
||||
|
||||
comx871 compare -sNaN99 -Inf -> -NaN99 Invalid_operation
|
||||
comx872 compare sNaN98 -11 -> NaN98 Invalid_operation
|
||||
comx873 compare sNaN97 NaN -> NaN97 Invalid_operation
|
||||
comx874 compare sNaN16 sNaN94 -> NaN16 Invalid_operation
|
||||
comx875 compare NaN85 sNaN83 -> NaN83 Invalid_operation
|
||||
comx876 compare -Inf sNaN92 -> NaN92 Invalid_operation
|
||||
comx877 compare 088 sNaN81 -> NaN81 Invalid_operation
|
||||
comx878 compare Inf sNaN90 -> NaN90 Invalid_operation
|
||||
comx879 compare NaN -sNaN89 -> -NaN89 Invalid_operation
|
||||
|
||||
-- overflow and underflow tests .. subnormal results now allowed
|
||||
maxExponent: 999999999
|
||||
minexponent: -999999999
|
||||
comx880 compare +1.23456789012345E-0 9E+999999999 -> -1
|
||||
comx881 compare 9E+999999999 +1.23456789012345E-0 -> 1
|
||||
comx882 compare +0.100 9E-999999999 -> 1
|
||||
comx883 compare 9E-999999999 +0.100 -> -1
|
||||
comx885 compare -1.23456789012345E-0 9E+999999999 -> -1
|
||||
comx886 compare 9E+999999999 -1.23456789012345E-0 -> 1
|
||||
comx887 compare -0.100 9E-999999999 -> -1
|
||||
comx888 compare 9E-999999999 -0.100 -> 1
|
||||
|
||||
comx889 compare 1e-599999999 1e-400000001 -> -1
|
||||
comx890 compare 1e-599999999 1e-400000000 -> -1
|
||||
comx891 compare 1e-600000000 1e-400000000 -> -1
|
||||
comx892 compare 9e-999999998 0.01 -> -1
|
||||
comx893 compare 9e-999999998 0.1 -> -1
|
||||
comx894 compare 0.01 9e-999999998 -> 1
|
||||
comx895 compare 1e599999999 1e400000001 -> 1
|
||||
comx896 compare 1e599999999 1e400000000 -> 1
|
||||
comx897 compare 1e600000000 1e400000000 -> 1
|
||||
comx898 compare 9e999999998 100 -> 1
|
||||
comx899 compare 9e999999998 10 -> 1
|
||||
comx900 compare 100 9e999999998 -> -1
|
||||
-- signs
|
||||
comx901 compare 1e+777777777 1e+411111111 -> 1
|
||||
comx902 compare 1e+777777777 -1e+411111111 -> 1
|
||||
comx903 compare -1e+777777777 1e+411111111 -> -1
|
||||
comx904 compare -1e+777777777 -1e+411111111 -> -1
|
||||
comx905 compare 1e-777777777 1e-411111111 -> -1
|
||||
comx906 compare 1e-777777777 -1e-411111111 -> 1
|
||||
comx907 compare -1e-777777777 1e-411111111 -> -1
|
||||
comx908 compare -1e-777777777 -1e-411111111 -> 1
|
||||
|
||||
-- Null tests
|
||||
comx990 compare 10 # -> NaN Invalid_operation
|
||||
comx991 compare # 10 -> NaN Invalid_operation
|
|
@ -0,0 +1,421 @@
|
|||
------------------------------------------------------------------------
|
||||
-- decimal64.decTest -- decimal eight-byte format testcases --
|
||||
-- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.28
|
||||
|
||||
-- This set of tests is for the eight-byte concrete representation.
|
||||
-- Its characteristics are:
|
||||
--
|
||||
-- 1 bit sign
|
||||
-- 5 bits combination field
|
||||
-- 8 bits exponent continuation
|
||||
-- 50 bits coefficient continuation
|
||||
--
|
||||
-- Total exponent length 10 bits
|
||||
-- Total coefficient length 54 bits (16 digits)
|
||||
--
|
||||
-- Elimit = 767 (maximum encoded exponent)
|
||||
-- Emax = 384 (largest exponent value)
|
||||
-- Emin = -383 (smallest exponent value)
|
||||
-- bias = 398 (subtracted from encoded exponent) = -Etiny
|
||||
|
||||
extended: 1
|
||||
precision: 16
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minExponent: -383
|
||||
|
||||
-- General testcases
|
||||
-- (mostly derived from the Strawman 4 document and examples)
|
||||
dece001 apply #A2300000000003D0 -> -7.50
|
||||
dece002 apply -7.50 -> #A2300000000003D0
|
||||
|
||||
-- Normality
|
||||
dece010 apply 1234567890123456 -> #263934b9c1e28e56
|
||||
dece011 apply 1234567890123456.0 -> #263934b9c1e28e56 Rounded
|
||||
dece012 apply 1234567890123456.1 -> #263934b9c1e28e56 Rounded Inexact
|
||||
dece013 apply -1234567890123456 -> #a63934b9c1e28e56
|
||||
dece014 apply -1234567890123456.0 -> #a63934b9c1e28e56 Rounded
|
||||
dece015 apply -1234567890123456.1 -> #a63934b9c1e28e56 Rounded Inexact
|
||||
|
||||
|
||||
-- Nmax and similar
|
||||
dece022 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff
|
||||
dece023 apply #77fcff3fcff3fcff -> 9.999999999999999E+384
|
||||
dece024 apply 1.234567890123456E+384 -> #47fd34b9c1e28e56
|
||||
dece025 apply #47fd34b9c1e28e56 -> 1.234567890123456E+384
|
||||
-- fold-downs (more below)
|
||||
dece030 apply 1.23E+384 -> #47fd300000000000 Clamped
|
||||
dece031 apply #47fd300000000000 -> 1.230000000000000E+384
|
||||
dece032 apply 1E+384 -> #47fc000000000000 Clamped
|
||||
dece033 apply #47fc000000000000 -> 1.000000000000000E+384
|
||||
|
||||
-- overflows
|
||||
maxExponent: 999 -- set high so conversion causes the overflow
|
||||
minExponent: -999
|
||||
dece040 apply 10E+384 -> #7800000000000000 Overflow Rounded Inexact
|
||||
dece041 apply 1.000000000000000E+385 -> #7800000000000000 Overflow Rounded Inexact
|
||||
maxExponent: 384
|
||||
minExponent: -383
|
||||
|
||||
dece051 apply 12345 -> #22380000000049c5
|
||||
dece052 apply #22380000000049c5 -> 12345
|
||||
dece053 apply 1234 -> #2238000000000534
|
||||
dece054 apply #2238000000000534 -> 1234
|
||||
dece055 apply 123 -> #22380000000000a3
|
||||
dece056 apply #22380000000000a3 -> 123
|
||||
dece057 apply 12 -> #2238000000000012
|
||||
dece058 apply #2238000000000012 -> 12
|
||||
dece059 apply 1 -> #2238000000000001
|
||||
dece060 apply #2238000000000001 -> 1
|
||||
dece061 apply 1.23 -> #22300000000000a3
|
||||
dece062 apply #22300000000000a3 -> 1.23
|
||||
dece063 apply 123.45 -> #22300000000049c5
|
||||
dece064 apply #22300000000049c5 -> 123.45
|
||||
|
||||
-- Nmin and below
|
||||
dece071 apply 1E-383 -> #003c000000000001
|
||||
dece072 apply #003c000000000001 -> 1E-383
|
||||
dece073 apply 1.000000000000000E-383 -> #0400000000000000
|
||||
dece074 apply #0400000000000000 -> 1.000000000000000E-383
|
||||
dece075 apply 1.000000000000001E-383 -> #0400000000000001
|
||||
dece076 apply #0400000000000001 -> 1.000000000000001E-383
|
||||
|
||||
dece077 apply 0.100000000000000E-383 -> #0000800000000000 Subnormal
|
||||
dece078 apply #0000800000000000 -> 1.00000000000000E-384 Subnormal
|
||||
dece079 apply 0.000000000000010E-383 -> #0000000000000010 Subnormal
|
||||
dece080 apply #0000000000000010 -> 1.0E-397 Subnormal
|
||||
dece081 apply 0.00000000000001E-383 -> #0004000000000001 Subnormal
|
||||
dece082 apply #0004000000000001 -> 1E-397 Subnormal
|
||||
dece083 apply 0.000000000000001E-383 -> #0000000000000001 Subnormal
|
||||
dece084 apply #0000000000000001 -> 1E-398 Subnormal
|
||||
|
||||
-- underflows
|
||||
dece090 apply 1e-398 -> #0000000000000001 Subnormal
|
||||
dece091 apply 1.9e-398 -> #0000000000000002 Subnormal Underflow Inexact Rounded
|
||||
dece092 apply 1.1e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
||||
dece093 apply 1.00000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
||||
dece094 apply 1.00000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
||||
dece095 apply 1.000000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
||||
dece096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
|
||||
dece097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
|
||||
dece098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
|
||||
dece099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
|
||||
|
||||
-- Same again, negatives
|
||||
-- Nmax and similar
|
||||
dece122 apply -9.999999999999999E+384 -> #f7fcff3fcff3fcff
|
||||
dece123 apply #f7fcff3fcff3fcff -> -9.999999999999999E+384
|
||||
dece124 apply -1.234567890123456E+384 -> #c7fd34b9c1e28e56
|
||||
dece125 apply #c7fd34b9c1e28e56 -> -1.234567890123456E+384
|
||||
-- fold-downs (more below)
|
||||
dece130 apply -1.23E+384 -> #c7fd300000000000 Clamped
|
||||
dece131 apply #c7fd300000000000 -> -1.230000000000000E+384
|
||||
dece132 apply -1E+384 -> #c7fc000000000000 Clamped
|
||||
dece133 apply #c7fc000000000000 -> -1.000000000000000E+384
|
||||
|
||||
-- overflows
|
||||
maxExponent: 999 -- set high so conversion causes the overflow
|
||||
minExponent: -999
|
||||
dece140 apply -10E+384 -> #f800000000000000 Overflow Rounded Inexact
|
||||
dece141 apply -1.000000000000000E+385 -> #f800000000000000 Overflow Rounded Inexact
|
||||
maxExponent: 384
|
||||
minExponent: -383
|
||||
|
||||
dece151 apply -12345 -> #a2380000000049c5
|
||||
dece152 apply #a2380000000049c5 -> -12345
|
||||
dece153 apply -1234 -> #a238000000000534
|
||||
dece154 apply #a238000000000534 -> -1234
|
||||
dece155 apply -123 -> #a2380000000000a3
|
||||
dece156 apply #a2380000000000a3 -> -123
|
||||
dece157 apply -12 -> #a238000000000012
|
||||
dece158 apply #a238000000000012 -> -12
|
||||
dece159 apply -1 -> #a238000000000001
|
||||
dece160 apply #a238000000000001 -> -1
|
||||
dece161 apply -1.23 -> #a2300000000000a3
|
||||
dece162 apply #a2300000000000a3 -> -1.23
|
||||
dece163 apply -123.45 -> #a2300000000049c5
|
||||
dece164 apply #a2300000000049c5 -> -123.45
|
||||
|
||||
-- Nmin and below
|
||||
dece171 apply -1E-383 -> #803c000000000001
|
||||
dece172 apply #803c000000000001 -> -1E-383
|
||||
dece173 apply -1.000000000000000E-383 -> #8400000000000000
|
||||
dece174 apply #8400000000000000 -> -1.000000000000000E-383
|
||||
dece175 apply -1.000000000000001E-383 -> #8400000000000001
|
||||
dece176 apply #8400000000000001 -> -1.000000000000001E-383
|
||||
|
||||
dece177 apply -0.100000000000000E-383 -> #8000800000000000 Subnormal
|
||||
dece178 apply #8000800000000000 -> -1.00000000000000E-384 Subnormal
|
||||
dece179 apply -0.000000000000010E-383 -> #8000000000000010 Subnormal
|
||||
dece180 apply #8000000000000010 -> -1.0E-397 Subnormal
|
||||
dece181 apply -0.00000000000001E-383 -> #8004000000000001 Subnormal
|
||||
dece182 apply #8004000000000001 -> -1E-397 Subnormal
|
||||
dece183 apply -0.000000000000001E-383 -> #8000000000000001 Subnormal
|
||||
dece184 apply #8000000000000001 -> -1E-398 Subnormal
|
||||
|
||||
-- underflows
|
||||
dece189 apply -1e-398 -> #8000000000000001 Subnormal
|
||||
dece190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded
|
||||
dece191 apply -1.9e-398 -> #8000000000000002 Subnormal Underflow Inexact Rounded
|
||||
dece192 apply -1.1e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
||||
dece193 apply -1.00000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
||||
dece194 apply -1.00000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
||||
dece195 apply -1.000000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
||||
dece196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
|
||||
dece197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
|
||||
dece198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
|
||||
dece199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
|
||||
|
||||
-- zeros
|
||||
dece401 apply 0E-500 -> #0000000000000000 Clamped
|
||||
dece402 apply 0E-400 -> #0000000000000000 Clamped
|
||||
dece403 apply 0E-398 -> #0000000000000000
|
||||
dece404 apply #0000000000000000 -> 0E-398
|
||||
dece405 apply 0.000000000000000E-383 -> #0000000000000000
|
||||
dece406 apply #0000000000000000 -> 0E-398
|
||||
dece407 apply 0E-2 -> #2230000000000000
|
||||
dece408 apply #2230000000000000 -> 0.00
|
||||
dece409 apply 0 -> #2238000000000000
|
||||
dece410 apply #2238000000000000 -> 0
|
||||
dece411 apply 0E+3 -> #2244000000000000
|
||||
dece412 apply #2244000000000000 -> 0E+3
|
||||
dece413 apply 0E+369 -> #43fc000000000000
|
||||
dece414 apply #43fc000000000000 -> 0E+369
|
||||
-- clamped zeros...
|
||||
dece415 apply 0E+370 -> #43fc000000000000 Clamped
|
||||
dece416 apply #43fc000000000000 -> 0E+369
|
||||
dece417 apply 0E+384 -> #43fc000000000000 Clamped
|
||||
dece418 apply #43fc000000000000 -> 0E+369
|
||||
dece419 apply 0E+400 -> #43fc000000000000 Clamped
|
||||
dece420 apply #43fc000000000000 -> 0E+369
|
||||
dece421 apply 0E+500 -> #43fc000000000000 Clamped
|
||||
dece422 apply #43fc000000000000 -> 0E+369
|
||||
|
||||
-- negative zeros
|
||||
dece431 apply -0E-400 -> #8000000000000000 Clamped
|
||||
dece432 apply -0E-400 -> #8000000000000000 Clamped
|
||||
dece433 apply -0E-398 -> #8000000000000000
|
||||
dece434 apply #8000000000000000 -> -0E-398
|
||||
dece435 apply -0.000000000000000E-383 -> #8000000000000000
|
||||
dece436 apply #8000000000000000 -> -0E-398
|
||||
dece437 apply -0E-2 -> #a230000000000000
|
||||
dece438 apply #a230000000000000 -> -0.00
|
||||
dece439 apply -0 -> #a238000000000000
|
||||
dece440 apply #a238000000000000 -> -0
|
||||
dece441 apply -0E+3 -> #a244000000000000
|
||||
dece442 apply #a244000000000000 -> -0E+3
|
||||
dece443 apply -0E+369 -> #c3fc000000000000
|
||||
dece444 apply #c3fc000000000000 -> -0E+369
|
||||
-- clamped zeros...
|
||||
dece445 apply -0E+370 -> #c3fc000000000000 Clamped
|
||||
dece446 apply #c3fc000000000000 -> -0E+369
|
||||
dece447 apply -0E+384 -> #c3fc000000000000 Clamped
|
||||
dece448 apply #c3fc000000000000 -> -0E+369
|
||||
dece449 apply -0E+400 -> #c3fc000000000000 Clamped
|
||||
dece450 apply #c3fc000000000000 -> -0E+369
|
||||
dece451 apply -0E+500 -> #c3fc000000000000 Clamped
|
||||
dece452 apply #c3fc000000000000 -> -0E+369
|
||||
|
||||
-- Specials
|
||||
dece501 apply #7878787878787878 -> #7800000000000000
|
||||
dece502 apply #7800000000000000 -> Infinity
|
||||
dece503 apply #7979797979797979 -> #7800000000000000
|
||||
dece504 apply #7900000000000000 -> Infinity
|
||||
dece505 apply #7a7a7a7a7a7a7a7a -> #7800000000000000
|
||||
dece506 apply #7a00000000000000 -> Infinity
|
||||
dece507 apply #7b7b7b7b7b7b7b7b -> #7800000000000000
|
||||
dece508 apply #7b00000000000000 -> Infinity
|
||||
dece509 apply #7c7c7c7c7c7c7c7c -> #7dffffffffffffff
|
||||
dece510 apply #7c00000000000000 -> NaN
|
||||
dece511 apply #7d7d7d7d7d7d7d7d -> #7dffffffffffffff
|
||||
dece512 apply #7d00000000000000 -> NaN
|
||||
dece513 apply #7e7e7e7e7e7e7e7e -> #7fffffffffffffff
|
||||
dece514 apply #7e00000000000000 -> sNaN
|
||||
dece515 apply #7f7f7f7f7f7f7f7f -> #7fffffffffffffff
|
||||
dece516 apply #7f00000000000000 -> sNaN
|
||||
|
||||
dece521 apply #f878787878787878 -> #f800000000000000
|
||||
dece522 apply #f800000000000000 -> -Infinity
|
||||
dece523 apply #f979797979797979 -> #f800000000000000
|
||||
dece524 apply #f900000000000000 -> -Infinity
|
||||
dece525 apply #fa7a7a7a7a7a7a7a -> #f800000000000000
|
||||
dece526 apply #fa00000000000000 -> -Infinity
|
||||
dece527 apply #fb7b7b7b7b7b7b7b -> #f800000000000000
|
||||
dece528 apply #fb00000000000000 -> -Infinity
|
||||
dece529 apply #fc7c7c7c7c7c7c7c -> #7dffffffffffffff
|
||||
dece530 apply #fc00000000000000 -> NaN
|
||||
dece531 apply #fd7d7d7d7d7d7d7d -> #7dffffffffffffff
|
||||
dece532 apply #fd00000000000000 -> NaN
|
||||
dece533 apply #fe7e7e7e7e7e7e7e -> #7fffffffffffffff
|
||||
dece534 apply #fe00000000000000 -> sNaN
|
||||
dece535 apply #ff7f7f7f7f7f7f7f -> #7fffffffffffffff
|
||||
dece536 apply #ff00000000000000 -> sNaN
|
||||
|
||||
-- fold-down full sequence
|
||||
dece601 apply 1E+384 -> #47fc000000000000 Clamped
|
||||
dece602 apply #47fc000000000000 -> 1.000000000000000E+384
|
||||
dece603 apply 1E+383 -> #43fc800000000000 Clamped
|
||||
dece604 apply #43fc800000000000 -> 1.00000000000000E+383
|
||||
dece605 apply 1E+382 -> #43fc100000000000 Clamped
|
||||
dece606 apply #43fc100000000000 -> 1.0000000000000E+382
|
||||
dece607 apply 1E+381 -> #43fc010000000000 Clamped
|
||||
dece608 apply #43fc010000000000 -> 1.000000000000E+381
|
||||
dece609 apply 1E+380 -> #43fc002000000000 Clamped
|
||||
dece610 apply #43fc002000000000 -> 1.00000000000E+380
|
||||
dece611 apply 1E+379 -> #43fc000400000000 Clamped
|
||||
dece612 apply #43fc000400000000 -> 1.0000000000E+379
|
||||
dece613 apply 1E+378 -> #43fc000040000000 Clamped
|
||||
dece614 apply #43fc000040000000 -> 1.000000000E+378
|
||||
dece615 apply 1E+377 -> #43fc000008000000 Clamped
|
||||
dece616 apply #43fc000008000000 -> 1.00000000E+377
|
||||
dece617 apply 1E+376 -> #43fc000001000000 Clamped
|
||||
dece618 apply #43fc000001000000 -> 1.0000000E+376
|
||||
dece619 apply 1E+375 -> #43fc000000100000 Clamped
|
||||
dece620 apply #43fc000000100000 -> 1.000000E+375
|
||||
dece621 apply 1E+374 -> #43fc000000020000 Clamped
|
||||
dece622 apply #43fc000000020000 -> 1.00000E+374
|
||||
dece623 apply 1E+373 -> #43fc000000004000 Clamped
|
||||
dece624 apply #43fc000000004000 -> 1.0000E+373
|
||||
dece625 apply 1E+372 -> #43fc000000000400 Clamped
|
||||
dece626 apply #43fc000000000400 -> 1.000E+372
|
||||
dece627 apply 1E+371 -> #43fc000000000080 Clamped
|
||||
dece628 apply #43fc000000000080 -> 1.00E+371
|
||||
dece629 apply 1E+370 -> #43fc000000000010 Clamped
|
||||
dece630 apply #43fc000000000010 -> 1.0E+370
|
||||
dece631 apply 1E+369 -> #43fc000000000001
|
||||
dece632 apply #43fc000000000001 -> 1E+369
|
||||
dece633 apply 1E+368 -> #43f8000000000001
|
||||
dece634 apply #43f8000000000001 -> 1E+368
|
||||
-- same with 9s
|
||||
dece641 apply 9E+384 -> #77fc000000000000 Clamped
|
||||
dece642 apply #77fc000000000000 -> 9.000000000000000E+384
|
||||
dece643 apply 9E+383 -> #43fc8c0000000000 Clamped
|
||||
dece644 apply #43fc8c0000000000 -> 9.00000000000000E+383
|
||||
dece645 apply 9E+382 -> #43fc1a0000000000 Clamped
|
||||
dece646 apply #43fc1a0000000000 -> 9.0000000000000E+382
|
||||
dece647 apply 9E+381 -> #43fc090000000000 Clamped
|
||||
dece648 apply #43fc090000000000 -> 9.000000000000E+381
|
||||
dece649 apply 9E+380 -> #43fc002300000000 Clamped
|
||||
dece650 apply #43fc002300000000 -> 9.00000000000E+380
|
||||
dece651 apply 9E+379 -> #43fc000680000000 Clamped
|
||||
dece652 apply #43fc000680000000 -> 9.0000000000E+379
|
||||
dece653 apply 9E+378 -> #43fc000240000000 Clamped
|
||||
dece654 apply #43fc000240000000 -> 9.000000000E+378
|
||||
dece655 apply 9E+377 -> #43fc000008c00000 Clamped
|
||||
dece656 apply #43fc000008c00000 -> 9.00000000E+377
|
||||
dece657 apply 9E+376 -> #43fc000001a00000 Clamped
|
||||
dece658 apply #43fc000001a00000 -> 9.0000000E+376
|
||||
dece659 apply 9E+375 -> #43fc000000900000 Clamped
|
||||
dece660 apply #43fc000000900000 -> 9.000000E+375
|
||||
dece661 apply 9E+374 -> #43fc000000023000 Clamped
|
||||
dece662 apply #43fc000000023000 -> 9.00000E+374
|
||||
dece663 apply 9E+373 -> #43fc000000006800 Clamped
|
||||
dece664 apply #43fc000000006800 -> 9.0000E+373
|
||||
dece665 apply 9E+372 -> #43fc000000002400 Clamped
|
||||
dece666 apply #43fc000000002400 -> 9.000E+372
|
||||
dece667 apply 9E+371 -> #43fc00000000008c Clamped
|
||||
dece668 apply #43fc00000000008c -> 9.00E+371
|
||||
dece669 apply 9E+370 -> #43fc00000000001a Clamped
|
||||
dece670 apply #43fc00000000001a -> 9.0E+370
|
||||
dece671 apply 9E+369 -> #43fc000000000009
|
||||
dece672 apply #43fc000000000009 -> 9E+369
|
||||
dece673 apply 9E+368 -> #43f8000000000009
|
||||
dece674 apply #43f8000000000009 -> 9E+368
|
||||
|
||||
|
||||
-- Selected DPD codes
|
||||
dece700 apply #2238000000000000 -> 0
|
||||
dece701 apply #2238000000000009 -> 9
|
||||
dece702 apply #2238000000000010 -> 10
|
||||
dece703 apply #2238000000000019 -> 19
|
||||
dece704 apply #2238000000000020 -> 20
|
||||
dece705 apply #2238000000000029 -> 29
|
||||
dece706 apply #2238000000000030 -> 30
|
||||
dece707 apply #2238000000000039 -> 39
|
||||
dece708 apply #2238000000000040 -> 40
|
||||
dece709 apply #2238000000000049 -> 49
|
||||
dece710 apply #2238000000000050 -> 50
|
||||
dece711 apply #2238000000000059 -> 59
|
||||
dece712 apply #2238000000000060 -> 60
|
||||
dece713 apply #2238000000000069 -> 69
|
||||
dece714 apply #2238000000000070 -> 70
|
||||
dece715 apply #2238000000000071 -> 71
|
||||
dece716 apply #2238000000000072 -> 72
|
||||
dece717 apply #2238000000000073 -> 73
|
||||
dece718 apply #2238000000000074 -> 74
|
||||
dece719 apply #2238000000000075 -> 75
|
||||
dece720 apply #2238000000000076 -> 76
|
||||
dece721 apply #2238000000000077 -> 77
|
||||
dece722 apply #2238000000000078 -> 78
|
||||
dece723 apply #2238000000000079 -> 79
|
||||
|
||||
dece730 apply #223800000000029e -> 994
|
||||
dece731 apply #223800000000029f -> 995
|
||||
dece732 apply #22380000000002a0 -> 520
|
||||
dece733 apply #22380000000002a1 -> 521
|
||||
|
||||
-- DPD: one of each of the huffman groups
|
||||
dece740 apply #22380000000003f7 -> 777
|
||||
dece741 apply #22380000000003f8 -> 778
|
||||
dece742 apply #22380000000003eb -> 787
|
||||
dece743 apply #223800000000037d -> 877
|
||||
dece744 apply #223800000000039f -> 997
|
||||
dece745 apply #22380000000003bf -> 979
|
||||
dece746 apply #22380000000003df -> 799
|
||||
dece747 apply #223800000000006e -> 888
|
||||
|
||||
|
||||
-- DPD all-highs cases (includes the 24 redundant codes)
|
||||
dece750 apply #223800000000006e -> 888
|
||||
dece751 apply #223800000000016e -> 888
|
||||
dece752 apply #223800000000026e -> 888
|
||||
dece753 apply #223800000000036e -> 888
|
||||
dece754 apply #223800000000006f -> 889
|
||||
dece755 apply #223800000000016f -> 889
|
||||
dece756 apply #223800000000026f -> 889
|
||||
dece757 apply #223800000000036f -> 889
|
||||
|
||||
dece760 apply #223800000000007e -> 898
|
||||
dece761 apply #223800000000017e -> 898
|
||||
dece762 apply #223800000000027e -> 898
|
||||
dece763 apply #223800000000037e -> 898
|
||||
dece764 apply #223800000000007f -> 899
|
||||
dece765 apply #223800000000017f -> 899
|
||||
dece766 apply #223800000000027f -> 899
|
||||
dece767 apply #223800000000037f -> 899
|
||||
|
||||
dece770 apply #22380000000000ee -> 988
|
||||
dece771 apply #22380000000001ee -> 988
|
||||
dece772 apply #22380000000002ee -> 988
|
||||
dece773 apply #22380000000003ee -> 988
|
||||
dece774 apply #22380000000000ef -> 989
|
||||
dece775 apply #22380000000001ef -> 989
|
||||
dece776 apply #22380000000002ef -> 989
|
||||
dece777 apply #22380000000003ef -> 989
|
||||
|
||||
dece780 apply #22380000000000fe -> 998
|
||||
dece781 apply #22380000000001fe -> 998
|
||||
dece782 apply #22380000000002fe -> 998
|
||||
dece783 apply #22380000000003fe -> 998
|
||||
dece784 apply #22380000000000ff -> 999
|
||||
dece785 apply #22380000000001ff -> 999
|
||||
dece786 apply #22380000000002ff -> 999
|
||||
dece787 apply #22380000000003ff -> 999
|
||||
|
|
@ -0,0 +1,818 @@
|
|||
------------------------------------------------------------------------
|
||||
-- divide.decTest -- decimal division --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
|
||||
-- sanity checks
|
||||
divx001 divide 1 1 -> 1
|
||||
divx002 divide 2 1 -> 2
|
||||
divx003 divide 1 2 -> 0.5
|
||||
divx004 divide 2 2 -> 1
|
||||
divx005 divide 0 1 -> 0
|
||||
divx006 divide 0 2 -> 0
|
||||
divx007 divide 1 3 -> 0.333333333 Inexact Rounded
|
||||
divx008 divide 2 3 -> 0.666666667 Inexact Rounded
|
||||
divx009 divide 3 3 -> 1
|
||||
|
||||
divx010 divide 2.4 1 -> 2.4
|
||||
divx011 divide 2.4 -1 -> -2.4
|
||||
divx012 divide -2.4 1 -> -2.4
|
||||
divx013 divide -2.4 -1 -> 2.4
|
||||
divx014 divide 2.40 1 -> 2.40
|
||||
divx015 divide 2.400 1 -> 2.400
|
||||
divx016 divide 2.4 2 -> 1.2
|
||||
divx017 divide 2.400 2 -> 1.200
|
||||
divx018 divide 2. 2 -> 1
|
||||
divx019 divide 20 20 -> 1
|
||||
|
||||
divx020 divide 187 187 -> 1
|
||||
divx021 divide 5 2 -> 2.5
|
||||
divx022 divide 5 2.0 -> 2.5
|
||||
divx023 divide 5 2.000 -> 2.5
|
||||
divx024 divide 5 0.20 -> 25
|
||||
divx025 divide 5 0.200 -> 25
|
||||
divx026 divide 10 1 -> 10
|
||||
divx027 divide 100 1 -> 100
|
||||
divx028 divide 1000 1 -> 1000
|
||||
divx029 divide 1000 100 -> 10
|
||||
|
||||
divx030 divide 1 2 -> 0.5
|
||||
divx031 divide 1 4 -> 0.25
|
||||
divx032 divide 1 8 -> 0.125
|
||||
divx033 divide 1 16 -> 0.0625
|
||||
divx034 divide 1 32 -> 0.03125
|
||||
divx035 divide 1 64 -> 0.015625
|
||||
divx040 divide 1 -2 -> -0.5
|
||||
divx041 divide 1 -4 -> -0.25
|
||||
divx042 divide 1 -8 -> -0.125
|
||||
divx043 divide 1 -16 -> -0.0625
|
||||
divx044 divide 1 -32 -> -0.03125
|
||||
divx045 divide 1 -64 -> -0.015625
|
||||
divx050 divide -1 2 -> -0.5
|
||||
divx051 divide -1 4 -> -0.25
|
||||
divx052 divide -1 8 -> -0.125
|
||||
divx053 divide -1 16 -> -0.0625
|
||||
divx054 divide -1 32 -> -0.03125
|
||||
divx055 divide -1 64 -> -0.015625
|
||||
divx060 divide -1 -2 -> 0.5
|
||||
divx061 divide -1 -4 -> 0.25
|
||||
divx062 divide -1 -8 -> 0.125
|
||||
divx063 divide -1 -16 -> 0.0625
|
||||
divx064 divide -1 -32 -> 0.03125
|
||||
divx065 divide -1 -64 -> 0.015625
|
||||
|
||||
divx070 divide 999999999 1 -> 999999999
|
||||
divx071 divide 999999999.4 1 -> 999999999 Inexact Rounded
|
||||
divx072 divide 999999999.5 1 -> 1.00000000E+9 Inexact Rounded
|
||||
divx073 divide 999999999.9 1 -> 1.00000000E+9 Inexact Rounded
|
||||
divx074 divide 999999999.999 1 -> 1.00000000E+9 Inexact Rounded
|
||||
precision: 6
|
||||
divx080 divide 999999999 1 -> 1.00000E+9 Inexact Rounded
|
||||
divx081 divide 99999999 1 -> 1.00000E+8 Inexact Rounded
|
||||
divx082 divide 9999999 1 -> 1.00000E+7 Inexact Rounded
|
||||
divx083 divide 999999 1 -> 999999
|
||||
divx084 divide 99999 1 -> 99999
|
||||
divx085 divide 9999 1 -> 9999
|
||||
divx086 divide 999 1 -> 999
|
||||
divx087 divide 99 1 -> 99
|
||||
divx088 divide 9 1 -> 9
|
||||
|
||||
precision: 9
|
||||
divx090 divide 0. 1 -> 0
|
||||
divx091 divide .0 1 -> 0.0
|
||||
divx092 divide 0.00 1 -> 0.00
|
||||
divx093 divide 0.00E+9 1 -> 0E+7
|
||||
divx094 divide 0.0000E-50 1 -> 0E-54
|
||||
|
||||
divx095 divide 1 1E-8 -> 1E+8
|
||||
divx096 divide 1 1E-9 -> 1E+9
|
||||
divx097 divide 1 1E-10 -> 1E+10
|
||||
divx098 divide 1 1E-11 -> 1E+11
|
||||
divx099 divide 1 1E-12 -> 1E+12
|
||||
|
||||
divx100 divide 1 1 -> 1
|
||||
divx101 divide 1 2 -> 0.5
|
||||
divx102 divide 1 3 -> 0.333333333 Inexact Rounded
|
||||
divx103 divide 1 4 -> 0.25
|
||||
divx104 divide 1 5 -> 0.2
|
||||
divx105 divide 1 6 -> 0.166666667 Inexact Rounded
|
||||
divx106 divide 1 7 -> 0.142857143 Inexact Rounded
|
||||
divx107 divide 1 8 -> 0.125
|
||||
divx108 divide 1 9 -> 0.111111111 Inexact Rounded
|
||||
divx109 divide 1 10 -> 0.1
|
||||
divx110 divide 1 1 -> 1
|
||||
divx111 divide 2 1 -> 2
|
||||
divx112 divide 3 1 -> 3
|
||||
divx113 divide 4 1 -> 4
|
||||
divx114 divide 5 1 -> 5
|
||||
divx115 divide 6 1 -> 6
|
||||
divx116 divide 7 1 -> 7
|
||||
divx117 divide 8 1 -> 8
|
||||
divx118 divide 9 1 -> 9
|
||||
divx119 divide 10 1 -> 10
|
||||
|
||||
divx120 divide 3E+1 0.001 -> 3E+4
|
||||
divx121 divide 2.200 2 -> 1.100
|
||||
|
||||
divx130 divide 12345 4.999 -> 2469.49390 Inexact Rounded
|
||||
divx131 divide 12345 4.99 -> 2473.94790 Inexact Rounded
|
||||
divx132 divide 12345 4.9 -> 2519.38776 Inexact Rounded
|
||||
divx133 divide 12345 5 -> 2469
|
||||
divx134 divide 12345 5.1 -> 2420.58824 Inexact Rounded
|
||||
divx135 divide 12345 5.01 -> 2464.07186 Inexact Rounded
|
||||
divx136 divide 12345 5.001 -> 2468.50630 Inexact Rounded
|
||||
|
||||
precision: 9
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
|
||||
-- test possibly imprecise results
|
||||
divx220 divide 391 597 -> 0.654941374 Inexact Rounded
|
||||
divx221 divide 391 -597 -> -0.654941374 Inexact Rounded
|
||||
divx222 divide -391 597 -> -0.654941374 Inexact Rounded
|
||||
divx223 divide -391 -597 -> 0.654941374 Inexact Rounded
|
||||
|
||||
-- test some cases that are close to exponent overflow
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
divx270 divide 1 1e999999999 -> 1E-999999999
|
||||
divx271 divide 1 0.9e999999999 -> 1.11111111E-999999999 Inexact Rounded
|
||||
divx272 divide 1 0.99e999999999 -> 1.01010101E-999999999 Inexact Rounded
|
||||
divx273 divide 1 0.999999999e999999999 -> 1.00000000E-999999999 Inexact Rounded
|
||||
divx274 divide 9e999999999 1 -> 9E+999999999
|
||||
divx275 divide 9.9e999999999 1 -> 9.9E+999999999
|
||||
divx276 divide 9.99e999999999 1 -> 9.99E+999999999
|
||||
divx277 divide 9.99999999e999999999 1 -> 9.99999999E+999999999
|
||||
|
||||
divx280 divide 0.1 9e-999999999 -> 1.11111111E+999999997 Inexact Rounded
|
||||
divx281 divide 0.1 99e-999999999 -> 1.01010101E+999999996 Inexact Rounded
|
||||
divx282 divide 0.1 999e-999999999 -> 1.00100100E+999999995 Inexact Rounded
|
||||
|
||||
divx283 divide 0.1 9e-999999998 -> 1.11111111E+999999996 Inexact Rounded
|
||||
divx284 divide 0.1 99e-999999998 -> 1.01010101E+999999995 Inexact Rounded
|
||||
divx285 divide 0.1 999e-999999998 -> 1.00100100E+999999994 Inexact Rounded
|
||||
divx286 divide 0.1 999e-999999997 -> 1.00100100E+999999993 Inexact Rounded
|
||||
divx287 divide 0.1 9999e-999999997 -> 1.00010001E+999999992 Inexact Rounded
|
||||
divx288 divide 0.1 99999e-999999997 -> 1.00001000E+999999991 Inexact Rounded
|
||||
|
||||
-- Divide into 0 tests
|
||||
|
||||
divx301 divide 0 7 -> 0
|
||||
divx302 divide 0 7E-5 -> 0E+5
|
||||
divx303 divide 0 7E-1 -> 0E+1
|
||||
divx304 divide 0 7E+1 -> 0.0
|
||||
divx305 divide 0 7E+5 -> 0.00000
|
||||
divx306 divide 0 7E+6 -> 0.000000
|
||||
divx307 divide 0 7E+7 -> 0E-7
|
||||
divx308 divide 0 70E-5 -> 0E+5
|
||||
divx309 divide 0 70E-1 -> 0E+1
|
||||
divx310 divide 0 70E+0 -> 0
|
||||
divx311 divide 0 70E+1 -> 0.0
|
||||
divx312 divide 0 70E+5 -> 0.00000
|
||||
divx313 divide 0 70E+6 -> 0.000000
|
||||
divx314 divide 0 70E+7 -> 0E-7
|
||||
divx315 divide 0 700E-5 -> 0E+5
|
||||
divx316 divide 0 700E-1 -> 0E+1
|
||||
divx317 divide 0 700E+0 -> 0
|
||||
divx318 divide 0 700E+1 -> 0.0
|
||||
divx319 divide 0 700E+5 -> 0.00000
|
||||
divx320 divide 0 700E+6 -> 0.000000
|
||||
divx321 divide 0 700E+7 -> 0E-7
|
||||
divx322 divide 0 700E+77 -> 0E-77
|
||||
|
||||
divx331 divide 0E-3 7E-5 -> 0E+2
|
||||
divx332 divide 0E-3 7E-1 -> 0.00
|
||||
divx333 divide 0E-3 7E+1 -> 0.0000
|
||||
divx334 divide 0E-3 7E+5 -> 0E-8
|
||||
divx335 divide 0E-1 7E-5 -> 0E+4
|
||||
divx336 divide 0E-1 7E-1 -> 0
|
||||
divx337 divide 0E-1 7E+1 -> 0.00
|
||||
divx338 divide 0E-1 7E+5 -> 0.000000
|
||||
divx339 divide 0E+1 7E-5 -> 0E+6
|
||||
divx340 divide 0E+1 7E-1 -> 0E+2
|
||||
divx341 divide 0E+1 7E+1 -> 0
|
||||
divx342 divide 0E+1 7E+5 -> 0.0000
|
||||
divx343 divide 0E+3 7E-5 -> 0E+8
|
||||
divx344 divide 0E+3 7E-1 -> 0E+4
|
||||
divx345 divide 0E+3 7E+1 -> 0E+2
|
||||
divx346 divide 0E+3 7E+5 -> 0.00
|
||||
|
||||
maxexponent: 92
|
||||
minexponent: -92
|
||||
precision: 7
|
||||
divx351 divide 0E-92 7E-1 -> 0E-91
|
||||
divx352 divide 0E-92 7E+1 -> 0E-93
|
||||
divx353 divide 0E-92 7E+5 -> 0E-97
|
||||
divx354 divide 0E-92 7E+6 -> 0E-98
|
||||
divx355 divide 0E-92 7E+7 -> 0E-98 Clamped
|
||||
divx356 divide 0E-92 777E-1 -> 0E-91
|
||||
divx357 divide 0E-92 777E+1 -> 0E-93
|
||||
divx358 divide 0E-92 777E+3 -> 0E-95
|
||||
divx359 divide 0E-92 777E+4 -> 0E-96
|
||||
divx360 divide 0E-92 777E+5 -> 0E-97
|
||||
divx361 divide 0E-92 777E+6 -> 0E-98
|
||||
divx362 divide 0E-92 777E+7 -> 0E-98 Clamped
|
||||
divx363 divide 0E-92 7E+92 -> 0E-98 Clamped
|
||||
|
||||
divx371 divide 0E-92 700E-1 -> 0E-91
|
||||
divx372 divide 0E-92 700E+1 -> 0E-93
|
||||
divx373 divide 0E-92 700E+3 -> 0E-95
|
||||
divx374 divide 0E-92 700E+4 -> 0E-96
|
||||
divx375 divide 0E-92 700E+5 -> 0E-97
|
||||
divx376 divide 0E-92 700E+6 -> 0E-98
|
||||
divx377 divide 0E-92 700E+7 -> 0E-98 Clamped
|
||||
|
||||
divx381 divide 0E+92 7E+1 -> 0E+91
|
||||
divx382 divide 0E+92 7E+0 -> 0E+92
|
||||
divx383 divide 0E+92 7E-1 -> 0E+92 Clamped
|
||||
divx384 divide 0E+90 777E+1 -> 0E+89
|
||||
divx385 divide 0E+90 777E-1 -> 0E+91
|
||||
divx386 divide 0E+90 777E-2 -> 0E+92
|
||||
divx387 divide 0E+90 777E-3 -> 0E+92 Clamped
|
||||
divx388 divide 0E+90 777E-4 -> 0E+92 Clamped
|
||||
|
||||
divx391 divide 0E+90 700E+1 -> 0E+89
|
||||
divx392 divide 0E+90 700E-1 -> 0E+91
|
||||
divx393 divide 0E+90 700E-2 -> 0E+92
|
||||
divx394 divide 0E+90 700E-3 -> 0E+92 Clamped
|
||||
divx395 divide 0E+90 700E-4 -> 0E+92 Clamped
|
||||
|
||||
-- input rounding checks
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
divx401 divide 12345678000 1 -> 1.23456780E+10 Rounded
|
||||
divx402 divide 1 12345678000 -> 8.10000066E-11 Inexact Rounded
|
||||
divx403 divide 1234567800 1 -> 1.23456780E+9 Rounded
|
||||
divx404 divide 1 1234567800 -> 8.10000066E-10 Inexact Rounded
|
||||
divx405 divide 1234567890 1 -> 1.23456789E+9 Rounded
|
||||
divx406 divide 1 1234567890 -> 8.10000007E-10 Inexact Rounded
|
||||
divx407 divide 1234567891 1 -> 1.23456789E+9 Inexact Rounded
|
||||
divx408 divide 1 1234567891 -> 8.10000007E-10 Inexact Rounded
|
||||
divx409 divide 12345678901 1 -> 1.23456789E+10 Inexact Rounded
|
||||
divx410 divide 1 12345678901 -> 8.10000007E-11 Inexact Rounded
|
||||
divx411 divide 1234567896 1 -> 1.23456790E+9 Inexact Rounded
|
||||
divx412 divide 1 1234567896 -> 8.10000003E-10 Inexact Rounded
|
||||
divx413 divide 1 1234567897 -> 8.10000003E-10 Inexact Rounded
|
||||
divx414 divide 1 1234567898 -> 8.10000002E-10 Inexact Rounded
|
||||
divx415 divide 1 1234567899 -> 8.10000001E-10 Inexact Rounded
|
||||
divx416 divide 1 1234567900 -> 8.10000001E-10 Inexact Rounded
|
||||
divx417 divide 1 1234567901 -> 8.10000000E-10 Inexact Rounded
|
||||
divx418 divide 1 1234567902 -> 8.09999999E-10 Inexact Rounded
|
||||
-- some longies
|
||||
divx421 divide 1234567896.000000000000 1 -> 1.23456790E+9 Inexact Rounded
|
||||
divx422 divide 1 1234567896.000000000000 -> 8.10000003E-10 Inexact Rounded
|
||||
divx423 divide 1234567896.000000000001 1 -> 1.23456790E+9 Inexact Rounded
|
||||
divx424 divide 1 1234567896.000000000001 -> 8.10000003E-10 Inexact Rounded
|
||||
divx425 divide 1234567896.000000000000000000000000000000000000000009 1 -> 1.23456790E+9 Inexact Rounded
|
||||
divx426 divide 1 1234567896.000000000000000000000000000000000000000009 -> 8.10000003E-10 Inexact Rounded
|
||||
divx427 divide 1234567897.900010000000000000000000000000000000000009 1 -> 1.23456790E+9 Inexact Rounded
|
||||
divx428 divide 1 1234567897.900010000000000000000000000000000000000009 -> 8.10000002E-10 Inexact Rounded
|
||||
|
||||
precision: 15
|
||||
-- still checking...
|
||||
divx441 divide 12345678000 1 -> 12345678000
|
||||
divx442 divide 1 12345678000 -> 8.10000066420005E-11 Inexact Rounded
|
||||
divx443 divide 1234567800 1 -> 1234567800
|
||||
divx444 divide 1 1234567800 -> 8.10000066420005E-10 Inexact Rounded
|
||||
divx445 divide 1234567890 1 -> 1234567890
|
||||
divx446 divide 1 1234567890 -> 8.10000007371000E-10 Inexact Rounded
|
||||
divx447 divide 1234567891 1 -> 1234567891
|
||||
divx448 divide 1 1234567891 -> 8.10000006714900E-10 Inexact Rounded
|
||||
divx449 divide 12345678901 1 -> 12345678901
|
||||
divx450 divide 1 12345678901 -> 8.10000007305390E-11 Inexact Rounded
|
||||
divx451 divide 1234567896 1 -> 1234567896
|
||||
divx452 divide 1 1234567896 -> 8.10000003434400E-10 Inexact Rounded
|
||||
|
||||
-- high-lows
|
||||
divx453 divide 1e+1 1 -> 1E+1
|
||||
divx454 divide 1e+1 1.0 -> 1E+1
|
||||
divx455 divide 1e+1 1.00 -> 1E+1
|
||||
divx456 divide 1e+2 2 -> 5E+1
|
||||
divx457 divide 1e+2 2.0 -> 5E+1
|
||||
divx458 divide 1e+2 2.00 -> 5E+1
|
||||
|
||||
-- some from IEEE discussions
|
||||
divx460 divide 3e0 2e0 -> 1.5
|
||||
divx461 divide 30e-1 2e0 -> 1.5
|
||||
divx462 divide 300e-2 2e0 -> 1.50
|
||||
divx464 divide 3000e-3 2e0 -> 1.500
|
||||
divx465 divide 3e0 20e-1 -> 1.5
|
||||
divx466 divide 30e-1 20e-1 -> 1.5
|
||||
divx467 divide 300e-2 20e-1 -> 1.5
|
||||
divx468 divide 3000e-3 20e-1 -> 1.50
|
||||
divx469 divide 3e0 200e-2 -> 1.5
|
||||
divx470 divide 30e-1 200e-2 -> 1.5
|
||||
divx471 divide 300e-2 200e-2 -> 1.5
|
||||
divx472 divide 3000e-3 200e-2 -> 1.5
|
||||
divx473 divide 3e0 2000e-3 -> 1.5
|
||||
divx474 divide 30e-1 2000e-3 -> 1.5
|
||||
divx475 divide 300e-2 2000e-3 -> 1.5
|
||||
divx476 divide 3000e-3 2000e-3 -> 1.5
|
||||
|
||||
-- some reciprocals
|
||||
divx480 divide 1 1.0E+33 -> 1E-33
|
||||
divx481 divide 1 10E+33 -> 1E-34
|
||||
divx482 divide 1 1.0E-33 -> 1E+33
|
||||
divx483 divide 1 10E-33 -> 1E+32
|
||||
|
||||
-- RMS discussion table
|
||||
maxexponent: 96
|
||||
minexponent: -95
|
||||
precision: 7
|
||||
|
||||
divx484 divide 0e5 1e3 -> 0E+2
|
||||
divx485 divide 0e5 2e3 -> 0E+2
|
||||
divx486 divide 0e5 10e2 -> 0E+3
|
||||
divx487 divide 0e5 20e2 -> 0E+3
|
||||
divx488 divide 0e5 100e1 -> 0E+4
|
||||
divx489 divide 0e5 200e1 -> 0E+4
|
||||
|
||||
divx491 divide 1e5 1e3 -> 1E+2
|
||||
divx492 divide 1e5 2e3 -> 5E+1
|
||||
divx493 divide 1e5 10e2 -> 1E+2
|
||||
divx494 divide 1e5 20e2 -> 5E+1
|
||||
divx495 divide 1e5 100e1 -> 1E+2
|
||||
divx496 divide 1e5 200e1 -> 5E+1
|
||||
|
||||
-- tryzeros cases
|
||||
precision: 7
|
||||
rounding: half_up
|
||||
maxExponent: 92
|
||||
minexponent: -92
|
||||
divx497 divide 0E+86 1000E-13 -> 0E+92 Clamped
|
||||
divx498 divide 0E-98 1000E+13 -> 0E-98 Clamped
|
||||
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
|
||||
-- focus on trailing zeros issues
|
||||
precision: 9
|
||||
divx500 divide 1 9.9 -> 0.101010101 Inexact Rounded
|
||||
precision: 8
|
||||
divx501 divide 1 9.9 -> 0.10101010 Inexact Rounded
|
||||
precision: 7
|
||||
divx502 divide 1 9.9 -> 0.1010101 Inexact Rounded
|
||||
precision: 6
|
||||
divx503 divide 1 9.9 -> 0.101010 Inexact Rounded
|
||||
precision: 9
|
||||
|
||||
divx511 divide 1 2 -> 0.5
|
||||
divx512 divide 1.0 2 -> 0.5
|
||||
divx513 divide 1.00 2 -> 0.50
|
||||
divx514 divide 1.000 2 -> 0.500
|
||||
divx515 divide 1.0000 2 -> 0.5000
|
||||
divx516 divide 1.00000 2 -> 0.50000
|
||||
divx517 divide 1.000000 2 -> 0.500000
|
||||
divx518 divide 1.0000000 2 -> 0.5000000
|
||||
divx519 divide 1.00 2.00 -> 0.5
|
||||
|
||||
divx521 divide 2 1 -> 2
|
||||
divx522 divide 2 1.0 -> 2
|
||||
divx523 divide 2 1.00 -> 2
|
||||
divx524 divide 2 1.000 -> 2
|
||||
divx525 divide 2 1.0000 -> 2
|
||||
divx526 divide 2 1.00000 -> 2
|
||||
divx527 divide 2 1.000000 -> 2
|
||||
divx528 divide 2 1.0000000 -> 2
|
||||
divx529 divide 2.00 1.00 -> 2
|
||||
|
||||
divx530 divide 2.40 2 -> 1.20
|
||||
divx531 divide 2.40 4 -> 0.60
|
||||
divx532 divide 2.40 10 -> 0.24
|
||||
divx533 divide 2.40 2.0 -> 1.2
|
||||
divx534 divide 2.40 4.0 -> 0.6
|
||||
divx535 divide 2.40 10.0 -> 0.24
|
||||
divx536 divide 2.40 2.00 -> 1.2
|
||||
divx537 divide 2.40 4.00 -> 0.6
|
||||
divx538 divide 2.40 10.00 -> 0.24
|
||||
divx539 divide 0.9 0.1 -> 9
|
||||
divx540 divide 0.9 0.01 -> 9E+1
|
||||
divx541 divide 0.9 0.001 -> 9E+2
|
||||
divx542 divide 5 2 -> 2.5
|
||||
divx543 divide 5 2.0 -> 2.5
|
||||
divx544 divide 5 2.00 -> 2.5
|
||||
divx545 divide 5 20 -> 0.25
|
||||
divx546 divide 5 20.0 -> 0.25
|
||||
divx547 divide 2.400 2 -> 1.200
|
||||
divx548 divide 2.400 2.0 -> 1.20
|
||||
divx549 divide 2.400 2.400 -> 1
|
||||
|
||||
divx550 divide 240 1 -> 240
|
||||
divx551 divide 240 10 -> 24
|
||||
divx552 divide 240 100 -> 2.4
|
||||
divx553 divide 240 1000 -> 0.24
|
||||
divx554 divide 2400 1 -> 2400
|
||||
divx555 divide 2400 10 -> 240
|
||||
divx556 divide 2400 100 -> 24
|
||||
divx557 divide 2400 1000 -> 2.4
|
||||
|
||||
-- +ve exponent
|
||||
precision: 5
|
||||
divx570 divide 2.4E+6 2 -> 1.2E+6
|
||||
divx571 divide 2.40E+6 2 -> 1.20E+6
|
||||
divx572 divide 2.400E+6 2 -> 1.200E+6
|
||||
divx573 divide 2.4000E+6 2 -> 1.2000E+6
|
||||
divx574 divide 24E+5 2 -> 1.2E+6
|
||||
divx575 divide 240E+4 2 -> 1.20E+6
|
||||
divx576 divide 2400E+3 2 -> 1.200E+6
|
||||
divx577 divide 24000E+2 2 -> 1.2000E+6
|
||||
precision: 6
|
||||
divx580 divide 2.4E+6 2 -> 1.2E+6
|
||||
divx581 divide 2.40E+6 2 -> 1.20E+6
|
||||
divx582 divide 2.400E+6 2 -> 1.200E+6
|
||||
divx583 divide 2.4000E+6 2 -> 1.2000E+6
|
||||
divx584 divide 24E+5 2 -> 1.2E+6
|
||||
divx585 divide 240E+4 2 -> 1.20E+6
|
||||
divx586 divide 2400E+3 2 -> 1.200E+6
|
||||
divx587 divide 24000E+2 2 -> 1.2000E+6
|
||||
precision: 7
|
||||
divx590 divide 2.4E+6 2 -> 1.2E+6
|
||||
divx591 divide 2.40E+6 2 -> 1.20E+6
|
||||
divx592 divide 2.400E+6 2 -> 1.200E+6
|
||||
divx593 divide 2.4000E+6 2 -> 1.2000E+6
|
||||
divx594 divide 24E+5 2 -> 1.2E+6
|
||||
divx595 divide 240E+4 2 -> 1.20E+6
|
||||
divx596 divide 2400E+3 2 -> 1.200E+6
|
||||
divx597 divide 24000E+2 2 -> 1.2000E+6
|
||||
precision: 9
|
||||
divx600 divide 2.4E+9 2 -> 1.2E+9
|
||||
divx601 divide 2.40E+9 2 -> 1.20E+9
|
||||
divx602 divide 2.400E+9 2 -> 1.200E+9
|
||||
divx603 divide 2.4000E+9 2 -> 1.2000E+9
|
||||
divx604 divide 24E+8 2 -> 1.2E+9
|
||||
divx605 divide 240E+7 2 -> 1.20E+9
|
||||
divx606 divide 2400E+6 2 -> 1.200E+9
|
||||
divx607 divide 24000E+5 2 -> 1.2000E+9
|
||||
|
||||
-- long operand triangle
|
||||
precision: 33
|
||||
divx610 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131097703792 Inexact Rounded
|
||||
precision: 32
|
||||
divx611 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813109770379 Inexact Rounded
|
||||
precision: 31
|
||||
divx612 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81310977038 Inexact Rounded
|
||||
precision: 30
|
||||
divx613 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131097704 Inexact Rounded
|
||||
precision: 29
|
||||
divx614 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813109770 Inexact Rounded
|
||||
precision: 28
|
||||
divx615 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81310977 Inexact Rounded
|
||||
precision: 27
|
||||
divx616 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131098 Inexact Rounded
|
||||
precision: 26
|
||||
divx617 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813110 Inexact Rounded
|
||||
precision: 25
|
||||
divx618 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81311 Inexact Rounded
|
||||
precision: 24
|
||||
divx619 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131 Inexact Rounded
|
||||
precision: 23
|
||||
divx620 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813 Inexact Rounded
|
||||
precision: 22
|
||||
divx621 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81 Inexact Rounded
|
||||
precision: 21
|
||||
divx622 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8 Inexact Rounded
|
||||
precision: 20
|
||||
divx623 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817798 Inexact Rounded
|
||||
precision: 19
|
||||
divx624 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888379681780E+19 Inexact Rounded
|
||||
precision: 18
|
||||
divx625 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088837968178E+19 Inexact Rounded
|
||||
precision: 17
|
||||
divx626 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408883796818E+19 Inexact Rounded
|
||||
precision: 16
|
||||
divx627 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888379682E+19 Inexact Rounded
|
||||
precision: 15
|
||||
divx628 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088837968E+19 Inexact Rounded
|
||||
precision: 14
|
||||
divx629 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408883797E+19 Inexact Rounded
|
||||
precision: 13
|
||||
divx630 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888380E+19 Inexact Rounded
|
||||
precision: 12
|
||||
divx631 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088838E+19 Inexact Rounded
|
||||
precision: 11
|
||||
divx632 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408884E+19 Inexact Rounded
|
||||
precision: 10
|
||||
divx633 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888E+19 Inexact Rounded
|
||||
precision: 9
|
||||
divx634 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114089E+19 Inexact Rounded
|
||||
precision: 8
|
||||
divx635 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011409E+19 Inexact Rounded
|
||||
precision: 7
|
||||
divx636 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101141E+19 Inexact Rounded
|
||||
precision: 6
|
||||
divx637 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114E+19 Inexact Rounded
|
||||
precision: 5
|
||||
divx638 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011E+19 Inexact Rounded
|
||||
precision: 4
|
||||
divx639 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101E+19 Inexact Rounded
|
||||
precision: 3
|
||||
divx640 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10E+19 Inexact Rounded
|
||||
precision: 2
|
||||
divx641 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1E+19 Inexact Rounded
|
||||
precision: 1
|
||||
divx642 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4E+19 Inexact Rounded
|
||||
|
||||
-- more zeros, etc.
|
||||
precision: 16
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minExponent: -383
|
||||
|
||||
divx731 divide 5.00 1E-3 -> 5.00E+3
|
||||
divx732 divide 00.00 0.000 -> NaN Division_undefined
|
||||
divx733 divide 00.00 0E-3 -> NaN Division_undefined
|
||||
divx734 divide 0 -0 -> NaN Division_undefined
|
||||
divx735 divide -0 0 -> NaN Division_undefined
|
||||
divx736 divide -0 -0 -> NaN Division_undefined
|
||||
|
||||
divx741 divide 0 -1 -> -0
|
||||
divx742 divide -0 -1 -> 0
|
||||
divx743 divide 0 1 -> 0
|
||||
divx744 divide -0 1 -> -0
|
||||
divx745 divide -1 0 -> -Infinity Division_by_zero
|
||||
divx746 divide -1 -0 -> Infinity Division_by_zero
|
||||
divx747 divide 1 0 -> Infinity Division_by_zero
|
||||
divx748 divide 1 -0 -> -Infinity Division_by_zero
|
||||
|
||||
divx751 divide 0.0 -1 -> -0.0
|
||||
divx752 divide -0.0 -1 -> 0.0
|
||||
divx753 divide 0.0 1 -> 0.0
|
||||
divx754 divide -0.0 1 -> -0.0
|
||||
divx755 divide -1.0 0 -> -Infinity Division_by_zero
|
||||
divx756 divide -1.0 -0 -> Infinity Division_by_zero
|
||||
divx757 divide 1.0 0 -> Infinity Division_by_zero
|
||||
divx758 divide 1.0 -0 -> -Infinity Division_by_zero
|
||||
|
||||
divx761 divide 0 -1.0 -> -0E+1
|
||||
divx762 divide -0 -1.0 -> 0E+1
|
||||
divx763 divide 0 1.0 -> 0E+1
|
||||
divx764 divide -0 1.0 -> -0E+1
|
||||
divx765 divide -1 0.0 -> -Infinity Division_by_zero
|
||||
divx766 divide -1 -0.0 -> Infinity Division_by_zero
|
||||
divx767 divide 1 0.0 -> Infinity Division_by_zero
|
||||
divx768 divide 1 -0.0 -> -Infinity Division_by_zero
|
||||
|
||||
divx771 divide 0.0 -1.0 -> -0
|
||||
divx772 divide -0.0 -1.0 -> 0
|
||||
divx773 divide 0.0 1.0 -> 0
|
||||
divx774 divide -0.0 1.0 -> -0
|
||||
divx775 divide -1.0 0.0 -> -Infinity Division_by_zero
|
||||
divx776 divide -1.0 -0.0 -> Infinity Division_by_zero
|
||||
divx777 divide 1.0 0.0 -> Infinity Division_by_zero
|
||||
divx778 divide 1.0 -0.0 -> -Infinity Division_by_zero
|
||||
|
||||
-- Specials
|
||||
divx780 divide Inf -Inf -> NaN Invalid_operation
|
||||
divx781 divide Inf -1000 -> -Infinity
|
||||
divx782 divide Inf -1 -> -Infinity
|
||||
divx783 divide Inf -0 -> -Infinity
|
||||
divx784 divide Inf 0 -> Infinity
|
||||
divx785 divide Inf 1 -> Infinity
|
||||
divx786 divide Inf 1000 -> Infinity
|
||||
divx787 divide Inf Inf -> NaN Invalid_operation
|
||||
divx788 divide -1000 Inf -> -0E-398 Clamped
|
||||
divx789 divide -Inf Inf -> NaN Invalid_operation
|
||||
divx790 divide -1 Inf -> -0E-398 Clamped
|
||||
divx791 divide -0 Inf -> -0E-398 Clamped
|
||||
divx792 divide 0 Inf -> 0E-398 Clamped
|
||||
divx793 divide 1 Inf -> 0E-398 Clamped
|
||||
divx794 divide 1000 Inf -> 0E-398 Clamped
|
||||
divx795 divide Inf Inf -> NaN Invalid_operation
|
||||
|
||||
divx800 divide -Inf -Inf -> NaN Invalid_operation
|
||||
divx801 divide -Inf -1000 -> Infinity
|
||||
divx802 divide -Inf -1 -> Infinity
|
||||
divx803 divide -Inf -0 -> Infinity
|
||||
divx804 divide -Inf 0 -> -Infinity
|
||||
divx805 divide -Inf 1 -> -Infinity
|
||||
divx806 divide -Inf 1000 -> -Infinity
|
||||
divx807 divide -Inf Inf -> NaN Invalid_operation
|
||||
divx808 divide -1000 Inf -> -0E-398 Clamped
|
||||
divx809 divide -Inf -Inf -> NaN Invalid_operation
|
||||
divx810 divide -1 -Inf -> 0E-398 Clamped
|
||||
divx811 divide -0 -Inf -> 0E-398 Clamped
|
||||
divx812 divide 0 -Inf -> -0E-398 Clamped
|
||||
divx813 divide 1 -Inf -> -0E-398 Clamped
|
||||
divx814 divide 1000 -Inf -> -0E-398 Clamped
|
||||
divx815 divide Inf -Inf -> NaN Invalid_operation
|
||||
|
||||
divx821 divide NaN -Inf -> NaN
|
||||
divx822 divide NaN -1000 -> NaN
|
||||
divx823 divide NaN -1 -> NaN
|
||||
divx824 divide NaN -0 -> NaN
|
||||
divx825 divide NaN 0 -> NaN
|
||||
divx826 divide NaN 1 -> NaN
|
||||
divx827 divide NaN 1000 -> NaN
|
||||
divx828 divide NaN Inf -> NaN
|
||||
divx829 divide NaN NaN -> NaN
|
||||
divx830 divide -Inf NaN -> NaN
|
||||
divx831 divide -1000 NaN -> NaN
|
||||
divx832 divide -1 NaN -> NaN
|
||||
divx833 divide -0 NaN -> NaN
|
||||
divx834 divide 0 NaN -> NaN
|
||||
divx835 divide 1 NaN -> NaN
|
||||
divx836 divide 1000 NaN -> NaN
|
||||
divx837 divide Inf NaN -> NaN
|
||||
|
||||
divx841 divide sNaN -Inf -> NaN Invalid_operation
|
||||
divx842 divide sNaN -1000 -> NaN Invalid_operation
|
||||
divx843 divide sNaN -1 -> NaN Invalid_operation
|
||||
divx844 divide sNaN -0 -> NaN Invalid_operation
|
||||
divx845 divide sNaN 0 -> NaN Invalid_operation
|
||||
divx846 divide sNaN 1 -> NaN Invalid_operation
|
||||
divx847 divide sNaN 1000 -> NaN Invalid_operation
|
||||
divx848 divide sNaN NaN -> NaN Invalid_operation
|
||||
divx849 divide sNaN sNaN -> NaN Invalid_operation
|
||||
divx850 divide NaN sNaN -> NaN Invalid_operation
|
||||
divx851 divide -Inf sNaN -> NaN Invalid_operation
|
||||
divx852 divide -1000 sNaN -> NaN Invalid_operation
|
||||
divx853 divide -1 sNaN -> NaN Invalid_operation
|
||||
divx854 divide -0 sNaN -> NaN Invalid_operation
|
||||
divx855 divide 0 sNaN -> NaN Invalid_operation
|
||||
divx856 divide 1 sNaN -> NaN Invalid_operation
|
||||
divx857 divide 1000 sNaN -> NaN Invalid_operation
|
||||
divx858 divide Inf sNaN -> NaN Invalid_operation
|
||||
divx859 divide NaN sNaN -> NaN Invalid_operation
|
||||
|
||||
-- propagating NaNs
|
||||
divx861 divide NaN9 -Inf -> NaN9
|
||||
divx862 divide NaN8 1000 -> NaN8
|
||||
divx863 divide NaN7 Inf -> NaN7
|
||||
divx864 divide NaN6 NaN5 -> NaN6
|
||||
divx865 divide -Inf NaN4 -> NaN4
|
||||
divx866 divide -1000 NaN3 -> NaN3
|
||||
divx867 divide Inf NaN2 -> NaN2
|
||||
|
||||
divx871 divide sNaN99 -Inf -> NaN99 Invalid_operation
|
||||
divx872 divide sNaN98 -1 -> NaN98 Invalid_operation
|
||||
divx873 divide sNaN97 NaN -> NaN97 Invalid_operation
|
||||
divx874 divide sNaN96 sNaN94 -> NaN96 Invalid_operation
|
||||
divx875 divide NaN95 sNaN93 -> NaN93 Invalid_operation
|
||||
divx876 divide -Inf sNaN92 -> NaN92 Invalid_operation
|
||||
divx877 divide 0 sNaN91 -> NaN91 Invalid_operation
|
||||
divx878 divide Inf sNaN90 -> NaN90 Invalid_operation
|
||||
divx879 divide NaN sNaN89 -> NaN89 Invalid_operation
|
||||
|
||||
divx881 divide -NaN9 -Inf -> -NaN9
|
||||
divx882 divide -NaN8 1000 -> -NaN8
|
||||
divx883 divide -NaN7 Inf -> -NaN7
|
||||
divx884 divide -NaN6 -NaN5 -> -NaN6
|
||||
divx885 divide -Inf -NaN4 -> -NaN4
|
||||
divx886 divide -1000 -NaN3 -> -NaN3
|
||||
divx887 divide Inf -NaN2 -> -NaN2
|
||||
|
||||
divx891 divide -sNaN99 -Inf -> -NaN99 Invalid_operation
|
||||
divx892 divide -sNaN98 -1 -> -NaN98 Invalid_operation
|
||||
divx893 divide -sNaN97 NaN -> -NaN97 Invalid_operation
|
||||
divx894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation
|
||||
divx895 divide -NaN95 -sNaN93 -> -NaN93 Invalid_operation
|
||||
divx896 divide -Inf -sNaN92 -> -NaN92 Invalid_operation
|
||||
divx897 divide 0 -sNaN91 -> -NaN91 Invalid_operation
|
||||
divx898 divide Inf -sNaN90 -> -NaN90 Invalid_operation
|
||||
divx899 divide -NaN -sNaN89 -> -NaN89 Invalid_operation
|
||||
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
|
||||
-- Various flavours of divide by 0
|
||||
divx901 divide 0 0 -> NaN Division_undefined
|
||||
divx902 divide 0.0E5 0 -> NaN Division_undefined
|
||||
divx903 divide 0.000 0 -> NaN Division_undefined
|
||||
divx904 divide 0.0001 0 -> Infinity Division_by_zero
|
||||
divx905 divide 0.01 0 -> Infinity Division_by_zero
|
||||
divx906 divide 0.1 0 -> Infinity Division_by_zero
|
||||
divx907 divide 1 0 -> Infinity Division_by_zero
|
||||
divx908 divide 1 0.0 -> Infinity Division_by_zero
|
||||
divx909 divide 10 0.0 -> Infinity Division_by_zero
|
||||
divx910 divide 1E+100 0.0 -> Infinity Division_by_zero
|
||||
divx911 divide 1E+1000 0 -> Infinity Division_by_zero
|
||||
|
||||
divx921 divide -0.0001 0 -> -Infinity Division_by_zero
|
||||
divx922 divide -0.01 0 -> -Infinity Division_by_zero
|
||||
divx923 divide -0.1 0 -> -Infinity Division_by_zero
|
||||
divx924 divide -1 0 -> -Infinity Division_by_zero
|
||||
divx925 divide -1 0.0 -> -Infinity Division_by_zero
|
||||
divx926 divide -10 0.0 -> -Infinity Division_by_zero
|
||||
divx927 divide -1E+100 0.0 -> -Infinity Division_by_zero
|
||||
divx928 divide -1E+1000 0 -> -Infinity Division_by_zero
|
||||
|
||||
divx931 divide 0.0001 -0 -> -Infinity Division_by_zero
|
||||
divx932 divide 0.01 -0 -> -Infinity Division_by_zero
|
||||
divx933 divide 0.1 -0 -> -Infinity Division_by_zero
|
||||
divx934 divide 1 -0 -> -Infinity Division_by_zero
|
||||
divx935 divide 1 -0.0 -> -Infinity Division_by_zero
|
||||
divx936 divide 10 -0.0 -> -Infinity Division_by_zero
|
||||
divx937 divide 1E+100 -0.0 -> -Infinity Division_by_zero
|
||||
divx938 divide 1E+1000 -0 -> -Infinity Division_by_zero
|
||||
|
||||
divx941 divide -0.0001 -0 -> Infinity Division_by_zero
|
||||
divx942 divide -0.01 -0 -> Infinity Division_by_zero
|
||||
divx943 divide -0.1 -0 -> Infinity Division_by_zero
|
||||
divx944 divide -1 -0 -> Infinity Division_by_zero
|
||||
divx945 divide -1 -0.0 -> Infinity Division_by_zero
|
||||
divx946 divide -10 -0.0 -> Infinity Division_by_zero
|
||||
divx947 divide -1E+100 -0.0 -> Infinity Division_by_zero
|
||||
divx948 divide -1E+1000 -0 -> Infinity Division_by_zero
|
||||
|
||||
-- overflow and underflow tests
|
||||
precision: 9
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
divx951 divide 9E+999999999 +0.23456789012345E-0 -> Infinity Inexact Overflow Rounded
|
||||
divx952 divide +0.100 9E+999999999 -> 1.111111E-1000000001 Inexact Rounded Underflow Subnormal
|
||||
divx953 divide 9E-999999999 +9.100 -> 9.8901099E-1000000000 Inexact Rounded Underflow Subnormal
|
||||
divx954 divide -1.23456789 9E+999999999 -> -1.3717421E-1000000000 Subnormal
|
||||
divx955 divide -1.23456789012345E-0 9E+999999999 -> -1.3717421E-1000000000 Underflow Subnormal Rounded Inexact
|
||||
divx956 divide -1.23456789012345E-0 7E+999999999 -> -1.7636684E-1000000000 Inexact Rounded Underflow Subnormal
|
||||
divx957 divide 9E+999999999 -0.83456789012345E-0 -> -Infinity Inexact Overflow Rounded
|
||||
divx958 divide -0.100 9E+999999999 -> -1.111111E-1000000001 Subnormal Inexact Rounded Underflow
|
||||
divx959 divide 9E-999999999 -9.100 -> -9.8901099E-1000000000 Inexact Rounded Underflow Subnormal
|
||||
|
||||
-- overflow and underflow (additional edge tests in multiply.decTest)
|
||||
-- 'subnormal' results now possible (all hard underflow or overflow in
|
||||
-- base arithemtic)
|
||||
divx960 divide 1e-600000000 1e+400000001 -> 1E-1000000001 Subnormal
|
||||
divx961 divide 1e-600000000 1e+400000002 -> 1E-1000000002 Subnormal
|
||||
divx962 divide 1e-600000000 1e+400000003 -> 1E-1000000003 Subnormal
|
||||
divx963 divide 1e-600000000 1e+400000004 -> 1E-1000000004 Subnormal
|
||||
divx964 divide 1e-600000000 1e+400000005 -> 1E-1000000005 Subnormal
|
||||
divx965 divide 1e-600000000 1e+400000006 -> 1E-1000000006 Subnormal
|
||||
divx966 divide 1e-600000000 1e+400000007 -> 1E-1000000007 Subnormal
|
||||
divx967 divide 1e-600000000 1e+400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
divx968 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
divx969 divide 1e-600000000 1e+400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
-- [no equivalent of 'subnormal' for overflow]
|
||||
divx970 divide 1e+600000000 1e-400000001 -> Infinity Overflow Inexact Rounded
|
||||
divx971 divide 1e+600000000 1e-400000002 -> Infinity Overflow Inexact Rounded
|
||||
divx972 divide 1e+600000000 1e-400000003 -> Infinity Overflow Inexact Rounded
|
||||
divx973 divide 1e+600000000 1e-400000004 -> Infinity Overflow Inexact Rounded
|
||||
divx974 divide 1e+600000000 1e-400000005 -> Infinity Overflow Inexact Rounded
|
||||
divx975 divide 1e+600000000 1e-400000006 -> Infinity Overflow Inexact Rounded
|
||||
divx976 divide 1e+600000000 1e-400000007 -> Infinity Overflow Inexact Rounded
|
||||
divx977 divide 1e+600000000 1e-400000008 -> Infinity Overflow Inexact Rounded
|
||||
divx978 divide 1e+600000000 1e-400000009 -> Infinity Overflow Inexact Rounded
|
||||
divx979 divide 1e+600000000 1e-400000010 -> Infinity Overflow Inexact Rounded
|
||||
|
||||
-- Sign after overflow and underflow
|
||||
divx980 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
divx981 divide 1e-600000000 -1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
divx982 divide -1e-600000000 1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
divx983 divide -1e-600000000 -1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
divx984 divide 1e+600000000 1e-400000009 -> Infinity Overflow Inexact Rounded
|
||||
divx985 divide 1e+600000000 -1e-400000009 -> -Infinity Overflow Inexact Rounded
|
||||
divx986 divide -1e+600000000 1e-400000009 -> -Infinity Overflow Inexact Rounded
|
||||
divx987 divide -1e+600000000 -1e-400000009 -> Infinity Overflow Inexact Rounded
|
||||
|
||||
-- Long operand overflow may be a different path
|
||||
precision: 3
|
||||
divx990 divide 1000 9.999E-999999999 -> Infinity Inexact Overflow Rounded
|
||||
divx991 divide 1000 -9.999E-999999999 -> -Infinity Inexact Overflow Rounded
|
||||
divx992 divide 9.999E+999999999 0.01 -> Infinity Inexact Overflow Rounded
|
||||
divx993 divide -9.999E+999999999 0.01 -> -Infinity Inexact Overflow Rounded
|
||||
|
||||
-- check for double-rounded subnormals
|
||||
precision: 5
|
||||
maxexponent: 79
|
||||
minexponent: -79
|
||||
divx1001 divide 1.52444E-80 1 -> 1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
divx1002 divide 1.52445E-80 1 -> 1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
divx1003 divide 1.52446E-80 1 -> 1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
|
||||
-- a rounding problem in one implementation
|
||||
precision: 34
|
||||
rounding: half_up
|
||||
maxExponent: 6144
|
||||
minExponent: -6143
|
||||
-- Unbounded answer to 40 digits:
|
||||
-- 1.465811965811965811965811965811965811966E+7000
|
||||
divx1010 divide 343E6000 234E-1000 -> Infinity Overflow Inexact Rounded
|
||||
|
||||
-- Null tests
|
||||
divx9998 divide 10 # -> NaN Invalid_operation
|
||||
divx9999 divide # 10 -> NaN Invalid_operation
|
||||
|
|
@ -0,0 +1,470 @@
|
|||
------------------------------------------------------------------------
|
||||
-- divideint.decTest -- decimal integer division --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
|
||||
dvix001 divideint 1 1 -> 1
|
||||
dvix002 divideint 2 1 -> 2
|
||||
dvix003 divideint 1 2 -> 0
|
||||
dvix004 divideint 2 2 -> 1
|
||||
dvix005 divideint 0 1 -> 0
|
||||
dvix006 divideint 0 2 -> 0
|
||||
dvix007 divideint 1 3 -> 0
|
||||
dvix008 divideint 2 3 -> 0
|
||||
dvix009 divideint 3 3 -> 1
|
||||
|
||||
dvix010 divideint 2.4 1 -> 2
|
||||
dvix011 divideint 2.4 -1 -> -2
|
||||
dvix012 divideint -2.4 1 -> -2
|
||||
dvix013 divideint -2.4 -1 -> 2
|
||||
dvix014 divideint 2.40 1 -> 2
|
||||
dvix015 divideint 2.400 1 -> 2
|
||||
dvix016 divideint 2.4 2 -> 1
|
||||
dvix017 divideint 2.400 2 -> 1
|
||||
dvix018 divideint 2. 2 -> 1
|
||||
dvix019 divideint 20 20 -> 1
|
||||
|
||||
dvix020 divideint 187 187 -> 1
|
||||
dvix021 divideint 5 2 -> 2
|
||||
dvix022 divideint 5 2.0 -> 2
|
||||
dvix023 divideint 5 2.000 -> 2
|
||||
dvix024 divideint 5 0.200 -> 25
|
||||
dvix025 divideint 5 0.200 -> 25
|
||||
|
||||
dvix030 divideint 1 2 -> 0
|
||||
dvix031 divideint 1 4 -> 0
|
||||
dvix032 divideint 1 8 -> 0
|
||||
dvix033 divideint 1 16 -> 0
|
||||
dvix034 divideint 1 32 -> 0
|
||||
dvix035 divideint 1 64 -> 0
|
||||
dvix040 divideint 1 -2 -> -0
|
||||
dvix041 divideint 1 -4 -> -0
|
||||
dvix042 divideint 1 -8 -> -0
|
||||
dvix043 divideint 1 -16 -> -0
|
||||
dvix044 divideint 1 -32 -> -0
|
||||
dvix045 divideint 1 -64 -> -0
|
||||
dvix050 divideint -1 2 -> -0
|
||||
dvix051 divideint -1 4 -> -0
|
||||
dvix052 divideint -1 8 -> -0
|
||||
dvix053 divideint -1 16 -> -0
|
||||
dvix054 divideint -1 32 -> -0
|
||||
dvix055 divideint -1 64 -> -0
|
||||
dvix060 divideint -1 -2 -> 0
|
||||
dvix061 divideint -1 -4 -> 0
|
||||
dvix062 divideint -1 -8 -> 0
|
||||
dvix063 divideint -1 -16 -> 0
|
||||
dvix064 divideint -1 -32 -> 0
|
||||
dvix065 divideint -1 -64 -> 0
|
||||
|
||||
-- similar with powers of ten
|
||||
dvix160 divideint 1 1 -> 1
|
||||
dvix161 divideint 1 10 -> 0
|
||||
dvix162 divideint 1 100 -> 0
|
||||
dvix163 divideint 1 1000 -> 0
|
||||
dvix164 divideint 1 10000 -> 0
|
||||
dvix165 divideint 1 100000 -> 0
|
||||
dvix166 divideint 1 1000000 -> 0
|
||||
dvix167 divideint 1 10000000 -> 0
|
||||
dvix168 divideint 1 100000000 -> 0
|
||||
dvix170 divideint 1 -1 -> -1
|
||||
dvix171 divideint 1 -10 -> -0
|
||||
dvix172 divideint 1 -100 -> -0
|
||||
dvix173 divideint 1 -1000 -> -0
|
||||
dvix174 divideint 1 -10000 -> -0
|
||||
dvix175 divideint 1 -100000 -> -0
|
||||
dvix176 divideint 1 -1000000 -> -0
|
||||
dvix177 divideint 1 -10000000 -> -0
|
||||
dvix178 divideint 1 -100000000 -> -0
|
||||
dvix180 divideint -1 1 -> -1
|
||||
dvix181 divideint -1 10 -> -0
|
||||
dvix182 divideint -1 100 -> -0
|
||||
dvix183 divideint -1 1000 -> -0
|
||||
dvix184 divideint -1 10000 -> -0
|
||||
dvix185 divideint -1 100000 -> -0
|
||||
dvix186 divideint -1 1000000 -> -0
|
||||
dvix187 divideint -1 10000000 -> -0
|
||||
dvix188 divideint -1 100000000 -> -0
|
||||
dvix190 divideint -1 -1 -> 1
|
||||
dvix191 divideint -1 -10 -> 0
|
||||
dvix192 divideint -1 -100 -> 0
|
||||
dvix193 divideint -1 -1000 -> 0
|
||||
dvix194 divideint -1 -10000 -> 0
|
||||
dvix195 divideint -1 -100000 -> 0
|
||||
dvix196 divideint -1 -1000000 -> 0
|
||||
dvix197 divideint -1 -10000000 -> 0
|
||||
dvix198 divideint -1 -100000000 -> 0
|
||||
|
||||
-- some long operand cases here
|
||||
dvix070 divideint 999999999 1 -> 999999999
|
||||
dvix071 divideint 999999999.4 1 -> 999999999
|
||||
dvix072 divideint 999999999.5 1 -> 999999999
|
||||
dvix073 divideint 999999999.9 1 -> 999999999
|
||||
dvix074 divideint 999999999.999 1 -> 999999999
|
||||
precision: 6
|
||||
dvix080 divideint 999999999 1 -> NaN Division_impossible
|
||||
dvix081 divideint 99999999 1 -> NaN Division_impossible
|
||||
dvix082 divideint 9999999 1 -> NaN Division_impossible
|
||||
dvix083 divideint 999999 1 -> 999999
|
||||
dvix084 divideint 99999 1 -> 99999
|
||||
dvix085 divideint 9999 1 -> 9999
|
||||
dvix086 divideint 999 1 -> 999
|
||||
dvix087 divideint 99 1 -> 99
|
||||
dvix088 divideint 9 1 -> 9
|
||||
|
||||
precision: 9
|
||||
dvix090 divideint 0. 1 -> 0
|
||||
dvix091 divideint .0 1 -> 0
|
||||
dvix092 divideint 0.00 1 -> 0
|
||||
dvix093 divideint 0.00E+9 1 -> 0
|
||||
dvix094 divideint 0.0000E-50 1 -> 0
|
||||
|
||||
dvix100 divideint 1 1 -> 1
|
||||
dvix101 divideint 1 2 -> 0
|
||||
dvix102 divideint 1 3 -> 0
|
||||
dvix103 divideint 1 4 -> 0
|
||||
dvix104 divideint 1 5 -> 0
|
||||
dvix105 divideint 1 6 -> 0
|
||||
dvix106 divideint 1 7 -> 0
|
||||
dvix107 divideint 1 8 -> 0
|
||||
dvix108 divideint 1 9 -> 0
|
||||
dvix109 divideint 1 10 -> 0
|
||||
dvix110 divideint 1 1 -> 1
|
||||
dvix111 divideint 2 1 -> 2
|
||||
dvix112 divideint 3 1 -> 3
|
||||
dvix113 divideint 4 1 -> 4
|
||||
dvix114 divideint 5 1 -> 5
|
||||
dvix115 divideint 6 1 -> 6
|
||||
dvix116 divideint 7 1 -> 7
|
||||
dvix117 divideint 8 1 -> 8
|
||||
dvix118 divideint 9 1 -> 9
|
||||
dvix119 divideint 10 1 -> 10
|
||||
|
||||
-- from DiagBigDecimal
|
||||
dvix131 divideint 101.3 1 -> 101
|
||||
dvix132 divideint 101.0 1 -> 101
|
||||
dvix133 divideint 101.3 3 -> 33
|
||||
dvix134 divideint 101.0 3 -> 33
|
||||
dvix135 divideint 2.4 1 -> 2
|
||||
dvix136 divideint 2.400 1 -> 2
|
||||
dvix137 divideint 18 18 -> 1
|
||||
dvix138 divideint 1120 1000 -> 1
|
||||
dvix139 divideint 2.4 2 -> 1
|
||||
dvix140 divideint 2.400 2 -> 1
|
||||
dvix141 divideint 0.5 2.000 -> 0
|
||||
dvix142 divideint 8.005 7 -> 1
|
||||
dvix143 divideint 5 2 -> 2
|
||||
dvix144 divideint 0 2 -> 0
|
||||
dvix145 divideint 0.00 2 -> 0
|
||||
|
||||
-- Others
|
||||
dvix150 divideint 12345 4.999 -> 2469
|
||||
dvix151 divideint 12345 4.99 -> 2473
|
||||
dvix152 divideint 12345 4.9 -> 2519
|
||||
dvix153 divideint 12345 5 -> 2469
|
||||
dvix154 divideint 12345 5.1 -> 2420
|
||||
dvix155 divideint 12345 5.01 -> 2464
|
||||
dvix156 divideint 12345 5.001 -> 2468
|
||||
dvix157 divideint 101 7.6 -> 13
|
||||
|
||||
-- Various flavours of divideint by 0
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
dvix201 divideint 0 0 -> NaN Division_undefined
|
||||
dvix202 divideint 0.0E5 0 -> NaN Division_undefined
|
||||
dvix203 divideint 0.000 0 -> NaN Division_undefined
|
||||
dvix204 divideint 0.0001 0 -> Infinity Division_by_zero
|
||||
dvix205 divideint 0.01 0 -> Infinity Division_by_zero
|
||||
dvix206 divideint 0.1 0 -> Infinity Division_by_zero
|
||||
dvix207 divideint 1 0 -> Infinity Division_by_zero
|
||||
dvix208 divideint 1 0.0 -> Infinity Division_by_zero
|
||||
dvix209 divideint 10 0.0 -> Infinity Division_by_zero
|
||||
dvix210 divideint 1E+100 0.0 -> Infinity Division_by_zero
|
||||
dvix211 divideint 1E+1000 0 -> Infinity Division_by_zero
|
||||
dvix214 divideint -0.0001 0 -> -Infinity Division_by_zero
|
||||
dvix215 divideint -0.01 0 -> -Infinity Division_by_zero
|
||||
dvix216 divideint -0.1 0 -> -Infinity Division_by_zero
|
||||
dvix217 divideint -1 0 -> -Infinity Division_by_zero
|
||||
dvix218 divideint -1 0.0 -> -Infinity Division_by_zero
|
||||
dvix219 divideint -10 0.0 -> -Infinity Division_by_zero
|
||||
dvix220 divideint -1E+100 0.0 -> -Infinity Division_by_zero
|
||||
dvix221 divideint -1E+1000 0 -> -Infinity Division_by_zero
|
||||
|
||||
-- test some cases that are close to exponent overflow
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
dvix270 divideint 1 1e999999999 -> 0
|
||||
dvix271 divideint 1 0.9e999999999 -> 0
|
||||
dvix272 divideint 1 0.99e999999999 -> 0
|
||||
dvix273 divideint 1 0.999999999e999999999 -> 0
|
||||
dvix274 divideint 9e999999999 1 -> NaN Division_impossible
|
||||
dvix275 divideint 9.9e999999999 1 -> NaN Division_impossible
|
||||
dvix276 divideint 9.99e999999999 1 -> NaN Division_impossible
|
||||
dvix277 divideint 9.99999999e999999999 1 -> NaN Division_impossible
|
||||
|
||||
dvix280 divideint 0.1 9e-999999999 -> NaN Division_impossible
|
||||
dvix281 divideint 0.1 99e-999999999 -> NaN Division_impossible
|
||||
dvix282 divideint 0.1 999e-999999999 -> NaN Division_impossible
|
||||
|
||||
dvix283 divideint 0.1 9e-999999998 -> NaN Division_impossible
|
||||
dvix284 divideint 0.1 99e-999999998 -> NaN Division_impossible
|
||||
dvix285 divideint 0.1 999e-999999998 -> NaN Division_impossible
|
||||
dvix286 divideint 0.1 999e-999999997 -> NaN Division_impossible
|
||||
dvix287 divideint 0.1 9999e-999999997 -> NaN Division_impossible
|
||||
dvix288 divideint 0.1 99999e-999999997 -> NaN Division_impossible
|
||||
|
||||
|
||||
-- overflow and underflow tests [from divide]
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
dvix330 divideint +1.23456789012345E-0 9E+999999999 -> 0
|
||||
dvix331 divideint 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
|
||||
dvix332 divideint +0.100 9E+999999999 -> 0
|
||||
dvix333 divideint 9E-999999999 +9.100 -> 0
|
||||
dvix335 divideint -1.23456789012345E-0 9E+999999999 -> -0
|
||||
dvix336 divideint 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
|
||||
dvix337 divideint -0.100 9E+999999999 -> -0
|
||||
dvix338 divideint 9E-999999999 -9.100 -> -0
|
||||
|
||||
-- long operand checks
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
dvix401 divideint 12345678000 100 -> 123456780
|
||||
dvix402 divideint 1 12345678000 -> 0
|
||||
dvix403 divideint 1234567800 10 -> 123456780
|
||||
dvix404 divideint 1 1234567800 -> 0
|
||||
dvix405 divideint 1234567890 10 -> 123456789
|
||||
dvix406 divideint 1 1234567890 -> 0
|
||||
dvix407 divideint 1234567891 10 -> 123456789
|
||||
dvix408 divideint 1 1234567891 -> 0
|
||||
dvix409 divideint 12345678901 100 -> 123456789
|
||||
dvix410 divideint 1 12345678901 -> 0
|
||||
dvix411 divideint 1234567896 10 -> 123456789
|
||||
dvix412 divideint 1 1234567896 -> 0
|
||||
dvix413 divideint 12345678948 100 -> 123456789
|
||||
dvix414 divideint 12345678949 100 -> 123456789
|
||||
dvix415 divideint 12345678950 100 -> 123456789
|
||||
dvix416 divideint 12345678951 100 -> 123456789
|
||||
dvix417 divideint 12345678999 100 -> 123456789
|
||||
|
||||
precision: 15
|
||||
dvix441 divideint 12345678000 1 -> 12345678000
|
||||
dvix442 divideint 1 12345678000 -> 0
|
||||
dvix443 divideint 1234567800 1 -> 1234567800
|
||||
dvix444 divideint 1 1234567800 -> 0
|
||||
dvix445 divideint 1234567890 1 -> 1234567890
|
||||
dvix446 divideint 1 1234567890 -> 0
|
||||
dvix447 divideint 1234567891 1 -> 1234567891
|
||||
dvix448 divideint 1 1234567891 -> 0
|
||||
dvix449 divideint 12345678901 1 -> 12345678901
|
||||
dvix450 divideint 1 12345678901 -> 0
|
||||
dvix451 divideint 1234567896 1 -> 1234567896
|
||||
dvix452 divideint 1 1234567896 -> 0
|
||||
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
|
||||
-- more zeros, etc.
|
||||
dvix531 divideint 5.00 1E-3 -> 5000
|
||||
dvix532 divideint 00.00 0.000 -> NaN Division_undefined
|
||||
dvix533 divideint 00.00 0E-3 -> NaN Division_undefined
|
||||
dvix534 divideint 0 -0 -> NaN Division_undefined
|
||||
dvix535 divideint -0 0 -> NaN Division_undefined
|
||||
dvix536 divideint -0 -0 -> NaN Division_undefined
|
||||
|
||||
dvix541 divideint 0 -1 -> -0
|
||||
dvix542 divideint -0 -1 -> 0
|
||||
dvix543 divideint 0 1 -> 0
|
||||
dvix544 divideint -0 1 -> -0
|
||||
dvix545 divideint -1 0 -> -Infinity Division_by_zero
|
||||
dvix546 divideint -1 -0 -> Infinity Division_by_zero
|
||||
dvix547 divideint 1 0 -> Infinity Division_by_zero
|
||||
dvix548 divideint 1 -0 -> -Infinity Division_by_zero
|
||||
|
||||
dvix551 divideint 0.0 -1 -> -0
|
||||
dvix552 divideint -0.0 -1 -> 0
|
||||
dvix553 divideint 0.0 1 -> 0
|
||||
dvix554 divideint -0.0 1 -> -0
|
||||
dvix555 divideint -1.0 0 -> -Infinity Division_by_zero
|
||||
dvix556 divideint -1.0 -0 -> Infinity Division_by_zero
|
||||
dvix557 divideint 1.0 0 -> Infinity Division_by_zero
|
||||
dvix558 divideint 1.0 -0 -> -Infinity Division_by_zero
|
||||
|
||||
dvix561 divideint 0 -1.0 -> -0
|
||||
dvix562 divideint -0 -1.0 -> 0
|
||||
dvix563 divideint 0 1.0 -> 0
|
||||
dvix564 divideint -0 1.0 -> -0
|
||||
dvix565 divideint -1 0.0 -> -Infinity Division_by_zero
|
||||
dvix566 divideint -1 -0.0 -> Infinity Division_by_zero
|
||||
dvix567 divideint 1 0.0 -> Infinity Division_by_zero
|
||||
dvix568 divideint 1 -0.0 -> -Infinity Division_by_zero
|
||||
|
||||
dvix571 divideint 0.0 -1.0 -> -0
|
||||
dvix572 divideint -0.0 -1.0 -> 0
|
||||
dvix573 divideint 0.0 1.0 -> 0
|
||||
dvix574 divideint -0.0 1.0 -> -0
|
||||
dvix575 divideint -1.0 0.0 -> -Infinity Division_by_zero
|
||||
dvix576 divideint -1.0 -0.0 -> Infinity Division_by_zero
|
||||
dvix577 divideint 1.0 0.0 -> Infinity Division_by_zero
|
||||
dvix578 divideint 1.0 -0.0 -> -Infinity Division_by_zero
|
||||
|
||||
-- Specials
|
||||
dvix580 divideint Inf -Inf -> NaN Invalid_operation
|
||||
dvix581 divideint Inf -1000 -> -Infinity
|
||||
dvix582 divideint Inf -1 -> -Infinity
|
||||
dvix583 divideint Inf -0 -> -Infinity
|
||||
dvix584 divideint Inf 0 -> Infinity
|
||||
dvix585 divideint Inf 1 -> Infinity
|
||||
dvix586 divideint Inf 1000 -> Infinity
|
||||
dvix587 divideint Inf Inf -> NaN Invalid_operation
|
||||
dvix588 divideint -1000 Inf -> -0
|
||||
dvix589 divideint -Inf Inf -> NaN Invalid_operation
|
||||
dvix590 divideint -1 Inf -> -0
|
||||
dvix591 divideint -0 Inf -> -0
|
||||
dvix592 divideint 0 Inf -> 0
|
||||
dvix593 divideint 1 Inf -> 0
|
||||
dvix594 divideint 1000 Inf -> 0
|
||||
dvix595 divideint Inf Inf -> NaN Invalid_operation
|
||||
|
||||
dvix600 divideint -Inf -Inf -> NaN Invalid_operation
|
||||
dvix601 divideint -Inf -1000 -> Infinity
|
||||
dvix602 divideint -Inf -1 -> Infinity
|
||||
dvix603 divideint -Inf -0 -> Infinity
|
||||
dvix604 divideint -Inf 0 -> -Infinity
|
||||
dvix605 divideint -Inf 1 -> -Infinity
|
||||
dvix606 divideint -Inf 1000 -> -Infinity
|
||||
dvix607 divideint -Inf Inf -> NaN Invalid_operation
|
||||
dvix608 divideint -1000 Inf -> -0
|
||||
dvix609 divideint -Inf -Inf -> NaN Invalid_operation
|
||||
dvix610 divideint -1 -Inf -> 0
|
||||
dvix611 divideint -0 -Inf -> 0
|
||||
dvix612 divideint 0 -Inf -> -0
|
||||
dvix613 divideint 1 -Inf -> -0
|
||||
dvix614 divideint 1000 -Inf -> -0
|
||||
dvix615 divideint Inf -Inf -> NaN Invalid_operation
|
||||
|
||||
dvix621 divideint NaN -Inf -> NaN
|
||||
dvix622 divideint NaN -1000 -> NaN
|
||||
dvix623 divideint NaN -1 -> NaN
|
||||
dvix624 divideint NaN -0 -> NaN
|
||||
dvix625 divideint NaN 0 -> NaN
|
||||
dvix626 divideint NaN 1 -> NaN
|
||||
dvix627 divideint NaN 1000 -> NaN
|
||||
dvix628 divideint NaN Inf -> NaN
|
||||
dvix629 divideint NaN NaN -> NaN
|
||||
dvix630 divideint -Inf NaN -> NaN
|
||||
dvix631 divideint -1000 NaN -> NaN
|
||||
dvix632 divideint -1 NaN -> NaN
|
||||
dvix633 divideint -0 NaN -> NaN
|
||||
dvix634 divideint 0 NaN -> NaN
|
||||
dvix635 divideint 1 NaN -> NaN
|
||||
dvix636 divideint 1000 NaN -> NaN
|
||||
dvix637 divideint Inf NaN -> NaN
|
||||
|
||||
dvix641 divideint sNaN -Inf -> NaN Invalid_operation
|
||||
dvix642 divideint sNaN -1000 -> NaN Invalid_operation
|
||||
dvix643 divideint sNaN -1 -> NaN Invalid_operation
|
||||
dvix644 divideint sNaN -0 -> NaN Invalid_operation
|
||||
dvix645 divideint sNaN 0 -> NaN Invalid_operation
|
||||
dvix646 divideint sNaN 1 -> NaN Invalid_operation
|
||||
dvix647 divideint sNaN 1000 -> NaN Invalid_operation
|
||||
dvix648 divideint sNaN NaN -> NaN Invalid_operation
|
||||
dvix649 divideint sNaN sNaN -> NaN Invalid_operation
|
||||
dvix650 divideint NaN sNaN -> NaN Invalid_operation
|
||||
dvix651 divideint -Inf sNaN -> NaN Invalid_operation
|
||||
dvix652 divideint -1000 sNaN -> NaN Invalid_operation
|
||||
dvix653 divideint -1 sNaN -> NaN Invalid_operation
|
||||
dvix654 divideint -0 sNaN -> NaN Invalid_operation
|
||||
dvix655 divideint 0 sNaN -> NaN Invalid_operation
|
||||
dvix656 divideint 1 sNaN -> NaN Invalid_operation
|
||||
dvix657 divideint 1000 sNaN -> NaN Invalid_operation
|
||||
dvix658 divideint Inf sNaN -> NaN Invalid_operation
|
||||
dvix659 divideint NaN sNaN -> NaN Invalid_operation
|
||||
|
||||
-- propagating NaNs
|
||||
dvix661 divideint NaN9 -Inf -> NaN9
|
||||
dvix662 divideint NaN8 1000 -> NaN8
|
||||
dvix663 divideint NaN7 Inf -> NaN7
|
||||
dvix664 divideint -NaN6 NaN5 -> -NaN6
|
||||
dvix665 divideint -Inf NaN4 -> NaN4
|
||||
dvix666 divideint -1000 NaN3 -> NaN3
|
||||
dvix667 divideint Inf -NaN2 -> -NaN2
|
||||
|
||||
dvix671 divideint -sNaN99 -Inf -> -NaN99 Invalid_operation
|
||||
dvix672 divideint sNaN98 -1 -> NaN98 Invalid_operation
|
||||
dvix673 divideint sNaN97 NaN -> NaN97 Invalid_operation
|
||||
dvix674 divideint sNaN96 sNaN94 -> NaN96 Invalid_operation
|
||||
dvix675 divideint NaN95 sNaN93 -> NaN93 Invalid_operation
|
||||
dvix676 divideint -Inf sNaN92 -> NaN92 Invalid_operation
|
||||
dvix677 divideint 0 sNaN91 -> NaN91 Invalid_operation
|
||||
dvix678 divideint Inf -sNaN90 -> -NaN90 Invalid_operation
|
||||
dvix679 divideint NaN sNaN89 -> NaN89 Invalid_operation
|
||||
|
||||
-- some long operand cases again
|
||||
precision: 8
|
||||
dvix710 divideint 100000001 1 -> NaN Division_impossible
|
||||
dvix711 divideint 100000000.4 1 -> NaN Division_impossible
|
||||
dvix712 divideint 100000000.5 1 -> NaN Division_impossible
|
||||
dvix713 divideint 100000000.9 1 -> NaN Division_impossible
|
||||
dvix714 divideint 100000000.999 1 -> NaN Division_impossible
|
||||
precision: 6
|
||||
dvix720 divideint 100000000 1 -> NaN Division_impossible
|
||||
dvix721 divideint 10000000 1 -> NaN Division_impossible
|
||||
dvix722 divideint 1000000 1 -> NaN Division_impossible
|
||||
dvix723 divideint 100000 1 -> 100000
|
||||
dvix724 divideint 10000 1 -> 10000
|
||||
dvix725 divideint 1000 1 -> 1000
|
||||
dvix726 divideint 100 1 -> 100
|
||||
dvix727 divideint 10 1 -> 10
|
||||
dvix728 divideint 1 1 -> 1
|
||||
dvix729 divideint 1 10 -> 0
|
||||
|
||||
precision: 9
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
dvix732 divideint 1 0.99e999999999 -> 0
|
||||
dvix733 divideint 1 0.999999999e999999999 -> 0
|
||||
dvix734 divideint 9e999999999 1 -> NaN Division_impossible
|
||||
dvix735 divideint 9.9e999999999 1 -> NaN Division_impossible
|
||||
dvix736 divideint 9.99e999999999 1 -> NaN Division_impossible
|
||||
dvix737 divideint 9.99999999e999999999 1 -> NaN Division_impossible
|
||||
|
||||
dvix740 divideint 0.1 9e-999999999 -> NaN Division_impossible
|
||||
dvix741 divideint 0.1 99e-999999999 -> NaN Division_impossible
|
||||
dvix742 divideint 0.1 999e-999999999 -> NaN Division_impossible
|
||||
|
||||
dvix743 divideint 0.1 9e-999999998 -> NaN Division_impossible
|
||||
dvix744 divideint 0.1 99e-999999998 -> NaN Division_impossible
|
||||
dvix745 divideint 0.1 999e-999999998 -> NaN Division_impossible
|
||||
dvix746 divideint 0.1 999e-999999997 -> NaN Division_impossible
|
||||
dvix747 divideint 0.1 9999e-999999997 -> NaN Division_impossible
|
||||
dvix748 divideint 0.1 99999e-999999997 -> NaN Division_impossible
|
||||
|
||||
|
||||
-- Null tests
|
||||
dvix900 divideint 10 # -> NaN Invalid_operation
|
||||
dvix901 divideint # 10 -> NaN Invalid_operation
|
|
@ -0,0 +1,215 @@
|
|||
------------------------------------------------------------------------
|
||||
-- inexact.decTest -- decimal inexact and rounded edge cases --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
|
||||
inx001 add 1 1 -> 2
|
||||
inx002 add 123456789 0 -> 123456789
|
||||
inx003 add 123456789 0.0 -> 123456789 Rounded
|
||||
inx004 add 123456789 0.00 -> 123456789 Rounded
|
||||
inx005 add 123456789 1 -> 123456790
|
||||
inx006 add 123456789 0.1 -> 123456789 Inexact Rounded
|
||||
inx007 add 123456789 0.01 -> 123456789 Inexact Rounded
|
||||
inx008 add 123456789 0.001 -> 123456789 Inexact Rounded
|
||||
inx009 add 123456789 0.000001 -> 123456789 Inexact Rounded
|
||||
inx010 add 123456789 0.000000001 -> 123456789 Inexact Rounded
|
||||
inx011 add 123456789 0.000000000001 -> 123456789 Inexact Rounded
|
||||
|
||||
inx012 add 123456789 0.9 -> 123456790 Inexact Rounded
|
||||
inx013 add 123456789 0.09 -> 123456789 Inexact Rounded
|
||||
inx014 add 123456789 0.009 -> 123456789 Inexact Rounded
|
||||
inx015 add 123456789 0.000009 -> 123456789 Inexact Rounded
|
||||
inx016 add 123456789 0.000000009 -> 123456789 Inexact Rounded
|
||||
inx017 add 123456789 0.000000000009 -> 123456789 Inexact Rounded
|
||||
|
||||
inx021 add 1 -1 -> 0
|
||||
inx022 add 123456789 -0 -> 123456789
|
||||
inx023 add 123456789 -0.0 -> 123456789 Rounded
|
||||
inx024 add 123456789 -0.00 -> 123456789 Rounded
|
||||
inx025 add 123456789 -1 -> 123456788
|
||||
inx026 add 123456789 -0.1 -> 123456789 Inexact Rounded
|
||||
inx027 add 123456789 -0.01 -> 123456789 Inexact Rounded
|
||||
inx028 add 123456789 -0.001 -> 123456789 Inexact Rounded
|
||||
inx029 add 123456789 -0.000001 -> 123456789 Inexact Rounded
|
||||
inx030 add 123456789 -0.000000001 -> 123456789 Inexact Rounded
|
||||
inx031 add 123456789 -0.000000000001 -> 123456789 Inexact Rounded
|
||||
inx032 add 123456789 -0.9 -> 123456788 Inexact Rounded
|
||||
inx033 add 123456789 -0.09 -> 123456789 Inexact Rounded
|
||||
inx034 add 123456789 -0.009 -> 123456789 Inexact Rounded
|
||||
inx035 add 123456789 -0.000009 -> 123456789 Inexact Rounded
|
||||
inx036 add 123456789 -0.000000009 -> 123456789 Inexact Rounded
|
||||
inx037 add 123456789 -0.000000000009 -> 123456789 Inexact Rounded
|
||||
|
||||
inx042 add 0 123456789 -> 123456789
|
||||
inx043 add 0.0 123456789 -> 123456789 Rounded
|
||||
inx044 add 0.00 123456789 -> 123456789 Rounded
|
||||
inx045 add 1 123456789 -> 123456790
|
||||
inx046 add 0.1 123456789 -> 123456789 Inexact Rounded
|
||||
inx047 add 0.01 123456789 -> 123456789 Inexact Rounded
|
||||
inx048 add 0.001 123456789 -> 123456789 Inexact Rounded
|
||||
inx049 add 0.000001 123456789 -> 123456789 Inexact Rounded
|
||||
inx050 add 0.000000001 123456789 -> 123456789 Inexact Rounded
|
||||
inx051 add 0.000000000001 123456789 -> 123456789 Inexact Rounded
|
||||
inx052 add 0.9 123456789 -> 123456790 Inexact Rounded
|
||||
inx053 add 0.09 123456789 -> 123456789 Inexact Rounded
|
||||
inx054 add 0.009 123456789 -> 123456789 Inexact Rounded
|
||||
inx055 add 0.000009 123456789 -> 123456789 Inexact Rounded
|
||||
inx056 add 0.000000009 123456789 -> 123456789 Inexact Rounded
|
||||
inx057 add 0.000000000009 123456789 -> 123456789 Inexact Rounded
|
||||
|
||||
inx062 add -0 123456789 -> 123456789
|
||||
inx063 add -0.0 123456789 -> 123456789 Rounded
|
||||
inx064 add -0.00 123456789 -> 123456789 Rounded
|
||||
inx065 add -1 123456789 -> 123456788
|
||||
inx066 add -0.1 123456789 -> 123456789 Inexact Rounded
|
||||
inx067 add -0.01 123456789 -> 123456789 Inexact Rounded
|
||||
inx068 add -0.001 123456789 -> 123456789 Inexact Rounded
|
||||
inx069 add -0.000001 123456789 -> 123456789 Inexact Rounded
|
||||
inx070 add -0.000000001 123456789 -> 123456789 Inexact Rounded
|
||||
inx071 add -0.000000000001 123456789 -> 123456789 Inexact Rounded
|
||||
inx072 add -0.9 123456789 -> 123456788 Inexact Rounded
|
||||
inx073 add -0.09 123456789 -> 123456789 Inexact Rounded
|
||||
inx074 add -0.009 123456789 -> 123456789 Inexact Rounded
|
||||
inx075 add -0.000009 123456789 -> 123456789 Inexact Rounded
|
||||
inx076 add -0.000000009 123456789 -> 123456789 Inexact Rounded
|
||||
inx077 add -0.000000000009 123456789 -> 123456789 Inexact Rounded
|
||||
|
||||
-- some boundaries
|
||||
inx081 add 999999999 0 -> 999999999
|
||||
inx082 add 0.999999999 0.000000000 -> 0.999999999
|
||||
inx083 add 999999999 1 -> 1.00000000E+9 Rounded
|
||||
inx084 add 0.999999999 0.000000001 -> 1.00000000 Rounded
|
||||
inx085 add 999999999 2 -> 1.00000000E+9 Inexact Rounded
|
||||
inx086 add 0.999999999 0.000000002 -> 1.00000000 Inexact Rounded
|
||||
inx087 add 999999999 3 -> 1.00000000E+9 Inexact Rounded
|
||||
inx089 add 0.999999999 0.000000003 -> 1.00000000 Inexact Rounded
|
||||
|
||||
-- minus, plus, and subtract all assumed to work like add.
|
||||
|
||||
-- multiply
|
||||
precision: 8
|
||||
inx101 multiply 1000 1000 -> 1000000
|
||||
inx102 multiply 9000 9000 -> 81000000
|
||||
inx103 multiply 9999 9999 -> 99980001
|
||||
inx104 multiply 1000 10000 -> 10000000
|
||||
inx105 multiply 10000 10000 -> 1.0000000E+8 Rounded
|
||||
inx106 multiply 10001 10000 -> 1.0001000E+8 Rounded
|
||||
inx107 multiply 10001 10001 -> 1.0002000E+8 Inexact Rounded
|
||||
inx108 multiply 10101 10001 -> 1.0102010E+8 Inexact Rounded
|
||||
inx109 multiply 10001 10101 -> 1.0102010E+8 Inexact Rounded
|
||||
|
||||
-- divide
|
||||
precision: 4
|
||||
inx201 divide 1000 1000 -> 1
|
||||
inx202 divide 1000 1 -> 1000
|
||||
inx203 divide 1000 2 -> 500
|
||||
inx204 divide 1000 3 -> 333.3 Inexact Rounded
|
||||
inx205 divide 1000 4 -> 250
|
||||
inx206 divide 1000 5 -> 200
|
||||
inx207 divide 1000 6 -> 166.7 Inexact Rounded
|
||||
inx208 divide 1000 7 -> 142.9 Inexact Rounded
|
||||
inx209 divide 1000 8 -> 125
|
||||
inx210 divide 1000 9 -> 111.1 Inexact Rounded
|
||||
inx211 divide 1000 10 -> 100
|
||||
|
||||
inx220 divide 1 1 -> 1
|
||||
inx221 divide 1 2 -> 0.5
|
||||
inx222 divide 1 4 -> 0.25
|
||||
inx223 divide 1 8 -> 0.125
|
||||
inx224 divide 1 16 -> 0.0625
|
||||
inx225 divide 1 32 -> 0.03125
|
||||
inx226 divide 1 64 -> 0.01563 Inexact Rounded
|
||||
inx227 divide 1 128 -> 0.007813 Inexact Rounded
|
||||
|
||||
precision: 5
|
||||
inx230 divide 1 1 -> 1
|
||||
inx231 divide 1 2 -> 0.5
|
||||
inx232 divide 1 4 -> 0.25
|
||||
inx233 divide 1 8 -> 0.125
|
||||
inx234 divide 1 16 -> 0.0625
|
||||
inx235 divide 1 32 -> 0.03125
|
||||
inx236 divide 1 64 -> 0.015625
|
||||
inx237 divide 1 128 -> 0.0078125
|
||||
|
||||
precision: 3
|
||||
inx240 divide 1 1 -> 1
|
||||
inx241 divide 1 2 -> 0.5
|
||||
inx242 divide 1 4 -> 0.25
|
||||
inx243 divide 1 8 -> 0.125
|
||||
inx244 divide 1 16 -> 0.0625
|
||||
inx245 divide 1 32 -> 0.0313 Inexact Rounded
|
||||
inx246 divide 1 64 -> 0.0156 Inexact Rounded
|
||||
inx247 divide 1 128 -> 0.00781 Inexact Rounded
|
||||
|
||||
precision: 2
|
||||
inx250 divide 1 1 -> 1
|
||||
inx251 divide 1 2 -> 0.5
|
||||
inx252 divide 1 4 -> 0.25
|
||||
inx253 divide 1 8 -> 0.13 Inexact Rounded
|
||||
inx254 divide 1 16 -> 0.063 Inexact Rounded
|
||||
inx255 divide 1 32 -> 0.031 Inexact Rounded
|
||||
inx256 divide 1 64 -> 0.016 Inexact Rounded
|
||||
inx257 divide 1 128 -> 0.0078 Inexact Rounded
|
||||
|
||||
precision: 1
|
||||
inx260 divide 1 1 -> 1
|
||||
inx261 divide 1 2 -> 0.5
|
||||
inx262 divide 1 4 -> 0.3 Inexact Rounded
|
||||
inx263 divide 1 8 -> 0.1 Inexact Rounded
|
||||
inx264 divide 1 16 -> 0.06 Inexact Rounded
|
||||
inx265 divide 1 32 -> 0.03 Inexact Rounded
|
||||
inx266 divide 1 64 -> 0.02 Inexact Rounded
|
||||
inx267 divide 1 128 -> 0.008 Inexact Rounded
|
||||
|
||||
|
||||
-- power
|
||||
precision: 4
|
||||
inx301 power 0.5 2 -> 0.25
|
||||
inx302 power 0.5 4 -> 0.0625
|
||||
inx303 power 0.5 8 -> 0.003906 Inexact Rounded
|
||||
inx304 power 0.5 16 -> 0.00001526 Inexact Rounded
|
||||
inx305 power 0.5 32 -> 2.328E-10 Inexact Rounded
|
||||
|
||||
-- compare, divideInteger, and remainder are always exact
|
||||
|
||||
-- rescale
|
||||
precision: 4
|
||||
inx401 rescale 0 0 -> 0
|
||||
inx402 rescale 1 0 -> 1
|
||||
inx403 rescale 0.1 +2 -> 0E+2 Inexact Rounded
|
||||
inx404 rescale 0.1 +1 -> 0E+1 Inexact Rounded
|
||||
inx405 rescale 0.1 0 -> 0 Inexact Rounded
|
||||
inx406 rescale 0.1 -1 -> 0.1
|
||||
inx407 rescale 0.1 -2 -> 0.10
|
||||
|
||||
-- long operands cause rounding too
|
||||
precision: 9
|
||||
inx801 plus 123456789 -> 123456789
|
||||
inx802 plus 1234567890 -> 1.23456789E+9 Rounded
|
||||
inx803 plus 1234567891 -> 1.23456789E+9 Inexact Rounded
|
||||
inx804 plus 1234567892 -> 1.23456789E+9 Inexact Rounded
|
||||
inx805 plus 1234567899 -> 1.23456790E+9 Inexact Rounded
|
||||
inx806 plus 1234567900 -> 1.23456790E+9 Rounded
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
------------------------------------------------------------------------
|
||||
-- integer.decTest -- round decimal to integer --
|
||||
-- Copyright (c) IBM Corporation, 2001, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.26
|
||||
|
||||
-- This set of tests tests the extended specification 'round-to-integer'
|
||||
-- operation (from IEEE 854). All non-zero results are defined as
|
||||
-- being those from either plus or rescale, so those are assumed to have
|
||||
-- been tested.
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minExponent: -999
|
||||
|
||||
intx001 integer 0 -> 0
|
||||
intx002 integer 0.0 -> 0
|
||||
intx003 integer 0.1 -> 0 Rounded Inexact
|
||||
intx004 integer 0.2 -> 0 Rounded Inexact
|
||||
intx005 integer 0.3 -> 0 Rounded Inexact
|
||||
intx006 integer 0.4 -> 0 Rounded Inexact
|
||||
intx007 integer 0.5 -> 1 Rounded Inexact
|
||||
intx008 integer 0.6 -> 1 Rounded Inexact
|
||||
intx009 integer 0.7 -> 1 Rounded Inexact
|
||||
intx010 integer 0.8 -> 1 Rounded Inexact
|
||||
intx011 integer 0.9 -> 1 Rounded Inexact
|
||||
intx012 integer 1 -> 1
|
||||
intx013 integer 1.0 -> 1 Rounded
|
||||
intx014 integer 1.1 -> 1 Rounded Inexact
|
||||
intx015 integer 1.2 -> 1 Rounded Inexact
|
||||
intx016 integer 1.3 -> 1 Rounded Inexact
|
||||
intx017 integer 1.4 -> 1 Rounded Inexact
|
||||
intx018 integer 1.5 -> 2 Rounded Inexact
|
||||
intx019 integer 1.6 -> 2 Rounded Inexact
|
||||
intx020 integer 1.7 -> 2 Rounded Inexact
|
||||
intx021 integer 1.8 -> 2 Rounded Inexact
|
||||
intx022 integer 1.9 -> 2 Rounded Inexact
|
||||
-- negatives
|
||||
intx031 integer -0 -> -0
|
||||
intx032 integer -0.0 -> -0
|
||||
intx033 integer -0.1 -> -0 Rounded Inexact
|
||||
intx034 integer -0.2 -> -0 Rounded Inexact
|
||||
intx035 integer -0.3 -> -0 Rounded Inexact
|
||||
intx036 integer -0.4 -> -0 Rounded Inexact
|
||||
intx037 integer -0.5 -> -1 Rounded Inexact
|
||||
intx038 integer -0.6 -> -1 Rounded Inexact
|
||||
intx039 integer -0.7 -> -1 Rounded Inexact
|
||||
intx040 integer -0.8 -> -1 Rounded Inexact
|
||||
intx041 integer -0.9 -> -1 Rounded Inexact
|
||||
intx042 integer -1 -> -1
|
||||
intx043 integer -1.0 -> -1 Rounded
|
||||
intx044 integer -1.1 -> -1 Rounded Inexact
|
||||
intx045 integer -1.2 -> -1 Rounded Inexact
|
||||
intx046 integer -1.3 -> -1 Rounded Inexact
|
||||
intx047 integer -1.4 -> -1 Rounded Inexact
|
||||
intx048 integer -1.5 -> -2 Rounded Inexact
|
||||
intx049 integer -1.6 -> -2 Rounded Inexact
|
||||
intx050 integer -1.7 -> -2 Rounded Inexact
|
||||
intx051 integer -1.8 -> -2 Rounded Inexact
|
||||
intx052 integer -1.9 -> -2 Rounded Inexact
|
||||
intx053 integer 10E+30 -> NaN Invalid_operation
|
||||
intx054 integer -10E+30 -> NaN Invalid_operation
|
||||
|
||||
-- numbers around precision
|
||||
precision: 9
|
||||
intx060 integer '56267E-10' -> '0' Inexact Rounded
|
||||
intx061 integer '56267E-5' -> '1' Inexact Rounded
|
||||
intx062 integer '56267E-2' -> '563' Inexact Rounded
|
||||
intx063 integer '56267E-1' -> '5627' Inexact Rounded
|
||||
intx065 integer '56267E-0' -> '56267'
|
||||
intx066 integer '56267E+0' -> '56267'
|
||||
intx067 integer '56267E+1' -> '562670'
|
||||
intx068 integer '56267E+2' -> '5626700'
|
||||
intx069 integer '56267E+3' -> '56267000'
|
||||
intx070 integer '56267E+4' -> '562670000'
|
||||
intx071 integer '56267E+5' -> NaN Invalid_operation
|
||||
intx072 integer '56267E+6' -> NaN Invalid_operation
|
||||
intx080 integer '-56267E-10' -> '-0' Inexact Rounded
|
||||
intx081 integer '-56267E-5' -> '-1' Inexact Rounded
|
||||
intx082 integer '-56267E-2' -> '-563' Inexact Rounded
|
||||
intx083 integer '-56267E-1' -> '-5627' Inexact Rounded
|
||||
intx085 integer '-56267E-0' -> '-56267'
|
||||
intx086 integer '-56267E+0' -> '-56267'
|
||||
intx087 integer '-56267E+1' -> '-562670'
|
||||
intx088 integer '-56267E+2' -> '-5626700'
|
||||
intx089 integer '-56267E+3' -> '-56267000'
|
||||
intx090 integer '-56267E+4' -> '-562670000'
|
||||
intx091 integer '-56267E+5' -> NaN Invalid_operation
|
||||
intx092 integer '-56267E+6' -> NaN Invalid_operation
|
||||
|
||||
-- specials and zeros
|
||||
intx120 integer 'Inf' -> NaN Invalid_operation
|
||||
intx121 integer '-Inf' -> NaN Invalid_operation
|
||||
intx122 integer NaN -> NaN
|
||||
intx123 integer sNaN -> NaN Invalid_operation
|
||||
intx124 integer 0 -> 0
|
||||
intx125 integer -0 -> -0
|
||||
intx126 integer 0.000 -> 0
|
||||
intx127 integer 0.00 -> 0
|
||||
intx128 integer 0.0 -> 0
|
||||
intx129 integer 0 -> 0
|
||||
intx130 integer 0E-3 -> 0
|
||||
intx131 integer 0E-2 -> 0
|
||||
intx132 integer 0E-1 -> 0
|
||||
intx133 integer 0E-0 -> 0
|
||||
intx134 integer 0E+1 -> 0
|
||||
intx135 integer 0E+2 -> 0
|
||||
intx136 integer 0E+3 -> 0
|
||||
intx137 integer 0E+4 -> 0
|
||||
intx138 integer 0E+5 -> 0
|
||||
intx139 integer -0.000 -> -0
|
||||
intx140 integer -0.00 -> -0
|
||||
intx141 integer -0.0 -> -0
|
||||
intx142 integer -0 -> -0
|
||||
intx143 integer -0E-3 -> -0
|
||||
intx144 integer -0E-2 -> -0
|
||||
intx145 integer -0E-1 -> -0
|
||||
intx146 integer -0E-0 -> -0
|
||||
intx147 integer -0E+1 -> -0
|
||||
intx148 integer -0E+2 -> -0
|
||||
intx149 integer -0E+3 -> -0
|
||||
intx150 integer -0E+4 -> -0
|
||||
intx151 integer -0E+5 -> -0
|
||||
|
||||
-- examples
|
||||
rounding: half_up
|
||||
precision: 9
|
||||
intx200 integer 2.1 -> 2 Rounded Inexact
|
||||
intx201 integer 100 -> 100
|
||||
intx202 integer 100.0 -> 100 Rounded
|
||||
intx203 integer 101.5 -> 102 Rounded Inexact
|
||||
intx204 integer -101.5 -> -102 Rounded Inexact
|
||||
intx205 integer 10E+5 -> 1000000
|
||||
|
|
@ -0,0 +1,300 @@
|
|||
------------------------------------------------------------------------
|
||||
-- max.decTest -- decimal maximum --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
-- we assume that base comparison is tested in compare.decTest, so
|
||||
-- these mainly cover special cases and rounding
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
|
||||
-- sanity checks
|
||||
maxx001 max -2 -2 -> -2
|
||||
maxx002 max -2 -1 -> -1
|
||||
maxx003 max -2 0 -> 0
|
||||
maxx004 max -2 1 -> 1
|
||||
maxx005 max -2 2 -> 2
|
||||
maxx006 max -1 -2 -> -1
|
||||
maxx007 max -1 -1 -> -1
|
||||
maxx008 max -1 0 -> 0
|
||||
maxx009 max -1 1 -> 1
|
||||
maxx010 max -1 2 -> 2
|
||||
maxx011 max 0 -2 -> 0
|
||||
maxx012 max 0 -1 -> 0
|
||||
maxx013 max 0 0 -> 0
|
||||
maxx014 max 0 1 -> 1
|
||||
maxx015 max 0 2 -> 2
|
||||
maxx016 max 1 -2 -> 1
|
||||
maxx017 max 1 -1 -> 1
|
||||
maxx018 max 1 0 -> 1
|
||||
maxx019 max 1 1 -> 1
|
||||
maxx020 max 1 2 -> 2
|
||||
maxx021 max 2 -2 -> 2
|
||||
maxx022 max 2 -1 -> 2
|
||||
maxx023 max 2 0 -> 2
|
||||
maxx025 max 2 1 -> 2
|
||||
maxx026 max 2 2 -> 2
|
||||
|
||||
-- extended zeros
|
||||
maxx030 max 0 0 -> 0
|
||||
maxx031 max 0 -0 -> 0
|
||||
maxx032 max 0 -0.0 -> 0
|
||||
maxx033 max 0 0.0 -> 0
|
||||
maxx034 max -0 0 -> -0 -- note: -0 = 0
|
||||
maxx035 max -0 -0 -> -0
|
||||
maxx036 max -0 -0.0 -> -0
|
||||
maxx037 max -0 0.0 -> -0
|
||||
maxx038 max 0.0 0 -> 0.0
|
||||
maxx039 max 0.0 -0 -> 0.0
|
||||
maxx040 max 0.0 -0.0 -> 0.0
|
||||
maxx041 max 0.0 0.0 -> 0.0
|
||||
maxx042 max -0.0 0 -> -0.0
|
||||
maxx043 max -0.0 -0 -> -0.0
|
||||
maxx044 max -0.0 -0.0 -> -0.0
|
||||
maxx045 max -0.0 0.0 -> -0.0
|
||||
|
||||
maxx046 max -0E1 0E2 -> -0E+1
|
||||
maxx047 max 0E2 0E1 -> 0E+2
|
||||
maxx048 max 0E1 0E2 -> 0E+1
|
||||
maxx049 max -0E3 -0E2 -> -0E+3
|
||||
|
||||
|
||||
-- Specials
|
||||
precision: 9
|
||||
maxx090 max Inf -Inf -> Infinity
|
||||
maxx091 max Inf -1000 -> Infinity
|
||||
maxx092 max Inf -1 -> Infinity
|
||||
maxx093 max Inf -0 -> Infinity
|
||||
maxx094 max Inf 0 -> Infinity
|
||||
maxx095 max Inf 1 -> Infinity
|
||||
maxx096 max Inf 1000 -> Infinity
|
||||
maxx097 max Inf Inf -> Infinity
|
||||
maxx098 max -1000 Inf -> Infinity
|
||||
maxx099 max -Inf Inf -> Infinity
|
||||
maxx100 max -1 Inf -> Infinity
|
||||
maxx101 max -0 Inf -> Infinity
|
||||
maxx102 max 0 Inf -> Infinity
|
||||
maxx103 max 1 Inf -> Infinity
|
||||
maxx104 max 1000 Inf -> Infinity
|
||||
maxx105 max Inf Inf -> Infinity
|
||||
|
||||
maxx120 max -Inf -Inf -> -Infinity
|
||||
maxx121 max -Inf -1000 -> -1000
|
||||
maxx122 max -Inf -1 -> -1
|
||||
maxx123 max -Inf -0 -> -0
|
||||
maxx124 max -Inf 0 -> 0
|
||||
maxx125 max -Inf 1 -> 1
|
||||
maxx126 max -Inf 1000 -> 1000
|
||||
maxx127 max -Inf Inf -> Infinity
|
||||
maxx128 max -Inf -Inf -> -Infinity
|
||||
maxx129 max -1000 -Inf -> -1000
|
||||
maxx130 max -1 -Inf -> -1
|
||||
maxx131 max -0 -Inf -> -0
|
||||
maxx132 max 0 -Inf -> 0
|
||||
maxx133 max 1 -Inf -> 1
|
||||
maxx134 max 1000 -Inf -> 1000
|
||||
maxx135 max Inf -Inf -> Infinity
|
||||
|
||||
maxx141 max NaN -Inf -> NaN
|
||||
maxx142 max NaN -1000 -> NaN
|
||||
maxx143 max NaN -1 -> NaN
|
||||
maxx144 max NaN -0 -> NaN
|
||||
maxx145 max NaN 0 -> NaN
|
||||
maxx146 max NaN 1 -> NaN
|
||||
maxx147 max NaN 1000 -> NaN
|
||||
maxx148 max NaN Inf -> NaN
|
||||
maxx149 max NaN NaN -> NaN
|
||||
maxx150 max -Inf NaN -> NaN
|
||||
maxx151 max -1000 NaN -> NaN
|
||||
maxx152 max -1 NaN -> NaN
|
||||
maxx153 max -0 NaN -> NaN
|
||||
maxx154 max 0 NaN -> NaN
|
||||
maxx155 max 1 NaN -> NaN
|
||||
maxx156 max 1000 NaN -> NaN
|
||||
maxx157 max Inf NaN -> NaN
|
||||
|
||||
maxx161 max sNaN -Inf -> NaN Invalid_operation
|
||||
maxx162 max sNaN -1000 -> NaN Invalid_operation
|
||||
maxx163 max sNaN -1 -> NaN Invalid_operation
|
||||
maxx164 max sNaN -0 -> NaN Invalid_operation
|
||||
maxx165 max sNaN 0 -> NaN Invalid_operation
|
||||
maxx166 max sNaN 1 -> NaN Invalid_operation
|
||||
maxx167 max sNaN 1000 -> NaN Invalid_operation
|
||||
maxx168 max sNaN NaN -> NaN Invalid_operation
|
||||
maxx169 max sNaN sNaN -> NaN Invalid_operation
|
||||
maxx170 max NaN sNaN -> NaN Invalid_operation
|
||||
maxx171 max -Inf sNaN -> NaN Invalid_operation
|
||||
maxx172 max -1000 sNaN -> NaN Invalid_operation
|
||||
maxx173 max -1 sNaN -> NaN Invalid_operation
|
||||
maxx174 max -0 sNaN -> NaN Invalid_operation
|
||||
maxx175 max 0 sNaN -> NaN Invalid_operation
|
||||
maxx176 max 1 sNaN -> NaN Invalid_operation
|
||||
maxx177 max 1000 sNaN -> NaN Invalid_operation
|
||||
maxx178 max Inf sNaN -> NaN Invalid_operation
|
||||
maxx179 max NaN sNaN -> NaN Invalid_operation
|
||||
|
||||
-- propagating NaNs
|
||||
maxx181 max NaN9 -Inf -> NaN9
|
||||
maxx182 max NaN8 9 -> NaN8
|
||||
maxx183 max -NaN7 Inf -> -NaN7
|
||||
maxx184 max NaN6 NaN5 -> NaN6
|
||||
maxx185 max -Inf NaN4 -> NaN4
|
||||
maxx186 max -9 -NaN3 -> -NaN3
|
||||
maxx187 max Inf NaN2 -> NaN2
|
||||
|
||||
maxx191 max sNaN99 -Inf -> NaN99 Invalid_operation
|
||||
maxx192 max sNaN98 -1 -> NaN98 Invalid_operation
|
||||
maxx193 max -sNaN97 NaN -> -NaN97 Invalid_operation
|
||||
maxx194 max sNaN96 sNaN94 -> NaN96 Invalid_operation
|
||||
maxx195 max NaN95 sNaN93 -> NaN93 Invalid_operation
|
||||
maxx196 max -Inf sNaN92 -> NaN92 Invalid_operation
|
||||
maxx197 max 0 sNaN91 -> NaN91 Invalid_operation
|
||||
maxx198 max Inf -sNaN90 -> -NaN90 Invalid_operation
|
||||
maxx199 max NaN sNaN89 -> NaN89 Invalid_operation
|
||||
|
||||
-- rounding checks
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
maxx201 max 12345678000 1 -> 1.23456780E+10 Rounded
|
||||
maxx202 max 1 12345678000 -> 1.23456780E+10 Rounded
|
||||
maxx203 max 1234567800 1 -> 1.23456780E+9 Rounded
|
||||
maxx204 max 1 1234567800 -> 1.23456780E+9 Rounded
|
||||
maxx205 max 1234567890 1 -> 1.23456789E+9 Rounded
|
||||
maxx206 max 1 1234567890 -> 1.23456789E+9 Rounded
|
||||
maxx207 max 1234567891 1 -> 1.23456789E+9 Inexact Rounded
|
||||
maxx208 max 1 1234567891 -> 1.23456789E+9 Inexact Rounded
|
||||
maxx209 max 12345678901 1 -> 1.23456789E+10 Inexact Rounded
|
||||
maxx210 max 1 12345678901 -> 1.23456789E+10 Inexact Rounded
|
||||
maxx211 max 1234567896 1 -> 1.23456790E+9 Inexact Rounded
|
||||
maxx212 max 1 1234567896 -> 1.23456790E+9 Inexact Rounded
|
||||
maxx213 max -1234567891 1 -> 1
|
||||
maxx214 max 1 -1234567891 -> 1
|
||||
maxx215 max -12345678901 1 -> 1
|
||||
maxx216 max 1 -12345678901 -> 1
|
||||
maxx217 max -1234567896 1 -> 1
|
||||
maxx218 max 1 -1234567896 -> 1
|
||||
|
||||
precision: 15
|
||||
maxx221 max 12345678000 1 -> 12345678000
|
||||
maxx222 max 1 12345678000 -> 12345678000
|
||||
maxx223 max 1234567800 1 -> 1234567800
|
||||
maxx224 max 1 1234567800 -> 1234567800
|
||||
maxx225 max 1234567890 1 -> 1234567890
|
||||
maxx226 max 1 1234567890 -> 1234567890
|
||||
maxx227 max 1234567891 1 -> 1234567891
|
||||
maxx228 max 1 1234567891 -> 1234567891
|
||||
maxx229 max 12345678901 1 -> 12345678901
|
||||
maxx230 max 1 12345678901 -> 12345678901
|
||||
maxx231 max 1234567896 1 -> 1234567896
|
||||
maxx232 max 1 1234567896 -> 1234567896
|
||||
maxx233 max -1234567891 1 -> 1
|
||||
maxx234 max 1 -1234567891 -> 1
|
||||
maxx235 max -12345678901 1 -> 1
|
||||
maxx236 max 1 -12345678901 -> 1
|
||||
maxx237 max -1234567896 1 -> 1
|
||||
maxx238 max 1 -1234567896 -> 1
|
||||
|
||||
-- from examples
|
||||
maxx280 max '3' '2' -> '3'
|
||||
maxx281 max '-10' '3' -> '3'
|
||||
maxx282 max '1.0' '1' -> '1.0'
|
||||
maxx283 max '1' '1.0' -> '1'
|
||||
|
||||
-- overflow and underflow tests ...
|
||||
maxExponent: 999999999
|
||||
minexponent: -999999999
|
||||
maxx330 max +1.23456789012345E-0 9E+999999999 -> 9E+999999999
|
||||
maxx331 max 9E+999999999 +1.23456789012345E-0 -> 9E+999999999
|
||||
maxx332 max +0.100 9E-999999999 -> 0.100
|
||||
maxx333 max 9E-999999999 +0.100 -> 0.100
|
||||
maxx335 max -1.23456789012345E-0 9E+999999999 -> 9E+999999999
|
||||
maxx336 max 9E+999999999 -1.23456789012345E-0 -> 9E+999999999
|
||||
maxx337 max -0.100 9E-999999999 -> 9E-999999999
|
||||
maxx338 max 9E-999999999 -0.100 -> 9E-999999999
|
||||
|
||||
maxx339 max 1e-599999999 1e-400000001 -> 1E-400000001
|
||||
maxx340 max 1e-599999999 1e-400000000 -> 1E-400000000
|
||||
maxx341 max 1e-600000000 1e-400000000 -> 1E-400000000
|
||||
maxx342 max 9e-999999998 0.01 -> 0.01
|
||||
maxx343 max 9e-999999998 0.1 -> 0.1
|
||||
maxx344 max 0.01 9e-999999998 -> 0.01
|
||||
maxx345 max 1e599999999 1e400000001 -> 1E+599999999
|
||||
maxx346 max 1e599999999 1e400000000 -> 1E+599999999
|
||||
maxx347 max 1e600000000 1e400000000 -> 1E+600000000
|
||||
maxx348 max 9e999999998 100 -> 9E+999999998
|
||||
maxx349 max 9e999999998 10 -> 9E+999999998
|
||||
maxx350 max 100 9e999999998 -> 9E+999999998
|
||||
-- signs
|
||||
maxx351 max 1e+777777777 1e+411111111 -> 1E+777777777
|
||||
maxx352 max 1e+777777777 -1e+411111111 -> 1E+777777777
|
||||
maxx353 max -1e+777777777 1e+411111111 -> 1E+411111111
|
||||
maxx354 max -1e+777777777 -1e+411111111 -> -1E+411111111
|
||||
maxx355 max 1e-777777777 1e-411111111 -> 1E-411111111
|
||||
maxx356 max 1e-777777777 -1e-411111111 -> 1E-777777777
|
||||
maxx357 max -1e-777777777 1e-411111111 -> 1E-411111111
|
||||
maxx358 max -1e-777777777 -1e-411111111 -> -1E-777777777
|
||||
|
||||
|
||||
-- overflow tests
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 3
|
||||
maxx400 max 9.999E+999999999 0 -> Infinity Inexact Overflow Rounded
|
||||
maxx401 max -9.999E+999999999 0 -> 0
|
||||
|
||||
-- subnormals and underflow
|
||||
precision: 3
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
maxx410 max 1.00E-999 0 -> 1.00E-999
|
||||
maxx411 max 0.1E-999 0 -> 1E-1000 Subnormal
|
||||
maxx412 max 0.10E-999 0 -> 1.0E-1000 Subnormal
|
||||
maxx413 max 0.100E-999 0 -> 1.0E-1000 Subnormal Rounded
|
||||
maxx414 max 0.01E-999 0 -> 1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
maxx415 max 0.999E-999 0 -> 1.00E-999 Inexact Rounded Subnormal Underflow
|
||||
maxx416 max 0.099E-999 0 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
maxx417 max 0.009E-999 0 -> 1E-1001 Inexact Rounded Subnormal Underflow
|
||||
maxx418 max 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
maxx419 max 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
maxx420 max 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
|
||||
maxx430 max -1.00E-999 0 -> 0
|
||||
maxx431 max -0.1E-999 0 -> 0
|
||||
maxx432 max -0.10E-999 0 -> 0
|
||||
maxx433 max -0.100E-999 0 -> 0
|
||||
maxx434 max -0.01E-999 0 -> 0
|
||||
maxx435 max -0.999E-999 0 -> 0
|
||||
maxx436 max -0.099E-999 0 -> 0
|
||||
maxx437 max -0.009E-999 0 -> 0
|
||||
maxx438 max -0.001E-999 0 -> 0
|
||||
maxx439 max -0.0009E-999 0 -> 0
|
||||
maxx440 max -0.0001E-999 0 -> 0
|
||||
|
||||
-- Null tests
|
||||
maxx900 max 10 # -> NaN Invalid_operation
|
||||
maxx901 max # 10 -> NaN Invalid_operation
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,297 @@
|
|||
------------------------------------------------------------------------
|
||||
-- min.decTest -- decimal minimum --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
-- we assume that base comparison is tested in compare.decTest, so
|
||||
-- these mainly cover special cases and rounding
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
|
||||
-- sanity checks
|
||||
mnmx001 min -2 -2 -> -2
|
||||
mnmx002 min -2 -1 -> -2
|
||||
mnmx003 min -2 0 -> -2
|
||||
mnmx004 min -2 1 -> -2
|
||||
mnmx005 min -2 2 -> -2
|
||||
mnmx006 min -1 -2 -> -2
|
||||
mnmx007 min -1 -1 -> -1
|
||||
mnmx008 min -1 0 -> -1
|
||||
mnmx009 min -1 1 -> -1
|
||||
mnmx010 min -1 2 -> -1
|
||||
mnmx011 min 0 -2 -> -2
|
||||
mnmx012 min 0 -1 -> -1
|
||||
mnmx013 min 0 0 -> 0
|
||||
mnmx014 min 0 1 -> 0
|
||||
mnmx015 min 0 2 -> 0
|
||||
mnmx016 min 1 -2 -> -2
|
||||
mnmx017 min 1 -1 -> -1
|
||||
mnmx018 min 1 0 -> 0
|
||||
mnmx019 min 1 1 -> 1
|
||||
mnmx020 min 1 2 -> 1
|
||||
mnmx021 min 2 -2 -> -2
|
||||
mnmx022 min 2 -1 -> -1
|
||||
mnmx023 min 2 0 -> 0
|
||||
mnmx025 min 2 1 -> 1
|
||||
mnmx026 min 2 2 -> 2
|
||||
|
||||
-- extended zeros
|
||||
mnmx030 min 0 0 -> 0
|
||||
mnmx031 min 0 -0 -> 0
|
||||
mnmx032 min 0 -0.0 -> 0
|
||||
mnmx033 min 0 0.0 -> 0
|
||||
mnmx034 min -0 0 -> -0
|
||||
mnmx035 min -0 -0 -> -0
|
||||
mnmx036 min -0 -0.0 -> -0
|
||||
mnmx037 min -0 0.0 -> -0
|
||||
mnmx038 min 0.0 0 -> 0.0
|
||||
mnmx039 min 0.0 -0 -> 0.0
|
||||
mnmx040 min 0.0 -0.0 -> 0.0
|
||||
mnmx041 min 0.0 0.0 -> 0.0
|
||||
mnmx042 min -0.0 0 -> -0.0
|
||||
mnmx043 min -0.0 -0 -> -0.0
|
||||
mnmx044 min -0.0 -0.0 -> -0.0
|
||||
mnmx045 min -0.0 0.0 -> -0.0
|
||||
|
||||
mnmx046 min -0E1 0E2 -> -0E+1
|
||||
mnmx047 min 0E2 0E1 -> 0E+2
|
||||
mnmx048 min 0E1 0E2 -> 0E+1
|
||||
mnmx049 min -0E3 -0E2 -> -0E+3
|
||||
|
||||
-- Specials
|
||||
precision: 9
|
||||
mnmx090 min Inf -Inf -> -Infinity
|
||||
mnmx091 min Inf -1000 -> -1000
|
||||
mnmx092 min Inf -1 -> -1
|
||||
mnmx093 min Inf -0 -> -0
|
||||
mnmx094 min Inf 0 -> 0
|
||||
mnmx095 min Inf 1 -> 1
|
||||
mnmx096 min Inf 1000 -> 1000
|
||||
mnmx097 min Inf Inf -> Infinity
|
||||
mnmx098 min -1000 Inf -> -1000
|
||||
mnmx099 min -Inf Inf -> -Infinity
|
||||
mnmx100 min -1 Inf -> -1
|
||||
mnmx101 min -0 Inf -> -0
|
||||
mnmx102 min 0 Inf -> 0
|
||||
mnmx103 min 1 Inf -> 1
|
||||
mnmx104 min 1000 Inf -> 1000
|
||||
mnmx105 min Inf Inf -> Infinity
|
||||
|
||||
mnmx120 min -Inf -Inf -> -Infinity
|
||||
mnmx121 min -Inf -1000 -> -Infinity
|
||||
mnmx122 min -Inf -1 -> -Infinity
|
||||
mnmx123 min -Inf -0 -> -Infinity
|
||||
mnmx124 min -Inf 0 -> -Infinity
|
||||
mnmx125 min -Inf 1 -> -Infinity
|
||||
mnmx126 min -Inf 1000 -> -Infinity
|
||||
mnmx127 min -Inf Inf -> -Infinity
|
||||
mnmx128 min -Inf -Inf -> -Infinity
|
||||
mnmx129 min -1000 -Inf -> -Infinity
|
||||
mnmx130 min -1 -Inf -> -Infinity
|
||||
mnmx131 min -0 -Inf -> -Infinity
|
||||
mnmx132 min 0 -Inf -> -Infinity
|
||||
mnmx133 min 1 -Inf -> -Infinity
|
||||
mnmx134 min 1000 -Inf -> -Infinity
|
||||
mnmx135 min Inf -Inf -> -Infinity
|
||||
|
||||
mnmx141 min NaN -Inf -> NaN
|
||||
mnmx142 min NaN -1000 -> NaN
|
||||
mnmx143 min NaN -1 -> NaN
|
||||
mnmx144 min NaN -0 -> NaN
|
||||
mnmx145 min NaN 0 -> NaN
|
||||
mnmx146 min NaN 1 -> NaN
|
||||
mnmx147 min NaN 1000 -> NaN
|
||||
mnmx148 min NaN Inf -> NaN
|
||||
mnmx149 min NaN NaN -> NaN
|
||||
mnmx150 min -Inf NaN -> NaN
|
||||
mnmx151 min -1000 NaN -> NaN
|
||||
mnmx152 min -1 -NaN -> -NaN
|
||||
mnmx153 min -0 NaN -> NaN
|
||||
mnmx154 min 0 -NaN -> -NaN
|
||||
mnmx155 min 1 NaN -> NaN
|
||||
mnmx156 min 1000 NaN -> NaN
|
||||
mnmx157 min Inf NaN -> NaN
|
||||
|
||||
mnmx161 min sNaN -Inf -> NaN Invalid_operation
|
||||
mnmx162 min sNaN -1000 -> NaN Invalid_operation
|
||||
mnmx163 min sNaN -1 -> NaN Invalid_operation
|
||||
mnmx164 min sNaN -0 -> NaN Invalid_operation
|
||||
mnmx165 min -sNaN 0 -> -NaN Invalid_operation
|
||||
mnmx166 min -sNaN 1 -> -NaN Invalid_operation
|
||||
mnmx167 min sNaN 1000 -> NaN Invalid_operation
|
||||
mnmx168 min sNaN NaN -> NaN Invalid_operation
|
||||
mnmx169 min sNaN sNaN -> NaN Invalid_operation
|
||||
mnmx170 min NaN sNaN -> NaN Invalid_operation
|
||||
mnmx171 min -Inf sNaN -> NaN Invalid_operation
|
||||
mnmx172 min -1000 sNaN -> NaN Invalid_operation
|
||||
mnmx173 min -1 sNaN -> NaN Invalid_operation
|
||||
mnmx174 min -0 sNaN -> NaN Invalid_operation
|
||||
mnmx175 min 0 sNaN -> NaN Invalid_operation
|
||||
mnmx176 min 1 sNaN -> NaN Invalid_operation
|
||||
mnmx177 min 1000 sNaN -> NaN Invalid_operation
|
||||
mnmx178 min Inf sNaN -> NaN Invalid_operation
|
||||
mnmx179 min NaN sNaN -> NaN Invalid_operation
|
||||
|
||||
-- propagating NaNs
|
||||
mnmx181 min NaN9 -Inf -> NaN9
|
||||
mnmx182 min -NaN8 9990 -> -NaN8
|
||||
mnmx183 min NaN71 Inf -> NaN71
|
||||
mnmx184 min NaN6 NaN51 -> NaN6
|
||||
mnmx185 min -Inf NaN41 -> NaN41
|
||||
mnmx186 min -9999 -NaN33 -> -NaN33
|
||||
mnmx187 min Inf NaN2 -> NaN2
|
||||
|
||||
mnmx191 min sNaN99 -Inf -> NaN99 Invalid_operation
|
||||
mnmx192 min sNaN98 -11 -> NaN98 Invalid_operation
|
||||
mnmx193 min -sNaN97 NaN -> -NaN97 Invalid_operation
|
||||
mnmx194 min sNaN69 sNaN94 -> NaN69 Invalid_operation
|
||||
mnmx195 min NaN95 sNaN93 -> NaN93 Invalid_operation
|
||||
mnmx196 min -Inf sNaN92 -> NaN92 Invalid_operation
|
||||
mnmx197 min 088 sNaN91 -> NaN91 Invalid_operation
|
||||
mnmx198 min Inf -sNaN90 -> -NaN90 Invalid_operation
|
||||
mnmx199 min NaN sNaN86 -> NaN86 Invalid_operation
|
||||
|
||||
-- rounding checks -- chosen is rounded, or not
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
mnmx201 min -12345678000 1 -> -1.23456780E+10 Rounded
|
||||
mnmx202 min 1 -12345678000 -> -1.23456780E+10 Rounded
|
||||
mnmx203 min -1234567800 1 -> -1.23456780E+9 Rounded
|
||||
mnmx204 min 1 -1234567800 -> -1.23456780E+9 Rounded
|
||||
mnmx205 min -1234567890 1 -> -1.23456789E+9 Rounded
|
||||
mnmx206 min 1 -1234567890 -> -1.23456789E+9 Rounded
|
||||
mnmx207 min -1234567891 1 -> -1.23456789E+9 Inexact Rounded
|
||||
mnmx208 min 1 -1234567891 -> -1.23456789E+9 Inexact Rounded
|
||||
mnmx209 min -12345678901 1 -> -1.23456789E+10 Inexact Rounded
|
||||
mnmx210 min 1 -12345678901 -> -1.23456789E+10 Inexact Rounded
|
||||
mnmx211 min -1234567896 1 -> -1.23456790E+9 Inexact Rounded
|
||||
mnmx212 min 1 -1234567896 -> -1.23456790E+9 Inexact Rounded
|
||||
mnmx213 min 1234567891 1 -> 1
|
||||
mnmx214 min 1 1234567891 -> 1
|
||||
mnmx215 min 12345678901 1 -> 1
|
||||
mnmx216 min 1 12345678901 -> 1
|
||||
mnmx217 min 1234567896 1 -> 1
|
||||
mnmx218 min 1 1234567896 -> 1
|
||||
|
||||
precision: 15
|
||||
mnmx221 min -12345678000 1 -> -12345678000
|
||||
mnmx222 min 1 -12345678000 -> -12345678000
|
||||
mnmx223 min -1234567800 1 -> -1234567800
|
||||
mnmx224 min 1 -1234567800 -> -1234567800
|
||||
mnmx225 min -1234567890 1 -> -1234567890
|
||||
mnmx226 min 1 -1234567890 -> -1234567890
|
||||
mnmx227 min -1234567891 1 -> -1234567891
|
||||
mnmx228 min 1 -1234567891 -> -1234567891
|
||||
mnmx229 min -12345678901 1 -> -12345678901
|
||||
mnmx230 min 1 -12345678901 -> -12345678901
|
||||
mnmx231 min -1234567896 1 -> -1234567896
|
||||
mnmx232 min 1 -1234567896 -> -1234567896
|
||||
mnmx233 min 1234567891 1 -> 1
|
||||
mnmx234 min 1 1234567891 -> 1
|
||||
mnmx235 min 12345678901 1 -> 1
|
||||
mnmx236 min 1 12345678901 -> 1
|
||||
mnmx237 min 1234567896 1 -> 1
|
||||
mnmx238 min 1 1234567896 -> 1
|
||||
|
||||
-- from examples
|
||||
mnmx280 min '3' '2' -> '2'
|
||||
mnmx281 min '-10' '3' -> '-10'
|
||||
mnmx282 min '1.0' '1' -> '1.0'
|
||||
mnmx283 min '1' '1.0' -> '1'
|
||||
|
||||
-- overflow and underflow tests .. subnormal results [inputs] now allowed
|
||||
maxExponent: 999999999
|
||||
minexponent: -999999999
|
||||
mnmx330 min -1.23456789012345E-0 -9E+999999999 -> -9E+999999999
|
||||
mnmx331 min -9E+999999999 -1.23456789012345E-0 -> -9E+999999999
|
||||
mnmx332 min -0.100 -9E-999999999 -> -0.100
|
||||
mnmx333 min -9E-999999999 -0.100 -> -0.100
|
||||
mnmx335 min +1.23456789012345E-0 -9E+999999999 -> -9E+999999999
|
||||
mnmx336 min -9E+999999999 1.23456789012345E-0 -> -9E+999999999
|
||||
mnmx337 min +0.100 -9E-999999999 -> -9E-999999999
|
||||
mnmx338 min -9E-999999999 0.100 -> -9E-999999999
|
||||
|
||||
mnmx339 min -1e-599999999 -1e-400000001 -> -1E-400000001
|
||||
mnmx340 min -1e-599999999 -1e-400000000 -> -1E-400000000
|
||||
mnmx341 min -1e-600000000 -1e-400000000 -> -1E-400000000
|
||||
mnmx342 min -9e-999999998 -0.01 -> -0.01
|
||||
mnmx343 min -9e-999999998 -0.1 -> -0.1
|
||||
mnmx344 min -0.01 -9e-999999998 -> -0.01
|
||||
mnmx345 min -1e599999999 -1e400000001 -> -1E+599999999
|
||||
mnmx346 min -1e599999999 -1e400000000 -> -1E+599999999
|
||||
mnmx347 min -1e600000000 -1e400000000 -> -1E+600000000
|
||||
mnmx348 min -9e999999998 -100 -> -9E+999999998
|
||||
mnmx349 min -9e999999998 -10 -> -9E+999999998
|
||||
mnmx350 min -100 -9e999999998 -> -9E+999999998
|
||||
-- signs
|
||||
mnmx351 min -1e+777777777 -1e+411111111 -> -1E+777777777
|
||||
mnmx352 min -1e+777777777 +1e+411111111 -> -1E+777777777
|
||||
mnmx353 min +1e+777777777 -1e+411111111 -> -1E+411111111
|
||||
mnmx354 min +1e+777777777 +1e+411111111 -> 1E+411111111
|
||||
mnmx355 min -1e-777777777 -1e-411111111 -> -1E-411111111
|
||||
mnmx356 min -1e-777777777 +1e-411111111 -> -1E-777777777
|
||||
mnmx357 min +1e-777777777 -1e-411111111 -> -1E-411111111
|
||||
mnmx358 min +1e-777777777 +1e-411111111 -> 1E-777777777
|
||||
|
||||
|
||||
-- overflow tests
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 3
|
||||
mnmx400 min 9.999E+999999999 0 -> 0
|
||||
mnmx401 min -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded
|
||||
|
||||
-- subnormals and underflow
|
||||
precision: 3
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
mnmx410 min 1.00E-999 0 -> 0
|
||||
mnmx411 min 0.1E-999 0 -> 0
|
||||
mnmx412 min 0.10E-999 0 -> 0
|
||||
mnmx413 min 0.100E-999 0 -> 0
|
||||
mnmx414 min 0.01E-999 0 -> 0
|
||||
mnmx415 min 0.999E-999 0 -> 0
|
||||
mnmx416 min 0.099E-999 0 -> 0
|
||||
mnmx417 min 0.009E-999 0 -> 0
|
||||
mnmx418 min 0.001E-999 0 -> 0
|
||||
mnmx419 min 0.0009E-999 0 -> 0
|
||||
mnmx420 min 0.0001E-999 0 -> 0
|
||||
|
||||
mnmx430 min -1.00E-999 0 -> -1.00E-999
|
||||
mnmx431 min -0.1E-999 0 -> -1E-1000 Subnormal
|
||||
mnmx432 min -0.10E-999 0 -> -1.0E-1000 Subnormal
|
||||
mnmx433 min -0.100E-999 0 -> -1.0E-1000 Subnormal Rounded
|
||||
mnmx434 min -0.01E-999 0 -> -1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
mnmx435 min -0.999E-999 0 -> -1.00E-999 Inexact Rounded Subnormal Underflow
|
||||
mnmx436 min -0.099E-999 0 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
mnmx437 min -0.009E-999 0 -> -1E-1001 Inexact Rounded Subnormal Underflow
|
||||
mnmx438 min -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
mnmx439 min -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
mnmx440 min -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
|
||||
|
||||
-- Null tests
|
||||
mnm900 min 10 # -> NaN Invalid_operation
|
||||
mnm901 min # 10 -> NaN Invalid_operation
|
|
@ -0,0 +1,182 @@
|
|||
------------------------------------------------------------------------
|
||||
-- minus.decTest -- decimal negation --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
-- This set of tests primarily tests the existence of the operator.
|
||||
-- Subtraction, rounding, and more overflows are tested elsewhere.
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
|
||||
minx001 minus '1' -> '-1'
|
||||
minx002 minus '-1' -> '1'
|
||||
minx003 minus '1.00' -> '-1.00'
|
||||
minx004 minus '-1.00' -> '1.00'
|
||||
minx005 minus '0' -> '0'
|
||||
minx006 minus '0.00' -> '0.00'
|
||||
minx007 minus '00.0' -> '0.0'
|
||||
minx008 minus '00.00' -> '0.00'
|
||||
minx009 minus '00' -> '0'
|
||||
|
||||
minx010 minus '-2' -> '2'
|
||||
minx011 minus '2' -> '-2'
|
||||
minx012 minus '-2.00' -> '2.00'
|
||||
minx013 minus '2.00' -> '-2.00'
|
||||
minx014 minus '-0' -> '0'
|
||||
minx015 minus '-0.00' -> '0.00'
|
||||
minx016 minus '-00.0' -> '0.0'
|
||||
minx017 minus '-00.00' -> '0.00'
|
||||
minx018 minus '-00' -> '0'
|
||||
|
||||
-- "lhs" zeros in plus and minus have exponent = operand
|
||||
minx020 minus '-0E3' -> '0E+3'
|
||||
minx021 minus '-0E2' -> '0E+2'
|
||||
minx022 minus '-0E1' -> '0E+1'
|
||||
minx023 minus '-0E0' -> '0'
|
||||
minx024 minus '+0E0' -> '0'
|
||||
minx025 minus '+0E1' -> '0E+1'
|
||||
minx026 minus '+0E2' -> '0E+2'
|
||||
minx027 minus '+0E3' -> '0E+3'
|
||||
|
||||
minx030 minus '-5E3' -> '5E+3'
|
||||
minx031 minus '-5E8' -> '5E+8'
|
||||
minx032 minus '-5E13' -> '5E+13'
|
||||
minx033 minus '-5E18' -> '5E+18'
|
||||
minx034 minus '+5E3' -> '-5E+3'
|
||||
minx035 minus '+5E8' -> '-5E+8'
|
||||
minx036 minus '+5E13' -> '-5E+13'
|
||||
minx037 minus '+5E18' -> '-5E+18'
|
||||
|
||||
minx050 minus '-2000000' -> '2000000'
|
||||
minx051 minus '2000000' -> '-2000000'
|
||||
precision: 7
|
||||
minx052 minus '-2000000' -> '2000000'
|
||||
minx053 minus '2000000' -> '-2000000'
|
||||
precision: 6
|
||||
minx054 minus '-2000000' -> '2.00000E+6' Rounded
|
||||
minx055 minus '2000000' -> '-2.00000E+6' Rounded
|
||||
precision: 3
|
||||
minx056 minus '-2000000' -> '2.00E+6' Rounded
|
||||
minx057 minus '2000000' -> '-2.00E+6' Rounded
|
||||
|
||||
-- more fixed, potential LHS swaps/overlays if done by 0 subtract x
|
||||
precision: 9
|
||||
minx060 minus '56267E-10' -> '-0.0000056267'
|
||||
minx061 minus '56267E-5' -> '-0.56267'
|
||||
minx062 minus '56267E-2' -> '-562.67'
|
||||
minx063 minus '56267E-1' -> '-5626.7'
|
||||
minx065 minus '56267E-0' -> '-56267'
|
||||
minx066 minus '56267E+0' -> '-56267'
|
||||
minx067 minus '56267E+1' -> '-5.6267E+5'
|
||||
minx068 minus '56267E+2' -> '-5.6267E+6'
|
||||
minx069 minus '56267E+3' -> '-5.6267E+7'
|
||||
minx070 minus '56267E+4' -> '-5.6267E+8'
|
||||
minx071 minus '56267E+5' -> '-5.6267E+9'
|
||||
minx072 minus '56267E+6' -> '-5.6267E+10'
|
||||
minx080 minus '-56267E-10' -> '0.0000056267'
|
||||
minx081 minus '-56267E-5' -> '0.56267'
|
||||
minx082 minus '-56267E-2' -> '562.67'
|
||||
minx083 minus '-56267E-1' -> '5626.7'
|
||||
minx085 minus '-56267E-0' -> '56267'
|
||||
minx086 minus '-56267E+0' -> '56267'
|
||||
minx087 minus '-56267E+1' -> '5.6267E+5'
|
||||
minx088 minus '-56267E+2' -> '5.6267E+6'
|
||||
minx089 minus '-56267E+3' -> '5.6267E+7'
|
||||
minx090 minus '-56267E+4' -> '5.6267E+8'
|
||||
minx091 minus '-56267E+5' -> '5.6267E+9'
|
||||
minx092 minus '-56267E+6' -> '5.6267E+10'
|
||||
|
||||
|
||||
-- overflow tests
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 3
|
||||
minx100 minus 9.999E+999999999 -> -Infinity Inexact Overflow Rounded
|
||||
minx101 minus -9.999E+999999999 -> Infinity Inexact Overflow Rounded
|
||||
|
||||
-- subnormals and underflow
|
||||
precision: 3
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
minx110 minus 1.00E-999 -> -1.00E-999
|
||||
minx111 minus 0.1E-999 -> -1E-1000 Subnormal
|
||||
minx112 minus 0.10E-999 -> -1.0E-1000 Subnormal
|
||||
minx113 minus 0.100E-999 -> -1.0E-1000 Subnormal Rounded
|
||||
minx114 minus 0.01E-999 -> -1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
minx115 minus 0.999E-999 -> -1.00E-999 Inexact Rounded Subnormal Underflow
|
||||
minx116 minus 0.099E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
minx117 minus 0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow
|
||||
minx118 minus 0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
minx119 minus 0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
minx120 minus 0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
|
||||
minx130 minus -1.00E-999 -> 1.00E-999
|
||||
minx131 minus -0.1E-999 -> 1E-1000 Subnormal
|
||||
minx132 minus -0.10E-999 -> 1.0E-1000 Subnormal
|
||||
minx133 minus -0.100E-999 -> 1.0E-1000 Subnormal Rounded
|
||||
minx134 minus -0.01E-999 -> 1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
minx135 minus -0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow
|
||||
minx136 minus -0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
minx137 minus -0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
|
||||
minx138 minus -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
minx139 minus -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
minx140 minus -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
|
||||
|
||||
-- long operand checks
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
minx301 minus 12345678000 -> -1.23456780E+10 Rounded
|
||||
minx302 minus 1234567800 -> -1.23456780E+9 Rounded
|
||||
minx303 minus 1234567890 -> -1.23456789E+9 Rounded
|
||||
minx304 minus 1234567891 -> -1.23456789E+9 Inexact Rounded
|
||||
minx305 minus 12345678901 -> -1.23456789E+10 Inexact Rounded
|
||||
minx306 minus 1234567896 -> -1.23456790E+9 Inexact Rounded
|
||||
|
||||
precision: 15
|
||||
-- still checking
|
||||
minx321 minus 12345678000 -> -12345678000
|
||||
minx322 minus 1234567800 -> -1234567800
|
||||
minx323 minus 1234567890 -> -1234567890
|
||||
minx324 minus 1234567891 -> -1234567891
|
||||
minx325 minus 12345678901 -> -12345678901
|
||||
minx326 minus 1234567896 -> -1234567896
|
||||
|
||||
-- specials
|
||||
minx420 minus 'Inf' -> '-Infinity'
|
||||
minx421 minus '-Inf' -> 'Infinity'
|
||||
minx422 minus NaN -> NaN
|
||||
minx423 minus sNaN -> NaN Invalid_operation
|
||||
minx424 minus NaN255 -> NaN255
|
||||
minx425 minus sNaN256 -> NaN256 Invalid_operation
|
||||
minx426 minus -NaN -> -NaN
|
||||
minx427 minus -sNaN -> -NaN Invalid_operation
|
||||
minx428 minus -NaN255 -> -NaN255
|
||||
minx429 minus -sNaN256 -> -NaN256 Invalid_operation
|
||||
|
||||
-- Null tests
|
||||
minx900 minus # -> NaN Invalid_operation
|
||||
|
|
@ -0,0 +1,651 @@
|
|||
------------------------------------------------------------------------
|
||||
-- multiply.decTest -- decimal multiplication --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
|
||||
-- sanity checks (as base, above)
|
||||
mulx000 multiply 2 2 -> 4
|
||||
mulx001 multiply 2 3 -> 6
|
||||
mulx002 multiply 5 1 -> 5
|
||||
mulx003 multiply 5 2 -> 10
|
||||
mulx004 multiply 1.20 2 -> 2.40
|
||||
mulx005 multiply 1.20 0 -> 0.00
|
||||
mulx006 multiply 1.20 -2 -> -2.40
|
||||
mulx007 multiply -1.20 2 -> -2.40
|
||||
mulx008 multiply -1.20 0 -> -0.00
|
||||
mulx009 multiply -1.20 -2 -> 2.40
|
||||
mulx010 multiply 5.09 7.1 -> 36.139
|
||||
mulx011 multiply 2.5 4 -> 10.0
|
||||
mulx012 multiply 2.50 4 -> 10.00
|
||||
mulx013 multiply 1.23456789 1.00000000 -> 1.23456789 Rounded
|
||||
mulx014 multiply 9.999999999 9.999999999 -> 100.000000 Inexact Rounded
|
||||
mulx015 multiply 2.50 4 -> 10.00
|
||||
precision: 6
|
||||
mulx016 multiply 2.50 4 -> 10.00
|
||||
mulx017 multiply 9.999999999 9.999999999 -> 100.000 Inexact Rounded
|
||||
|
||||
-- 1999.12.21: next one is a edge case if intermediate longs are used
|
||||
precision: 15
|
||||
mulx019 multiply 999999999999 9765625 -> 9.76562499999023E+18 Inexact Rounded
|
||||
precision: 30
|
||||
mulx160 multiply 999999999999 9765625 -> 9765624999990234375
|
||||
precision: 9
|
||||
-----
|
||||
|
||||
-- zeros, etc.
|
||||
mulx020 multiply 0 0 -> 0
|
||||
mulx021 multiply 0 -0 -> -0
|
||||
mulx022 multiply -0 0 -> -0
|
||||
mulx023 multiply -0 -0 -> 0
|
||||
mulx030 multiply 5.00 1E-3 -> 0.00500
|
||||
mulx031 multiply 00.00 0.000 -> 0.00000
|
||||
mulx032 multiply 00.00 0E-3 -> 0.00000 -- rhs is 0
|
||||
mulx033 multiply 0E-3 00.00 -> 0.00000 -- lhs is 0
|
||||
mulx034 multiply -5.00 1E-3 -> -0.00500
|
||||
mulx035 multiply -00.00 0.000 -> -0.00000
|
||||
mulx036 multiply -00.00 0E-3 -> -0.00000 -- rhs is 0
|
||||
mulx037 multiply -0E-3 00.00 -> -0.00000 -- lhs is 0
|
||||
mulx038 multiply 5.00 -1E-3 -> -0.00500
|
||||
mulx039 multiply 00.00 -0.000 -> -0.00000
|
||||
mulx040 multiply 00.00 -0E-3 -> -0.00000 -- rhs is 0
|
||||
mulx041 multiply 0E-3 -00.00 -> -0.00000 -- lhs is 0
|
||||
mulx042 multiply -5.00 -1E-3 -> 0.00500
|
||||
mulx043 multiply -00.00 -0.000 -> 0.00000
|
||||
mulx044 multiply -00.00 -0E-3 -> 0.00000 -- rhs is 0
|
||||
mulx045 multiply -0E-3 -00.00 -> 0.00000 -- lhs is 0
|
||||
|
||||
-- examples from decarith
|
||||
mulx050 multiply 1.20 3 -> 3.60
|
||||
mulx051 multiply 7 3 -> 21
|
||||
mulx052 multiply 0.9 0.8 -> 0.72
|
||||
mulx053 multiply 0.9 -0 -> -0.0
|
||||
mulx054 multiply 654321 654321 -> 4.28135971E+11 Inexact Rounded
|
||||
|
||||
mulx060 multiply 123.45 1e7 -> 1.2345E+9
|
||||
mulx061 multiply 123.45 1e8 -> 1.2345E+10
|
||||
mulx062 multiply 123.45 1e+9 -> 1.2345E+11
|
||||
mulx063 multiply 123.45 1e10 -> 1.2345E+12
|
||||
mulx064 multiply 123.45 1e11 -> 1.2345E+13
|
||||
mulx065 multiply 123.45 1e12 -> 1.2345E+14
|
||||
mulx066 multiply 123.45 1e13 -> 1.2345E+15
|
||||
|
||||
|
||||
-- test some intermediate lengths
|
||||
precision: 9
|
||||
mulx080 multiply 0.1 123456789 -> 12345678.9
|
||||
mulx081 multiply 0.1 1234567891 -> 123456789 Inexact Rounded
|
||||
mulx082 multiply 0.1 12345678912 -> 1.23456789E+9 Inexact Rounded
|
||||
mulx083 multiply 0.1 12345678912345 -> 1.23456789E+12 Inexact Rounded
|
||||
mulx084 multiply 0.1 123456789 -> 12345678.9
|
||||
precision: 8
|
||||
mulx085 multiply 0.1 12345678912 -> 1.2345679E+9 Inexact Rounded
|
||||
mulx086 multiply 0.1 12345678912345 -> 1.2345679E+12 Inexact Rounded
|
||||
precision: 7
|
||||
mulx087 multiply 0.1 12345678912 -> 1.234568E+9 Inexact Rounded
|
||||
mulx088 multiply 0.1 12345678912345 -> 1.234568E+12 Inexact Rounded
|
||||
|
||||
precision: 9
|
||||
mulx090 multiply 123456789 0.1 -> 12345678.9
|
||||
mulx091 multiply 1234567891 0.1 -> 123456789 Inexact Rounded
|
||||
mulx092 multiply 12345678912 0.1 -> 1.23456789E+9 Inexact Rounded
|
||||
mulx093 multiply 12345678912345 0.1 -> 1.23456789E+12 Inexact Rounded
|
||||
mulx094 multiply 123456789 0.1 -> 12345678.9
|
||||
precision: 8
|
||||
mulx095 multiply 12345678912 0.1 -> 1.2345679E+9 Inexact Rounded
|
||||
mulx096 multiply 12345678912345 0.1 -> 1.2345679E+12 Inexact Rounded
|
||||
precision: 7
|
||||
mulx097 multiply 12345678912 0.1 -> 1.234568E+9 Inexact Rounded
|
||||
mulx098 multiply 12345678912345 0.1 -> 1.234568E+12 Inexact Rounded
|
||||
|
||||
-- test some more edge cases and carries
|
||||
maxexponent: 9999
|
||||
minexponent: -9999
|
||||
precision: 33
|
||||
mulx101 multiply 9 9 -> 81
|
||||
mulx102 multiply 9 90 -> 810
|
||||
mulx103 multiply 9 900 -> 8100
|
||||
mulx104 multiply 9 9000 -> 81000
|
||||
mulx105 multiply 9 90000 -> 810000
|
||||
mulx106 multiply 9 900000 -> 8100000
|
||||
mulx107 multiply 9 9000000 -> 81000000
|
||||
mulx108 multiply 9 90000000 -> 810000000
|
||||
mulx109 multiply 9 900000000 -> 8100000000
|
||||
mulx110 multiply 9 9000000000 -> 81000000000
|
||||
mulx111 multiply 9 90000000000 -> 810000000000
|
||||
mulx112 multiply 9 900000000000 -> 8100000000000
|
||||
mulx113 multiply 9 9000000000000 -> 81000000000000
|
||||
mulx114 multiply 9 90000000000000 -> 810000000000000
|
||||
mulx115 multiply 9 900000000000000 -> 8100000000000000
|
||||
mulx116 multiply 9 9000000000000000 -> 81000000000000000
|
||||
mulx117 multiply 9 90000000000000000 -> 810000000000000000
|
||||
mulx118 multiply 9 900000000000000000 -> 8100000000000000000
|
||||
mulx119 multiply 9 9000000000000000000 -> 81000000000000000000
|
||||
mulx120 multiply 9 90000000000000000000 -> 810000000000000000000
|
||||
mulx121 multiply 9 900000000000000000000 -> 8100000000000000000000
|
||||
mulx122 multiply 9 9000000000000000000000 -> 81000000000000000000000
|
||||
mulx123 multiply 9 90000000000000000000000 -> 810000000000000000000000
|
||||
-- test some more edge cases without carries
|
||||
mulx131 multiply 3 3 -> 9
|
||||
mulx132 multiply 3 30 -> 90
|
||||
mulx133 multiply 3 300 -> 900
|
||||
mulx134 multiply 3 3000 -> 9000
|
||||
mulx135 multiply 3 30000 -> 90000
|
||||
mulx136 multiply 3 300000 -> 900000
|
||||
mulx137 multiply 3 3000000 -> 9000000
|
||||
mulx138 multiply 3 30000000 -> 90000000
|
||||
mulx139 multiply 3 300000000 -> 900000000
|
||||
mulx140 multiply 3 3000000000 -> 9000000000
|
||||
mulx141 multiply 3 30000000000 -> 90000000000
|
||||
mulx142 multiply 3 300000000000 -> 900000000000
|
||||
mulx143 multiply 3 3000000000000 -> 9000000000000
|
||||
mulx144 multiply 3 30000000000000 -> 90000000000000
|
||||
mulx145 multiply 3 300000000000000 -> 900000000000000
|
||||
mulx146 multiply 3 3000000000000000 -> 9000000000000000
|
||||
mulx147 multiply 3 30000000000000000 -> 90000000000000000
|
||||
mulx148 multiply 3 300000000000000000 -> 900000000000000000
|
||||
mulx149 multiply 3 3000000000000000000 -> 9000000000000000000
|
||||
mulx150 multiply 3 30000000000000000000 -> 90000000000000000000
|
||||
mulx151 multiply 3 300000000000000000000 -> 900000000000000000000
|
||||
mulx152 multiply 3 3000000000000000000000 -> 9000000000000000000000
|
||||
mulx153 multiply 3 30000000000000000000000 -> 90000000000000000000000
|
||||
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 9
|
||||
-- test some cases that are close to exponent overflow/underflow
|
||||
mulx170 multiply 1 9e999999999 -> 9E+999999999
|
||||
mulx171 multiply 1 9.9e999999999 -> 9.9E+999999999
|
||||
mulx172 multiply 1 9.99e999999999 -> 9.99E+999999999
|
||||
mulx173 multiply 9e999999999 1 -> 9E+999999999
|
||||
mulx174 multiply 9.9e999999999 1 -> 9.9E+999999999
|
||||
mulx176 multiply 9.99e999999999 1 -> 9.99E+999999999
|
||||
mulx177 multiply 1 9.99999999e999999999 -> 9.99999999E+999999999
|
||||
mulx178 multiply 9.99999999e999999999 1 -> 9.99999999E+999999999
|
||||
|
||||
mulx180 multiply 0.1 9e-999999998 -> 9E-999999999
|
||||
mulx181 multiply 0.1 99e-999999998 -> 9.9E-999999998
|
||||
mulx182 multiply 0.1 999e-999999998 -> 9.99E-999999997
|
||||
|
||||
mulx183 multiply 0.1 9e-999999998 -> 9E-999999999
|
||||
mulx184 multiply 0.1 99e-999999998 -> 9.9E-999999998
|
||||
mulx185 multiply 0.1 999e-999999998 -> 9.99E-999999997
|
||||
mulx186 multiply 0.1 999e-999999997 -> 9.99E-999999996
|
||||
mulx187 multiply 0.1 9999e-999999997 -> 9.999E-999999995
|
||||
mulx188 multiply 0.1 99999e-999999997 -> 9.9999E-999999994
|
||||
|
||||
mulx190 multiply 1 9e-999999998 -> 9E-999999998
|
||||
mulx191 multiply 1 99e-999999998 -> 9.9E-999999997
|
||||
mulx192 multiply 1 999e-999999998 -> 9.99E-999999996
|
||||
mulx193 multiply 9e-999999998 1 -> 9E-999999998
|
||||
mulx194 multiply 99e-999999998 1 -> 9.9E-999999997
|
||||
mulx195 multiply 999e-999999998 1 -> 9.99E-999999996
|
||||
|
||||
mulx196 multiply 1e-599999999 1e-400000000 -> 1E-999999999
|
||||
mulx197 multiply 1e-600000000 1e-399999999 -> 1E-999999999
|
||||
mulx198 multiply 1.2e-599999999 1.2e-400000000 -> 1.44E-999999999
|
||||
mulx199 multiply 1.2e-600000000 1.2e-399999999 -> 1.44E-999999999
|
||||
|
||||
mulx201 multiply 1e599999999 1e400000000 -> 1E+999999999
|
||||
mulx202 multiply 1e600000000 1e399999999 -> 1E+999999999
|
||||
mulx203 multiply 1.2e599999999 1.2e400000000 -> 1.44E+999999999
|
||||
mulx204 multiply 1.2e600000000 1.2e399999999 -> 1.44E+999999999
|
||||
|
||||
-- long operand triangle
|
||||
precision: 33
|
||||
mulx246 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916511992830 Inexact Rounded
|
||||
precision: 32
|
||||
mulx247 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199283 Inexact Rounded
|
||||
precision: 31
|
||||
mulx248 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928 Inexact Rounded
|
||||
precision: 30
|
||||
mulx249 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916511993 Inexact Rounded
|
||||
precision: 29
|
||||
mulx250 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199 Inexact Rounded
|
||||
precision: 28
|
||||
mulx251 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165120 Inexact Rounded
|
||||
precision: 27
|
||||
mulx252 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916512 Inexact Rounded
|
||||
precision: 26
|
||||
mulx253 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651 Inexact Rounded
|
||||
precision: 25
|
||||
mulx254 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165 Inexact Rounded
|
||||
precision: 24
|
||||
mulx255 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671917 Inexact Rounded
|
||||
precision: 23
|
||||
mulx256 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967192 Inexact Rounded
|
||||
precision: 22
|
||||
mulx257 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719 Inexact Rounded
|
||||
precision: 21
|
||||
mulx258 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369672 Inexact Rounded
|
||||
precision: 20
|
||||
mulx259 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967 Inexact Rounded
|
||||
precision: 19
|
||||
mulx260 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933697 Inexact Rounded
|
||||
precision: 18
|
||||
mulx261 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193370 Inexact Rounded
|
||||
precision: 17
|
||||
mulx262 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119337 Inexact Rounded
|
||||
precision: 16
|
||||
mulx263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011934 Inexact Rounded
|
||||
precision: 15
|
||||
mulx264 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193 Inexact Rounded
|
||||
precision: 14
|
||||
mulx265 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119 Inexact Rounded
|
||||
precision: 13
|
||||
mulx266 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908012 Inexact Rounded
|
||||
precision: 12
|
||||
mulx267 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801 Inexact Rounded
|
||||
precision: 11
|
||||
mulx268 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080 Inexact Rounded
|
||||
precision: 10
|
||||
mulx269 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908 Inexact Rounded
|
||||
precision: 9
|
||||
mulx270 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.291 Inexact Rounded
|
||||
precision: 8
|
||||
mulx271 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29 Inexact Rounded
|
||||
precision: 7
|
||||
mulx272 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.3 Inexact Rounded
|
||||
precision: 6
|
||||
mulx273 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433 Inexact Rounded
|
||||
precision: 5
|
||||
mulx274 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.4543E+5 Inexact Rounded
|
||||
precision: 4
|
||||
mulx275 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.454E+5 Inexact Rounded
|
||||
precision: 3
|
||||
mulx276 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.45E+5 Inexact Rounded
|
||||
precision: 2
|
||||
mulx277 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.5E+5 Inexact Rounded
|
||||
precision: 1
|
||||
mulx278 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1E+5 Inexact Rounded
|
||||
|
||||
-- tryzeros cases
|
||||
precision: 7
|
||||
rounding: half_up
|
||||
maxExponent: 92
|
||||
minexponent: -92
|
||||
mulx504 multiply 0E-60 1000E-60 -> 0E-98 Clamped
|
||||
mulx505 multiply 100E+60 0E+60 -> 0E+92 Clamped
|
||||
|
||||
-- mixed with zeros
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 9
|
||||
mulx541 multiply 0 -1 -> -0
|
||||
mulx542 multiply -0 -1 -> 0
|
||||
mulx543 multiply 0 1 -> 0
|
||||
mulx544 multiply -0 1 -> -0
|
||||
mulx545 multiply -1 0 -> -0
|
||||
mulx546 multiply -1 -0 -> 0
|
||||
mulx547 multiply 1 0 -> 0
|
||||
mulx548 multiply 1 -0 -> -0
|
||||
|
||||
mulx551 multiply 0.0 -1 -> -0.0
|
||||
mulx552 multiply -0.0 -1 -> 0.0
|
||||
mulx553 multiply 0.0 1 -> 0.0
|
||||
mulx554 multiply -0.0 1 -> -0.0
|
||||
mulx555 multiply -1.0 0 -> -0.0
|
||||
mulx556 multiply -1.0 -0 -> 0.0
|
||||
mulx557 multiply 1.0 0 -> 0.0
|
||||
mulx558 multiply 1.0 -0 -> -0.0
|
||||
|
||||
mulx561 multiply 0 -1.0 -> -0.0
|
||||
mulx562 multiply -0 -1.0 -> 0.0
|
||||
mulx563 multiply 0 1.0 -> 0.0
|
||||
mulx564 multiply -0 1.0 -> -0.0
|
||||
mulx565 multiply -1 0.0 -> -0.0
|
||||
mulx566 multiply -1 -0.0 -> 0.0
|
||||
mulx567 multiply 1 0.0 -> 0.0
|
||||
mulx568 multiply 1 -0.0 -> -0.0
|
||||
|
||||
mulx571 multiply 0.0 -1.0 -> -0.00
|
||||
mulx572 multiply -0.0 -1.0 -> 0.00
|
||||
mulx573 multiply 0.0 1.0 -> 0.00
|
||||
mulx574 multiply -0.0 1.0 -> -0.00
|
||||
mulx575 multiply -1.0 0.0 -> -0.00
|
||||
mulx576 multiply -1.0 -0.0 -> 0.00
|
||||
mulx577 multiply 1.0 0.0 -> 0.00
|
||||
mulx578 multiply 1.0 -0.0 -> -0.00
|
||||
|
||||
|
||||
-- Specials
|
||||
mulx580 multiply Inf -Inf -> -Infinity
|
||||
mulx581 multiply Inf -1000 -> -Infinity
|
||||
mulx582 multiply Inf -1 -> -Infinity
|
||||
mulx583 multiply Inf -0 -> NaN Invalid_operation
|
||||
mulx584 multiply Inf 0 -> NaN Invalid_operation
|
||||
mulx585 multiply Inf 1 -> Infinity
|
||||
mulx586 multiply Inf 1000 -> Infinity
|
||||
mulx587 multiply Inf Inf -> Infinity
|
||||
mulx588 multiply -1000 Inf -> -Infinity
|
||||
mulx589 multiply -Inf Inf -> -Infinity
|
||||
mulx590 multiply -1 Inf -> -Infinity
|
||||
mulx591 multiply -0 Inf -> NaN Invalid_operation
|
||||
mulx592 multiply 0 Inf -> NaN Invalid_operation
|
||||
mulx593 multiply 1 Inf -> Infinity
|
||||
mulx594 multiply 1000 Inf -> Infinity
|
||||
mulx595 multiply Inf Inf -> Infinity
|
||||
|
||||
mulx600 multiply -Inf -Inf -> Infinity
|
||||
mulx601 multiply -Inf -1000 -> Infinity
|
||||
mulx602 multiply -Inf -1 -> Infinity
|
||||
mulx603 multiply -Inf -0 -> NaN Invalid_operation
|
||||
mulx604 multiply -Inf 0 -> NaN Invalid_operation
|
||||
mulx605 multiply -Inf 1 -> -Infinity
|
||||
mulx606 multiply -Inf 1000 -> -Infinity
|
||||
mulx607 multiply -Inf Inf -> -Infinity
|
||||
mulx608 multiply -1000 Inf -> -Infinity
|
||||
mulx609 multiply -Inf -Inf -> Infinity
|
||||
mulx610 multiply -1 -Inf -> Infinity
|
||||
mulx611 multiply -0 -Inf -> NaN Invalid_operation
|
||||
mulx612 multiply 0 -Inf -> NaN Invalid_operation
|
||||
mulx613 multiply 1 -Inf -> -Infinity
|
||||
mulx614 multiply 1000 -Inf -> -Infinity
|
||||
mulx615 multiply Inf -Inf -> -Infinity
|
||||
|
||||
mulx621 multiply NaN -Inf -> NaN
|
||||
mulx622 multiply NaN -1000 -> NaN
|
||||
mulx623 multiply NaN -1 -> NaN
|
||||
mulx624 multiply NaN -0 -> NaN
|
||||
mulx625 multiply NaN 0 -> NaN
|
||||
mulx626 multiply NaN 1 -> NaN
|
||||
mulx627 multiply NaN 1000 -> NaN
|
||||
mulx628 multiply NaN Inf -> NaN
|
||||
mulx629 multiply NaN NaN -> NaN
|
||||
mulx630 multiply -Inf NaN -> NaN
|
||||
mulx631 multiply -1000 NaN -> NaN
|
||||
mulx632 multiply -1 NaN -> NaN
|
||||
mulx633 multiply -0 NaN -> NaN
|
||||
mulx634 multiply 0 NaN -> NaN
|
||||
mulx635 multiply 1 NaN -> NaN
|
||||
mulx636 multiply 1000 NaN -> NaN
|
||||
mulx637 multiply Inf NaN -> NaN
|
||||
|
||||
mulx641 multiply sNaN -Inf -> NaN Invalid_operation
|
||||
mulx642 multiply sNaN -1000 -> NaN Invalid_operation
|
||||
mulx643 multiply sNaN -1 -> NaN Invalid_operation
|
||||
mulx644 multiply sNaN -0 -> NaN Invalid_operation
|
||||
mulx645 multiply sNaN 0 -> NaN Invalid_operation
|
||||
mulx646 multiply sNaN 1 -> NaN Invalid_operation
|
||||
mulx647 multiply sNaN 1000 -> NaN Invalid_operation
|
||||
mulx648 multiply sNaN NaN -> NaN Invalid_operation
|
||||
mulx649 multiply sNaN sNaN -> NaN Invalid_operation
|
||||
mulx650 multiply NaN sNaN -> NaN Invalid_operation
|
||||
mulx651 multiply -Inf sNaN -> NaN Invalid_operation
|
||||
mulx652 multiply -1000 sNaN -> NaN Invalid_operation
|
||||
mulx653 multiply -1 sNaN -> NaN Invalid_operation
|
||||
mulx654 multiply -0 sNaN -> NaN Invalid_operation
|
||||
mulx655 multiply 0 sNaN -> NaN Invalid_operation
|
||||
mulx656 multiply 1 sNaN -> NaN Invalid_operation
|
||||
mulx657 multiply 1000 sNaN -> NaN Invalid_operation
|
||||
mulx658 multiply Inf sNaN -> NaN Invalid_operation
|
||||
mulx659 multiply NaN sNaN -> NaN Invalid_operation
|
||||
|
||||
-- propagating NaNs
|
||||
mulx661 multiply NaN9 -Inf -> NaN9
|
||||
mulx662 multiply NaN8 999 -> NaN8
|
||||
mulx663 multiply NaN71 Inf -> NaN71
|
||||
mulx664 multiply NaN6 NaN5 -> NaN6
|
||||
mulx665 multiply -Inf NaN4 -> NaN4
|
||||
mulx666 multiply -999 NaN33 -> NaN33
|
||||
mulx667 multiply Inf NaN2 -> NaN2
|
||||
|
||||
mulx671 multiply sNaN99 -Inf -> NaN99 Invalid_operation
|
||||
mulx672 multiply sNaN98 -11 -> NaN98 Invalid_operation
|
||||
mulx673 multiply sNaN97 NaN -> NaN97 Invalid_operation
|
||||
mulx674 multiply sNaN16 sNaN94 -> NaN16 Invalid_operation
|
||||
mulx675 multiply NaN95 sNaN93 -> NaN93 Invalid_operation
|
||||
mulx676 multiply -Inf sNaN92 -> NaN92 Invalid_operation
|
||||
mulx677 multiply 088 sNaN91 -> NaN91 Invalid_operation
|
||||
mulx678 multiply Inf sNaN90 -> NaN90 Invalid_operation
|
||||
mulx679 multiply NaN sNaN89 -> NaN89 Invalid_operation
|
||||
|
||||
mulx681 multiply -NaN9 -Inf -> -NaN9
|
||||
mulx682 multiply -NaN8 999 -> -NaN8
|
||||
mulx683 multiply -NaN71 Inf -> -NaN71
|
||||
mulx684 multiply -NaN6 -NaN5 -> -NaN6
|
||||
mulx685 multiply -Inf -NaN4 -> -NaN4
|
||||
mulx686 multiply -999 -NaN33 -> -NaN33
|
||||
mulx687 multiply Inf -NaN2 -> -NaN2
|
||||
|
||||
mulx691 multiply -sNaN99 -Inf -> -NaN99 Invalid_operation
|
||||
mulx692 multiply -sNaN98 -11 -> -NaN98 Invalid_operation
|
||||
mulx693 multiply -sNaN97 NaN -> -NaN97 Invalid_operation
|
||||
mulx694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation
|
||||
mulx695 multiply -NaN95 -sNaN93 -> -NaN93 Invalid_operation
|
||||
mulx696 multiply -Inf -sNaN92 -> -NaN92 Invalid_operation
|
||||
mulx697 multiply 088 -sNaN91 -> -NaN91 Invalid_operation
|
||||
mulx698 multiply Inf -sNaN90 -> -NaN90 Invalid_operation
|
||||
mulx699 multiply -NaN -sNaN89 -> -NaN89 Invalid_operation
|
||||
|
||||
mulx701 multiply -NaN -Inf -> -NaN
|
||||
mulx702 multiply -NaN 999 -> -NaN
|
||||
mulx703 multiply -NaN Inf -> -NaN
|
||||
mulx704 multiply -NaN -NaN -> -NaN
|
||||
mulx705 multiply -Inf -NaN0 -> -NaN
|
||||
mulx706 multiply -999 -NaN -> -NaN
|
||||
mulx707 multiply Inf -NaN -> -NaN
|
||||
|
||||
mulx711 multiply -sNaN -Inf -> -NaN Invalid_operation
|
||||
mulx712 multiply -sNaN -11 -> -NaN Invalid_operation
|
||||
mulx713 multiply -sNaN00 NaN -> -NaN Invalid_operation
|
||||
mulx714 multiply -sNaN -sNaN -> -NaN Invalid_operation
|
||||
mulx715 multiply -NaN -sNaN -> -NaN Invalid_operation
|
||||
mulx716 multiply -Inf -sNaN -> -NaN Invalid_operation
|
||||
mulx717 multiply 088 -sNaN -> -NaN Invalid_operation
|
||||
mulx718 multiply Inf -sNaN -> -NaN Invalid_operation
|
||||
mulx719 multiply -NaN -sNaN -> -NaN Invalid_operation
|
||||
|
||||
-- overflow and underflow tests .. note subnormal results
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
mulx730 multiply +1.23456789012345E-0 9E+999999999 -> Infinity Inexact Overflow Rounded
|
||||
mulx731 multiply 9E+999999999 +1.23456789012345E-0 -> Infinity Inexact Overflow Rounded
|
||||
mulx732 multiply +0.100 9E-999999999 -> 9.00E-1000000000 Subnormal
|
||||
mulx733 multiply 9E-999999999 +0.100 -> 9.00E-1000000000 Subnormal
|
||||
mulx735 multiply -1.23456789012345E-0 9E+999999999 -> -Infinity Inexact Overflow Rounded
|
||||
mulx736 multiply 9E+999999999 -1.23456789012345E-0 -> -Infinity Inexact Overflow Rounded
|
||||
mulx737 multiply -0.100 9E-999999999 -> -9.00E-1000000000 Subnormal
|
||||
mulx738 multiply 9E-999999999 -0.100 -> -9.00E-1000000000 Subnormal
|
||||
|
||||
mulx739 multiply 1e-599999999 1e-400000001 -> 1E-1000000000 Subnormal
|
||||
mulx740 multiply 1e-599999999 1e-400000000 -> 1E-999999999
|
||||
mulx741 multiply 1e-600000000 1e-400000000 -> 1E-1000000000 Subnormal
|
||||
mulx742 multiply 9e-999999998 0.01 -> 9E-1000000000 Subnormal
|
||||
mulx743 multiply 9e-999999998 0.1 -> 9E-999999999
|
||||
mulx744 multiply 0.01 9e-999999998 -> 9E-1000000000 Subnormal
|
||||
mulx745 multiply 1e599999999 1e400000001 -> Infinity Overflow Inexact Rounded
|
||||
mulx746 multiply 1e599999999 1e400000000 -> 1E+999999999
|
||||
mulx747 multiply 1e600000000 1e400000000 -> Infinity Overflow Inexact Rounded
|
||||
mulx748 multiply 9e999999998 100 -> Infinity Overflow Inexact Rounded
|
||||
mulx749 multiply 9e999999998 10 -> 9.0E+999999999
|
||||
mulx750 multiply 100 9e999999998 -> Infinity Overflow Inexact Rounded
|
||||
-- signs
|
||||
mulx751 multiply 1e+777777777 1e+411111111 -> Infinity Overflow Inexact Rounded
|
||||
mulx752 multiply 1e+777777777 -1e+411111111 -> -Infinity Overflow Inexact Rounded
|
||||
mulx753 multiply -1e+777777777 1e+411111111 -> -Infinity Overflow Inexact Rounded
|
||||
mulx754 multiply -1e+777777777 -1e+411111111 -> Infinity Overflow Inexact Rounded
|
||||
mulx755 multiply 1e-777777777 1e-411111111 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
mulx756 multiply 1e-777777777 -1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
mulx757 multiply -1e-777777777 1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
mulx758 multiply -1e-777777777 -1e-411111111 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
|
||||
-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
|
||||
precision: 9
|
||||
mulx760 multiply 1e-600000000 1e-400000001 -> 1E-1000000001 Subnormal
|
||||
mulx761 multiply 1e-600000000 1e-400000002 -> 1E-1000000002 Subnormal
|
||||
mulx762 multiply 1e-600000000 1e-400000003 -> 1E-1000000003 Subnormal
|
||||
mulx763 multiply 1e-600000000 1e-400000004 -> 1E-1000000004 Subnormal
|
||||
mulx764 multiply 1e-600000000 1e-400000005 -> 1E-1000000005 Subnormal
|
||||
mulx765 multiply 1e-600000000 1e-400000006 -> 1E-1000000006 Subnormal
|
||||
mulx766 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
|
||||
mulx767 multiply 1e-600000000 1e-400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
mulx768 multiply 1e-600000000 1e-400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
mulx769 multiply 1e-600000000 1e-400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
-- [no equivalent of 'subnormal' for overflow]
|
||||
mulx770 multiply 1e+600000000 1e+400000001 -> Infinity Overflow Inexact Rounded
|
||||
mulx771 multiply 1e+600000000 1e+400000002 -> Infinity Overflow Inexact Rounded
|
||||
mulx772 multiply 1e+600000000 1e+400000003 -> Infinity Overflow Inexact Rounded
|
||||
mulx773 multiply 1e+600000000 1e+400000004 -> Infinity Overflow Inexact Rounded
|
||||
mulx774 multiply 1e+600000000 1e+400000005 -> Infinity Overflow Inexact Rounded
|
||||
mulx775 multiply 1e+600000000 1e+400000006 -> Infinity Overflow Inexact Rounded
|
||||
mulx776 multiply 1e+600000000 1e+400000007 -> Infinity Overflow Inexact Rounded
|
||||
mulx777 multiply 1e+600000000 1e+400000008 -> Infinity Overflow Inexact Rounded
|
||||
mulx778 multiply 1e+600000000 1e+400000009 -> Infinity Overflow Inexact Rounded
|
||||
mulx779 multiply 1e+600000000 1e+400000010 -> Infinity Overflow Inexact Rounded
|
||||
|
||||
-- 'subnormal' test edge condition at higher precisions
|
||||
precision: 99
|
||||
mulx780 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
|
||||
mulx781 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal
|
||||
mulx782 multiply 1e-600000000 1e-400000097 -> 1E-1000000097 Subnormal
|
||||
mulx783 multiply 1e-600000000 1e-400000098 -> 0E-1000000097 Underflow Subnormal Inexact Rounded
|
||||
precision: 999
|
||||
mulx784 multiply 1e-600000000 1e-400000997 -> 1E-1000000997 Subnormal
|
||||
mulx785 multiply 1e-600000000 1e-400000998 -> 0E-1000000997 Underflow Subnormal Inexact Rounded
|
||||
|
||||
-- following testcases [through mulx800] not yet run against code
|
||||
precision: 9999
|
||||
mulx786 multiply 1e-600000000 1e-400009997 -> 1E-1000009997 Subnormal
|
||||
mulx787 multiply 1e-600000000 1e-400009998 -> 0E-1000009997 Underflow Subnormal Inexact Rounded
|
||||
precision: 99999
|
||||
mulx788 multiply 1e-600000000 1e-400099997 -> 1E-1000099997 Subnormal
|
||||
mulx789 multiply 1e-600000000 1e-400099998 -> 0E-1000099997 Underflow Subnormal Inexact Rounded
|
||||
precision: 999999
|
||||
mulx790 multiply 1e-600000000 1e-400999997 -> 1E-1000999997 Subnormal
|
||||
mulx791 multiply 1e-600000000 1e-400999998 -> 0E-1000999997 Underflow Subnormal Inexact Rounded
|
||||
precision: 9999999
|
||||
mulx792 multiply 1e-600000000 1e-409999997 -> 1E-1009999997 Subnormal
|
||||
mulx793 multiply 1e-600000000 1e-409999998 -> 0E-1009999997 Underflow Subnormal Inexact Rounded
|
||||
precision: 99999999
|
||||
mulx794 multiply 1e-600000000 1e-499999997 -> 1E-1099999997 Subnormal
|
||||
mulx795 multiply 1e-600000000 1e-499999998 -> 0E-1099999997 Underflow Subnormal Inexact Rounded
|
||||
precision: 999999999
|
||||
mulx796 multiply 1e-999999999 1e-999999997 -> 1E-1999999996 Subnormal
|
||||
mulx797 multiply 1e-999999999 1e-999999998 -> 1E-1999999997 Subnormal
|
||||
mulx798 multiply 1e-999999999 1e-999999999 -> 0E-1999999997 Underflow Subnormal Inexact Rounded
|
||||
mulx799 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
|
||||
mulx800 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal
|
||||
|
||||
-- test subnormals rounding
|
||||
precision: 5
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
rounding: half_even
|
||||
|
||||
mulx801 multiply 1.0000E-999 1 -> 1.0000E-999
|
||||
mulx802 multiply 1.000E-999 1e-1 -> 1.000E-1000 Subnormal
|
||||
mulx803 multiply 1.00E-999 1e-2 -> 1.00E-1001 Subnormal
|
||||
mulx804 multiply 1.0E-999 1e-3 -> 1.0E-1002 Subnormal
|
||||
mulx805 multiply 1.0E-999 1e-4 -> 1E-1003 Subnormal Rounded
|
||||
mulx806 multiply 1.3E-999 1e-4 -> 1E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx807 multiply 1.5E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx808 multiply 1.7E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx809 multiply 2.3E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx810 multiply 2.5E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx811 multiply 2.7E-999 1e-4 -> 3E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx812 multiply 1.49E-999 1e-4 -> 1E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx813 multiply 1.50E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx814 multiply 1.51E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx815 multiply 2.49E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx816 multiply 2.50E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx817 multiply 2.51E-999 1e-4 -> 3E-1003 Underflow Subnormal Inexact Rounded
|
||||
|
||||
mulx818 multiply 1E-999 1e-4 -> 1E-1003 Subnormal
|
||||
mulx819 multiply 3E-999 1e-5 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx820 multiply 5E-999 1e-5 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx821 multiply 7E-999 1e-5 -> 1E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx822 multiply 9E-999 1e-5 -> 1E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx823 multiply 9.9E-999 1e-5 -> 1E-1003 Underflow Subnormal Inexact Rounded
|
||||
|
||||
mulx824 multiply 1E-999 -1e-4 -> -1E-1003 Subnormal
|
||||
mulx825 multiply 3E-999 -1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx826 multiply -5E-999 1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx827 multiply 7E-999 -1e-5 -> -1E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx828 multiply -9E-999 1e-5 -> -1E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx829 multiply 9.9E-999 -1e-5 -> -1E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx830 multiply 3.0E-999 -1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded
|
||||
|
||||
mulx831 multiply 1.0E-501 1e-501 -> 1.0E-1002 Subnormal
|
||||
mulx832 multiply 2.0E-501 2e-501 -> 4.0E-1002 Subnormal
|
||||
mulx833 multiply 4.0E-501 4e-501 -> 1.60E-1001 Subnormal
|
||||
mulx834 multiply 10.0E-501 10e-501 -> 1.000E-1000 Subnormal
|
||||
mulx835 multiply 30.0E-501 30e-501 -> 9.000E-1000 Subnormal
|
||||
mulx836 multiply 40.0E-501 40e-501 -> 1.6000E-999
|
||||
|
||||
-- squares
|
||||
mulx840 multiply 1E-502 1e-502 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx841 multiply 1E-501 1e-501 -> 1E-1002 Subnormal
|
||||
mulx842 multiply 2E-501 2e-501 -> 4E-1002 Subnormal
|
||||
mulx843 multiply 4E-501 4e-501 -> 1.6E-1001 Subnormal
|
||||
mulx844 multiply 10E-501 10e-501 -> 1.00E-1000 Subnormal
|
||||
mulx845 multiply 30E-501 30e-501 -> 9.00E-1000 Subnormal
|
||||
mulx846 multiply 40E-501 40e-501 -> 1.600E-999
|
||||
|
||||
-- cubes
|
||||
mulx850 multiply 1E-670 1e-335 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx851 multiply 1E-668 1e-334 -> 1E-1002 Subnormal
|
||||
mulx852 multiply 4E-668 2e-334 -> 8E-1002 Subnormal
|
||||
mulx853 multiply 9E-668 3e-334 -> 2.7E-1001 Subnormal
|
||||
mulx854 multiply 16E-668 4e-334 -> 6.4E-1001 Subnormal
|
||||
mulx855 multiply 25E-668 5e-334 -> 1.25E-1000 Subnormal
|
||||
mulx856 multiply 10E-668 100e-334 -> 1.000E-999
|
||||
|
||||
-- test from 0.099 ** 999 at 15 digits
|
||||
precision: 19
|
||||
mulx860 multiply 6636851557994578716E-520 6636851557994578716E-520 -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded
|
||||
|
||||
-- Long operand overflow may be a different path
|
||||
precision: 3
|
||||
maxExponent: 999999999
|
||||
minexponent: -999999999
|
||||
mulx870 multiply 1 9.999E+999999999 -> Infinity Inexact Overflow Rounded
|
||||
mulx871 multiply 1 -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
|
||||
mulx872 multiply 9.999E+999999999 1 -> Infinity Inexact Overflow Rounded
|
||||
mulx873 multiply -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
|
||||
|
||||
-- check for double-rounded subnormals
|
||||
precision: 5
|
||||
maxexponent: 79
|
||||
minexponent: -79
|
||||
mulx881 multiply 1.2347E-40 1.2347E-40 -> 1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
mulx882 multiply 1.234E-40 1.234E-40 -> 1.523E-80 Inexact Rounded Subnormal Underflow
|
||||
mulx883 multiply 1.23E-40 1.23E-40 -> 1.513E-80 Inexact Rounded Subnormal Underflow
|
||||
mulx884 multiply 1.2E-40 1.2E-40 -> 1.44E-80 Subnormal
|
||||
mulx885 multiply 1.2E-40 1.2E-41 -> 1.44E-81 Subnormal
|
||||
mulx886 multiply 1.2E-40 1.2E-42 -> 1.4E-82 Subnormal Inexact Rounded Underflow
|
||||
mulx887 multiply 1.2E-40 1.3E-42 -> 1.6E-82 Subnormal Inexact Rounded Underflow
|
||||
mulx888 multiply 1.3E-40 1.3E-42 -> 1.7E-82 Subnormal Inexact Rounded Underflow
|
||||
|
||||
mulx891 multiply 1.2345E-39 1.234E-40 -> 1.5234E-79 Inexact Rounded
|
||||
mulx892 multiply 1.23456E-39 1.234E-40 -> 1.5234E-79 Inexact Rounded
|
||||
mulx893 multiply 1.2345E-40 1.234E-40 -> 1.523E-80 Inexact Rounded Subnormal Underflow
|
||||
mulx894 multiply 1.23456E-40 1.234E-40 -> 1.523E-80 Inexact Rounded Subnormal Underflow
|
||||
mulx895 multiply 1.2345E-41 1.234E-40 -> 1.52E-81 Inexact Rounded Subnormal Underflow
|
||||
mulx896 multiply 1.23456E-41 1.234E-40 -> 1.52E-81 Inexact Rounded Subnormal Underflow
|
||||
|
||||
-- Null tests
|
||||
mulx900 multiply 10 # -> NaN Invalid_operation
|
||||
mulx901 multiply # 10 -> NaN Invalid_operation
|
||||
|
|
@ -0,0 +1,225 @@
|
|||
------------------------------------------------------------------------
|
||||
-- normalize.decTest -- remove trailing zeros --
|
||||
-- Copyright (c) IBM Corporation, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
|
||||
nrmx001 normalize '1' -> '1'
|
||||
nrmx002 normalize '-1' -> '-1'
|
||||
nrmx003 normalize '1.00' -> '1'
|
||||
nrmx004 normalize '-1.00' -> '-1'
|
||||
nrmx005 normalize '0' -> '0'
|
||||
nrmx006 normalize '0.00' -> '0'
|
||||
nrmx007 normalize '00.0' -> '0'
|
||||
nrmx008 normalize '00.00' -> '0'
|
||||
nrmx009 normalize '00' -> '0'
|
||||
nrmx010 normalize '0E+1' -> '0'
|
||||
nrmx011 normalize '0E+5' -> '0'
|
||||
|
||||
nrmx012 normalize '-2' -> '-2'
|
||||
nrmx013 normalize '2' -> '2'
|
||||
nrmx014 normalize '-2.00' -> '-2'
|
||||
nrmx015 normalize '2.00' -> '2'
|
||||
nrmx016 normalize '-0' -> '-0'
|
||||
nrmx017 normalize '-0.00' -> '-0'
|
||||
nrmx018 normalize '-00.0' -> '-0'
|
||||
nrmx019 normalize '-00.00' -> '-0'
|
||||
nrmx020 normalize '-00' -> '-0'
|
||||
nrmx021 normalize '-0E+5' -> '-0'
|
||||
nrmx022 normalize '-0E+1' -> '-0'
|
||||
|
||||
nrmx030 normalize '+0.1' -> '0.1'
|
||||
nrmx031 normalize '-0.1' -> '-0.1'
|
||||
nrmx032 normalize '+0.01' -> '0.01'
|
||||
nrmx033 normalize '-0.01' -> '-0.01'
|
||||
nrmx034 normalize '+0.001' -> '0.001'
|
||||
nrmx035 normalize '-0.001' -> '-0.001'
|
||||
nrmx036 normalize '+0.000001' -> '0.000001'
|
||||
nrmx037 normalize '-0.000001' -> '-0.000001'
|
||||
nrmx038 normalize '+0.000000000001' -> '1E-12'
|
||||
nrmx039 normalize '-0.000000000001' -> '-1E-12'
|
||||
|
||||
nrmx041 normalize 1.1 -> 1.1
|
||||
nrmx042 normalize 1.10 -> 1.1
|
||||
nrmx043 normalize 1.100 -> 1.1
|
||||
nrmx044 normalize 1.110 -> 1.11
|
||||
nrmx045 normalize -1.1 -> -1.1
|
||||
nrmx046 normalize -1.10 -> -1.1
|
||||
nrmx047 normalize -1.100 -> -1.1
|
||||
nrmx048 normalize -1.110 -> -1.11
|
||||
nrmx049 normalize 9.9 -> 9.9
|
||||
nrmx050 normalize 9.90 -> 9.9
|
||||
nrmx051 normalize 9.900 -> 9.9
|
||||
nrmx052 normalize 9.990 -> 9.99
|
||||
nrmx053 normalize -9.9 -> -9.9
|
||||
nrmx054 normalize -9.90 -> -9.9
|
||||
nrmx055 normalize -9.900 -> -9.9
|
||||
nrmx056 normalize -9.990 -> -9.99
|
||||
|
||||
-- some trailing fractional zeros with zeros in units
|
||||
nrmx060 normalize 10.0 -> 1E+1
|
||||
nrmx061 normalize 10.00 -> 1E+1
|
||||
nrmx062 normalize 100.0 -> 1E+2
|
||||
nrmx063 normalize 100.00 -> 1E+2
|
||||
nrmx064 normalize 1.1000E+3 -> 1.1E+3
|
||||
nrmx065 normalize 1.10000E+3 -> 1.1E+3
|
||||
nrmx066 normalize -10.0 -> -1E+1
|
||||
nrmx067 normalize -10.00 -> -1E+1
|
||||
nrmx068 normalize -100.0 -> -1E+2
|
||||
nrmx069 normalize -100.00 -> -1E+2
|
||||
nrmx070 normalize -1.1000E+3 -> -1.1E+3
|
||||
nrmx071 normalize -1.10000E+3 -> -1.1E+3
|
||||
|
||||
-- some insignificant trailing zeros with positive exponent
|
||||
nrmx080 normalize 10E+1 -> 1E+2
|
||||
nrmx081 normalize 100E+1 -> 1E+3
|
||||
nrmx082 normalize 1.0E+2 -> 1E+2
|
||||
nrmx083 normalize 1.0E+3 -> 1E+3
|
||||
nrmx084 normalize 1.1E+3 -> 1.1E+3
|
||||
nrmx085 normalize 1.00E+3 -> 1E+3
|
||||
nrmx086 normalize 1.10E+3 -> 1.1E+3
|
||||
nrmx087 normalize -10E+1 -> -1E+2
|
||||
nrmx088 normalize -100E+1 -> -1E+3
|
||||
nrmx089 normalize -1.0E+2 -> -1E+2
|
||||
nrmx090 normalize -1.0E+3 -> -1E+3
|
||||
nrmx091 normalize -1.1E+3 -> -1.1E+3
|
||||
nrmx092 normalize -1.00E+3 -> -1E+3
|
||||
nrmx093 normalize -1.10E+3 -> -1.1E+3
|
||||
|
||||
-- some significant trailing zeros, were we to be trimming
|
||||
nrmx100 normalize 11 -> 11
|
||||
nrmx101 normalize 10 -> 1E+1
|
||||
nrmx102 normalize 10. -> 1E+1
|
||||
nrmx103 normalize 1.1E+1 -> 11
|
||||
nrmx104 normalize 1.0E+1 -> 1E+1
|
||||
nrmx105 normalize 1.10E+2 -> 1.1E+2
|
||||
nrmx106 normalize 1.00E+2 -> 1E+2
|
||||
nrmx107 normalize 1.100E+3 -> 1.1E+3
|
||||
nrmx108 normalize 1.000E+3 -> 1E+3
|
||||
nrmx109 normalize 1.000000E+6 -> 1E+6
|
||||
nrmx110 normalize -11 -> -11
|
||||
nrmx111 normalize -10 -> -1E+1
|
||||
nrmx112 normalize -10. -> -1E+1
|
||||
nrmx113 normalize -1.1E+1 -> -11
|
||||
nrmx114 normalize -1.0E+1 -> -1E+1
|
||||
nrmx115 normalize -1.10E+2 -> -1.1E+2
|
||||
nrmx116 normalize -1.00E+2 -> -1E+2
|
||||
nrmx117 normalize -1.100E+3 -> -1.1E+3
|
||||
nrmx118 normalize -1.000E+3 -> -1E+3
|
||||
nrmx119 normalize -1.00000E+5 -> -1E+5
|
||||
nrmx120 normalize -1.000000E+6 -> -1E+6
|
||||
nrmx121 normalize -10.00000E+6 -> -1E+7
|
||||
nrmx122 normalize -100.0000E+6 -> -1E+8
|
||||
nrmx123 normalize -1000.000E+6 -> -1E+9
|
||||
nrmx124 normalize -10000.00E+6 -> -1E+10
|
||||
nrmx125 normalize -100000.0E+6 -> -1E+11
|
||||
nrmx126 normalize -1000000.E+6 -> -1E+12
|
||||
|
||||
-- examples from decArith
|
||||
nrmx140 normalize '2.1' -> '2.1'
|
||||
nrmx141 normalize '-2.0' -> '-2'
|
||||
nrmx142 normalize '1.200' -> '1.2'
|
||||
nrmx143 normalize '-120' -> '-1.2E+2'
|
||||
nrmx144 normalize '120.00' -> '1.2E+2'
|
||||
nrmx145 normalize '0.00' -> '0'
|
||||
|
||||
-- overflow tests
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 3
|
||||
nrmx160 normalize 9.999E+999999999 -> Infinity Inexact Overflow Rounded
|
||||
nrmx161 normalize -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
|
||||
|
||||
-- subnormals and underflow
|
||||
precision: 3
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
nrmx210 normalize 1.00E-999 -> 1E-999
|
||||
nrmx211 normalize 0.1E-999 -> 1E-1000 Subnormal
|
||||
nrmx212 normalize 0.10E-999 -> 1E-1000 Subnormal
|
||||
nrmx213 normalize 0.100E-999 -> 1E-1000 Subnormal Rounded
|
||||
nrmx214 normalize 0.01E-999 -> 1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
nrmx215 normalize 0.999E-999 -> 1E-999 Inexact Rounded Subnormal Underflow
|
||||
nrmx216 normalize 0.099E-999 -> 1E-1000 Inexact Rounded Subnormal Underflow
|
||||
nrmx217 normalize 0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
|
||||
nrmx218 normalize 0.001E-999 -> 0 Inexact Rounded Subnormal Underflow
|
||||
nrmx219 normalize 0.0009E-999 -> 0 Inexact Rounded Subnormal Underflow
|
||||
nrmx220 normalize 0.0001E-999 -> 0 Inexact Rounded Subnormal Underflow
|
||||
|
||||
nrmx230 normalize -1.00E-999 -> -1E-999
|
||||
nrmx231 normalize -0.1E-999 -> -1E-1000 Subnormal
|
||||
nrmx232 normalize -0.10E-999 -> -1E-1000 Subnormal
|
||||
nrmx233 normalize -0.100E-999 -> -1E-1000 Subnormal Rounded
|
||||
nrmx234 normalize -0.01E-999 -> -1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
nrmx235 normalize -0.999E-999 -> -1E-999 Inexact Rounded Subnormal Underflow
|
||||
nrmx236 normalize -0.099E-999 -> -1E-1000 Inexact Rounded Subnormal Underflow
|
||||
nrmx237 normalize -0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow
|
||||
nrmx238 normalize -0.001E-999 -> -0 Inexact Rounded Subnormal Underflow
|
||||
nrmx239 normalize -0.0009E-999 -> -0 Inexact Rounded Subnormal Underflow
|
||||
nrmx240 normalize -0.0001E-999 -> -0 Inexact Rounded Subnormal Underflow
|
||||
|
||||
-- more reshaping
|
||||
precision: 9
|
||||
nrmx260 normalize '56260E-10' -> '0.000005626'
|
||||
nrmx261 normalize '56260E-5' -> '0.5626'
|
||||
nrmx262 normalize '56260E-2' -> '562.6'
|
||||
nrmx263 normalize '56260E-1' -> '5626'
|
||||
nrmx265 normalize '56260E-0' -> '5.626E+4'
|
||||
nrmx266 normalize '56260E+0' -> '5.626E+4'
|
||||
nrmx267 normalize '56260E+1' -> '5.626E+5'
|
||||
nrmx268 normalize '56260E+2' -> '5.626E+6'
|
||||
nrmx269 normalize '56260E+3' -> '5.626E+7'
|
||||
nrmx270 normalize '56260E+4' -> '5.626E+8'
|
||||
nrmx271 normalize '56260E+5' -> '5.626E+9'
|
||||
nrmx272 normalize '56260E+6' -> '5.626E+10'
|
||||
nrmx280 normalize '-56260E-10' -> '-0.000005626'
|
||||
nrmx281 normalize '-56260E-5' -> '-0.5626'
|
||||
nrmx282 normalize '-56260E-2' -> '-562.6'
|
||||
nrmx283 normalize '-56260E-1' -> '-5626'
|
||||
nrmx285 normalize '-56260E-0' -> '-5.626E+4'
|
||||
nrmx286 normalize '-56260E+0' -> '-5.626E+4'
|
||||
nrmx287 normalize '-56260E+1' -> '-5.626E+5'
|
||||
nrmx288 normalize '-56260E+2' -> '-5.626E+6'
|
||||
nrmx289 normalize '-56260E+3' -> '-5.626E+7'
|
||||
nrmx290 normalize '-56260E+4' -> '-5.626E+8'
|
||||
nrmx291 normalize '-56260E+5' -> '-5.626E+9'
|
||||
nrmx292 normalize '-56260E+6' -> '-5.626E+10'
|
||||
|
||||
|
||||
-- specials
|
||||
nrmx820 normalize 'Inf' -> 'Infinity'
|
||||
nrmx821 normalize '-Inf' -> '-Infinity'
|
||||
nrmx822 normalize NaN -> NaN
|
||||
nrmx823 normalize sNaN -> NaN Invalid_operation
|
||||
nrmx824 normalize NaN101 -> NaN101
|
||||
nrmx825 normalize sNaN010 -> NaN10 Invalid_operation
|
||||
nrmx827 normalize -NaN -> -NaN
|
||||
nrmx828 normalize -sNaN -> -NaN Invalid_operation
|
||||
nrmx829 normalize -NaN101 -> -NaN101
|
||||
nrmx830 normalize -sNaN010 -> -NaN10 Invalid_operation
|
||||
|
||||
-- Null test
|
||||
nrmx900 normalize # -> NaN Invalid_operation
|
|
@ -0,0 +1,181 @@
|
|||
------------------------------------------------------------------------
|
||||
-- plus.decTest -- decimal monadic addition --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
-- This set of tests primarily tests the existence of the operator.
|
||||
-- Addition and rounding, and most overflows, are tested elsewhere.
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
|
||||
plux001 plus '1' -> '1'
|
||||
plux002 plus '-1' -> '-1'
|
||||
plux003 plus '1.00' -> '1.00'
|
||||
plux004 plus '-1.00' -> '-1.00'
|
||||
plux005 plus '0' -> '0'
|
||||
plux006 plus '0.00' -> '0.00'
|
||||
plux007 plus '00.0' -> '0.0'
|
||||
plux008 plus '00.00' -> '0.00'
|
||||
plux009 plus '00' -> '0'
|
||||
|
||||
plux010 plus '-2' -> '-2'
|
||||
plux011 plus '2' -> '2'
|
||||
plux012 plus '-2.00' -> '-2.00'
|
||||
plux013 plus '2.00' -> '2.00'
|
||||
plux014 plus '-0' -> '0'
|
||||
plux015 plus '-0.00' -> '0.00'
|
||||
plux016 plus '-00.0' -> '0.0'
|
||||
plux017 plus '-00.00' -> '0.00'
|
||||
plux018 plus '-00' -> '0'
|
||||
|
||||
plux020 plus '-2000000' -> '-2000000'
|
||||
plux021 plus '2000000' -> '2000000'
|
||||
precision: 7
|
||||
plux022 plus '-2000000' -> '-2000000'
|
||||
plux023 plus '2000000' -> '2000000'
|
||||
precision: 6
|
||||
plux024 plus '-2000000' -> '-2.00000E+6' Rounded
|
||||
plux025 plus '2000000' -> '2.00000E+6' Rounded
|
||||
precision: 3
|
||||
plux026 plus '-2000000' -> '-2.00E+6' Rounded
|
||||
plux027 plus '2000000' -> '2.00E+6' Rounded
|
||||
|
||||
-- more fixed, potential LHS swaps if done by add 0
|
||||
precision: 9
|
||||
plux060 plus '56267E-10' -> '0.0000056267'
|
||||
plux061 plus '56267E-5' -> '0.56267'
|
||||
plux062 plus '56267E-2' -> '562.67'
|
||||
plux063 plus '56267E-1' -> '5626.7'
|
||||
plux065 plus '56267E-0' -> '56267'
|
||||
plux066 plus '56267E+0' -> '56267'
|
||||
plux067 plus '56267E+1' -> '5.6267E+5'
|
||||
plux068 plus '56267E+2' -> '5.6267E+6'
|
||||
plux069 plus '56267E+3' -> '5.6267E+7'
|
||||
plux070 plus '56267E+4' -> '5.6267E+8'
|
||||
plux071 plus '56267E+5' -> '5.6267E+9'
|
||||
plux072 plus '56267E+6' -> '5.6267E+10'
|
||||
plux080 plus '-56267E-10' -> '-0.0000056267'
|
||||
plux081 plus '-56267E-5' -> '-0.56267'
|
||||
plux082 plus '-56267E-2' -> '-562.67'
|
||||
plux083 plus '-56267E-1' -> '-5626.7'
|
||||
plux085 plus '-56267E-0' -> '-56267'
|
||||
plux086 plus '-56267E+0' -> '-56267'
|
||||
plux087 plus '-56267E+1' -> '-5.6267E+5'
|
||||
plux088 plus '-56267E+2' -> '-5.6267E+6'
|
||||
plux089 plus '-56267E+3' -> '-5.6267E+7'
|
||||
plux090 plus '-56267E+4' -> '-5.6267E+8'
|
||||
plux091 plus '-56267E+5' -> '-5.6267E+9'
|
||||
plux092 plus '-56267E+6' -> '-5.6267E+10'
|
||||
|
||||
-- "lhs" zeros in plus and minus have exponent = operand
|
||||
plux120 plus '-0E3' -> '0E+3'
|
||||
plux121 plus '-0E2' -> '0E+2'
|
||||
plux122 plus '-0E1' -> '0E+1'
|
||||
plux123 plus '-0E0' -> '0'
|
||||
plux124 plus '+0E0' -> '0'
|
||||
plux125 plus '+0E1' -> '0E+1'
|
||||
plux126 plus '+0E2' -> '0E+2'
|
||||
plux127 plus '+0E3' -> '0E+3'
|
||||
|
||||
plux130 plus '-5E3' -> '-5E+3'
|
||||
plux131 plus '-5E8' -> '-5E+8'
|
||||
plux132 plus '-5E13' -> '-5E+13'
|
||||
plux133 plus '-5E18' -> '-5E+18'
|
||||
plux134 plus '+5E3' -> '5E+3'
|
||||
plux135 plus '+5E8' -> '5E+8'
|
||||
plux136 plus '+5E13' -> '5E+13'
|
||||
plux137 plus '+5E18' -> '5E+18'
|
||||
|
||||
-- specials
|
||||
plux150 plus 'Inf' -> 'Infinity'
|
||||
plux151 plus '-Inf' -> '-Infinity'
|
||||
plux152 plus NaN -> NaN
|
||||
plux153 plus sNaN -> NaN Invalid_operation
|
||||
plux154 plus NaN77 -> NaN77
|
||||
plux155 plus sNaN88 -> NaN88 Invalid_operation
|
||||
plux156 plus -NaN -> -NaN
|
||||
plux157 plus -sNaN -> -NaN Invalid_operation
|
||||
plux158 plus -NaN77 -> -NaN77
|
||||
plux159 plus -sNaN88 -> -NaN88 Invalid_operation
|
||||
|
||||
-- overflow tests
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 3
|
||||
plux160 plus 9.999E+999999999 -> Infinity Inexact Overflow Rounded
|
||||
plux161 plus -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
|
||||
|
||||
-- subnormals and underflow
|
||||
precision: 3
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
plux210 plus 1.00E-999 -> 1.00E-999
|
||||
plux211 plus 0.1E-999 -> 1E-1000 Subnormal
|
||||
plux212 plus 0.10E-999 -> 1.0E-1000 Subnormal
|
||||
plux213 plus 0.100E-999 -> 1.0E-1000 Subnormal Rounded
|
||||
plux214 plus 0.01E-999 -> 1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
plux215 plus 0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow
|
||||
plux216 plus 0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
plux217 plus 0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
|
||||
plux218 plus 0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
plux219 plus 0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
plux220 plus 0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
|
||||
plux230 plus -1.00E-999 -> -1.00E-999
|
||||
plux231 plus -0.1E-999 -> -1E-1000 Subnormal
|
||||
plux232 plus -0.10E-999 -> -1.0E-1000 Subnormal
|
||||
plux233 plus -0.100E-999 -> -1.0E-1000 Subnormal Rounded
|
||||
plux234 plus -0.01E-999 -> -1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
plux235 plus -0.999E-999 -> -1.00E-999 Inexact Rounded Subnormal Underflow
|
||||
plux236 plus -0.099E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
plux237 plus -0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow
|
||||
plux238 plus -0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
plux239 plus -0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
plux240 plus -0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
|
||||
-- long operand checks
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
plux301 plus 12345678000 -> 1.23456780E+10 Rounded
|
||||
plux302 plus 1234567800 -> 1.23456780E+9 Rounded
|
||||
plux303 plus 1234567890 -> 1.23456789E+9 Rounded
|
||||
plux304 plus 1234567891 -> 1.23456789E+9 Inexact Rounded
|
||||
plux305 plus 12345678901 -> 1.23456789E+10 Inexact Rounded
|
||||
plux306 plus 1234567896 -> 1.23456790E+9 Inexact Rounded
|
||||
|
||||
-- still checking
|
||||
precision: 15
|
||||
plux321 plus 12345678000 -> 12345678000
|
||||
plux322 plus 1234567800 -> 1234567800
|
||||
plux323 plus 1234567890 -> 1234567890
|
||||
plux324 plus 1234567891 -> 1234567891
|
||||
plux325 plus 12345678901 -> 12345678901
|
||||
plux326 plus 1234567896 -> 1234567896
|
||||
precision: 9
|
||||
|
||||
-- Null tests
|
||||
plu900 plus # -> NaN Invalid_operation
|
||||
|
|
@ -0,0 +1,651 @@
|
|||
----------------------------------------------------------------------
|
||||
-- power.decTest -- decimal exponentiation --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
-- This set of testcases tests raising numbers to an integer power only.
|
||||
-- If arbitrary powers were supported, 1 ulp differences would be
|
||||
-- permitted.
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
|
||||
-- base checks. Note 0**0 is an error.
|
||||
powx001 power '0' '0' -> NaN Invalid_operation
|
||||
powx002 power '0' '1' -> '0'
|
||||
powx003 power '0' '2' -> '0'
|
||||
powx004 power '1' '0' -> '1'
|
||||
powx005 power '1' '1' -> '1'
|
||||
powx006 power '1' '2' -> '1'
|
||||
|
||||
powx010 power '2' '0' -> '1'
|
||||
powx011 power '2' '1' -> '2'
|
||||
powx012 power '2' '2' -> '4'
|
||||
powx013 power '2' '3' -> '8'
|
||||
powx014 power '2' '4' -> '16'
|
||||
powx015 power '2' '5' -> '32'
|
||||
powx016 power '2' '6' -> '64'
|
||||
powx017 power '2' '7' -> '128'
|
||||
powx018 power '2' '8' -> '256'
|
||||
powx019 power '2' '9' -> '512'
|
||||
powx020 power '2' '10' -> '1024'
|
||||
powx021 power '2' '11' -> '2048'
|
||||
powx022 power '2' '12' -> '4096'
|
||||
powx023 power '2' '15' -> '32768'
|
||||
powx024 power '2' '16' -> '65536'
|
||||
powx025 power '2' '31' -> '2.14748365E+9' Inexact Rounded
|
||||
-- NB 0 not stripped in next
|
||||
powx026 power '2' '32' -> '4.29496730E+9' Inexact Rounded
|
||||
precision: 10
|
||||
powx027 power '2' '31' -> '2147483648'
|
||||
powx028 power '2' '32' -> '4294967296'
|
||||
precision: 9
|
||||
|
||||
powx030 power '3' '2' -> 9
|
||||
powx031 power '4' '2' -> 16
|
||||
powx032 power '5' '2' -> 25
|
||||
powx033 power '6' '2' -> 36
|
||||
powx034 power '7' '2' -> 49
|
||||
powx035 power '8' '2' -> 64
|
||||
powx036 power '9' '2' -> 81
|
||||
powx037 power '10' '2' -> 100
|
||||
powx038 power '11' '2' -> 121
|
||||
powx039 power '12' '2' -> 144
|
||||
|
||||
powx040 power '3' '3' -> 27
|
||||
powx041 power '4' '3' -> 64
|
||||
powx042 power '5' '3' -> 125
|
||||
powx043 power '6' '3' -> 216
|
||||
powx044 power '7' '3' -> 343
|
||||
|
||||
powx050 power '10' '0' -> 1
|
||||
powx051 power '10' '1' -> 10
|
||||
powx052 power '10' '2' -> 100
|
||||
powx053 power '10' '3' -> 1000
|
||||
powx054 power '10' '4' -> 10000
|
||||
powx055 power '10' '5' -> 100000
|
||||
powx056 power '10' '6' -> 1000000
|
||||
powx057 power '10' '7' -> 10000000
|
||||
powx058 power '10' '8' -> 100000000
|
||||
powx059 power '10' '9' -> 1.00000000E+9 Rounded
|
||||
powx060 power '10' '22' -> 1.00000000E+22 Rounded
|
||||
powx061 power '10' '77' -> 1.00000000E+77 Rounded
|
||||
powx062 power '10' '99' -> 1.00000000E+99 Rounded
|
||||
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
powx063 power '10' '999999999' -> '1.00000000E+999999999' Rounded
|
||||
powx064 power '10' '999999998' -> '1.00000000E+999999998' Rounded
|
||||
powx065 power '10' '999999997' -> '1.00000000E+999999997' Rounded
|
||||
powx066 power '10' '333333333' -> '1.00000000E+333333333' Rounded
|
||||
|
||||
powx070 power '0.3' '0' -> '1'
|
||||
powx071 power '0.3' '1' -> '0.3'
|
||||
powx072 power '0.3' '1.00' -> '0.3'
|
||||
powx073 power '0.3' '2.00' -> '0.09'
|
||||
powx074 power '0.3' '2.000000000' -> '0.09'
|
||||
powx075 power '6.0' '1' -> '6.0' -- NB zeros not stripped
|
||||
powx076 power '6.0' '2' -> '36.00' -- ..
|
||||
powx077 power '-3' '2' -> '9' -- from NetRexx book
|
||||
powx078 power '4' '3' -> '64' -- .. (sort of)
|
||||
|
||||
powx080 power 0.1 0 -> 1
|
||||
powx081 power 0.1 1 -> 0.1
|
||||
powx082 power 0.1 2 -> 0.01
|
||||
powx083 power 0.1 3 -> 0.001
|
||||
powx084 power 0.1 4 -> 0.0001
|
||||
powx085 power 0.1 5 -> 0.00001
|
||||
powx086 power 0.1 6 -> 0.000001
|
||||
powx087 power 0.1 7 -> 1E-7
|
||||
powx088 power 0.1 8 -> 1E-8
|
||||
powx089 power 0.1 9 -> 1E-9
|
||||
|
||||
powx090 power 101 2 -> 10201
|
||||
powx091 power 101 3 -> 1030301
|
||||
powx092 power 101 4 -> 104060401
|
||||
powx093 power 101 5 -> 1.05101005E+10 Inexact Rounded
|
||||
powx094 power 101 6 -> 1.06152015E+12 Inexact Rounded
|
||||
powx095 power 101 7 -> 1.07213535E+14 Inexact Rounded
|
||||
|
||||
-- negative powers
|
||||
powx101 power '2' '-1' -> 0.5
|
||||
powx102 power '2' '-2' -> 0.25
|
||||
powx103 power '2' '-4' -> 0.0625
|
||||
powx104 power '2' '-8' -> 0.00390625
|
||||
powx105 power '2' '-16' -> 0.0000152587891 Inexact Rounded
|
||||
powx106 power '2' '-32' -> 2.32830644E-10 Inexact Rounded
|
||||
powx108 power '2' '-64' -> 5.42101086E-20 Inexact Rounded
|
||||
powx110 power '10' '-8' -> 1E-8
|
||||
powx111 power '10' '-7' -> 1E-7
|
||||
powx112 power '10' '-6' -> 0.000001
|
||||
powx113 power '10' '-5' -> 0.00001
|
||||
powx114 power '10' '-4' -> 0.0001
|
||||
powx115 power '10' '-3' -> 0.001
|
||||
powx116 power '10' '-2' -> 0.01
|
||||
powx117 power '10' '-1' -> 0.1
|
||||
|
||||
powx118 power '10' '-333333333' -> 1E-333333333
|
||||
powx119 power '10' '-999999998' -> 1E-999999998
|
||||
powx120 power '10' '-999999999' -> 1E-999999999
|
||||
powx121 power '10' '-77' -> '1E-77'
|
||||
powx122 power '10' '-22' -> '1E-22'
|
||||
|
||||
powx123 power '2' '-1' -> '0.5'
|
||||
powx124 power '2' '-2' -> '0.25'
|
||||
powx125 power '2' '-4' -> '0.0625'
|
||||
powx126 power '0' '-1' -> Infinity Division_by_zero
|
||||
powx127 power '0' '-2' -> Infinity Division_by_zero
|
||||
powx128 power -0 '-1' -> -Infinity Division_by_zero
|
||||
powx129 power -0 '-2' -> Infinity Division_by_zero
|
||||
|
||||
-- out-of-range edge cases
|
||||
powx181 power '7' '999999998' -> 2.10892313E+845098038 Inexact Rounded
|
||||
powx182 power '7' '999999999' -> 1.47624619E+845098039 Inexact Rounded
|
||||
powx183 power '7' '1000000000' -> NaN Invalid_operation
|
||||
powx184 power '7' '1000000001' -> NaN Invalid_operation
|
||||
powx185 power '7' '10000000000' -> NaN Invalid_operation
|
||||
powx186 power '7' '-1000000001' -> NaN Invalid_operation
|
||||
powx187 power '7' '-1000000000' -> NaN Invalid_operation
|
||||
powx189 power '7' '-999999999' -> 6.77393787E-845098040 Inexact Rounded
|
||||
powx190 power '7' '-999999998' -> 4.74175651E-845098039 Inexact Rounded
|
||||
|
||||
-- some baddies [more below]
|
||||
powx191 power '2' '2.000001' -> NaN Invalid_operation
|
||||
powx192 power '2' '2.00000000' -> 4
|
||||
powx193 power '2' '2.000000001' -> NaN Invalid_operation
|
||||
powx194 power '2' '2.0000000001' -> NaN Invalid_operation
|
||||
|
||||
-- "0.5" tests from original Rexx diagnostics [loop unrolled]
|
||||
powx200 power 0.5 0 -> 1
|
||||
powx201 power 0.5 1 -> 0.5
|
||||
powx202 power 0.5 2 -> 0.25
|
||||
powx203 power 0.5 3 -> 0.125
|
||||
powx204 power 0.5 4 -> 0.0625
|
||||
powx205 power 0.5 5 -> 0.03125
|
||||
powx206 power 0.5 6 -> 0.015625
|
||||
powx207 power 0.5 7 -> 0.0078125
|
||||
powx208 power 0.5 8 -> 0.00390625
|
||||
powx209 power 0.5 9 -> 0.001953125
|
||||
powx210 power 0.5 10 -> 0.0009765625
|
||||
|
||||
-- A (rare) case where the last digit is not within 0.5 ULP
|
||||
precision: 9
|
||||
powx215 power "-21971575.0E+31454441" "-7" -> "-4.04549503E-220181139" Inexact Rounded
|
||||
precision: 20
|
||||
powx216 power "-21971575.0E+31454441" "-7" -> "-4.0454950249324891788E-220181139" Inexact Rounded
|
||||
|
||||
-- The Vienna case. Checks both setup and 1/acc working precision
|
||||
-- Modified 1998.12.14 as RHS no longer rounded before use (must fit)
|
||||
-- Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)
|
||||
-- '123456789E+10' -- lhs .. rounded to 1.23E+18
|
||||
-- '-1.23000e+2' -- rhs .. [was: -1.23455e+2, rounds to -123]
|
||||
-- Modified 2002.10.06 -- finally, no input rounding
|
||||
-- With input rounding, result would be 8.74E-2226
|
||||
precision: 3
|
||||
powx219 power '123456789E+10' '-1.23000e+2' -> '5.54E-2226' Inexact Rounded
|
||||
|
||||
-- whole number checks
|
||||
precision: 9
|
||||
powx221 power 1 1234 -> 1
|
||||
precision: 4
|
||||
powx222 power 1 1234 -> 1
|
||||
precision: 3
|
||||
powx223 power 1 1234 -> 1
|
||||
powx224 power 1 12.34e+2 -> 1
|
||||
powx225 power 1 12.3 -> NaN Invalid_operation
|
||||
powx226 power 1 12.0 -> 1
|
||||
powx227 power 1 1.01 -> NaN Invalid_operation
|
||||
powx228 power 2 1.00 -> 2
|
||||
powx229 power 2 2.00 -> 4
|
||||
precision: 9
|
||||
powx230 power 1 1.0001 -> NaN Invalid_operation
|
||||
powx231 power 1 1.0000001 -> NaN Invalid_operation
|
||||
powx232 power 1 1.0000000001 -> NaN Invalid_operation
|
||||
powx233 power 1 1.0000000000001 -> NaN Invalid_operation
|
||||
precision: 5
|
||||
powx234 power 1 1.0001 -> NaN Invalid_operation
|
||||
powx235 power 1 1.0000001 -> NaN Invalid_operation
|
||||
powx236 power 1 1.0000000001 -> NaN Invalid_operation
|
||||
powx237 power 1 1.0000000000001 -> NaN Invalid_operation
|
||||
powx238 power 1 1.0000000000001 -> NaN Invalid_operation
|
||||
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
powx239 power 1 5.67E-987654321 -> NaN Invalid_operation
|
||||
|
||||
powx240 power 1 100000000 -> 1
|
||||
powx241 power 1 999999998 -> 1
|
||||
powx242 power 1 999999999 -> 1
|
||||
powx243 power 1 1000000000 -> NaN Invalid_operation
|
||||
powx244 power 1 9999999999 -> NaN Invalid_operation
|
||||
|
||||
-- Checks for 'Too much precision needed'
|
||||
-- For x^12, digits+elength+1 = digits+3
|
||||
precision: 999999999
|
||||
powx249 add 1 1 -> 2 -- check basic operation at this precision
|
||||
powx250 power 2 12 -> Infinity Overflow
|
||||
precision: 999999998
|
||||
powx251 power 2 12 -> Infinity Overflow
|
||||
precision: 999999997
|
||||
powx252 power 2 12 -> Infinity Overflow
|
||||
precision: 999999996
|
||||
powx253 power 2 12 -> 4096
|
||||
precision: 999999995
|
||||
powx254 power 2 12 -> 4096
|
||||
|
||||
-- zeros
|
||||
maxexponent: +96
|
||||
minexponent: -95
|
||||
precision: 7
|
||||
powx260 power 0E-34 3 -> 0E-101 Clamped
|
||||
powx261 power 0E-33 3 -> 0E-99
|
||||
powx262 power 0E-32 3 -> 0E-96
|
||||
powx263 power 0E-30 3 -> 0E-90
|
||||
powx264 power 0E-10 3 -> 0E-30
|
||||
powx265 power 0E-1 3 -> 0.000
|
||||
powx266 power 0E+0 3 -> 0
|
||||
powx267 power 0 3 -> 0
|
||||
powx268 power 0E+1 3 -> 0E+3
|
||||
powx269 power 0E+10 3 -> 0E+30
|
||||
powx270 power 0E+30 3 -> 0E+90
|
||||
powx271 power 0E+32 3 -> 0E+96
|
||||
powx272 power 0E+33 3 -> 0E+96 Clamped
|
||||
|
||||
-- overflow and underflow tests
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 9
|
||||
powx280 power 9 999999999 -> 3.05550054E+954242508 Inexact Rounded
|
||||
powx281 power 10 999999999 -> 1.00000000E+999999999 Rounded
|
||||
powx282 power 10.0001 999999999 -> Infinity Overflow Inexact Rounded
|
||||
powx283 power 10.1 999999999 -> Infinity Overflow Inexact Rounded
|
||||
powx284 power 11 999999999 -> Infinity Overflow Inexact Rounded
|
||||
powx285 power 12 999999999 -> Infinity Overflow Inexact Rounded
|
||||
powx286 power 999 999999999 -> Infinity Overflow Inexact Rounded
|
||||
powx287 power 999999 999999999 -> Infinity Overflow Inexact Rounded
|
||||
powx288 power 999999999 999999999 -> Infinity Overflow Inexact Rounded
|
||||
powx289 power 9.9E999999999 999999999 -> Infinity Overflow Inexact Rounded
|
||||
|
||||
powx290 power 0.5 999999999 -> 4.33559594E-301029996 Inexact Rounded
|
||||
powx291 power 0.1 999999999 -> 1E-999999999 -- unrounded
|
||||
powx292 power 0.09 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx293 power 0.05 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx294 power 0.01 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx295 power 0.0001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx297 power 0.0000001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx298 power 0.0000000001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx299 power 1E-999999999 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
|
||||
powx310 power -9 999999999 -> -3.05550054E+954242508 Inexact Rounded
|
||||
powx311 power -10 999999999 -> -1.00000000E+999999999 Rounded
|
||||
powx312 power -10.0001 999999999 -> -Infinity Overflow Inexact Rounded
|
||||
powx313 power -10.1 999999999 -> -Infinity Overflow Inexact Rounded
|
||||
powx314 power -11 999999999 -> -Infinity Overflow Inexact Rounded
|
||||
powx315 power -12 999999999 -> -Infinity Overflow Inexact Rounded
|
||||
powx316 power -999 999999999 -> -Infinity Overflow Inexact Rounded
|
||||
powx317 power -999999 999999999 -> -Infinity Overflow Inexact Rounded
|
||||
powx318 power -999999999 999999999 -> -Infinity Overflow Inexact Rounded
|
||||
powx319 power -9.9E999999999 999999999 -> -Infinity Overflow Inexact Rounded
|
||||
|
||||
powx320 power -0.5 999999999 -> -4.33559594E-301029996 Inexact Rounded
|
||||
powx321 power -0.1 999999999 -> -1E-999999999
|
||||
powx322 power -0.09 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx323 power -0.05 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx324 power -0.01 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx325 power -0.0001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx327 power -0.0000001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx328 power -0.0000000001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx329 power -1E-999999999 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
|
||||
-- note no trim of next result
|
||||
powx330 power -9 999999998 -> 3.39500060E+954242507 Inexact Rounded
|
||||
powx331 power -10 999999998 -> 1.00000000E+999999998 Rounded
|
||||
powx332 power -10.0001 999999998 -> Infinity Overflow Inexact Rounded
|
||||
powx333 power -10.1 999999998 -> Infinity Overflow Inexact Rounded
|
||||
powx334 power -11 999999998 -> Infinity Overflow Inexact Rounded
|
||||
powx335 power -12 999999998 -> Infinity Overflow Inexact Rounded
|
||||
powx336 power -999 999999998 -> Infinity Overflow Inexact Rounded
|
||||
powx337 power -999999 999999998 -> Infinity Overflow Inexact Rounded
|
||||
powx338 power -999999999 999999998 -> Infinity Overflow Inexact Rounded
|
||||
powx339 power -9.9E999999999 999999998 -> Infinity Overflow Inexact Rounded
|
||||
|
||||
powx340 power -0.5 999999998 -> 8.67119187E-301029996 Inexact Rounded
|
||||
powx341 power -0.1 999999998 -> 1E-999999998 -- NB exact unrounded
|
||||
powx342 power -0.09 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx343 power -0.05 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx344 power -0.01 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx345 power -0.0001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx347 power -0.0000001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx348 power -0.0000000001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx349 power -1E-999999999 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
|
||||
-- some subnormals
|
||||
precision: 9
|
||||
-- [precision is 9, so smallest exponent is -1000000007
|
||||
powx350 power 1e-1 500000000 -> 1E-500000000
|
||||
powx351 power 1e-2 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx352 power 1e-2 500000000 -> 1E-1000000000 Subnormal
|
||||
powx353 power 1e-2 500000001 -> 1E-1000000002 Subnormal
|
||||
powx354 power 1e-2 500000002 -> 1E-1000000004 Subnormal
|
||||
powx355 power 1e-2 500000003 -> 1E-1000000006 Subnormal
|
||||
powx356 power 1e-2 500000004 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
|
||||
powx360 power 0.010001 500000000 -> 4.34941988E-999978287 Inexact Rounded
|
||||
powx361 power 0.010000001 500000000 -> 5.18469257E-999999979 Inexact Rounded
|
||||
powx362 power 0.010000001 500000001 -> 5.18469309E-999999981 Inexact Rounded
|
||||
powx363 power 0.0100000009 500000000 -> 3.49342003E-999999981 Inexact Rounded
|
||||
powx364 power 0.0100000001 500000000 -> 1.48413155E-999999998 Inexact Rounded
|
||||
powx365 power 0.01 500000000 -> 1E-1000000000 Subnormal
|
||||
powx366 power 0.0099999999 500000000 -> 6.7379E-1000000003 Underflow Subnormal Inexact Rounded
|
||||
powx367 power 0.0099999998 500000000 -> 4.54E-1000000005 Underflow Subnormal Inexact Rounded
|
||||
powx368 power 0.0099999997 500000000 -> 3E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
powx369 power 0.0099999996 500000000 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
|
||||
powx370 power 0.009 500000000 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
|
||||
|
||||
-- 1/subnormal -> overflow
|
||||
powx371 power 1e-1 -500000000 -> 1E+500000000
|
||||
powx372 power 1e-2 -999999999 -> Infinity Overflow Inexact Rounded
|
||||
powx373 power 1e-2 -500000000 -> Infinity Overflow Inexact Rounded
|
||||
powx374 power 1e-2 -500000001 -> Infinity Overflow Inexact Rounded
|
||||
powx375 power 1e-2 -500000002 -> Infinity Overflow Inexact Rounded
|
||||
powx376 power 1e-2 -500000003 -> Infinity Overflow Inexact Rounded
|
||||
powx377 power 1e-2 -500000004 -> Infinity Overflow Inexact Rounded
|
||||
|
||||
powx381 power 0.010001 -500000000 -> 2.29915719E+999978286 Inexact Rounded
|
||||
powx382 power 0.010000001 -500000000 -> 1.92875467E+999999978 Inexact Rounded
|
||||
powx383 power 0.010000001 -500000001 -> 1.92875448E+999999980 Inexact Rounded
|
||||
powx384 power 0.0100000009 -500000000 -> 2.86252438E+999999980 Inexact Rounded
|
||||
powx385 power 0.0100000001 -500000000 -> 6.73794717E+999999997 Inexact Rounded
|
||||
powx386 power 0.01 -500000000 -> Infinity Overflow Inexact Rounded
|
||||
powx387 power 0.009999 -500000000 -> Infinity Overflow Inexact Rounded
|
||||
|
||||
-- negative power giving subnormal
|
||||
powx388 power 100.000001 -500000000 -> 6.7379E-1000000003 Underflow Subnormal Inexact Rounded
|
||||
|
||||
-- some more edge cases
|
||||
precision: 15
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
powx391 power 0.1 999 -> 1E-999
|
||||
powx392 power 0.099 999 -> 4.360732062E-1004 Underflow Subnormal Inexact Rounded
|
||||
powx393 power 0.098 999 -> 1.71731E-1008 Underflow Subnormal Inexact Rounded
|
||||
powx394 power 0.097 999 -> 6E-1013 Underflow Subnormal Inexact Rounded
|
||||
powx395 power 0.096 999 -> 0E-1013 Underflow Subnormal Inexact Rounded
|
||||
powx396 power 0.01 999 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped
|
||||
|
||||
-- multiply tests are here to aid checking and test for consistent handling
|
||||
-- of underflow
|
||||
precision: 5
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
|
||||
-- squares
|
||||
mulx400 multiply 1E-502 1e-502 -> 0E-1003 Subnormal Inexact Underflow Rounded
|
||||
mulx401 multiply 1E-501 1e-501 -> 1E-1002 Subnormal
|
||||
mulx402 multiply 2E-501 2e-501 -> 4E-1002 Subnormal
|
||||
mulx403 multiply 4E-501 4e-501 -> 1.6E-1001 Subnormal
|
||||
mulx404 multiply 10E-501 10e-501 -> 1.00E-1000 Subnormal
|
||||
mulx405 multiply 30E-501 30e-501 -> 9.00E-1000 Subnormal
|
||||
mulx406 multiply 40E-501 40e-501 -> 1.600E-999
|
||||
|
||||
powx400 power 1E-502 2 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
powx401 power 1E-501 2 -> 1E-1002 Subnormal
|
||||
powx402 power 2E-501 2 -> 4E-1002 Subnormal
|
||||
powx403 power 4E-501 2 -> 1.6E-1001 Subnormal
|
||||
powx404 power 10E-501 2 -> 1.00E-1000 Subnormal
|
||||
powx405 power 30E-501 2 -> 9.00E-1000 Subnormal
|
||||
powx406 power 40E-501 2 -> 1.600E-999
|
||||
|
||||
-- cubes
|
||||
mulx410 multiply 1E-670 1e-335 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
mulx411 multiply 1E-668 1e-334 -> 1E-1002 Subnormal
|
||||
mulx412 multiply 4E-668 2e-334 -> 8E-1002 Subnormal
|
||||
mulx413 multiply 9E-668 3e-334 -> 2.7E-1001 Subnormal
|
||||
mulx414 multiply 16E-668 4e-334 -> 6.4E-1001 Subnormal
|
||||
mulx415 multiply 25E-668 5e-334 -> 1.25E-1000 Subnormal
|
||||
mulx416 multiply 10E-668 100e-334 -> 1.000E-999
|
||||
|
||||
powx410 power 1E-335 3 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
powx411 power 1E-334 3 -> 1E-1002 Subnormal
|
||||
powx412 power 2E-334 3 -> 8E-1002 Subnormal
|
||||
powx413 power 3E-334 3 -> 2.7E-1001 Subnormal
|
||||
powx414 power 4E-334 3 -> 6.4E-1001 Subnormal
|
||||
powx415 power 5E-334 3 -> 1.25E-1000 Subnormal
|
||||
powx416 power 10E-334 3 -> 1.000E-999
|
||||
|
||||
-- negative powers, testing subnormals
|
||||
precision: 5
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
powx421 power 2.5E-501 -2 -> Infinity Overflow Inexact Rounded
|
||||
powx422 power 2.5E-500 -2 -> 1.6E+999
|
||||
|
||||
powx423 power 2.5E+499 -2 -> 1.6E-999
|
||||
powx424 power 2.5E+500 -2 -> 1.6E-1001 Subnormal
|
||||
powx425 power 2.5E+501 -2 -> 2E-1003 Underflow Subnormal Inexact Rounded
|
||||
powx426 power 2.5E+502 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
|
||||
powx427 power 0.25E+499 -2 -> 1.6E-997
|
||||
powx428 power 0.25E+500 -2 -> 1.6E-999
|
||||
powx429 power 0.25E+501 -2 -> 1.6E-1001 Subnormal
|
||||
powx430 power 0.25E+502 -2 -> 2E-1003 Underflow Subnormal Inexact Rounded
|
||||
powx431 power 0.25E+503 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
|
||||
powx432 power 0.04E+499 -2 -> 6.25E-996
|
||||
powx433 power 0.04E+500 -2 -> 6.25E-998
|
||||
powx434 power 0.04E+501 -2 -> 6.25E-1000 Subnormal
|
||||
powx435 power 0.04E+502 -2 -> 6.3E-1002 Underflow Subnormal Inexact Rounded
|
||||
powx436 power 0.04E+503 -2 -> 1E-1003 Underflow Subnormal Inexact Rounded
|
||||
powx437 power 0.04E+504 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
|
||||
powx441 power 0.04E+334 -3 -> 1.5625E-998
|
||||
powx442 power 0.04E+335 -3 -> 1.56E-1001 Underflow Subnormal Inexact Rounded
|
||||
powx443 power 0.04E+336 -3 -> 0E-1003 Underflow Subnormal Inexact Rounded
|
||||
powx444 power 0.25E+333 -3 -> 6.4E-998
|
||||
powx445 power 0.25E+334 -3 -> 6.4E-1001 Subnormal
|
||||
powx446 power 0.25E+335 -3 -> 1E-1003 Underflow Subnormal Inexact Rounded
|
||||
powx447 power 0.25E+336 -3 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped
|
||||
-- check sign for cubes and a few squares
|
||||
powx448 power -0.04E+334 -3 -> -1.5625E-998
|
||||
powx449 power -0.04E+335 -3 -> -1.56E-1001 Underflow Subnormal Inexact Rounded
|
||||
powx450 power -0.04E+336 -3 -> -0E-1003 Underflow Subnormal Inexact Rounded
|
||||
powx451 power -0.25E+333 -3 -> -6.4E-998
|
||||
powx452 power -0.25E+334 -3 -> -6.4E-1001 Subnormal
|
||||
powx453 power -0.25E+335 -3 -> -1E-1003 Underflow Subnormal Inexact Rounded
|
||||
powx454 power -0.25E+336 -3 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped
|
||||
powx455 power -0.04E+499 -2 -> 6.25E-996
|
||||
powx456 power -0.04E+500 -2 -> 6.25E-998
|
||||
powx457 power -0.04E+501 -2 -> 6.25E-1000 Subnormal
|
||||
powx458 power -0.04E+502 -2 -> 6.3E-1002 Underflow Subnormal Inexact Rounded
|
||||
|
||||
-- test -0s
|
||||
precision: 9
|
||||
powx560 power 0 0 -> NaN Invalid_operation
|
||||
powx561 power 0 -0 -> NaN Invalid_operation
|
||||
powx562 power -0 0 -> NaN Invalid_operation
|
||||
powx563 power -0 -0 -> NaN Invalid_operation
|
||||
powx564 power 1 0 -> 1
|
||||
powx565 power 1 -0 -> 1
|
||||
powx566 power -1 0 -> 1
|
||||
powx567 power -1 -0 -> 1
|
||||
powx568 power 0 1 -> 0
|
||||
powx569 power 0 -1 -> Infinity Division_by_zero
|
||||
powx570 power -0 1 -> -0
|
||||
powx571 power -0 -1 -> -Infinity Division_by_zero
|
||||
powx572 power 0 2 -> 0
|
||||
powx573 power 0 -2 -> Infinity Division_by_zero
|
||||
powx574 power -0 2 -> 0
|
||||
powx575 power -0 -2 -> Infinity Division_by_zero
|
||||
powx576 power 0 3 -> 0
|
||||
powx577 power 0 -3 -> Infinity Division_by_zero
|
||||
powx578 power -0 3 -> -0
|
||||
powx579 power -0 -3 -> -Infinity Division_by_zero
|
||||
|
||||
-- Specials
|
||||
powx580 power Inf -Inf -> NaN Invalid_operation
|
||||
powx581 power Inf -1000 -> 0
|
||||
powx582 power Inf -1 -> 0
|
||||
powx583 power Inf -0 -> 1
|
||||
powx584 power Inf 0 -> 1
|
||||
powx585 power Inf 1 -> Infinity
|
||||
powx586 power Inf 1000 -> Infinity
|
||||
powx587 power Inf Inf -> NaN Invalid_operation
|
||||
powx588 power -1000 Inf -> NaN Invalid_operation
|
||||
powx589 power -Inf Inf -> NaN Invalid_operation
|
||||
powx590 power -1 Inf -> NaN Invalid_operation
|
||||
powx591 power -0 Inf -> NaN Invalid_operation
|
||||
powx592 power 0 Inf -> NaN Invalid_operation
|
||||
powx593 power 1 Inf -> NaN Invalid_operation
|
||||
powx594 power 1000 Inf -> NaN Invalid_operation
|
||||
powx595 power Inf Inf -> NaN Invalid_operation
|
||||
|
||||
powx600 power -Inf -Inf -> NaN Invalid_operation
|
||||
powx601 power -Inf -1000 -> 0
|
||||
powx602 power -Inf -1 -> -0
|
||||
powx603 power -Inf -0 -> 1
|
||||
powx604 power -Inf 0 -> 1
|
||||
powx605 power -Inf 1 -> -Infinity
|
||||
powx606 power -Inf 1000 -> Infinity
|
||||
powx607 power -Inf Inf -> NaN Invalid_operation
|
||||
powx608 power -1000 Inf -> NaN Invalid_operation
|
||||
powx609 power -Inf -Inf -> NaN Invalid_operation
|
||||
powx610 power -1 -Inf -> NaN Invalid_operation
|
||||
powx611 power -0 -Inf -> NaN Invalid_operation
|
||||
powx612 power 0 -Inf -> NaN Invalid_operation
|
||||
powx613 power 1 -Inf -> NaN Invalid_operation
|
||||
powx614 power 1000 -Inf -> NaN Invalid_operation
|
||||
powx615 power Inf -Inf -> NaN Invalid_operation
|
||||
|
||||
powx621 power NaN -Inf -> NaN Invalid_operation
|
||||
powx622 power NaN -1000 -> NaN
|
||||
powx623 power NaN -1 -> NaN
|
||||
powx624 power NaN -0 -> NaN
|
||||
powx625 power NaN 0 -> NaN
|
||||
powx626 power NaN 1 -> NaN
|
||||
powx627 power NaN 1000 -> NaN
|
||||
powx628 power NaN Inf -> NaN Invalid_operation
|
||||
powx629 power NaN NaN -> NaN
|
||||
powx630 power -Inf NaN -> NaN
|
||||
powx631 power -1000 NaN -> NaN
|
||||
powx632 power -1 NaN -> NaN
|
||||
powx633 power -0 NaN -> NaN
|
||||
powx634 power 0 NaN -> NaN
|
||||
powx635 power 1 NaN -> NaN
|
||||
powx636 power 1000 NaN -> NaN
|
||||
powx637 power Inf NaN -> NaN
|
||||
|
||||
powx641 power sNaN -Inf -> NaN Invalid_operation
|
||||
powx642 power sNaN -1000 -> NaN Invalid_operation
|
||||
powx643 power sNaN -1 -> NaN Invalid_operation
|
||||
powx644 power sNaN -0 -> NaN Invalid_operation
|
||||
powx645 power sNaN 0 -> NaN Invalid_operation
|
||||
powx646 power sNaN 1 -> NaN Invalid_operation
|
||||
powx647 power sNaN 1000 -> NaN Invalid_operation
|
||||
powx648 power sNaN NaN -> NaN Invalid_operation
|
||||
powx649 power sNaN sNaN -> NaN Invalid_operation
|
||||
powx650 power NaN sNaN -> NaN Invalid_operation
|
||||
powx651 power -Inf sNaN -> NaN Invalid_operation
|
||||
powx652 power -1000 sNaN -> NaN Invalid_operation
|
||||
powx653 power -1 sNaN -> NaN Invalid_operation
|
||||
powx654 power -0 sNaN -> NaN Invalid_operation
|
||||
powx655 power 0 sNaN -> NaN Invalid_operation
|
||||
powx656 power 1 sNaN -> NaN Invalid_operation
|
||||
powx657 power 1000 sNaN -> NaN Invalid_operation
|
||||
powx658 power Inf sNaN -> NaN Invalid_operation
|
||||
powx659 power NaN sNaN -> NaN Invalid_operation
|
||||
|
||||
-- NaN propagation
|
||||
powx660 power NaN3 sNaN7 -> NaN7 Invalid_operation
|
||||
powx661 power sNaN8 NaN6 -> NaN8 Invalid_operation
|
||||
powx662 power 1 sNaN7 -> NaN7 Invalid_operation
|
||||
powx663 power sNaN8 1 -> NaN8 Invalid_operation
|
||||
powx664 power Inf sNaN7 -> NaN7 Invalid_operation
|
||||
powx665 power sNaN8 Inf -> NaN Invalid_operation
|
||||
powx666 power Inf NaN9 -> NaN9
|
||||
powx667 power NaN6 Inf -> NaN Invalid_operation
|
||||
powx668 power 1 NaN5 -> NaN5
|
||||
powx669 power NaN2 1 -> NaN2
|
||||
powx670 power NaN2 Nan4 -> NaN2
|
||||
powx671 power NaN Nan4 -> NaN
|
||||
powx672 power NaN345 Nan -> NaN345
|
||||
powx673 power Inf -sNaN7 -> -NaN7 Invalid_operation
|
||||
powx674 power -sNaN8 Inf -> NaN Invalid_operation
|
||||
powx675 power Inf -NaN9 -> -NaN9
|
||||
powx676 power -NaN6 Inf -> NaN Invalid_operation
|
||||
powx677 power -NaN2 -Nan4 -> -NaN2
|
||||
|
||||
-- Examples from extended specification
|
||||
powx690 power Inf -2 -> 0
|
||||
powx691 power Inf -1 -> 0
|
||||
powx692 power Inf 0 -> 1
|
||||
powx693 power Inf 1 -> Infinity
|
||||
powx694 power Inf 2 -> Infinity
|
||||
powx695 power -Inf -2 -> 0
|
||||
powx696 power -Inf -1 -> -0
|
||||
powx697 power -Inf 0 -> 1
|
||||
powx698 power -Inf 1 -> -Infinity
|
||||
powx699 power -Inf 2 -> Infinity
|
||||
powx700 power 0 0 -> NaN Invalid_operation
|
||||
|
||||
-- long operand and RHS range checks
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
powx701 power 12345678000 1 -> 1.23456780E+10 Rounded
|
||||
powx702 power 1234567800 1 -> 1.23456780E+9 Rounded
|
||||
powx703 power 1234567890 1 -> 1.23456789E+9 Rounded
|
||||
powx704 power 1234567891 1 -> 1.23456789E+9 Inexact Rounded
|
||||
powx705 power 12345678901 1 -> 1.23456789E+10 Inexact Rounded
|
||||
powx706 power 1234567896 1 -> 1.23456790E+9 Inexact Rounded
|
||||
powx707 power 1 12345678000 -> NaN Invalid_operation
|
||||
powx708 power 1 1234567800 -> NaN Invalid_operation
|
||||
powx709 power 1 1234567890 -> NaN Invalid_operation
|
||||
powx710 power 1 11234567891 -> NaN Invalid_operation
|
||||
powx711 power 1 12345678901 -> NaN Invalid_operation
|
||||
powx712 power 1 1234567896 -> NaN Invalid_operation
|
||||
powx713 power 1 -1234567896 -> NaN Invalid_operation
|
||||
powx714 power 1 1000000000 -> NaN Invalid_operation
|
||||
powx715 power 1 -1000000000 -> NaN Invalid_operation
|
||||
|
||||
precision: 15
|
||||
-- still checking
|
||||
powx741 power 12345678000 1 -> 12345678000
|
||||
powx742 power 1234567800 1 -> 1234567800
|
||||
powx743 power 1234567890 1 -> 1234567890
|
||||
powx744 power 1234567891 1 -> 1234567891
|
||||
powx745 power 12345678901 1 -> 12345678901
|
||||
powx746 power 1234567896 1 -> 1234567896
|
||||
powx747 power 1 12345678000 -> NaN Invalid_operation
|
||||
powx748 power 1 -1234567896 -> NaN Invalid_operation
|
||||
powx749 power 1 1000000000 -> NaN Invalid_operation
|
||||
powx740 power 1 -1000000000 -> NaN Invalid_operation
|
||||
|
||||
-- check for double-rounded subnormals
|
||||
precision: 5
|
||||
maxexponent: 79
|
||||
minexponent: -79
|
||||
powx750 power 1.2347E-40 2 -> 1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
|
||||
-- Null tests
|
||||
powx900 power 1 # -> NaN Invalid_operation
|
||||
powx901 power # 1 -> NaN Invalid_operation
|
||||
|
|
@ -0,0 +1,780 @@
|
|||
------------------------------------------------------------------------
|
||||
-- quantize.decTest -- decimal quantize operation --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
-- Most of the tests here assume a "regular pattern", where the
|
||||
-- sign and coefficient are +1.
|
||||
-- 2004.03.15 Underflow for quantize is suppressed
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
|
||||
-- sanity checks
|
||||
quax001 quantize 0 1e0 -> 0
|
||||
quax002 quantize 1 1e0 -> 1
|
||||
quax003 quantize 0.1 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax005 quantize 0.1 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax006 quantize 0.1 1e0 -> 0 Inexact Rounded
|
||||
quax007 quantize 0.1 1e-1 -> 0.1
|
||||
quax008 quantize 0.1 1e-2 -> 0.10
|
||||
quax009 quantize 0.1 1e-3 -> 0.100
|
||||
quax010 quantize 0.9 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax011 quantize 0.9 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax012 quantize 0.9 1e+0 -> 1 Inexact Rounded
|
||||
quax013 quantize 0.9 1e-1 -> 0.9
|
||||
quax014 quantize 0.9 1e-2 -> 0.90
|
||||
quax015 quantize 0.9 1e-3 -> 0.900
|
||||
-- negatives
|
||||
quax021 quantize -0 1e0 -> -0
|
||||
quax022 quantize -1 1e0 -> -1
|
||||
quax023 quantize -0.1 1e+2 -> -0E+2 Inexact Rounded
|
||||
quax025 quantize -0.1 1e+1 -> -0E+1 Inexact Rounded
|
||||
quax026 quantize -0.1 1e0 -> -0 Inexact Rounded
|
||||
quax027 quantize -0.1 1e-1 -> -0.1
|
||||
quax028 quantize -0.1 1e-2 -> -0.10
|
||||
quax029 quantize -0.1 1e-3 -> -0.100
|
||||
quax030 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded
|
||||
quax031 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded
|
||||
quax032 quantize -0.9 1e+0 -> -1 Inexact Rounded
|
||||
quax033 quantize -0.9 1e-1 -> -0.9
|
||||
quax034 quantize -0.9 1e-2 -> -0.90
|
||||
quax035 quantize -0.9 1e-3 -> -0.900
|
||||
quax036 quantize -0.5 1e+2 -> -0E+2 Inexact Rounded
|
||||
quax037 quantize -0.5 1e+1 -> -0E+1 Inexact Rounded
|
||||
quax038 quantize -0.5 1e+0 -> -1 Inexact Rounded
|
||||
quax039 quantize -0.5 1e-1 -> -0.5
|
||||
quax040 quantize -0.5 1e-2 -> -0.50
|
||||
quax041 quantize -0.5 1e-3 -> -0.500
|
||||
quax042 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded
|
||||
quax043 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded
|
||||
quax044 quantize -0.9 1e+0 -> -1 Inexact Rounded
|
||||
quax045 quantize -0.9 1e-1 -> -0.9
|
||||
quax046 quantize -0.9 1e-2 -> -0.90
|
||||
quax047 quantize -0.9 1e-3 -> -0.900
|
||||
|
||||
-- examples from Specification
|
||||
quax060 quantize 2.17 0.001 -> 2.170
|
||||
quax061 quantize 2.17 0.01 -> 2.17
|
||||
quax062 quantize 2.17 0.1 -> 2.2 Inexact Rounded
|
||||
quax063 quantize 2.17 1e+0 -> 2 Inexact Rounded
|
||||
quax064 quantize 2.17 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax065 quantize -Inf Inf -> -Infinity
|
||||
quax066 quantize 2 Inf -> NaN Invalid_operation
|
||||
quax067 quantize -0.1 1 -> -0 Inexact Rounded
|
||||
quax068 quantize -0 1e+5 -> -0E+5
|
||||
quax069 quantize +35236450.6 1e-2 -> NaN Invalid_operation
|
||||
quax070 quantize -35236450.6 1e-2 -> NaN Invalid_operation
|
||||
quax071 quantize 217 1e-1 -> 217.0
|
||||
quax072 quantize 217 1e+0 -> 217
|
||||
quax073 quantize 217 1e+1 -> 2.2E+2 Inexact Rounded
|
||||
quax074 quantize 217 1e+2 -> 2E+2 Inexact Rounded
|
||||
|
||||
-- general tests ..
|
||||
quax089 quantize 12 1e+4 -> 0E+4 Inexact Rounded
|
||||
quax090 quantize 12 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax091 quantize 12 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax092 quantize 12 1e+1 -> 1E+1 Inexact Rounded
|
||||
quax093 quantize 1.2345 1e-2 -> 1.23 Inexact Rounded
|
||||
quax094 quantize 1.2355 1e-2 -> 1.24 Inexact Rounded
|
||||
quax095 quantize 1.2345 1e-6 -> 1.234500
|
||||
quax096 quantize 9.9999 1e-2 -> 10.00 Inexact Rounded
|
||||
quax097 quantize 0.0001 1e-2 -> 0.00 Inexact Rounded
|
||||
quax098 quantize 0.001 1e-2 -> 0.00 Inexact Rounded
|
||||
quax099 quantize 0.009 1e-2 -> 0.01 Inexact Rounded
|
||||
quax100 quantize 92 1e+2 -> 1E+2 Inexact Rounded
|
||||
|
||||
quax101 quantize -1 1e0 -> -1
|
||||
quax102 quantize -1 1e-1 -> -1.0
|
||||
quax103 quantize -1 1e-2 -> -1.00
|
||||
quax104 quantize 0 1e0 -> 0
|
||||
quax105 quantize 0 1e-1 -> 0.0
|
||||
quax106 quantize 0 1e-2 -> 0.00
|
||||
quax107 quantize 0.00 1e0 -> 0
|
||||
quax108 quantize 0 1e+1 -> 0E+1
|
||||
quax109 quantize 0 1e+2 -> 0E+2
|
||||
quax110 quantize +1 1e0 -> 1
|
||||
quax111 quantize +1 1e-1 -> 1.0
|
||||
quax112 quantize +1 1e-2 -> 1.00
|
||||
|
||||
quax120 quantize 1.04 1e-3 -> 1.040
|
||||
quax121 quantize 1.04 1e-2 -> 1.04
|
||||
quax122 quantize 1.04 1e-1 -> 1.0 Inexact Rounded
|
||||
quax123 quantize 1.04 1e0 -> 1 Inexact Rounded
|
||||
quax124 quantize 1.05 1e-3 -> 1.050
|
||||
quax125 quantize 1.05 1e-2 -> 1.05
|
||||
quax126 quantize 1.05 1e-1 -> 1.1 Inexact Rounded
|
||||
quax127 quantize 1.05 1e0 -> 1 Inexact Rounded
|
||||
quax128 quantize 1.05 1e-3 -> 1.050
|
||||
quax129 quantize 1.05 1e-2 -> 1.05
|
||||
quax130 quantize 1.05 1e-1 -> 1.1 Inexact Rounded
|
||||
quax131 quantize 1.05 1e0 -> 1 Inexact Rounded
|
||||
quax132 quantize 1.06 1e-3 -> 1.060
|
||||
quax133 quantize 1.06 1e-2 -> 1.06
|
||||
quax134 quantize 1.06 1e-1 -> 1.1 Inexact Rounded
|
||||
quax135 quantize 1.06 1e0 -> 1 Inexact Rounded
|
||||
|
||||
quax140 quantize -10 1e-2 -> -10.00
|
||||
quax141 quantize +1 1e-2 -> 1.00
|
||||
quax142 quantize +10 1e-2 -> 10.00
|
||||
quax143 quantize 1E+10 1e-2 -> NaN Invalid_operation
|
||||
quax144 quantize 1E-10 1e-2 -> 0.00 Inexact Rounded
|
||||
quax145 quantize 1E-3 1e-2 -> 0.00 Inexact Rounded
|
||||
quax146 quantize 1E-2 1e-2 -> 0.01
|
||||
quax147 quantize 1E-1 1e-2 -> 0.10
|
||||
quax148 quantize 0E-10 1e-2 -> 0.00
|
||||
|
||||
quax150 quantize 1.0600 1e-5 -> 1.06000
|
||||
quax151 quantize 1.0600 1e-4 -> 1.0600
|
||||
quax152 quantize 1.0600 1e-3 -> 1.060 Rounded
|
||||
quax153 quantize 1.0600 1e-2 -> 1.06 Rounded
|
||||
quax154 quantize 1.0600 1e-1 -> 1.1 Inexact Rounded
|
||||
quax155 quantize 1.0600 1e0 -> 1 Inexact Rounded
|
||||
|
||||
-- base tests with non-1 coefficients
|
||||
quax161 quantize 0 -9e0 -> 0
|
||||
quax162 quantize 1 -7e0 -> 1
|
||||
quax163 quantize 0.1 -1e+2 -> 0E+2 Inexact Rounded
|
||||
quax165 quantize 0.1 0e+1 -> 0E+1 Inexact Rounded
|
||||
quax166 quantize 0.1 2e0 -> 0 Inexact Rounded
|
||||
quax167 quantize 0.1 3e-1 -> 0.1
|
||||
quax168 quantize 0.1 44e-2 -> 0.10
|
||||
quax169 quantize 0.1 555e-3 -> 0.100
|
||||
quax170 quantize 0.9 6666e+2 -> 0E+2 Inexact Rounded
|
||||
quax171 quantize 0.9 -777e+1 -> 0E+1 Inexact Rounded
|
||||
quax172 quantize 0.9 -88e+0 -> 1 Inexact Rounded
|
||||
quax173 quantize 0.9 -9e-1 -> 0.9
|
||||
quax174 quantize 0.9 0e-2 -> 0.90
|
||||
quax175 quantize 0.9 1.1e-3 -> 0.9000
|
||||
-- negatives
|
||||
quax181 quantize -0 1.1e0 -> -0.0
|
||||
quax182 quantize -1 -1e0 -> -1
|
||||
quax183 quantize -0.1 11e+2 -> -0E+2 Inexact Rounded
|
||||
quax185 quantize -0.1 111e+1 -> -0E+1 Inexact Rounded
|
||||
quax186 quantize -0.1 71e0 -> -0 Inexact Rounded
|
||||
quax187 quantize -0.1 -91e-1 -> -0.1
|
||||
quax188 quantize -0.1 -.1e-2 -> -0.100
|
||||
quax189 quantize -0.1 -1e-3 -> -0.100
|
||||
quax190 quantize -0.9 0e+2 -> -0E+2 Inexact Rounded
|
||||
quax191 quantize -0.9 -0e+1 -> -0E+1 Inexact Rounded
|
||||
quax192 quantize -0.9 -10e+0 -> -1 Inexact Rounded
|
||||
quax193 quantize -0.9 100e-1 -> -0.9
|
||||
quax194 quantize -0.9 999e-2 -> -0.90
|
||||
|
||||
-- +ve exponents ..
|
||||
quax201 quantize -1 1e+0 -> -1
|
||||
quax202 quantize -1 1e+1 -> -0E+1 Inexact Rounded
|
||||
quax203 quantize -1 1e+2 -> -0E+2 Inexact Rounded
|
||||
quax204 quantize 0 1e+0 -> 0
|
||||
quax205 quantize 0 1e+1 -> 0E+1
|
||||
quax206 quantize 0 1e+2 -> 0E+2
|
||||
quax207 quantize +1 1e+0 -> 1
|
||||
quax208 quantize +1 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax209 quantize +1 1e+2 -> 0E+2 Inexact Rounded
|
||||
|
||||
quax220 quantize 1.04 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax221 quantize 1.04 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax222 quantize 1.04 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax223 quantize 1.04 1e+0 -> 1 Inexact Rounded
|
||||
quax224 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax225 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax226 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax227 quantize 1.05 1e+0 -> 1 Inexact Rounded
|
||||
quax228 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax229 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax230 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax231 quantize 1.05 1e+0 -> 1 Inexact Rounded
|
||||
quax232 quantize 1.06 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax233 quantize 1.06 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax234 quantize 1.06 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax235 quantize 1.06 1e+0 -> 1 Inexact Rounded
|
||||
|
||||
quax240 quantize -10 1e+1 -> -1E+1 Rounded
|
||||
quax241 quantize +1 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax242 quantize +10 1e+1 -> 1E+1 Rounded
|
||||
quax243 quantize 1E+1 1e+1 -> 1E+1 -- underneath this is E+1
|
||||
quax244 quantize 1E+2 1e+1 -> 1.0E+2 -- underneath this is E+1
|
||||
quax245 quantize 1E+3 1e+1 -> 1.00E+3 -- underneath this is E+1
|
||||
quax246 quantize 1E+4 1e+1 -> 1.000E+4 -- underneath this is E+1
|
||||
quax247 quantize 1E+5 1e+1 -> 1.0000E+5 -- underneath this is E+1
|
||||
quax248 quantize 1E+6 1e+1 -> 1.00000E+6 -- underneath this is E+1
|
||||
quax249 quantize 1E+7 1e+1 -> 1.000000E+7 -- underneath this is E+1
|
||||
quax250 quantize 1E+8 1e+1 -> 1.0000000E+8 -- underneath this is E+1
|
||||
quax251 quantize 1E+9 1e+1 -> 1.00000000E+9 -- underneath this is E+1
|
||||
-- next one tries to add 9 zeros
|
||||
quax252 quantize 1E+10 1e+1 -> NaN Invalid_operation
|
||||
quax253 quantize 1E-10 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax254 quantize 1E-2 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax255 quantize 0E-10 1e+1 -> 0E+1
|
||||
quax256 quantize -0E-10 1e+1 -> -0E+1
|
||||
quax257 quantize -0E-1 1e+1 -> -0E+1
|
||||
quax258 quantize -0 1e+1 -> -0E+1
|
||||
quax259 quantize -0E+1 1e+1 -> -0E+1
|
||||
|
||||
quax260 quantize -10 1e+2 -> -0E+2 Inexact Rounded
|
||||
quax261 quantize +1 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax262 quantize +10 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax263 quantize 1E+1 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax264 quantize 1E+2 1e+2 -> 1E+2
|
||||
quax265 quantize 1E+3 1e+2 -> 1.0E+3
|
||||
quax266 quantize 1E+4 1e+2 -> 1.00E+4
|
||||
quax267 quantize 1E+5 1e+2 -> 1.000E+5
|
||||
quax268 quantize 1E+6 1e+2 -> 1.0000E+6
|
||||
quax269 quantize 1E+7 1e+2 -> 1.00000E+7
|
||||
quax270 quantize 1E+8 1e+2 -> 1.000000E+8
|
||||
quax271 quantize 1E+9 1e+2 -> 1.0000000E+9
|
||||
quax272 quantize 1E+10 1e+2 -> 1.00000000E+10
|
||||
quax273 quantize 1E-10 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax274 quantize 1E-2 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax275 quantize 0E-10 1e+2 -> 0E+2
|
||||
|
||||
quax280 quantize -10 1e+3 -> -0E+3 Inexact Rounded
|
||||
quax281 quantize +1 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax282 quantize +10 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax283 quantize 1E+1 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax284 quantize 1E+2 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax285 quantize 1E+3 1e+3 -> 1E+3
|
||||
quax286 quantize 1E+4 1e+3 -> 1.0E+4
|
||||
quax287 quantize 1E+5 1e+3 -> 1.00E+5
|
||||
quax288 quantize 1E+6 1e+3 -> 1.000E+6
|
||||
quax289 quantize 1E+7 1e+3 -> 1.0000E+7
|
||||
quax290 quantize 1E+8 1e+3 -> 1.00000E+8
|
||||
quax291 quantize 1E+9 1e+3 -> 1.000000E+9
|
||||
quax292 quantize 1E+10 1e+3 -> 1.0000000E+10
|
||||
quax293 quantize 1E-10 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax294 quantize 1E-2 1e+3 -> 0E+3 Inexact Rounded
|
||||
quax295 quantize 0E-10 1e+3 -> 0E+3
|
||||
|
||||
-- round up from below [sign wrong in JIT compiler once]
|
||||
quax300 quantize 0.0078 1e-5 -> 0.00780
|
||||
quax301 quantize 0.0078 1e-4 -> 0.0078
|
||||
quax302 quantize 0.0078 1e-3 -> 0.008 Inexact Rounded
|
||||
quax303 quantize 0.0078 1e-2 -> 0.01 Inexact Rounded
|
||||
quax304 quantize 0.0078 1e-1 -> 0.0 Inexact Rounded
|
||||
quax305 quantize 0.0078 1e0 -> 0 Inexact Rounded
|
||||
quax306 quantize 0.0078 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax307 quantize 0.0078 1e+2 -> 0E+2 Inexact Rounded
|
||||
|
||||
quax310 quantize -0.0078 1e-5 -> -0.00780
|
||||
quax311 quantize -0.0078 1e-4 -> -0.0078
|
||||
quax312 quantize -0.0078 1e-3 -> -0.008 Inexact Rounded
|
||||
quax313 quantize -0.0078 1e-2 -> -0.01 Inexact Rounded
|
||||
quax314 quantize -0.0078 1e-1 -> -0.0 Inexact Rounded
|
||||
quax315 quantize -0.0078 1e0 -> -0 Inexact Rounded
|
||||
quax316 quantize -0.0078 1e+1 -> -0E+1 Inexact Rounded
|
||||
quax317 quantize -0.0078 1e+2 -> -0E+2 Inexact Rounded
|
||||
|
||||
quax320 quantize 0.078 1e-5 -> 0.07800
|
||||
quax321 quantize 0.078 1e-4 -> 0.0780
|
||||
quax322 quantize 0.078 1e-3 -> 0.078
|
||||
quax323 quantize 0.078 1e-2 -> 0.08 Inexact Rounded
|
||||
quax324 quantize 0.078 1e-1 -> 0.1 Inexact Rounded
|
||||
quax325 quantize 0.078 1e0 -> 0 Inexact Rounded
|
||||
quax326 quantize 0.078 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax327 quantize 0.078 1e+2 -> 0E+2 Inexact Rounded
|
||||
|
||||
quax330 quantize -0.078 1e-5 -> -0.07800
|
||||
quax331 quantize -0.078 1e-4 -> -0.0780
|
||||
quax332 quantize -0.078 1e-3 -> -0.078
|
||||
quax333 quantize -0.078 1e-2 -> -0.08 Inexact Rounded
|
||||
quax334 quantize -0.078 1e-1 -> -0.1 Inexact Rounded
|
||||
quax335 quantize -0.078 1e0 -> -0 Inexact Rounded
|
||||
quax336 quantize -0.078 1e+1 -> -0E+1 Inexact Rounded
|
||||
quax337 quantize -0.078 1e+2 -> -0E+2 Inexact Rounded
|
||||
|
||||
quax340 quantize 0.78 1e-5 -> 0.78000
|
||||
quax341 quantize 0.78 1e-4 -> 0.7800
|
||||
quax342 quantize 0.78 1e-3 -> 0.780
|
||||
quax343 quantize 0.78 1e-2 -> 0.78
|
||||
quax344 quantize 0.78 1e-1 -> 0.8 Inexact Rounded
|
||||
quax345 quantize 0.78 1e0 -> 1 Inexact Rounded
|
||||
quax346 quantize 0.78 1e+1 -> 0E+1 Inexact Rounded
|
||||
quax347 quantize 0.78 1e+2 -> 0E+2 Inexact Rounded
|
||||
|
||||
quax350 quantize -0.78 1e-5 -> -0.78000
|
||||
quax351 quantize -0.78 1e-4 -> -0.7800
|
||||
quax352 quantize -0.78 1e-3 -> -0.780
|
||||
quax353 quantize -0.78 1e-2 -> -0.78
|
||||
quax354 quantize -0.78 1e-1 -> -0.8 Inexact Rounded
|
||||
quax355 quantize -0.78 1e0 -> -1 Inexact Rounded
|
||||
quax356 quantize -0.78 1e+1 -> -0E+1 Inexact Rounded
|
||||
quax357 quantize -0.78 1e+2 -> -0E+2 Inexact Rounded
|
||||
|
||||
quax360 quantize 7.8 1e-5 -> 7.80000
|
||||
quax361 quantize 7.8 1e-4 -> 7.8000
|
||||
quax362 quantize 7.8 1e-3 -> 7.800
|
||||
quax363 quantize 7.8 1e-2 -> 7.80
|
||||
quax364 quantize 7.8 1e-1 -> 7.8
|
||||
quax365 quantize 7.8 1e0 -> 8 Inexact Rounded
|
||||
quax366 quantize 7.8 1e+1 -> 1E+1 Inexact Rounded
|
||||
quax367 quantize 7.8 1e+2 -> 0E+2 Inexact Rounded
|
||||
quax368 quantize 7.8 1e+3 -> 0E+3 Inexact Rounded
|
||||
|
||||
quax370 quantize -7.8 1e-5 -> -7.80000
|
||||
quax371 quantize -7.8 1e-4 -> -7.8000
|
||||
quax372 quantize -7.8 1e-3 -> -7.800
|
||||
quax373 quantize -7.8 1e-2 -> -7.80
|
||||
quax374 quantize -7.8 1e-1 -> -7.8
|
||||
quax375 quantize -7.8 1e0 -> -8 Inexact Rounded
|
||||
quax376 quantize -7.8 1e+1 -> -1E+1 Inexact Rounded
|
||||
quax377 quantize -7.8 1e+2 -> -0E+2 Inexact Rounded
|
||||
quax378 quantize -7.8 1e+3 -> -0E+3 Inexact Rounded
|
||||
|
||||
-- some individuals
|
||||
precision: 9
|
||||
quax380 quantize 352364.506 1e-2 -> 352364.51 Inexact Rounded
|
||||
quax381 quantize 3523645.06 1e-2 -> 3523645.06
|
||||
quax382 quantize 35236450.6 1e-2 -> NaN Invalid_operation
|
||||
quax383 quantize 352364506 1e-2 -> NaN Invalid_operation
|
||||
quax384 quantize -352364.506 1e-2 -> -352364.51 Inexact Rounded
|
||||
quax385 quantize -3523645.06 1e-2 -> -3523645.06
|
||||
quax386 quantize -35236450.6 1e-2 -> NaN Invalid_operation
|
||||
quax387 quantize -352364506 1e-2 -> NaN Invalid_operation
|
||||
|
||||
rounding: down
|
||||
quax389 quantize 35236450.6 1e-2 -> NaN Invalid_operation
|
||||
-- ? should that one instead have been:
|
||||
-- quax389 quantize 35236450.6 1e-2 -> NaN Invalid_operation
|
||||
rounding: half_up
|
||||
|
||||
-- and a few more from e-mail discussions
|
||||
precision: 7
|
||||
quax391 quantize 12.34567 1e-3 -> 12.346 Inexact Rounded
|
||||
quax392 quantize 123.4567 1e-3 -> 123.457 Inexact Rounded
|
||||
quax393 quantize 1234.567 1e-3 -> 1234.567
|
||||
quax394 quantize 12345.67 1e-3 -> NaN Invalid_operation
|
||||
quax395 quantize 123456.7 1e-3 -> NaN Invalid_operation
|
||||
quax396 quantize 1234567. 1e-3 -> NaN Invalid_operation
|
||||
|
||||
-- some 9999 round-up cases
|
||||
precision: 9
|
||||
quax400 quantize 9.999 1e-5 -> 9.99900
|
||||
quax401 quantize 9.999 1e-4 -> 9.9990
|
||||
quax402 quantize 9.999 1e-3 -> 9.999
|
||||
quax403 quantize 9.999 1e-2 -> 10.00 Inexact Rounded
|
||||
quax404 quantize 9.999 1e-1 -> 10.0 Inexact Rounded
|
||||
quax405 quantize 9.999 1e0 -> 10 Inexact Rounded
|
||||
quax406 quantize 9.999 1e1 -> 1E+1 Inexact Rounded
|
||||
quax407 quantize 9.999 1e2 -> 0E+2 Inexact Rounded
|
||||
|
||||
quax410 quantize 0.999 1e-5 -> 0.99900
|
||||
quax411 quantize 0.999 1e-4 -> 0.9990
|
||||
quax412 quantize 0.999 1e-3 -> 0.999
|
||||
quax413 quantize 0.999 1e-2 -> 1.00 Inexact Rounded
|
||||
quax414 quantize 0.999 1e-1 -> 1.0 Inexact Rounded
|
||||
quax415 quantize 0.999 1e0 -> 1 Inexact Rounded
|
||||
quax416 quantize 0.999 1e1 -> 0E+1 Inexact Rounded
|
||||
|
||||
quax420 quantize 0.0999 1e-5 -> 0.09990
|
||||
quax421 quantize 0.0999 1e-4 -> 0.0999
|
||||
quax422 quantize 0.0999 1e-3 -> 0.100 Inexact Rounded
|
||||
quax423 quantize 0.0999 1e-2 -> 0.10 Inexact Rounded
|
||||
quax424 quantize 0.0999 1e-1 -> 0.1 Inexact Rounded
|
||||
quax425 quantize 0.0999 1e0 -> 0 Inexact Rounded
|
||||
quax426 quantize 0.0999 1e1 -> 0E+1 Inexact Rounded
|
||||
|
||||
quax430 quantize 0.00999 1e-5 -> 0.00999
|
||||
quax431 quantize 0.00999 1e-4 -> 0.0100 Inexact Rounded
|
||||
quax432 quantize 0.00999 1e-3 -> 0.010 Inexact Rounded
|
||||
quax433 quantize 0.00999 1e-2 -> 0.01 Inexact Rounded
|
||||
quax434 quantize 0.00999 1e-1 -> 0.0 Inexact Rounded
|
||||
quax435 quantize 0.00999 1e0 -> 0 Inexact Rounded
|
||||
quax436 quantize 0.00999 1e1 -> 0E+1 Inexact Rounded
|
||||
|
||||
quax440 quantize 0.000999 1e-5 -> 0.00100 Inexact Rounded
|
||||
quax441 quantize 0.000999 1e-4 -> 0.0010 Inexact Rounded
|
||||
quax442 quantize 0.000999 1e-3 -> 0.001 Inexact Rounded
|
||||
quax443 quantize 0.000999 1e-2 -> 0.00 Inexact Rounded
|
||||
quax444 quantize 0.000999 1e-1 -> 0.0 Inexact Rounded
|
||||
quax445 quantize 0.000999 1e0 -> 0 Inexact Rounded
|
||||
quax446 quantize 0.000999 1e1 -> 0E+1 Inexact Rounded
|
||||
|
||||
precision: 8
|
||||
quax449 quantize 9.999E-15 1e-23 -> NaN Invalid_operation
|
||||
quax450 quantize 9.999E-15 1e-22 -> 9.9990000E-15
|
||||
quax451 quantize 9.999E-15 1e-21 -> 9.999000E-15
|
||||
quax452 quantize 9.999E-15 1e-20 -> 9.99900E-15
|
||||
quax453 quantize 9.999E-15 1e-19 -> 9.9990E-15
|
||||
quax454 quantize 9.999E-15 1e-18 -> 9.999E-15
|
||||
quax455 quantize 9.999E-15 1e-17 -> 1.000E-14 Inexact Rounded
|
||||
quax456 quantize 9.999E-15 1e-16 -> 1.00E-14 Inexact Rounded
|
||||
quax457 quantize 9.999E-15 1e-15 -> 1.0E-14 Inexact Rounded
|
||||
quax458 quantize 9.999E-15 1e-14 -> 1E-14 Inexact Rounded
|
||||
quax459 quantize 9.999E-15 1e-13 -> 0E-13 Inexact Rounded
|
||||
quax460 quantize 9.999E-15 1e-12 -> 0E-12 Inexact Rounded
|
||||
quax461 quantize 9.999E-15 1e-11 -> 0E-11 Inexact Rounded
|
||||
quax462 quantize 9.999E-15 1e-10 -> 0E-10 Inexact Rounded
|
||||
quax463 quantize 9.999E-15 1e-9 -> 0E-9 Inexact Rounded
|
||||
quax464 quantize 9.999E-15 1e-8 -> 0E-8 Inexact Rounded
|
||||
quax465 quantize 9.999E-15 1e-7 -> 0E-7 Inexact Rounded
|
||||
quax466 quantize 9.999E-15 1e-6 -> 0.000000 Inexact Rounded
|
||||
quax467 quantize 9.999E-15 1e-5 -> 0.00000 Inexact Rounded
|
||||
quax468 quantize 9.999E-15 1e-4 -> 0.0000 Inexact Rounded
|
||||
quax469 quantize 9.999E-15 1e-3 -> 0.000 Inexact Rounded
|
||||
quax470 quantize 9.999E-15 1e-2 -> 0.00 Inexact Rounded
|
||||
quax471 quantize 9.999E-15 1e-1 -> 0.0 Inexact Rounded
|
||||
quax472 quantize 9.999E-15 1e0 -> 0 Inexact Rounded
|
||||
quax473 quantize 9.999E-15 1e1 -> 0E+1 Inexact Rounded
|
||||
|
||||
-- long operand checks [rhs checks removed]
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
quax481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
|
||||
quax482 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded
|
||||
quax483 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded
|
||||
quax484 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded
|
||||
quax485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
|
||||
quax486 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded
|
||||
-- a potential double-round
|
||||
quax487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
|
||||
quax488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
|
||||
|
||||
precision: 15
|
||||
quax491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
|
||||
quax492 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded
|
||||
quax493 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded
|
||||
quax494 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded
|
||||
quax495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
|
||||
quax496 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded
|
||||
quax497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
|
||||
quax498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
|
||||
|
||||
-- Zeros
|
||||
quax500 quantize 0 1e1 -> 0E+1
|
||||
quax501 quantize 0 1e0 -> 0
|
||||
quax502 quantize 0 1e-1 -> 0.0
|
||||
quax503 quantize 0.0 1e-1 -> 0.0
|
||||
quax504 quantize 0.0 1e0 -> 0
|
||||
quax505 quantize 0.0 1e+1 -> 0E+1
|
||||
quax506 quantize 0E+1 1e-1 -> 0.0
|
||||
quax507 quantize 0E+1 1e0 -> 0
|
||||
quax508 quantize 0E+1 1e+1 -> 0E+1
|
||||
quax509 quantize -0 1e1 -> -0E+1
|
||||
quax510 quantize -0 1e0 -> -0
|
||||
quax511 quantize -0 1e-1 -> -0.0
|
||||
quax512 quantize -0.0 1e-1 -> -0.0
|
||||
quax513 quantize -0.0 1e0 -> -0
|
||||
quax514 quantize -0.0 1e+1 -> -0E+1
|
||||
quax515 quantize -0E+1 1e-1 -> -0.0
|
||||
quax516 quantize -0E+1 1e0 -> -0
|
||||
quax517 quantize -0E+1 1e+1 -> -0E+1
|
||||
|
||||
-- Suspicious RHS values
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 15
|
||||
quax520 quantize 1.234 1e999999000 -> 0E+999999000 Inexact Rounded
|
||||
quax521 quantize 123.456 1e999999000 -> 0E+999999000 Inexact Rounded
|
||||
quax522 quantize 1.234 1e999999999 -> 0E+999999999 Inexact Rounded
|
||||
quax523 quantize 123.456 1e999999999 -> 0E+999999999 Inexact Rounded
|
||||
quax524 quantize 123.456 1e1000000000 -> NaN Invalid_operation
|
||||
quax525 quantize 123.456 1e12345678903 -> NaN Invalid_operation
|
||||
-- next four are "won't fit" overflows
|
||||
quax526 quantize 1.234 1e-999999000 -> NaN Invalid_operation
|
||||
quax527 quantize 123.456 1e-999999000 -> NaN Invalid_operation
|
||||
quax528 quantize 1.234 1e-999999999 -> NaN Invalid_operation
|
||||
quax529 quantize 123.456 1e-999999999 -> NaN Invalid_operation
|
||||
quax530 quantize 123.456 1e-1000000014 -> NaN Invalid_operation
|
||||
quax531 quantize 123.456 1e-12345678903 -> NaN Invalid_operation
|
||||
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 15
|
||||
quax532 quantize 1.234E+999 1e999 -> 1E+999 Inexact Rounded
|
||||
quax533 quantize 1.234E+998 1e999 -> 0E+999 Inexact Rounded
|
||||
quax534 quantize 1.234 1e999 -> 0E+999 Inexact Rounded
|
||||
quax535 quantize 1.234 1e1000 -> NaN Invalid_operation
|
||||
quax536 quantize 1.234 1e5000 -> NaN Invalid_operation
|
||||
quax537 quantize 0 1e-999 -> 0E-999
|
||||
-- next two are "won't fit" overflows
|
||||
quax538 quantize 1.234 1e-999 -> NaN Invalid_operation
|
||||
quax539 quantize 1.234 1e-1000 -> NaN Invalid_operation
|
||||
quax540 quantize 1.234 1e-5000 -> NaN Invalid_operation
|
||||
-- [more below]
|
||||
|
||||
-- check bounds (lhs maybe out of range for destination, etc.)
|
||||
precision: 7
|
||||
quax541 quantize 1E+999 1e+999 -> 1E+999
|
||||
quax542 quantize 1E+1000 1e+999 -> NaN Invalid_operation
|
||||
quax543 quantize 1E+999 1e+1000 -> NaN Invalid_operation
|
||||
quax544 quantize 1E-999 1e-999 -> 1E-999
|
||||
quax545 quantize 1E-1000 1e-999 -> 0E-999 Inexact Rounded
|
||||
quax546 quantize 1E-999 1e-1000 -> 1.0E-999
|
||||
quax547 quantize 1E-1005 1e-999 -> 0E-999 Inexact Rounded
|
||||
quax548 quantize 1E-1006 1e-999 -> 0E-999 Inexact Rounded
|
||||
quax549 quantize 1E-1007 1e-999 -> 0E-999 Inexact Rounded
|
||||
quax550 quantize 1E-998 1e-1005 -> NaN Invalid_operation -- won't fit
|
||||
quax551 quantize 1E-999 1e-1005 -> 1.000000E-999
|
||||
quax552 quantize 1E-1000 1e-1005 -> 1.00000E-1000 Subnormal
|
||||
quax553 quantize 1E-999 1e-1006 -> NaN Invalid_operation
|
||||
quax554 quantize 1E-999 1e-1007 -> NaN Invalid_operation
|
||||
-- related subnormal rounding
|
||||
quax555 quantize 1.666666E-999 1e-1005 -> 1.666666E-999
|
||||
quax556 quantize 1.666666E-1000 1e-1005 -> 1.66667E-1000 Subnormal Inexact Rounded
|
||||
quax557 quantize 1.666666E-1001 1e-1005 -> 1.6667E-1001 Subnormal Inexact Rounded
|
||||
quax558 quantize 1.666666E-1002 1e-1005 -> 1.667E-1002 Subnormal Inexact Rounded
|
||||
quax559 quantize 1.666666E-1003 1e-1005 -> 1.67E-1003 Subnormal Inexact Rounded
|
||||
quax560 quantize 1.666666E-1004 1e-1005 -> 1.7E-1004 Subnormal Inexact Rounded
|
||||
quax561 quantize 1.666666E-1005 1e-1005 -> 2E-1005 Subnormal Inexact Rounded
|
||||
quax562 quantize 1.666666E-1006 1e-1005 -> 0E-1005 Inexact Rounded
|
||||
quax563 quantize 1.666666E-1007 1e-1005 -> 0E-1005 Inexact Rounded
|
||||
|
||||
-- Specials
|
||||
quax580 quantize Inf -Inf -> Infinity
|
||||
quax581 quantize Inf 1e-1000 -> NaN Invalid_operation
|
||||
quax582 quantize Inf 1e-1 -> NaN Invalid_operation
|
||||
quax583 quantize Inf 1e0 -> NaN Invalid_operation
|
||||
quax584 quantize Inf 1e1 -> NaN Invalid_operation
|
||||
quax585 quantize Inf 1e1000 -> NaN Invalid_operation
|
||||
quax586 quantize Inf Inf -> Infinity
|
||||
quax587 quantize -1000 Inf -> NaN Invalid_operation
|
||||
quax588 quantize -Inf Inf -> -Infinity
|
||||
quax589 quantize -1 Inf -> NaN Invalid_operation
|
||||
quax590 quantize 0 Inf -> NaN Invalid_operation
|
||||
quax591 quantize 1 Inf -> NaN Invalid_operation
|
||||
quax592 quantize 1000 Inf -> NaN Invalid_operation
|
||||
quax593 quantize Inf Inf -> Infinity
|
||||
quax594 quantize Inf 1e-0 -> NaN Invalid_operation
|
||||
quax595 quantize -0 Inf -> NaN Invalid_operation
|
||||
|
||||
quax600 quantize -Inf -Inf -> -Infinity
|
||||
quax601 quantize -Inf 1e-1000 -> NaN Invalid_operation
|
||||
quax602 quantize -Inf 1e-1 -> NaN Invalid_operation
|
||||
quax603 quantize -Inf 1e0 -> NaN Invalid_operation
|
||||
quax604 quantize -Inf 1e1 -> NaN Invalid_operation
|
||||
quax605 quantize -Inf 1e1000 -> NaN Invalid_operation
|
||||
quax606 quantize -Inf Inf -> -Infinity
|
||||
quax607 quantize -1000 Inf -> NaN Invalid_operation
|
||||
quax608 quantize -Inf -Inf -> -Infinity
|
||||
quax609 quantize -1 -Inf -> NaN Invalid_operation
|
||||
quax610 quantize 0 -Inf -> NaN Invalid_operation
|
||||
quax611 quantize 1 -Inf -> NaN Invalid_operation
|
||||
quax612 quantize 1000 -Inf -> NaN Invalid_operation
|
||||
quax613 quantize Inf -Inf -> Infinity
|
||||
quax614 quantize -Inf 1e-0 -> NaN Invalid_operation
|
||||
quax615 quantize -0 -Inf -> NaN Invalid_operation
|
||||
|
||||
quax621 quantize NaN -Inf -> NaN
|
||||
quax622 quantize NaN 1e-1000 -> NaN
|
||||
quax623 quantize NaN 1e-1 -> NaN
|
||||
quax624 quantize NaN 1e0 -> NaN
|
||||
quax625 quantize NaN 1e1 -> NaN
|
||||
quax626 quantize NaN 1e1000 -> NaN
|
||||
quax627 quantize NaN Inf -> NaN
|
||||
quax628 quantize NaN NaN -> NaN
|
||||
quax629 quantize -Inf NaN -> NaN
|
||||
quax630 quantize -1000 NaN -> NaN
|
||||
quax631 quantize -1 NaN -> NaN
|
||||
quax632 quantize 0 NaN -> NaN
|
||||
quax633 quantize 1 NaN -> NaN
|
||||
quax634 quantize 1000 NaN -> NaN
|
||||
quax635 quantize Inf NaN -> NaN
|
||||
quax636 quantize NaN 1e-0 -> NaN
|
||||
quax637 quantize -0 NaN -> NaN
|
||||
|
||||
quax641 quantize sNaN -Inf -> NaN Invalid_operation
|
||||
quax642 quantize sNaN 1e-1000 -> NaN Invalid_operation
|
||||
quax643 quantize sNaN 1e-1 -> NaN Invalid_operation
|
||||
quax644 quantize sNaN 1e0 -> NaN Invalid_operation
|
||||
quax645 quantize sNaN 1e1 -> NaN Invalid_operation
|
||||
quax646 quantize sNaN 1e1000 -> NaN Invalid_operation
|
||||
quax647 quantize sNaN NaN -> NaN Invalid_operation
|
||||
quax648 quantize sNaN sNaN -> NaN Invalid_operation
|
||||
quax649 quantize NaN sNaN -> NaN Invalid_operation
|
||||
quax650 quantize -Inf sNaN -> NaN Invalid_operation
|
||||
quax651 quantize -1000 sNaN -> NaN Invalid_operation
|
||||
quax652 quantize -1 sNaN -> NaN Invalid_operation
|
||||
quax653 quantize 0 sNaN -> NaN Invalid_operation
|
||||
quax654 quantize 1 sNaN -> NaN Invalid_operation
|
||||
quax655 quantize 1000 sNaN -> NaN Invalid_operation
|
||||
quax656 quantize Inf sNaN -> NaN Invalid_operation
|
||||
quax657 quantize NaN sNaN -> NaN Invalid_operation
|
||||
quax658 quantize sNaN 1e-0 -> NaN Invalid_operation
|
||||
quax659 quantize -0 sNaN -> NaN Invalid_operation
|
||||
|
||||
-- propagating NaNs
|
||||
quax661 quantize NaN9 -Inf -> NaN9
|
||||
quax662 quantize NaN8 919 -> NaN8
|
||||
quax663 quantize NaN71 Inf -> NaN71
|
||||
quax664 quantize NaN6 NaN5 -> NaN6
|
||||
quax665 quantize -Inf NaN4 -> NaN4
|
||||
quax666 quantize -919 NaN31 -> NaN31
|
||||
quax667 quantize Inf NaN2 -> NaN2
|
||||
|
||||
quax671 quantize sNaN99 -Inf -> NaN99 Invalid_operation
|
||||
quax672 quantize sNaN98 -11 -> NaN98 Invalid_operation
|
||||
quax673 quantize sNaN97 NaN -> NaN97 Invalid_operation
|
||||
quax674 quantize sNaN16 sNaN94 -> NaN16 Invalid_operation
|
||||
quax675 quantize NaN95 sNaN93 -> NaN93 Invalid_operation
|
||||
quax676 quantize -Inf sNaN92 -> NaN92 Invalid_operation
|
||||
quax677 quantize 088 sNaN91 -> NaN91 Invalid_operation
|
||||
quax678 quantize Inf sNaN90 -> NaN90 Invalid_operation
|
||||
quax679 quantize NaN sNaN88 -> NaN88 Invalid_operation
|
||||
|
||||
quax681 quantize -NaN9 -Inf -> -NaN9
|
||||
quax682 quantize -NaN8 919 -> -NaN8
|
||||
quax683 quantize -NaN71 Inf -> -NaN71
|
||||
quax684 quantize -NaN6 -NaN5 -> -NaN6
|
||||
quax685 quantize -Inf -NaN4 -> -NaN4
|
||||
quax686 quantize -919 -NaN31 -> -NaN31
|
||||
quax687 quantize Inf -NaN2 -> -NaN2
|
||||
|
||||
quax691 quantize -sNaN99 -Inf -> -NaN99 Invalid_operation
|
||||
quax692 quantize -sNaN98 -11 -> -NaN98 Invalid_operation
|
||||
quax693 quantize -sNaN97 NaN -> -NaN97 Invalid_operation
|
||||
quax694 quantize -sNaN16 sNaN94 -> -NaN16 Invalid_operation
|
||||
quax695 quantize -NaN95 -sNaN93 -> -NaN93 Invalid_operation
|
||||
quax696 quantize -Inf -sNaN92 -> -NaN92 Invalid_operation
|
||||
quax697 quantize 088 -sNaN91 -> -NaN91 Invalid_operation
|
||||
quax698 quantize Inf -sNaN90 -> -NaN90 Invalid_operation
|
||||
quax699 quantize NaN -sNaN88 -> -NaN88 Invalid_operation
|
||||
|
||||
-- subnormals and underflow
|
||||
precision: 4
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
quax710 quantize 1.00E-999 1e-999 -> 1E-999 Rounded
|
||||
quax711 quantize 0.1E-999 2e-1000 -> 1E-1000 Subnormal
|
||||
quax712 quantize 0.10E-999 3e-1000 -> 1E-1000 Subnormal Rounded
|
||||
quax713 quantize 0.100E-999 4e-1000 -> 1E-1000 Subnormal Rounded
|
||||
quax714 quantize 0.01E-999 5e-1001 -> 1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
quax715 quantize 0.999E-999 1e-999 -> 1E-999 Inexact Rounded
|
||||
quax716 quantize 0.099E-999 10e-1000 -> 1E-1000 Inexact Rounded Subnormal
|
||||
|
||||
quax717 quantize 0.009E-999 1e-1001 -> 1E-1001 Inexact Rounded Subnormal
|
||||
quax718 quantize 0.001E-999 1e-1001 -> 0E-1001 Inexact Rounded
|
||||
quax719 quantize 0.0009E-999 1e-1001 -> 0E-1001 Inexact Rounded
|
||||
quax720 quantize 0.0001E-999 1e-1001 -> 0E-1001 Inexact Rounded
|
||||
|
||||
quax730 quantize -1.00E-999 1e-999 -> -1E-999 Rounded
|
||||
quax731 quantize -0.1E-999 1e-999 -> -0E-999 Rounded Inexact
|
||||
quax732 quantize -0.10E-999 1e-999 -> -0E-999 Rounded Inexact
|
||||
quax733 quantize -0.100E-999 1e-999 -> -0E-999 Rounded Inexact
|
||||
quax734 quantize -0.01E-999 1e-999 -> -0E-999 Inexact Rounded
|
||||
-- next is rounded to Emin
|
||||
quax735 quantize -0.999E-999 90e-999 -> -1E-999 Inexact Rounded
|
||||
quax736 quantize -0.099E-999 -1e-999 -> -0E-999 Inexact Rounded
|
||||
quax737 quantize -0.009E-999 -1e-999 -> -0E-999 Inexact Rounded
|
||||
quax738 quantize -0.001E-999 -0e-999 -> -0E-999 Inexact Rounded
|
||||
quax739 quantize -0.0001E-999 0e-999 -> -0E-999 Inexact Rounded
|
||||
|
||||
quax740 quantize -1.00E-999 1e-1000 -> -1.0E-999 Rounded
|
||||
quax741 quantize -0.1E-999 1e-1000 -> -1E-1000 Subnormal
|
||||
quax742 quantize -0.10E-999 1e-1000 -> -1E-1000 Subnormal Rounded
|
||||
quax743 quantize -0.100E-999 1e-1000 -> -1E-1000 Subnormal Rounded
|
||||
quax744 quantize -0.01E-999 1e-1000 -> -0E-1000 Inexact Rounded
|
||||
-- next is rounded to Emin
|
||||
quax745 quantize -0.999E-999 1e-1000 -> -1.0E-999 Inexact Rounded
|
||||
quax746 quantize -0.099E-999 1e-1000 -> -1E-1000 Inexact Rounded Subnormal
|
||||
quax747 quantize -0.009E-999 1e-1000 -> -0E-1000 Inexact Rounded
|
||||
quax748 quantize -0.001E-999 1e-1000 -> -0E-1000 Inexact Rounded
|
||||
quax749 quantize -0.0001E-999 1e-1000 -> -0E-1000 Inexact Rounded
|
||||
|
||||
quax750 quantize -1.00E-999 1e-1001 -> -1.00E-999
|
||||
quax751 quantize -0.1E-999 1e-1001 -> -1.0E-1000 Subnormal
|
||||
quax752 quantize -0.10E-999 1e-1001 -> -1.0E-1000 Subnormal
|
||||
quax753 quantize -0.100E-999 1e-1001 -> -1.0E-1000 Subnormal Rounded
|
||||
quax754 quantize -0.01E-999 1e-1001 -> -1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
quax755 quantize -0.999E-999 1e-1001 -> -1.00E-999 Inexact Rounded
|
||||
quax756 quantize -0.099E-999 1e-1001 -> -1.0E-1000 Inexact Rounded Subnormal
|
||||
quax757 quantize -0.009E-999 1e-1001 -> -1E-1001 Inexact Rounded Subnormal
|
||||
quax758 quantize -0.001E-999 1e-1001 -> -0E-1001 Inexact Rounded
|
||||
quax759 quantize -0.0001E-999 1e-1001 -> -0E-1001 Inexact Rounded
|
||||
|
||||
quax760 quantize -1.00E-999 1e-1002 -> -1.000E-999
|
||||
quax761 quantize -0.1E-999 1e-1002 -> -1.00E-1000 Subnormal
|
||||
quax762 quantize -0.10E-999 1e-1002 -> -1.00E-1000 Subnormal
|
||||
quax763 quantize -0.100E-999 1e-1002 -> -1.00E-1000 Subnormal
|
||||
quax764 quantize -0.01E-999 1e-1002 -> -1.0E-1001 Subnormal
|
||||
quax765 quantize -0.999E-999 1e-1002 -> -9.99E-1000 Subnormal
|
||||
quax766 quantize -0.099E-999 1e-1002 -> -9.9E-1001 Subnormal
|
||||
quax767 quantize -0.009E-999 1e-1002 -> -9E-1002 Subnormal
|
||||
quax768 quantize -0.001E-999 1e-1002 -> -1E-1002 Subnormal
|
||||
quax769 quantize -0.0001E-999 1e-1002 -> -0E-1002 Inexact Rounded
|
||||
|
||||
-- rhs must be no less than Etiny
|
||||
quax770 quantize -1.00E-999 1e-1003 -> NaN Invalid_operation
|
||||
quax771 quantize -0.1E-999 1e-1003 -> NaN Invalid_operation
|
||||
quax772 quantize -0.10E-999 1e-1003 -> NaN Invalid_operation
|
||||
quax773 quantize -0.100E-999 1e-1003 -> NaN Invalid_operation
|
||||
quax774 quantize -0.01E-999 1e-1003 -> NaN Invalid_operation
|
||||
quax775 quantize -0.999E-999 1e-1003 -> NaN Invalid_operation
|
||||
quax776 quantize -0.099E-999 1e-1003 -> NaN Invalid_operation
|
||||
quax777 quantize -0.009E-999 1e-1003 -> NaN Invalid_operation
|
||||
quax778 quantize -0.001E-999 1e-1003 -> NaN Invalid_operation
|
||||
quax779 quantize -0.0001E-999 1e-1003 -> NaN Invalid_operation
|
||||
quax780 quantize -0.0001E-999 1e-1004 -> NaN Invalid_operation
|
||||
|
||||
precision: 9
|
||||
maxExponent: 999999999
|
||||
minexponent: -999999999
|
||||
|
||||
-- some extremes derived from Rescale testcases
|
||||
quax801 quantize 0 1e1000000000 -> NaN Invalid_operation
|
||||
quax802 quantize 0 1e-1000000000 -> 0E-1000000000
|
||||
quax803 quantize 0 1e2000000000 -> NaN Invalid_operation
|
||||
quax804 quantize 0 1e-2000000000 -> NaN Invalid_operation
|
||||
quax805 quantize 0 1e3000000000 -> NaN Invalid_operation
|
||||
quax806 quantize 0 1e-3000000000 -> NaN Invalid_operation
|
||||
quax807 quantize 0 1e4000000000 -> NaN Invalid_operation
|
||||
quax808 quantize 0 1e-4000000000 -> NaN Invalid_operation
|
||||
quax809 quantize 0 1e5000000000 -> NaN Invalid_operation
|
||||
quax810 quantize 0 1e-5000000000 -> NaN Invalid_operation
|
||||
quax811 quantize 0 1e6000000000 -> NaN Invalid_operation
|
||||
quax812 quantize 0 1e-6000000000 -> NaN Invalid_operation
|
||||
quax813 quantize 0 1e7000000000 -> NaN Invalid_operation
|
||||
quax814 quantize 0 1e-7000000000 -> NaN Invalid_operation
|
||||
quax815 quantize 0 1e8000000000 -> NaN Invalid_operation
|
||||
quax816 quantize 0 1e-8000000000 -> NaN Invalid_operation
|
||||
quax817 quantize 0 1e9000000000 -> NaN Invalid_operation
|
||||
quax818 quantize 0 1e-9000000000 -> NaN Invalid_operation
|
||||
quax819 quantize 0 1e9999999999 -> NaN Invalid_operation
|
||||
quax820 quantize 0 1e-9999999999 -> NaN Invalid_operation
|
||||
quax821 quantize 0 1e10000000000 -> NaN Invalid_operation
|
||||
quax822 quantize 0 1e-10000000000 -> NaN Invalid_operation
|
||||
|
||||
quax843 quantize 0 1e999999999 -> 0E+999999999
|
||||
quax844 quantize 0 1e1000000000 -> NaN Invalid_operation
|
||||
quax845 quantize 0 1e-999999999 -> 0E-999999999
|
||||
quax846 quantize 0 1e-1000000000 -> 0E-1000000000
|
||||
quax847 quantize 0 1e-1000000001 -> 0E-1000000001
|
||||
quax848 quantize 0 1e-1000000002 -> 0E-1000000002
|
||||
quax849 quantize 0 1e-1000000003 -> 0E-1000000003
|
||||
quax850 quantize 0 1e-1000000004 -> 0E-1000000004
|
||||
quax851 quantize 0 1e-1000000005 -> 0E-1000000005
|
||||
quax852 quantize 0 1e-1000000006 -> 0E-1000000006
|
||||
quax853 quantize 0 1e-1000000007 -> 0E-1000000007
|
||||
quax854 quantize 0 1e-1000000008 -> NaN Invalid_operation
|
||||
|
||||
quax861 quantize 1 1e+2147483649 -> NaN Invalid_operation
|
||||
quax862 quantize 1 1e+2147483648 -> NaN Invalid_operation
|
||||
quax863 quantize 1 1e+2147483647 -> NaN Invalid_operation
|
||||
quax864 quantize 1 1e-2147483647 -> NaN Invalid_operation
|
||||
quax865 quantize 1 1e-2147483648 -> NaN Invalid_operation
|
||||
quax866 quantize 1 1e-2147483649 -> NaN Invalid_operation
|
||||
|
||||
-- Null tests
|
||||
quax900 quantize 10 # -> NaN Invalid_operation
|
||||
quax901 quantize # 1e10 -> NaN Invalid_operation
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,629 @@
|
|||
------------------------------------------------------------------------
|
||||
-- remainder.decTest -- decimal remainder --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
|
||||
-- sanity checks (as base, above)
|
||||
remx001 remainder 1 1 -> 0
|
||||
remx002 remainder 2 1 -> 0
|
||||
remx003 remainder 1 2 -> 1
|
||||
remx004 remainder 2 2 -> 0
|
||||
remx005 remainder 0 1 -> 0
|
||||
remx006 remainder 0 2 -> 0
|
||||
remx007 remainder 1 3 -> 1
|
||||
remx008 remainder 2 3 -> 2
|
||||
remx009 remainder 3 3 -> 0
|
||||
|
||||
remx010 remainder 2.4 1 -> 0.4
|
||||
remx011 remainder 2.4 -1 -> 0.4
|
||||
remx012 remainder -2.4 1 -> -0.4
|
||||
remx013 remainder -2.4 -1 -> -0.4
|
||||
remx014 remainder 2.40 1 -> 0.40
|
||||
remx015 remainder 2.400 1 -> 0.400
|
||||
remx016 remainder 2.4 2 -> 0.4
|
||||
remx017 remainder 2.400 2 -> 0.400
|
||||
remx018 remainder 2. 2 -> 0
|
||||
remx019 remainder 20 20 -> 0
|
||||
|
||||
remx020 remainder 187 187 -> 0
|
||||
remx021 remainder 5 2 -> 1
|
||||
remx022 remainder 5 2.0 -> 1.0
|
||||
remx023 remainder 5 2.000 -> 1.000
|
||||
remx024 remainder 5 0.200 -> 0.000
|
||||
remx025 remainder 5 0.200 -> 0.000
|
||||
|
||||
remx030 remainder 1 2 -> 1
|
||||
remx031 remainder 1 4 -> 1
|
||||
remx032 remainder 1 8 -> 1
|
||||
|
||||
remx033 remainder 1 16 -> 1
|
||||
remx034 remainder 1 32 -> 1
|
||||
remx035 remainder 1 64 -> 1
|
||||
remx040 remainder 1 -2 -> 1
|
||||
remx041 remainder 1 -4 -> 1
|
||||
remx042 remainder 1 -8 -> 1
|
||||
remx043 remainder 1 -16 -> 1
|
||||
remx044 remainder 1 -32 -> 1
|
||||
remx045 remainder 1 -64 -> 1
|
||||
remx050 remainder -1 2 -> -1
|
||||
remx051 remainder -1 4 -> -1
|
||||
remx052 remainder -1 8 -> -1
|
||||
remx053 remainder -1 16 -> -1
|
||||
remx054 remainder -1 32 -> -1
|
||||
remx055 remainder -1 64 -> -1
|
||||
remx060 remainder -1 -2 -> -1
|
||||
remx061 remainder -1 -4 -> -1
|
||||
remx062 remainder -1 -8 -> -1
|
||||
remx063 remainder -1 -16 -> -1
|
||||
remx064 remainder -1 -32 -> -1
|
||||
remx065 remainder -1 -64 -> -1
|
||||
|
||||
remx066 remainder 999999999 1 -> 0
|
||||
remx067 remainder 999999999.4 1 -> 0.4
|
||||
remx068 remainder 999999999.5 1 -> 0.5
|
||||
remx069 remainder 999999999.9 1 -> 0.9
|
||||
remx070 remainder 999999999.999 1 -> 0.999
|
||||
precision: 6
|
||||
remx071 remainder 999999999 1 -> NaN Division_impossible
|
||||
remx072 remainder 99999999 1 -> NaN Division_impossible
|
||||
remx073 remainder 9999999 1 -> NaN Division_impossible
|
||||
remx074 remainder 999999 1 -> 0
|
||||
remx075 remainder 99999 1 -> 0
|
||||
remx076 remainder 9999 1 -> 0
|
||||
remx077 remainder 999 1 -> 0
|
||||
remx078 remainder 99 1 -> 0
|
||||
remx079 remainder 9 1 -> 0
|
||||
|
||||
precision: 9
|
||||
remx080 remainder 0. 1 -> 0
|
||||
remx081 remainder .0 1 -> 0.0
|
||||
remx082 remainder 0.00 1 -> 0.00
|
||||
remx083 remainder 0.00E+9 1 -> 0
|
||||
remx084 remainder 0.00E+3 1 -> 0
|
||||
remx085 remainder 0.00E+2 1 -> 0
|
||||
remx086 remainder 0.00E+1 1 -> 0.0
|
||||
remx087 remainder 0.00E+0 1 -> 0.00
|
||||
remx088 remainder 0.00E-0 1 -> 0.00
|
||||
remx089 remainder 0.00E-1 1 -> 0.000
|
||||
remx090 remainder 0.00E-2 1 -> 0.0000
|
||||
remx091 remainder 0.00E-3 1 -> 0.00000
|
||||
remx092 remainder 0.00E-4 1 -> 0.000000
|
||||
remx093 remainder 0.00E-5 1 -> 0E-7
|
||||
remx094 remainder 0.00E-6 1 -> 0E-8
|
||||
remx095 remainder 0.0000E-50 1 -> 0E-54
|
||||
|
||||
-- Various flavours of remainder by 0
|
||||
precision: 9
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
remx101 remainder 0 0 -> NaN Division_undefined
|
||||
remx102 remainder 0 -0 -> NaN Division_undefined
|
||||
remx103 remainder -0 0 -> NaN Division_undefined
|
||||
remx104 remainder -0 -0 -> NaN Division_undefined
|
||||
remx105 remainder 0.0E5 0 -> NaN Division_undefined
|
||||
remx106 remainder 0.000 0 -> NaN Division_undefined
|
||||
-- [Some think this next group should be Division_by_zero exception, but
|
||||
-- IEEE 854 is explicit that it is Invalid operation .. for
|
||||
-- remainder-near, anyway]
|
||||
remx107 remainder 0.0001 0 -> NaN Invalid_operation
|
||||
remx108 remainder 0.01 0 -> NaN Invalid_operation
|
||||
remx109 remainder 0.1 0 -> NaN Invalid_operation
|
||||
remx110 remainder 1 0 -> NaN Invalid_operation
|
||||
remx111 remainder 1 0.0 -> NaN Invalid_operation
|
||||
remx112 remainder 10 0.0 -> NaN Invalid_operation
|
||||
remx113 remainder 1E+100 0.0 -> NaN Invalid_operation
|
||||
remx114 remainder 1E+1000 0 -> NaN Invalid_operation
|
||||
remx115 remainder 0.0001 -0 -> NaN Invalid_operation
|
||||
remx116 remainder 0.01 -0 -> NaN Invalid_operation
|
||||
remx119 remainder 0.1 -0 -> NaN Invalid_operation
|
||||
remx120 remainder 1 -0 -> NaN Invalid_operation
|
||||
remx121 remainder 1 -0.0 -> NaN Invalid_operation
|
||||
remx122 remainder 10 -0.0 -> NaN Invalid_operation
|
||||
remx123 remainder 1E+100 -0.0 -> NaN Invalid_operation
|
||||
remx124 remainder 1E+1000 -0 -> NaN Invalid_operation
|
||||
-- and zeros on left
|
||||
remx130 remainder 0 1 -> 0
|
||||
remx131 remainder 0 -1 -> 0
|
||||
remx132 remainder 0.0 1 -> 0.0
|
||||
remx133 remainder 0.0 -1 -> 0.0
|
||||
remx134 remainder -0 1 -> -0
|
||||
remx135 remainder -0 -1 -> -0
|
||||
remx136 remainder -0.0 1 -> -0.0
|
||||
remx137 remainder -0.0 -1 -> -0.0
|
||||
|
||||
-- 0.5ers
|
||||
remx143 remainder 0.5 2 -> 0.5
|
||||
remx144 remainder 0.5 2.1 -> 0.5
|
||||
remx145 remainder 0.5 2.01 -> 0.50
|
||||
remx146 remainder 0.5 2.001 -> 0.500
|
||||
remx147 remainder 0.50 2 -> 0.50
|
||||
remx148 remainder 0.50 2.01 -> 0.50
|
||||
remx149 remainder 0.50 2.001 -> 0.500
|
||||
|
||||
-- steadies
|
||||
remx150 remainder 1 1 -> 0
|
||||
remx151 remainder 1 2 -> 1
|
||||
remx152 remainder 1 3 -> 1
|
||||
remx153 remainder 1 4 -> 1
|
||||
remx154 remainder 1 5 -> 1
|
||||
remx155 remainder 1 6 -> 1
|
||||
remx156 remainder 1 7 -> 1
|
||||
remx157 remainder 1 8 -> 1
|
||||
remx158 remainder 1 9 -> 1
|
||||
remx159 remainder 1 10 -> 1
|
||||
remx160 remainder 1 1 -> 0
|
||||
remx161 remainder 2 1 -> 0
|
||||
remx162 remainder 3 1 -> 0
|
||||
remx163 remainder 4 1 -> 0
|
||||
remx164 remainder 5 1 -> 0
|
||||
remx165 remainder 6 1 -> 0
|
||||
remx166 remainder 7 1 -> 0
|
||||
remx167 remainder 8 1 -> 0
|
||||
remx168 remainder 9 1 -> 0
|
||||
remx169 remainder 10 1 -> 0
|
||||
|
||||
-- some differences from remainderNear
|
||||
remx171 remainder 0.4 1.020 -> 0.400
|
||||
remx172 remainder 0.50 1.020 -> 0.500
|
||||
remx173 remainder 0.51 1.020 -> 0.510
|
||||
remx174 remainder 0.52 1.020 -> 0.520
|
||||
remx175 remainder 0.6 1.020 -> 0.600
|
||||
|
||||
|
||||
-- More flavours of remainder by 0
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
remx201 remainder 0 0 -> NaN Division_undefined
|
||||
remx202 remainder 0.0E5 0 -> NaN Division_undefined
|
||||
remx203 remainder 0.000 0 -> NaN Division_undefined
|
||||
remx204 remainder 0.0001 0 -> NaN Invalid_operation
|
||||
remx205 remainder 0.01 0 -> NaN Invalid_operation
|
||||
remx206 remainder 0.1 0 -> NaN Invalid_operation
|
||||
remx207 remainder 1 0 -> NaN Invalid_operation
|
||||
remx208 remainder 1 0.0 -> NaN Invalid_operation
|
||||
remx209 remainder 10 0.0 -> NaN Invalid_operation
|
||||
remx210 remainder 1E+100 0.0 -> NaN Invalid_operation
|
||||
remx211 remainder 1E+1000 0 -> NaN Invalid_operation
|
||||
|
||||
-- some differences from remainderNear
|
||||
remx231 remainder -0.4 1.020 -> -0.400
|
||||
remx232 remainder -0.50 1.020 -> -0.500
|
||||
remx233 remainder -0.51 1.020 -> -0.510
|
||||
remx234 remainder -0.52 1.020 -> -0.520
|
||||
remx235 remainder -0.6 1.020 -> -0.600
|
||||
|
||||
-- high Xs
|
||||
remx240 remainder 1E+2 1.00 -> 0.00
|
||||
|
||||
|
||||
-- test some cases that are close to exponent overflow
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
remx270 remainder 1 1e999999999 -> 1
|
||||
remx271 remainder 1 0.9e999999999 -> 1
|
||||
remx272 remainder 1 0.99e999999999 -> 1
|
||||
remx273 remainder 1 0.999999999e999999999 -> 1
|
||||
remx274 remainder 9e999999999 1 -> NaN Division_impossible
|
||||
remx275 remainder 9.9e999999999 1 -> NaN Division_impossible
|
||||
remx276 remainder 9.99e999999999 1 -> NaN Division_impossible
|
||||
remx277 remainder 9.99999999e999999999 1 -> NaN Division_impossible
|
||||
|
||||
remx280 remainder 0.1 9e-999999999 -> NaN Division_impossible
|
||||
remx281 remainder 0.1 99e-999999999 -> NaN Division_impossible
|
||||
remx282 remainder 0.1 999e-999999999 -> NaN Division_impossible
|
||||
|
||||
remx283 remainder 0.1 9e-999999998 -> NaN Division_impossible
|
||||
remx284 remainder 0.1 99e-999999998 -> NaN Division_impossible
|
||||
remx285 remainder 0.1 999e-999999998 -> NaN Division_impossible
|
||||
remx286 remainder 0.1 999e-999999997 -> NaN Division_impossible
|
||||
remx287 remainder 0.1 9999e-999999997 -> NaN Division_impossible
|
||||
remx288 remainder 0.1 99999e-999999997 -> NaN Division_impossible
|
||||
|
||||
-- remx3xx are from DiagBigDecimal
|
||||
remx301 remainder 1 3 -> 1
|
||||
remx302 remainder 5 5 -> 0
|
||||
remx303 remainder 13 10 -> 3
|
||||
remx304 remainder 13 50 -> 13
|
||||
remx305 remainder 13 100 -> 13
|
||||
remx306 remainder 13 1000 -> 13
|
||||
remx307 remainder .13 1 -> 0.13
|
||||
remx308 remainder 0.133 1 -> 0.133
|
||||
remx309 remainder 0.1033 1 -> 0.1033
|
||||
remx310 remainder 1.033 1 -> 0.033
|
||||
remx311 remainder 10.33 1 -> 0.33
|
||||
remx312 remainder 10.33 10 -> 0.33
|
||||
remx313 remainder 103.3 1 -> 0.3
|
||||
remx314 remainder 133 10 -> 3
|
||||
remx315 remainder 1033 10 -> 3
|
||||
remx316 remainder 1033 50 -> 33
|
||||
remx317 remainder 101.0 3 -> 2.0
|
||||
remx318 remainder 102.0 3 -> 0.0
|
||||
remx319 remainder 103.0 3 -> 1.0
|
||||
remx320 remainder 2.40 1 -> 0.40
|
||||
remx321 remainder 2.400 1 -> 0.400
|
||||
remx322 remainder 2.4 1 -> 0.4
|
||||
remx323 remainder 2.4 2 -> 0.4
|
||||
remx324 remainder 2.400 2 -> 0.400
|
||||
remx325 remainder 1 0.3 -> 0.1
|
||||
remx326 remainder 1 0.30 -> 0.10
|
||||
remx327 remainder 1 0.300 -> 0.100
|
||||
remx328 remainder 1 0.3000 -> 0.1000
|
||||
remx329 remainder 1.0 0.3 -> 0.1
|
||||
remx330 remainder 1.00 0.3 -> 0.10
|
||||
remx331 remainder 1.000 0.3 -> 0.100
|
||||
remx332 remainder 1.0000 0.3 -> 0.1000
|
||||
remx333 remainder 0.5 2 -> 0.5
|
||||
remx334 remainder 0.5 2.1 -> 0.5
|
||||
remx335 remainder 0.5 2.01 -> 0.50
|
||||
remx336 remainder 0.5 2.001 -> 0.500
|
||||
remx337 remainder 0.50 2 -> 0.50
|
||||
remx338 remainder 0.50 2.01 -> 0.50
|
||||
remx339 remainder 0.50 2.001 -> 0.500
|
||||
|
||||
remx340 remainder 0.5 0.5000001 -> 0.5000000
|
||||
remx341 remainder 0.5 0.50000001 -> 0.50000000
|
||||
remx342 remainder 0.5 0.500000001 -> 0.500000000
|
||||
remx343 remainder 0.5 0.5000000001 -> 0.500000000 Rounded
|
||||
remx344 remainder 0.5 0.50000000001 -> 0.500000000 Rounded
|
||||
remx345 remainder 0.5 0.4999999 -> 1E-7
|
||||
remx346 remainder 0.5 0.49999999 -> 1E-8
|
||||
remx347 remainder 0.5 0.499999999 -> 1E-9
|
||||
remx348 remainder 0.5 0.4999999999 -> 1E-10
|
||||
remx349 remainder 0.5 0.49999999999 -> 1E-11
|
||||
remx350 remainder 0.5 0.499999999999 -> 1E-12
|
||||
|
||||
remx351 remainder 0.03 7 -> 0.03
|
||||
remx352 remainder 5 2 -> 1
|
||||
remx353 remainder 4.1 2 -> 0.1
|
||||
remx354 remainder 4.01 2 -> 0.01
|
||||
remx355 remainder 4.001 2 -> 0.001
|
||||
remx356 remainder 4.0001 2 -> 0.0001
|
||||
remx357 remainder 4.00001 2 -> 0.00001
|
||||
remx358 remainder 4.000001 2 -> 0.000001
|
||||
remx359 remainder 4.0000001 2 -> 1E-7
|
||||
|
||||
remx360 remainder 1.2 0.7345 -> 0.4655
|
||||
remx361 remainder 0.8 12 -> 0.8
|
||||
remx362 remainder 0.8 0.2 -> 0.0
|
||||
remx363 remainder 0.8 0.3 -> 0.2
|
||||
remx364 remainder 0.800 12 -> 0.800
|
||||
remx365 remainder 0.800 1.7 -> 0.800
|
||||
remx366 remainder 2.400 2 -> 0.400
|
||||
|
||||
precision: 6
|
||||
remx371 remainder 2.400 2 -> 0.400
|
||||
precision: 3
|
||||
-- long operand, rounded, case
|
||||
remx372 remainder 12345678900000 12e+12 -> 3.46E+11 Inexact Rounded
|
||||
-- 12000000000000
|
||||
|
||||
precision: 5
|
||||
remx381 remainder 12345 1 -> 0
|
||||
remx382 remainder 12345 1.0001 -> 0.7657
|
||||
remx383 remainder 12345 1.001 -> 0.668
|
||||
remx384 remainder 12345 1.01 -> 0.78
|
||||
remx385 remainder 12345 1.1 -> 0.8
|
||||
remx386 remainder 12355 4 -> 3
|
||||
remx387 remainder 12345 4 -> 1
|
||||
remx388 remainder 12355 4.0001 -> 2.6912
|
||||
remx389 remainder 12345 4.0001 -> 0.6914
|
||||
remx390 remainder 12345 4.9 -> 1.9
|
||||
remx391 remainder 12345 4.99 -> 4.73
|
||||
remx392 remainder 12345 4.999 -> 2.469
|
||||
remx393 remainder 12345 4.9999 -> 0.2469
|
||||
remx394 remainder 12345 5 -> 0
|
||||
remx395 remainder 12345 5.0001 -> 4.7532
|
||||
remx396 remainder 12345 5.001 -> 2.532
|
||||
remx397 remainder 12345 5.01 -> 0.36
|
||||
remx398 remainder 12345 5.1 -> 3.0
|
||||
|
||||
precision: 9
|
||||
-- the nasty division-by-1 cases
|
||||
remx401 remainder 0.5 1 -> 0.5
|
||||
remx402 remainder 0.55 1 -> 0.55
|
||||
remx403 remainder 0.555 1 -> 0.555
|
||||
remx404 remainder 0.5555 1 -> 0.5555
|
||||
remx405 remainder 0.55555 1 -> 0.55555
|
||||
remx406 remainder 0.555555 1 -> 0.555555
|
||||
remx407 remainder 0.5555555 1 -> 0.5555555
|
||||
remx408 remainder 0.55555555 1 -> 0.55555555
|
||||
remx409 remainder 0.555555555 1 -> 0.555555555
|
||||
|
||||
|
||||
-- Specials
|
||||
remx680 remainder Inf -Inf -> NaN Invalid_operation
|
||||
remx681 remainder Inf -1000 -> NaN Invalid_operation
|
||||
remx682 remainder Inf -1 -> NaN Invalid_operation
|
||||
remx683 remainder Inf 0 -> NaN Invalid_operation
|
||||
remx684 remainder Inf -0 -> NaN Invalid_operation
|
||||
remx685 remainder Inf 1 -> NaN Invalid_operation
|
||||
remx686 remainder Inf 1000 -> NaN Invalid_operation
|
||||
remx687 remainder Inf Inf -> NaN Invalid_operation
|
||||
remx688 remainder -1000 Inf -> -1000
|
||||
remx689 remainder -Inf Inf -> NaN Invalid_operation
|
||||
remx691 remainder -1 Inf -> -1
|
||||
remx692 remainder 0 Inf -> 0
|
||||
remx693 remainder -0 Inf -> -0
|
||||
remx694 remainder 1 Inf -> 1
|
||||
remx695 remainder 1000 Inf -> 1000
|
||||
remx696 remainder Inf Inf -> NaN Invalid_operation
|
||||
|
||||
remx700 remainder -Inf -Inf -> NaN Invalid_operation
|
||||
remx701 remainder -Inf -1000 -> NaN Invalid_operation
|
||||
remx702 remainder -Inf -1 -> NaN Invalid_operation
|
||||
remx703 remainder -Inf -0 -> NaN Invalid_operation
|
||||
remx704 remainder -Inf 0 -> NaN Invalid_operation
|
||||
remx705 remainder -Inf 1 -> NaN Invalid_operation
|
||||
remx706 remainder -Inf 1000 -> NaN Invalid_operation
|
||||
remx707 remainder -Inf Inf -> NaN Invalid_operation
|
||||
remx708 remainder -Inf -Inf -> NaN Invalid_operation
|
||||
remx709 remainder -1000 Inf -> -1000
|
||||
remx710 remainder -1 -Inf -> -1
|
||||
remx711 remainder -0 -Inf -> -0
|
||||
remx712 remainder 0 -Inf -> 0
|
||||
remx713 remainder 1 -Inf -> 1
|
||||
remx714 remainder 1000 -Inf -> 1000
|
||||
remx715 remainder Inf -Inf -> NaN Invalid_operation
|
||||
|
||||
remx721 remainder NaN -Inf -> NaN
|
||||
remx722 remainder NaN -1000 -> NaN
|
||||
remx723 remainder NaN -1 -> NaN
|
||||
remx724 remainder NaN -0 -> NaN
|
||||
remx725 remainder -NaN 0 -> -NaN
|
||||
remx726 remainder NaN 1 -> NaN
|
||||
remx727 remainder NaN 1000 -> NaN
|
||||
remx728 remainder NaN Inf -> NaN
|
||||
remx729 remainder NaN -NaN -> NaN
|
||||
remx730 remainder -Inf NaN -> NaN
|
||||
remx731 remainder -1000 NaN -> NaN
|
||||
remx732 remainder -1 NaN -> NaN
|
||||
remx733 remainder -0 -NaN -> -NaN
|
||||
remx734 remainder 0 NaN -> NaN
|
||||
remx735 remainder 1 -NaN -> -NaN
|
||||
remx736 remainder 1000 NaN -> NaN
|
||||
remx737 remainder Inf NaN -> NaN
|
||||
|
||||
remx741 remainder sNaN -Inf -> NaN Invalid_operation
|
||||
remx742 remainder sNaN -1000 -> NaN Invalid_operation
|
||||
remx743 remainder -sNaN -1 -> -NaN Invalid_operation
|
||||
remx744 remainder sNaN -0 -> NaN Invalid_operation
|
||||
remx745 remainder sNaN 0 -> NaN Invalid_operation
|
||||
remx746 remainder sNaN 1 -> NaN Invalid_operation
|
||||
remx747 remainder sNaN 1000 -> NaN Invalid_operation
|
||||
remx749 remainder sNaN NaN -> NaN Invalid_operation
|
||||
remx750 remainder sNaN sNaN -> NaN Invalid_operation
|
||||
remx751 remainder NaN sNaN -> NaN Invalid_operation
|
||||
remx752 remainder -Inf sNaN -> NaN Invalid_operation
|
||||
remx753 remainder -1000 sNaN -> NaN Invalid_operation
|
||||
remx754 remainder -1 sNaN -> NaN Invalid_operation
|
||||
remx755 remainder -0 sNaN -> NaN Invalid_operation
|
||||
remx756 remainder 0 sNaN -> NaN Invalid_operation
|
||||
remx757 remainder 1 sNaN -> NaN Invalid_operation
|
||||
remx758 remainder 1000 sNaN -> NaN Invalid_operation
|
||||
remx759 remainder Inf -sNaN -> -NaN Invalid_operation
|
||||
|
||||
-- propaging NaNs
|
||||
remx760 remainder NaN1 NaN7 -> NaN1
|
||||
remx761 remainder sNaN2 NaN8 -> NaN2 Invalid_operation
|
||||
remx762 remainder NaN3 sNaN9 -> NaN9 Invalid_operation
|
||||
remx763 remainder sNaN4 sNaN10 -> NaN4 Invalid_operation
|
||||
remx764 remainder 15 NaN11 -> NaN11
|
||||
remx765 remainder NaN6 NaN12 -> NaN6
|
||||
remx766 remainder Inf NaN13 -> NaN13
|
||||
remx767 remainder NaN14 -Inf -> NaN14
|
||||
remx768 remainder 0 NaN15 -> NaN15
|
||||
remx769 remainder NaN16 -0 -> NaN16
|
||||
|
||||
-- test some cases that are close to exponent overflow
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
remx770 remainder 1 1e999999999 -> 1
|
||||
remx771 remainder 1 0.9e999999999 -> 1
|
||||
remx772 remainder 1 0.99e999999999 -> 1
|
||||
remx773 remainder 1 0.999999999e999999999 -> 1
|
||||
remx774 remainder 9e999999999 1 -> NaN Division_impossible
|
||||
remx775 remainder 9.9e999999999 1 -> NaN Division_impossible
|
||||
remx776 remainder 9.99e999999999 1 -> NaN Division_impossible
|
||||
remx777 remainder 9.99999999e999999999 1 -> NaN Division_impossible
|
||||
|
||||
-- long operand checks
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
remx801 remainder 12345678000 100 -> 0
|
||||
remx802 remainder 1 12345678000 -> 1
|
||||
remx803 remainder 1234567800 10 -> 0
|
||||
remx804 remainder 1 1234567800 -> 1
|
||||
remx805 remainder 1234567890 10 -> 0
|
||||
remx806 remainder 1 1234567890 -> 1
|
||||
remx807 remainder 1234567891 10 -> 1
|
||||
remx808 remainder 1 1234567891 -> 1
|
||||
remx809 remainder 12345678901 100 -> 1
|
||||
remx810 remainder 1 12345678901 -> 1
|
||||
remx811 remainder 1234567896 10 -> 6
|
||||
remx812 remainder 1 1234567896 -> 1
|
||||
|
||||
precision: 15
|
||||
remx821 remainder 12345678000 100 -> 0
|
||||
remx822 remainder 1 12345678000 -> 1
|
||||
remx823 remainder 1234567800 10 -> 0
|
||||
remx824 remainder 1 1234567800 -> 1
|
||||
remx825 remainder 1234567890 10 -> 0
|
||||
remx826 remainder 1 1234567890 -> 1
|
||||
remx827 remainder 1234567891 10 -> 1
|
||||
remx828 remainder 1 1234567891 -> 1
|
||||
remx829 remainder 12345678901 100 -> 1
|
||||
remx830 remainder 1 12345678901 -> 1
|
||||
remx831 remainder 1234567896 10 -> 6
|
||||
remx832 remainder 1 1234567896 -> 1
|
||||
|
||||
-- worries from divideint
|
||||
precision: 8
|
||||
remx840 remainder 100000000.0 1 -> NaN Division_impossible
|
||||
remx841 remainder 100000000.4 1 -> NaN Division_impossible
|
||||
remx842 remainder 100000000.5 1 -> NaN Division_impossible
|
||||
remx843 remainder 100000000.9 1 -> NaN Division_impossible
|
||||
remx844 remainder 100000000.999 1 -> NaN Division_impossible
|
||||
precision: 6
|
||||
remx850 remainder 100000003 5 -> NaN Division_impossible
|
||||
remx851 remainder 10000003 5 -> NaN Division_impossible
|
||||
remx852 remainder 1000003 5 -> 3
|
||||
remx853 remainder 100003 5 -> 3
|
||||
remx854 remainder 10003 5 -> 3
|
||||
remx855 remainder 1003 5 -> 3
|
||||
remx856 remainder 103 5 -> 3
|
||||
remx857 remainder 13 5 -> 3
|
||||
remx858 remainder 1 5 -> 1
|
||||
|
||||
-- Vladimir's cases
|
||||
remx860 remainder 123.0e1 10000000000000000 -> 1230
|
||||
remx861 remainder 1230 10000000000000000 -> 1230
|
||||
remx862 remainder 12.3e2 10000000000000000 -> 1230
|
||||
remx863 remainder 1.23e3 10000000000000000 -> 1230
|
||||
remx864 remainder 123e1 10000000000000000 -> 1230
|
||||
remx870 remainder 123e1 1000000000000000 -> 1230
|
||||
remx871 remainder 123e1 100000000000000 -> 1230
|
||||
remx872 remainder 123e1 10000000000000 -> 1230
|
||||
remx873 remainder 123e1 1000000000000 -> 1230
|
||||
remx874 remainder 123e1 100000000000 -> 1230
|
||||
remx875 remainder 123e1 10000000000 -> 1230
|
||||
remx876 remainder 123e1 1000000000 -> 1230
|
||||
remx877 remainder 123e1 100000000 -> 1230
|
||||
remx878 remainder 1230 100000000 -> 1230
|
||||
remx879 remainder 123e1 10000000 -> 1230
|
||||
remx880 remainder 123e1 1000000 -> 1230
|
||||
remx881 remainder 123e1 100000 -> 1230
|
||||
remx882 remainder 123e1 10000 -> 1230
|
||||
remx883 remainder 123e1 1000 -> 230
|
||||
remx884 remainder 123e1 100 -> 30
|
||||
remx885 remainder 123e1 10 -> 0
|
||||
remx886 remainder 123e1 1 -> 0
|
||||
|
||||
remx889 remainder 123e1 20000000000000000 -> 1230
|
||||
remx890 remainder 123e1 2000000000000000 -> 1230
|
||||
remx891 remainder 123e1 200000000000000 -> 1230
|
||||
remx892 remainder 123e1 20000000000000 -> 1230
|
||||
remx893 remainder 123e1 2000000000000 -> 1230
|
||||
remx894 remainder 123e1 200000000000 -> 1230
|
||||
remx895 remainder 123e1 20000000000 -> 1230
|
||||
remx896 remainder 123e1 2000000000 -> 1230
|
||||
remx897 remainder 123e1 200000000 -> 1230
|
||||
remx899 remainder 123e1 20000000 -> 1230
|
||||
remx900 remainder 123e1 2000000 -> 1230
|
||||
remx901 remainder 123e1 200000 -> 1230
|
||||
remx902 remainder 123e1 20000 -> 1230
|
||||
remx903 remainder 123e1 2000 -> 1230
|
||||
remx904 remainder 123e1 200 -> 30
|
||||
remx905 remainder 123e1 20 -> 10
|
||||
remx906 remainder 123e1 2 -> 0
|
||||
|
||||
remx909 remainder 123e1 50000000000000000 -> 1230
|
||||
remx910 remainder 123e1 5000000000000000 -> 1230
|
||||
remx911 remainder 123e1 500000000000000 -> 1230
|
||||
remx912 remainder 123e1 50000000000000 -> 1230
|
||||
remx913 remainder 123e1 5000000000000 -> 1230
|
||||
remx914 remainder 123e1 500000000000 -> 1230
|
||||
remx915 remainder 123e1 50000000000 -> 1230
|
||||
remx916 remainder 123e1 5000000000 -> 1230
|
||||
remx917 remainder 123e1 500000000 -> 1230
|
||||
remx919 remainder 123e1 50000000 -> 1230
|
||||
remx920 remainder 123e1 5000000 -> 1230
|
||||
remx921 remainder 123e1 500000 -> 1230
|
||||
remx922 remainder 123e1 50000 -> 1230
|
||||
remx923 remainder 123e1 5000 -> 1230
|
||||
remx924 remainder 123e1 500 -> 230
|
||||
remx925 remainder 123e1 50 -> 30
|
||||
remx926 remainder 123e1 5 -> 0
|
||||
|
||||
remx929 remainder 123e1 90000000000000000 -> 1230
|
||||
remx930 remainder 123e1 9000000000000000 -> 1230
|
||||
remx931 remainder 123e1 900000000000000 -> 1230
|
||||
remx932 remainder 123e1 90000000000000 -> 1230
|
||||
remx933 remainder 123e1 9000000000000 -> 1230
|
||||
remx934 remainder 123e1 900000000000 -> 1230
|
||||
remx935 remainder 123e1 90000000000 -> 1230
|
||||
remx936 remainder 123e1 9000000000 -> 1230
|
||||
remx937 remainder 123e1 900000000 -> 1230
|
||||
remx939 remainder 123e1 90000000 -> 1230
|
||||
remx940 remainder 123e1 9000000 -> 1230
|
||||
remx941 remainder 123e1 900000 -> 1230
|
||||
remx942 remainder 123e1 90000 -> 1230
|
||||
remx943 remainder 123e1 9000 -> 1230
|
||||
remx944 remainder 123e1 900 -> 330
|
||||
remx945 remainder 123e1 90 -> 60
|
||||
remx946 remainder 123e1 9 -> 6
|
||||
|
||||
remx950 remainder 123e1 10000000000000000 -> 1230
|
||||
remx951 remainder 123e1 100000000000000000 -> 1230
|
||||
remx952 remainder 123e1 1000000000000000000 -> 1230
|
||||
remx953 remainder 123e1 10000000000000000000 -> 1230
|
||||
remx954 remainder 123e1 100000000000000000000 -> 1230
|
||||
remx955 remainder 123e1 1000000000000000000000 -> 1230
|
||||
remx956 remainder 123e1 10000000000000000000000 -> 1230
|
||||
remx957 remainder 123e1 100000000000000000000000 -> 1230
|
||||
remx958 remainder 123e1 1000000000000000000000000 -> 1230
|
||||
remx959 remainder 123e1 10000000000000000000000000 -> 1230
|
||||
|
||||
remx960 remainder 123e1 19999999999999999 -> 1230
|
||||
remx961 remainder 123e1 199999999999999990 -> 1230
|
||||
remx962 remainder 123e1 1999999999999999999 -> 1230
|
||||
remx963 remainder 123e1 19999999999999999990 -> 1230
|
||||
remx964 remainder 123e1 199999999999999999999 -> 1230
|
||||
remx965 remainder 123e1 1999999999999999999990 -> 1230
|
||||
remx966 remainder 123e1 19999999999999999999999 -> 1230
|
||||
remx967 remainder 123e1 199999999999999999999990 -> 1230
|
||||
remx968 remainder 123e1 1999999999999999999999999 -> 1230
|
||||
remx969 remainder 123e1 19999999999999999999999990 -> 1230
|
||||
|
||||
remx970 remainder 1e1 10000000000000000 -> 10
|
||||
remx971 remainder 1e1 100000000000000000 -> 10
|
||||
remx972 remainder 1e1 1000000000000000000 -> 10
|
||||
remx973 remainder 1e1 10000000000000000000 -> 10
|
||||
remx974 remainder 1e1 100000000000000000000 -> 10
|
||||
remx975 remainder 1e1 1000000000000000000000 -> 10
|
||||
remx976 remainder 1e1 10000000000000000000000 -> 10
|
||||
remx977 remainder 1e1 100000000000000000000000 -> 10
|
||||
remx978 remainder 1e1 1000000000000000000000000 -> 10
|
||||
remx979 remainder 1e1 10000000000000000000000000 -> 10
|
||||
|
||||
remx980 remainder 123e1 1000E999999 -> 1.23E+3 -- 123E+1 internally
|
||||
|
||||
-- overflow and underflow tests [from divide]
|
||||
precision: 9
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
remx990 remainder +1.23456789012345E-0 9E+999999999 -> 1.23456789 Inexact Rounded
|
||||
remx991 remainder 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
|
||||
remx992 remainder +0.100 9E+999999999 -> 0.100
|
||||
remx993 remainder 9E-999999999 +9.100 -> 9E-999999999
|
||||
remx995 remainder -1.23456789012345E-0 9E+999999999 -> -1.23456789 Inexact Rounded
|
||||
remx996 remainder 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
|
||||
remx997 remainder -0.100 9E+999999999 -> -0.100
|
||||
remx998 remainder 9E-999999999 -9.100 -> 9E-999999999
|
||||
|
||||
-- Null tests
|
||||
remx1000 remainder 10 # -> NaN Invalid_operation
|
||||
remx1001 remainder # 10 -> NaN Invalid_operation
|
||||
|
|
@ -0,0 +1,560 @@
|
|||
------------------------------------------------------------------------
|
||||
-- remainderNear.decTest -- decimal remainder-near (IEEE remainder) --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
|
||||
rmnx001 remaindernear 1 1 -> 0
|
||||
rmnx002 remaindernear 2 1 -> 0
|
||||
rmnx003 remaindernear 1 2 -> 1
|
||||
rmnx004 remaindernear 2 2 -> 0
|
||||
rmnx005 remaindernear 0 1 -> 0
|
||||
rmnx006 remaindernear 0 2 -> 0
|
||||
rmnx007 remaindernear 1 3 -> 1
|
||||
rmnx008 remaindernear 2 3 -> -1
|
||||
rmnx009 remaindernear 3 3 -> 0
|
||||
|
||||
rmnx010 remaindernear 2.4 1 -> 0.4
|
||||
rmnx011 remaindernear 2.4 -1 -> 0.4
|
||||
rmnx012 remaindernear -2.4 1 -> -0.4
|
||||
rmnx013 remaindernear -2.4 -1 -> -0.4
|
||||
rmnx014 remaindernear 2.40 1 -> 0.40
|
||||
rmnx015 remaindernear 2.400 1 -> 0.400
|
||||
rmnx016 remaindernear 2.4 2 -> 0.4
|
||||
rmnx017 remaindernear 2.400 2 -> 0.400
|
||||
rmnx018 remaindernear 2. 2 -> 0
|
||||
rmnx019 remaindernear 20 20 -> 0
|
||||
|
||||
rmnx020 remaindernear 187 187 -> 0
|
||||
rmnx021 remaindernear 5 2 -> 1
|
||||
rmnx022 remaindernear 5 2.0 -> 1.0
|
||||
rmnx023 remaindernear 5 2.000 -> 1.000
|
||||
rmnx024 remaindernear 5 0.200 -> 0.000
|
||||
rmnx025 remaindernear 5 0.200 -> 0.000
|
||||
|
||||
rmnx030 remaindernear 1 2 -> 1
|
||||
rmnx031 remaindernear 1 4 -> 1
|
||||
rmnx032 remaindernear 1 8 -> 1
|
||||
rmnx033 remaindernear 1 16 -> 1
|
||||
rmnx034 remaindernear 1 32 -> 1
|
||||
rmnx035 remaindernear 1 64 -> 1
|
||||
rmnx040 remaindernear 1 -2 -> 1
|
||||
rmnx041 remaindernear 1 -4 -> 1
|
||||
rmnx042 remaindernear 1 -8 -> 1
|
||||
rmnx043 remaindernear 1 -16 -> 1
|
||||
rmnx044 remaindernear 1 -32 -> 1
|
||||
rmnx045 remaindernear 1 -64 -> 1
|
||||
rmnx050 remaindernear -1 2 -> -1
|
||||
rmnx051 remaindernear -1 4 -> -1
|
||||
rmnx052 remaindernear -1 8 -> -1
|
||||
rmnx053 remaindernear -1 16 -> -1
|
||||
rmnx054 remaindernear -1 32 -> -1
|
||||
rmnx055 remaindernear -1 64 -> -1
|
||||
rmnx060 remaindernear -1 -2 -> -1
|
||||
rmnx061 remaindernear -1 -4 -> -1
|
||||
rmnx062 remaindernear -1 -8 -> -1
|
||||
rmnx063 remaindernear -1 -16 -> -1
|
||||
rmnx064 remaindernear -1 -32 -> -1
|
||||
rmnx065 remaindernear -1 -64 -> -1
|
||||
|
||||
rmnx066 remaindernear 999999997 1 -> 0
|
||||
rmnx067 remaindernear 999999997.4 1 -> 0.4
|
||||
rmnx068 remaindernear 999999997.5 1 -> -0.5
|
||||
rmnx069 remaindernear 999999997.9 1 -> -0.1
|
||||
rmnx070 remaindernear 999999997.999 1 -> -0.001
|
||||
|
||||
rmnx071 remaindernear 999999998 1 -> 0
|
||||
rmnx072 remaindernear 999999998.4 1 -> 0.4
|
||||
rmnx073 remaindernear 999999998.5 1 -> 0.5
|
||||
rmnx074 remaindernear 999999998.9 1 -> -0.1
|
||||
rmnx075 remaindernear 999999998.999 1 -> -0.001
|
||||
|
||||
rmnx076 remaindernear 999999999 1 -> 0
|
||||
rmnx077 remaindernear 999999999.4 1 -> 0.4
|
||||
rmnx078 remaindernear 999999999.5 1 -> NaN Division_impossible
|
||||
rmnx079 remaindernear 999999999.9 1 -> NaN Division_impossible
|
||||
rmnx080 remaindernear 999999999.999 1 -> NaN Division_impossible
|
||||
|
||||
precision: 6
|
||||
rmnx081 remaindernear 999999999 1 -> NaN Division_impossible
|
||||
rmnx082 remaindernear 99999999 1 -> NaN Division_impossible
|
||||
rmnx083 remaindernear 9999999 1 -> NaN Division_impossible
|
||||
rmnx084 remaindernear 999999 1 -> 0
|
||||
rmnx085 remaindernear 99999 1 -> 0
|
||||
rmnx086 remaindernear 9999 1 -> 0
|
||||
rmnx087 remaindernear 999 1 -> 0
|
||||
rmnx088 remaindernear 99 1 -> 0
|
||||
rmnx089 remaindernear 9 1 -> 0
|
||||
|
||||
precision: 9
|
||||
rmnx090 remaindernear 0. 1 -> 0
|
||||
rmnx091 remaindernear .0 1 -> 0.0
|
||||
rmnx092 remaindernear 0.00 1 -> 0.00
|
||||
rmnx093 remaindernear 0.00E+9 1 -> 0
|
||||
rmnx094 remaindernear 0.0000E-50 1 -> 0E-54
|
||||
|
||||
|
||||
-- Various flavours of remaindernear by 0
|
||||
precision: 9
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
rmnx101 remaindernear 0 0 -> NaN Division_undefined
|
||||
rmnx102 remaindernear 0 -0 -> NaN Division_undefined
|
||||
rmnx103 remaindernear -0 0 -> NaN Division_undefined
|
||||
rmnx104 remaindernear -0 -0 -> NaN Division_undefined
|
||||
rmnx105 remaindernear 0.0E5 0 -> NaN Division_undefined
|
||||
rmnx106 remaindernear 0.000 0 -> NaN Division_undefined
|
||||
-- [Some think this next group should be Division_by_zero exception,
|
||||
-- but IEEE 854 is explicit that it is Invalid operation .. for
|
||||
-- remaindernear-near, anyway]
|
||||
rmnx107 remaindernear 0.0001 0 -> NaN Invalid_operation
|
||||
rmnx108 remaindernear 0.01 0 -> NaN Invalid_operation
|
||||
rmnx109 remaindernear 0.1 0 -> NaN Invalid_operation
|
||||
rmnx110 remaindernear 1 0 -> NaN Invalid_operation
|
||||
rmnx111 remaindernear 1 0.0 -> NaN Invalid_operation
|
||||
rmnx112 remaindernear 10 0.0 -> NaN Invalid_operation
|
||||
rmnx113 remaindernear 1E+100 0.0 -> NaN Invalid_operation
|
||||
rmnx114 remaindernear 1E+1000 0 -> NaN Invalid_operation
|
||||
rmnx115 remaindernear 0.0001 -0 -> NaN Invalid_operation
|
||||
rmnx116 remaindernear 0.01 -0 -> NaN Invalid_operation
|
||||
rmnx119 remaindernear 0.1 -0 -> NaN Invalid_operation
|
||||
rmnx120 remaindernear 1 -0 -> NaN Invalid_operation
|
||||
rmnx121 remaindernear 1 -0.0 -> NaN Invalid_operation
|
||||
rmnx122 remaindernear 10 -0.0 -> NaN Invalid_operation
|
||||
rmnx123 remaindernear 1E+100 -0.0 -> NaN Invalid_operation
|
||||
rmnx124 remaindernear 1E+1000 -0 -> NaN Invalid_operation
|
||||
-- and zeros on left
|
||||
rmnx130 remaindernear 0 1 -> 0
|
||||
rmnx131 remaindernear 0 -1 -> 0
|
||||
rmnx132 remaindernear 0.0 1 -> 0.0
|
||||
rmnx133 remaindernear 0.0 -1 -> 0.0
|
||||
rmnx134 remaindernear -0 1 -> -0
|
||||
rmnx135 remaindernear -0 -1 -> -0
|
||||
rmnx136 remaindernear -0.0 1 -> -0.0
|
||||
rmnx137 remaindernear -0.0 -1 -> -0.0
|
||||
|
||||
-- 0.5ers
|
||||
rmmx143 remaindernear 0.5 2 -> 0.5
|
||||
rmmx144 remaindernear 0.5 2.1 -> 0.5
|
||||
rmmx145 remaindernear 0.5 2.01 -> 0.50
|
||||
rmmx146 remaindernear 0.5 2.001 -> 0.500
|
||||
rmmx147 remaindernear 0.50 2 -> 0.50
|
||||
rmmx148 remaindernear 0.50 2.01 -> 0.50
|
||||
rmmx149 remaindernear 0.50 2.001 -> 0.500
|
||||
|
||||
-- some differences from remainder
|
||||
rmnx150 remaindernear 0.4 1.020 -> 0.400
|
||||
rmnx151 remaindernear 0.50 1.020 -> 0.500
|
||||
rmnx152 remaindernear 0.51 1.020 -> 0.510
|
||||
rmnx153 remaindernear 0.52 1.020 -> -0.500
|
||||
rmnx154 remaindernear 0.6 1.020 -> -0.420
|
||||
rmnx155 remaindernear 0.49 1 -> 0.49
|
||||
rmnx156 remaindernear 0.50 1 -> 0.50
|
||||
rmnx157 remaindernear 1.50 1 -> -0.50
|
||||
rmnx158 remaindernear 2.50 1 -> 0.50
|
||||
rmnx159 remaindernear 9.50 1 -> -0.50
|
||||
rmnx160 remaindernear 0.51 1 -> -0.49
|
||||
|
||||
-- the nasty division-by-1 cases
|
||||
rmnx161 remaindernear 0.4 1 -> 0.4
|
||||
rmnx162 remaindernear 0.45 1 -> 0.45
|
||||
rmnx163 remaindernear 0.455 1 -> 0.455
|
||||
rmnx164 remaindernear 0.4555 1 -> 0.4555
|
||||
rmnx165 remaindernear 0.45555 1 -> 0.45555
|
||||
rmnx166 remaindernear 0.455555 1 -> 0.455555
|
||||
rmnx167 remaindernear 0.4555555 1 -> 0.4555555
|
||||
rmnx168 remaindernear 0.45555555 1 -> 0.45555555
|
||||
rmnx169 remaindernear 0.455555555 1 -> 0.455555555
|
||||
-- with spill...
|
||||
rmnx171 remaindernear 0.5 1 -> 0.5
|
||||
rmnx172 remaindernear 0.55 1 -> -0.45
|
||||
rmnx173 remaindernear 0.555 1 -> -0.445
|
||||
rmnx174 remaindernear 0.5555 1 -> -0.4445
|
||||
rmnx175 remaindernear 0.55555 1 -> -0.44445
|
||||
rmnx176 remaindernear 0.555555 1 -> -0.444445
|
||||
rmnx177 remaindernear 0.5555555 1 -> -0.4444445
|
||||
rmnx178 remaindernear 0.55555555 1 -> -0.44444445
|
||||
rmnx179 remaindernear 0.555555555 1 -> -0.444444445
|
||||
|
||||
-- progression
|
||||
rmnx180 remaindernear 1 1 -> 0
|
||||
rmnx181 remaindernear 1 2 -> 1
|
||||
rmnx182 remaindernear 1 3 -> 1
|
||||
rmnx183 remaindernear 1 4 -> 1
|
||||
rmnx184 remaindernear 1 5 -> 1
|
||||
rmnx185 remaindernear 1 6 -> 1
|
||||
rmnx186 remaindernear 1 7 -> 1
|
||||
rmnx187 remaindernear 1 8 -> 1
|
||||
rmnx188 remaindernear 1 9 -> 1
|
||||
rmnx189 remaindernear 1 10 -> 1
|
||||
rmnx190 remaindernear 1 1 -> 0
|
||||
rmnx191 remaindernear 2 1 -> 0
|
||||
rmnx192 remaindernear 3 1 -> 0
|
||||
rmnx193 remaindernear 4 1 -> 0
|
||||
rmnx194 remaindernear 5 1 -> 0
|
||||
rmnx195 remaindernear 6 1 -> 0
|
||||
rmnx196 remaindernear 7 1 -> 0
|
||||
rmnx197 remaindernear 8 1 -> 0
|
||||
rmnx198 remaindernear 9 1 -> 0
|
||||
rmnx199 remaindernear 10 1 -> 0
|
||||
|
||||
|
||||
-- Various flavours of remaindernear by 0
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
rmnx201 remaindernear 0 0 -> NaN Division_undefined
|
||||
rmnx202 remaindernear 0.0E5 0 -> NaN Division_undefined
|
||||
rmnx203 remaindernear 0.000 0 -> NaN Division_undefined
|
||||
rmnx204 remaindernear 0.0001 0 -> NaN Invalid_operation
|
||||
rmnx205 remaindernear 0.01 0 -> NaN Invalid_operation
|
||||
rmnx206 remaindernear 0.1 0 -> NaN Invalid_operation
|
||||
rmnx207 remaindernear 1 0 -> NaN Invalid_operation
|
||||
rmnx208 remaindernear 1 0.0 -> NaN Invalid_operation
|
||||
rmnx209 remaindernear 10 0.0 -> NaN Invalid_operation
|
||||
rmnx210 remaindernear 1E+100 0.0 -> NaN Invalid_operation
|
||||
rmnx211 remaindernear 1E+1000 0 -> NaN Invalid_operation
|
||||
|
||||
-- tests from the extended specification
|
||||
rmnx221 remaindernear 2.1 3 -> -0.9
|
||||
rmnx222 remaindernear 10 6 -> -2
|
||||
rmnx223 remaindernear 10 3 -> 1
|
||||
rmnx224 remaindernear -10 3 -> -1
|
||||
rmnx225 remaindernear 10.2 1 -> 0.2
|
||||
rmnx226 remaindernear 10 0.3 -> 0.1
|
||||
rmnx227 remaindernear 3.6 1.3 -> -0.3
|
||||
|
||||
-- some differences from remainder
|
||||
rmnx231 remaindernear 0.4 1.020 -> 0.400
|
||||
rmnx232 remaindernear 0.50 1.020 -> 0.500
|
||||
rmnx233 remaindernear 0.51 1.020 -> 0.510
|
||||
rmnx234 remaindernear 0.52 1.020 -> -0.500
|
||||
rmnx235 remaindernear 0.6 1.020 -> -0.420
|
||||
|
||||
-- test some cases that are close to exponent overflow
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
rmnx270 remaindernear 1 1e999999999 -> 1
|
||||
rmnx271 remaindernear 1 0.9e999999999 -> 1
|
||||
rmnx272 remaindernear 1 0.99e999999999 -> 1
|
||||
rmnx273 remaindernear 1 0.999999999e999999999 -> 1
|
||||
rmnx274 remaindernear 9e999999999 1 -> NaN Division_impossible
|
||||
rmnx275 remaindernear 9.9e999999999 1 -> NaN Division_impossible
|
||||
rmnx276 remaindernear 9.99e999999999 1 -> NaN Division_impossible
|
||||
rmnx277 remaindernear 9.99999999e999999999 1 -> NaN Division_impossible
|
||||
|
||||
rmnx280 remaindernear 0.1 9e-999999999 -> NaN Division_impossible
|
||||
rmnx281 remaindernear 0.1 99e-999999999 -> NaN Division_impossible
|
||||
rmnx282 remaindernear 0.1 999e-999999999 -> NaN Division_impossible
|
||||
|
||||
rmnx283 remaindernear 0.1 9e-999999998 -> NaN Division_impossible
|
||||
rmnx284 remaindernear 0.1 99e-999999998 -> NaN Division_impossible
|
||||
rmnx285 remaindernear 0.1 999e-999999998 -> NaN Division_impossible
|
||||
rmnx286 remaindernear 0.1 999e-999999997 -> NaN Division_impossible
|
||||
rmnx287 remaindernear 0.1 9999e-999999997 -> NaN Division_impossible
|
||||
rmnx288 remaindernear 0.1 99999e-999999997 -> NaN Division_impossible
|
||||
|
||||
-- rmnx3xx are from DiagBigDecimal
|
||||
rmnx301 remaindernear 1 3 -> 1
|
||||
rmnx302 remaindernear 5 5 -> 0
|
||||
rmnx303 remaindernear 13 10 -> 3
|
||||
rmnx304 remaindernear 13 50 -> 13
|
||||
rmnx305 remaindernear 13 100 -> 13
|
||||
rmnx306 remaindernear 13 1000 -> 13
|
||||
rmnx307 remaindernear .13 1 -> 0.13
|
||||
rmnx308 remaindernear 0.133 1 -> 0.133
|
||||
rmnx309 remaindernear 0.1033 1 -> 0.1033
|
||||
rmnx310 remaindernear 1.033 1 -> 0.033
|
||||
rmnx311 remaindernear 10.33 1 -> 0.33
|
||||
rmnx312 remaindernear 10.33 10 -> 0.33
|
||||
rmnx313 remaindernear 103.3 1 -> 0.3
|
||||
rmnx314 remaindernear 133 10 -> 3
|
||||
rmnx315 remaindernear 1033 10 -> 3
|
||||
rmnx316 remaindernear 1033 50 -> -17
|
||||
rmnx317 remaindernear 101.0 3 -> -1.0
|
||||
rmnx318 remaindernear 102.0 3 -> 0.0
|
||||
rmnx319 remaindernear 103.0 3 -> 1.0
|
||||
rmnx320 remaindernear 2.40 1 -> 0.40
|
||||
rmnx321 remaindernear 2.400 1 -> 0.400
|
||||
rmnx322 remaindernear 2.4 1 -> 0.4
|
||||
rmnx323 remaindernear 2.4 2 -> 0.4
|
||||
rmnx324 remaindernear 2.400 2 -> 0.400
|
||||
rmnx325 remaindernear 1 0.3 -> 0.1
|
||||
rmnx326 remaindernear 1 0.30 -> 0.10
|
||||
rmnx327 remaindernear 1 0.300 -> 0.100
|
||||
rmnx328 remaindernear 1 0.3000 -> 0.1000
|
||||
rmnx329 remaindernear 1.0 0.3 -> 0.1
|
||||
rmnx330 remaindernear 1.00 0.3 -> 0.10
|
||||
rmnx331 remaindernear 1.000 0.3 -> 0.100
|
||||
rmnx332 remaindernear 1.0000 0.3 -> 0.1000
|
||||
rmnx333 remaindernear 0.5 2 -> 0.5
|
||||
rmnx334 remaindernear 0.5 2.1 -> 0.5
|
||||
rmnx335 remaindernear 0.5 2.01 -> 0.50
|
||||
rmnx336 remaindernear 0.5 2.001 -> 0.500
|
||||
rmnx337 remaindernear 0.50 2 -> 0.50
|
||||
rmnx338 remaindernear 0.50 2.01 -> 0.50
|
||||
rmnx339 remaindernear 0.50 2.001 -> 0.500
|
||||
|
||||
rmnx340 remaindernear 0.5 0.5000001 -> -1E-7
|
||||
rmnx341 remaindernear 0.5 0.50000001 -> -1E-8
|
||||
rmnx342 remaindernear 0.5 0.500000001 -> -1E-9
|
||||
rmnx343 remaindernear 0.5 0.5000000001 -> -1E-10
|
||||
rmnx344 remaindernear 0.5 0.50000000001 -> -1E-11
|
||||
rmnx345 remaindernear 0.5 0.4999999 -> 1E-7
|
||||
rmnx346 remaindernear 0.5 0.49999999 -> 1E-8
|
||||
rmnx347 remaindernear 0.5 0.499999999 -> 1E-9
|
||||
rmnx348 remaindernear 0.5 0.4999999999 -> 1E-10
|
||||
rmnx349 remaindernear 0.5 0.49999999999 -> 1E-11
|
||||
|
||||
rmnx350 remaindernear 0.03 7 -> 0.03
|
||||
rmnx351 remaindernear 5 2 -> 1
|
||||
rmnx352 remaindernear 4.1 2 -> 0.1
|
||||
rmnx353 remaindernear 4.01 2 -> 0.01
|
||||
rmnx354 remaindernear 4.001 2 -> 0.001
|
||||
rmnx355 remaindernear 4.0001 2 -> 0.0001
|
||||
rmnx356 remaindernear 4.00001 2 -> 0.00001
|
||||
rmnx357 remaindernear 4.000001 2 -> 0.000001
|
||||
rmnx358 remaindernear 4.0000001 2 -> 1E-7
|
||||
|
||||
rmnx360 remaindernear 1.2 0.7345 -> -0.2690
|
||||
rmnx361 remaindernear 0.8 12 -> 0.8
|
||||
rmnx362 remaindernear 0.8 0.2 -> 0.0
|
||||
rmnx363 remaindernear 0.8 0.3 -> -0.1
|
||||
rmnx364 remaindernear 0.800 12 -> 0.800
|
||||
rmnx365 remaindernear 0.800 1.7 -> 0.800
|
||||
rmnx366 remaindernear 2.400 2 -> 0.400
|
||||
|
||||
precision: 6
|
||||
rmnx371 remaindernear 2.400 2 -> 0.400
|
||||
precision: 3
|
||||
rmnx372 remaindernear 12345678900000 12e+12 -> 3.46E+11 Inexact Rounded
|
||||
|
||||
precision: 5
|
||||
rmnx381 remaindernear 12345 1 -> 0
|
||||
rmnx382 remaindernear 12345 1.0001 -> -0.2344
|
||||
rmnx383 remaindernear 12345 1.001 -> -0.333
|
||||
rmnx384 remaindernear 12345 1.01 -> -0.23
|
||||
rmnx385 remaindernear 12345 1.1 -> -0.3
|
||||
rmnx386 remaindernear 12355 4 -> -1
|
||||
rmnx387 remaindernear 12345 4 -> 1
|
||||
rmnx388 remaindernear 12355 4.0001 -> -1.3089
|
||||
rmnx389 remaindernear 12345 4.0001 -> 0.6914
|
||||
rmnx390 remaindernear 12345 4.9 -> 1.9
|
||||
rmnx391 remaindernear 12345 4.99 -> -0.26
|
||||
rmnx392 remaindernear 12345 4.999 -> 2.469
|
||||
rmnx393 remaindernear 12345 4.9999 -> 0.2469
|
||||
rmnx394 remaindernear 12345 5 -> 0
|
||||
rmnx395 remaindernear 12345 5.0001 -> -0.2469
|
||||
rmnx396 remaindernear 12345 5.001 -> -2.469
|
||||
rmnx397 remaindernear 12345 5.01 -> 0.36
|
||||
rmnx398 remaindernear 12345 5.1 -> -2.1
|
||||
|
||||
precision: 9
|
||||
-- some nasty division-by-1 cases [some similar above]
|
||||
rmnx401 remaindernear 0.4 1 -> 0.4
|
||||
rmnx402 remaindernear 0.45 1 -> 0.45
|
||||
rmnx403 remaindernear 0.455 1 -> 0.455
|
||||
rmnx404 remaindernear 0.4555 1 -> 0.4555
|
||||
rmnx405 remaindernear 0.45555 1 -> 0.45555
|
||||
rmnx406 remaindernear 0.455555 1 -> 0.455555
|
||||
rmnx407 remaindernear 0.4555555 1 -> 0.4555555
|
||||
rmnx408 remaindernear 0.45555555 1 -> 0.45555555
|
||||
rmnx409 remaindernear 0.455555555 1 -> 0.455555555
|
||||
|
||||
-- some tricky LHSs
|
||||
rmnx420 remaindernear 99999999.999999999 1E+8 -> -1E-9
|
||||
rmnx421 remaindernear 999999999.999999999 1E+9 -> -1E-9
|
||||
precision: 9
|
||||
rmnx430 remaindernear 0.455555555 1 -> 0.455555555
|
||||
precision: 8
|
||||
rmnx431 remaindernear 0.455555555 1 -> 0.45555556 Inexact Rounded
|
||||
precision: 7
|
||||
rmnx432 remaindernear 0.455555555 1 -> 0.4555556 Inexact Rounded
|
||||
precision: 6
|
||||
rmnx433 remaindernear 0.455555555 1 -> 0.455556 Inexact Rounded
|
||||
precision: 5
|
||||
rmnx434 remaindernear 0.455555555 1 -> 0.45556 Inexact Rounded
|
||||
precision: 4
|
||||
rmnx435 remaindernear 0.455555555 1 -> 0.4556 Inexact Rounded
|
||||
precision: 3
|
||||
rmnx436 remaindernear 0.455555555 1 -> 0.456 Inexact Rounded
|
||||
precision: 2
|
||||
rmnx437 remaindernear 0.455555555 1 -> 0.46 Inexact Rounded
|
||||
precision: 1
|
||||
rmnx438 remaindernear 0.455555555 1 -> 0.5 Inexact Rounded
|
||||
|
||||
-- early tests; from text descriptions
|
||||
precision: 9
|
||||
rmnx601 remaindernear 10 6 -> -2
|
||||
rmnx602 remaindernear -10 6 -> 2
|
||||
rmnx603 remaindernear 11 3 -> -1
|
||||
rmnx604 remaindernear 11 5 -> 1
|
||||
rmnx605 remaindernear 7.7 8 -> -0.3
|
||||
rmnx606 remaindernear 31.5 3 -> 1.5 -- i=10
|
||||
rmnx607 remaindernear 34.5 3 -> -1.5 -- i=11
|
||||
|
||||
-- Specials
|
||||
rmnx680 remaindernear Inf -Inf -> NaN Invalid_operation
|
||||
rmnx681 remaindernear Inf -1000 -> NaN Invalid_operation
|
||||
rmnx682 remaindernear Inf -1 -> NaN Invalid_operation
|
||||
rmnx683 remaindernear Inf 0 -> NaN Invalid_operation
|
||||
rmnx684 remaindernear Inf -0 -> NaN Invalid_operation
|
||||
rmnx685 remaindernear Inf 1 -> NaN Invalid_operation
|
||||
rmnx686 remaindernear Inf 1000 -> NaN Invalid_operation
|
||||
rmnx687 remaindernear Inf Inf -> NaN Invalid_operation
|
||||
rmnx688 remaindernear -1000 Inf -> -1000
|
||||
rmnx689 remaindernear -Inf Inf -> NaN Invalid_operation
|
||||
rmnx691 remaindernear -1 Inf -> -1
|
||||
rmnx692 remaindernear 0 Inf -> 0
|
||||
rmnx693 remaindernear -0 Inf -> -0
|
||||
rmnx694 remaindernear 1 Inf -> 1
|
||||
rmnx695 remaindernear 1000 Inf -> 1000
|
||||
rmnx696 remaindernear Inf Inf -> NaN Invalid_operation
|
||||
|
||||
rmnx700 remaindernear -Inf -Inf -> NaN Invalid_operation
|
||||
rmnx701 remaindernear -Inf -1000 -> NaN Invalid_operation
|
||||
rmnx702 remaindernear -Inf -1 -> NaN Invalid_operation
|
||||
rmnx703 remaindernear -Inf -0 -> NaN Invalid_operation
|
||||
rmnx704 remaindernear -Inf 0 -> NaN Invalid_operation
|
||||
rmnx705 remaindernear -Inf 1 -> NaN Invalid_operation
|
||||
rmnx706 remaindernear -Inf 1000 -> NaN Invalid_operation
|
||||
rmnx707 remaindernear -Inf Inf -> NaN Invalid_operation
|
||||
rmnx708 remaindernear -Inf -Inf -> NaN Invalid_operation
|
||||
rmnx709 remaindernear -1000 Inf -> -1000
|
||||
rmnx710 remaindernear -1 -Inf -> -1
|
||||
rmnx711 remaindernear -0 -Inf -> -0
|
||||
rmnx712 remaindernear 0 -Inf -> 0
|
||||
rmnx713 remaindernear 1 -Inf -> 1
|
||||
rmnx714 remaindernear 1000 -Inf -> 1000
|
||||
rmnx715 remaindernear Inf -Inf -> NaN Invalid_operation
|
||||
|
||||
rmnx721 remaindernear NaN -Inf -> NaN
|
||||
rmnx722 remaindernear NaN -1000 -> NaN
|
||||
rmnx723 remaindernear NaN -1 -> NaN
|
||||
rmnx724 remaindernear NaN -0 -> NaN
|
||||
rmnx725 remaindernear NaN 0 -> NaN
|
||||
rmnx726 remaindernear NaN 1 -> NaN
|
||||
rmnx727 remaindernear NaN 1000 -> NaN
|
||||
rmnx728 remaindernear NaN Inf -> NaN
|
||||
rmnx729 remaindernear NaN NaN -> NaN
|
||||
rmnx730 remaindernear -Inf NaN -> NaN
|
||||
rmnx731 remaindernear -1000 NaN -> NaN
|
||||
rmnx732 remaindernear -1 -NaN -> -NaN
|
||||
rmnx733 remaindernear -0 NaN -> NaN
|
||||
rmnx734 remaindernear 0 NaN -> NaN
|
||||
rmnx735 remaindernear 1 NaN -> NaN
|
||||
rmnx736 remaindernear 1000 NaN -> NaN
|
||||
rmnx737 remaindernear Inf NaN -> NaN
|
||||
|
||||
rmnx741 remaindernear sNaN -Inf -> NaN Invalid_operation
|
||||
rmnx742 remaindernear sNaN -1000 -> NaN Invalid_operation
|
||||
rmnx743 remaindernear -sNaN -1 -> -NaN Invalid_operation
|
||||
rmnx744 remaindernear sNaN -0 -> NaN Invalid_operation
|
||||
rmnx745 remaindernear sNaN 0 -> NaN Invalid_operation
|
||||
rmnx746 remaindernear sNaN 1 -> NaN Invalid_operation
|
||||
rmnx747 remaindernear sNaN 1000 -> NaN Invalid_operation
|
||||
rmnx749 remaindernear sNaN NaN -> NaN Invalid_operation
|
||||
rmnx750 remaindernear sNaN sNaN -> NaN Invalid_operation
|
||||
rmnx751 remaindernear NaN sNaN -> NaN Invalid_operation
|
||||
rmnx752 remaindernear -Inf sNaN -> NaN Invalid_operation
|
||||
rmnx753 remaindernear -1000 sNaN -> NaN Invalid_operation
|
||||
rmnx754 remaindernear -1 sNaN -> NaN Invalid_operation
|
||||
rmnx755 remaindernear -0 -sNaN -> -NaN Invalid_operation
|
||||
rmnx756 remaindernear 0 sNaN -> NaN Invalid_operation
|
||||
rmnx757 remaindernear 1 sNaN -> NaN Invalid_operation
|
||||
rmnx758 remaindernear 1000 sNaN -> NaN Invalid_operation
|
||||
rmnx759 remaindernear Inf sNaN -> NaN Invalid_operation
|
||||
rmnx760 remaindernear NaN sNaN -> NaN Invalid_operation
|
||||
|
||||
-- propaging NaNs
|
||||
rmnx761 remaindernear NaN1 NaN7 -> NaN1
|
||||
rmnx762 remaindernear sNaN2 NaN8 -> NaN2 Invalid_operation
|
||||
rmnx763 remaindernear NaN3 -sNaN9 -> -NaN9 Invalid_operation
|
||||
rmnx764 remaindernear sNaN4 sNaN10 -> NaN4 Invalid_operation
|
||||
rmnx765 remaindernear 15 NaN11 -> NaN11
|
||||
rmnx766 remaindernear NaN6 NaN12 -> NaN6
|
||||
rmnx767 remaindernear Inf -NaN13 -> -NaN13
|
||||
rmnx768 remaindernear NaN14 -Inf -> NaN14
|
||||
rmnx769 remaindernear 0 NaN15 -> NaN15
|
||||
rmnx770 remaindernear -NaN16 -0 -> -NaN16
|
||||
|
||||
-- test some cases that are close to exponent overflow
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
rmnx780 remaindernear 1 1e999999999 -> 1
|
||||
rmnx781 remaindernear 1 0.9e999999999 -> 1
|
||||
rmnx782 remaindernear 1 0.99e999999999 -> 1
|
||||
rmnx783 remaindernear 1 0.999999999e999999999 -> 1
|
||||
rmnx784 remaindernear 9e999999999 1 -> NaN Division_impossible
|
||||
rmnx785 remaindernear 9.9e999999999 1 -> NaN Division_impossible
|
||||
rmnx786 remaindernear 9.99e999999999 1 -> NaN Division_impossible
|
||||
rmnx787 remaindernear 9.99999999e999999999 1 -> NaN Division_impossible
|
||||
|
||||
|
||||
-- overflow and underflow tests [from divide]
|
||||
precision: 9
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
rmnx790 remaindernear +1.23456789012345E-0 9E+999999999 -> 1.23456789 Inexact Rounded
|
||||
rmnx791 remaindernear 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
|
||||
rmnx792 remaindernear +0.100 9E+999999999 -> 0.100
|
||||
rmnx793 remaindernear 9E-999999999 +9.100 -> 9E-999999999
|
||||
rmnx795 remaindernear -1.23456789012345E-0 9E+999999999 -> -1.23456789 Inexact Rounded
|
||||
rmnx796 remaindernear 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
|
||||
rmnx797 remaindernear -0.100 9E+999999999 -> -0.100
|
||||
rmnx798 remaindernear 9E-999999999 -9.100 -> 9E-999999999
|
||||
|
||||
-- long operands checks
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
rmnx801 remaindernear 12345678000 100 -> 0
|
||||
rmnx802 remaindernear 1 12345678000 -> 1
|
||||
rmnx803 remaindernear 1234567800 10 -> 0
|
||||
rmnx804 remaindernear 1 1234567800 -> 1
|
||||
rmnx805 remaindernear 1234567890 10 -> 0
|
||||
rmnx806 remaindernear 1 1234567890 -> 1
|
||||
rmnx807 remaindernear 1234567891 10 -> 1
|
||||
rmnx808 remaindernear 1 1234567891 -> 1
|
||||
rmnx809 remaindernear 12345678901 100 -> 1
|
||||
rmnx810 remaindernear 1 12345678901 -> 1
|
||||
rmnx811 remaindernear 1234567896 10 -> -4
|
||||
rmnx812 remaindernear 1 1234567896 -> 1
|
||||
|
||||
precision: 15
|
||||
rmnx841 remaindernear 12345678000 100 -> 0
|
||||
rmnx842 remaindernear 1 12345678000 -> 1
|
||||
rmnx843 remaindernear 1234567800 10 -> 0
|
||||
rmnx844 remaindernear 1 1234567800 -> 1
|
||||
rmnx845 remaindernear 1234567890 10 -> 0
|
||||
rmnx846 remaindernear 1 1234567890 -> 1
|
||||
rmnx847 remaindernear 1234567891 10 -> 1
|
||||
rmnx848 remaindernear 1 1234567891 -> 1
|
||||
rmnx849 remaindernear 12345678901 100 -> 1
|
||||
rmnx850 remaindernear 1 12345678901 -> 1
|
||||
rmnx851 remaindernear 1234567896 10 -> -4
|
||||
rmnx852 remaindernear 1 1234567896 -> 1
|
||||
|
||||
-- Null tests
|
||||
rmnx900 remaindernear 10 # -> NaN Invalid_operation
|
||||
rmnx901 remaindernear # 10 -> NaN Invalid_operation
|
|
@ -0,0 +1,756 @@
|
|||
------------------------------------------------------------------------
|
||||
-- rescale.decTest -- decimal rescale operation --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.35
|
||||
|
||||
-- [obsolete] Quantize.decTest has the improved version
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
|
||||
-- sanity checks
|
||||
|
||||
resx001 rescale 0 0 -> 0
|
||||
resx002 rescale 1 0 -> 1
|
||||
resx003 rescale 0.1 +2 -> 0E+2 Inexact Rounded
|
||||
resx005 rescale 0.1 +1 -> 0E+1 Inexact Rounded
|
||||
resx006 rescale 0.1 0 -> 0 Inexact Rounded
|
||||
resx007 rescale 0.1 -1 -> 0.1
|
||||
resx008 rescale 0.1 -2 -> 0.10
|
||||
resx009 rescale 0.1 -3 -> 0.100
|
||||
resx010 rescale 0.9 +2 -> 0E+2 Inexact Rounded
|
||||
resx011 rescale 0.9 +1 -> 0E+1 Inexact Rounded
|
||||
resx012 rescale 0.9 +0 -> 1 Inexact Rounded
|
||||
resx013 rescale 0.9 -1 -> 0.9
|
||||
resx014 rescale 0.9 -2 -> 0.90
|
||||
resx015 rescale 0.9 -3 -> 0.900
|
||||
-- negatives
|
||||
resx021 rescale -0 0 -> -0
|
||||
resx022 rescale -1 0 -> -1
|
||||
resx023 rescale -0.1 +2 -> -0E+2 Inexact Rounded
|
||||
resx025 rescale -0.1 +1 -> -0E+1 Inexact Rounded
|
||||
resx026 rescale -0.1 0 -> -0 Inexact Rounded
|
||||
resx027 rescale -0.1 -1 -> -0.1
|
||||
resx028 rescale -0.1 -2 -> -0.10
|
||||
resx029 rescale -0.1 -3 -> -0.100
|
||||
resx030 rescale -0.9 +2 -> -0E+2 Inexact Rounded
|
||||
resx031 rescale -0.9 +1 -> -0E+1 Inexact Rounded
|
||||
resx032 rescale -0.9 +0 -> -1 Inexact Rounded
|
||||
resx033 rescale -0.9 -1 -> -0.9
|
||||
resx034 rescale -0.9 -2 -> -0.90
|
||||
resx035 rescale -0.9 -3 -> -0.900
|
||||
resx036 rescale -0.5 +2 -> -0E+2 Inexact Rounded
|
||||
resx037 rescale -0.5 +1 -> -0E+1 Inexact Rounded
|
||||
resx038 rescale -0.5 +0 -> -1 Inexact Rounded
|
||||
resx039 rescale -0.5 -1 -> -0.5
|
||||
resx040 rescale -0.5 -2 -> -0.50
|
||||
resx041 rescale -0.5 -3 -> -0.500
|
||||
resx042 rescale -0.9 +2 -> -0E+2 Inexact Rounded
|
||||
resx043 rescale -0.9 +1 -> -0E+1 Inexact Rounded
|
||||
resx044 rescale -0.9 +0 -> -1 Inexact Rounded
|
||||
resx045 rescale -0.9 -1 -> -0.9
|
||||
resx046 rescale -0.9 -2 -> -0.90
|
||||
resx047 rescale -0.9 -3 -> -0.900
|
||||
|
||||
-- examples from Specification
|
||||
resx060 rescale 2.17 -3 -> 2.170
|
||||
resx061 rescale 2.17 -2 -> 2.17
|
||||
resx062 rescale 2.17 -1 -> 2.2 Inexact Rounded
|
||||
resx063 rescale 2.17 0 -> 2 Inexact Rounded
|
||||
resx064 rescale 2.17 +1 -> 0E+1 Inexact Rounded
|
||||
resx065 rescale 2 Inf -> NaN Invalid_operation
|
||||
resx066 rescale -0.1 0 -> -0 Inexact Rounded
|
||||
resx067 rescale -0 5 -> -0E+5
|
||||
resx068 rescale +35236450.6 -2 -> NaN Invalid_operation
|
||||
resx069 rescale -35236450.6 -2 -> NaN Invalid_operation
|
||||
resx070 rescale 217 -1 -> 217.0
|
||||
resx071 rescale 217 0 -> 217
|
||||
resx072 rescale 217 +1 -> 2.2E+2 Inexact Rounded
|
||||
resx073 rescale 217 +2 -> 2E+2 Inexact Rounded
|
||||
|
||||
-- general tests ..
|
||||
resx089 rescale 12 +4 -> 0E+4 Inexact Rounded
|
||||
resx090 rescale 12 +3 -> 0E+3 Inexact Rounded
|
||||
resx091 rescale 12 +2 -> 0E+2 Inexact Rounded
|
||||
resx092 rescale 12 +1 -> 1E+1 Inexact Rounded
|
||||
resx093 rescale 1.2345 -2 -> 1.23 Inexact Rounded
|
||||
resx094 rescale 1.2355 -2 -> 1.24 Inexact Rounded
|
||||
resx095 rescale 1.2345 -6 -> 1.234500
|
||||
resx096 rescale 9.9999 -2 -> 10.00 Inexact Rounded
|
||||
resx097 rescale 0.0001 -2 -> 0.00 Inexact Rounded
|
||||
resx098 rescale 0.001 -2 -> 0.00 Inexact Rounded
|
||||
resx099 rescale 0.009 -2 -> 0.01 Inexact Rounded
|
||||
resx100 rescale 92 +2 -> 1E+2 Inexact Rounded
|
||||
|
||||
resx101 rescale -1 0 -> -1
|
||||
resx102 rescale -1 -1 -> -1.0
|
||||
resx103 rescale -1 -2 -> -1.00
|
||||
resx104 rescale 0 0 -> 0
|
||||
resx105 rescale 0 -1 -> 0.0
|
||||
resx106 rescale 0 -2 -> 0.00
|
||||
resx107 rescale 0.00 0 -> 0
|
||||
resx108 rescale 0 +1 -> 0E+1
|
||||
resx109 rescale 0 +2 -> 0E+2
|
||||
resx110 rescale +1 0 -> 1
|
||||
resx111 rescale +1 -1 -> 1.0
|
||||
resx112 rescale +1 -2 -> 1.00
|
||||
|
||||
resx120 rescale 1.04 -3 -> 1.040
|
||||
resx121 rescale 1.04 -2 -> 1.04
|
||||
resx122 rescale 1.04 -1 -> 1.0 Inexact Rounded
|
||||
resx123 rescale 1.04 0 -> 1 Inexact Rounded
|
||||
resx124 rescale 1.05 -3 -> 1.050
|
||||
resx125 rescale 1.05 -2 -> 1.05
|
||||
resx126 rescale 1.05 -1 -> 1.1 Inexact Rounded
|
||||
resx127 rescale 1.05 0 -> 1 Inexact Rounded
|
||||
resx128 rescale 1.05 -3 -> 1.050
|
||||
resx129 rescale 1.05 -2 -> 1.05
|
||||
resx130 rescale 1.05 -1 -> 1.1 Inexact Rounded
|
||||
resx131 rescale 1.05 0 -> 1 Inexact Rounded
|
||||
resx132 rescale 1.06 -3 -> 1.060
|
||||
resx133 rescale 1.06 -2 -> 1.06
|
||||
resx134 rescale 1.06 -1 -> 1.1 Inexact Rounded
|
||||
resx135 rescale 1.06 0 -> 1 Inexact Rounded
|
||||
|
||||
resx140 rescale -10 -2 -> -10.00
|
||||
resx141 rescale +1 -2 -> 1.00
|
||||
resx142 rescale +10 -2 -> 10.00
|
||||
resx143 rescale 1E+10 -2 -> NaN Invalid_operation
|
||||
resx144 rescale 1E-10 -2 -> 0.00 Inexact Rounded
|
||||
resx145 rescale 1E-3 -2 -> 0.00 Inexact Rounded
|
||||
resx146 rescale 1E-2 -2 -> 0.01
|
||||
resx147 rescale 1E-1 -2 -> 0.10
|
||||
resx148 rescale 0E-10 -2 -> 0.00
|
||||
|
||||
resx150 rescale 1.0600 -5 -> 1.06000
|
||||
resx151 rescale 1.0600 -4 -> 1.0600
|
||||
resx152 rescale 1.0600 -3 -> 1.060 Rounded
|
||||
resx153 rescale 1.0600 -2 -> 1.06 Rounded
|
||||
resx154 rescale 1.0600 -1 -> 1.1 Inexact Rounded
|
||||
resx155 rescale 1.0600 0 -> 1 Inexact Rounded
|
||||
|
||||
-- +ve exponents ..
|
||||
resx201 rescale -1 +0 -> -1
|
||||
resx202 rescale -1 +1 -> -0E+1 Inexact Rounded
|
||||
resx203 rescale -1 +2 -> -0E+2 Inexact Rounded
|
||||
resx204 rescale 0 +0 -> 0
|
||||
resx205 rescale 0 +1 -> 0E+1
|
||||
resx206 rescale 0 +2 -> 0E+2
|
||||
resx207 rescale +1 +0 -> 1
|
||||
resx208 rescale +1 +1 -> 0E+1 Inexact Rounded
|
||||
resx209 rescale +1 +2 -> 0E+2 Inexact Rounded
|
||||
|
||||
resx220 rescale 1.04 +3 -> 0E+3 Inexact Rounded
|
||||
resx221 rescale 1.04 +2 -> 0E+2 Inexact Rounded
|
||||
resx222 rescale 1.04 +1 -> 0E+1 Inexact Rounded
|
||||
resx223 rescale 1.04 +0 -> 1 Inexact Rounded
|
||||
resx224 rescale 1.05 +3 -> 0E+3 Inexact Rounded
|
||||
resx225 rescale 1.05 +2 -> 0E+2 Inexact Rounded
|
||||
resx226 rescale 1.05 +1 -> 0E+1 Inexact Rounded
|
||||
resx227 rescale 1.05 +0 -> 1 Inexact Rounded
|
||||
resx228 rescale 1.05 +3 -> 0E+3 Inexact Rounded
|
||||
resx229 rescale 1.05 +2 -> 0E+2 Inexact Rounded
|
||||
resx230 rescale 1.05 +1 -> 0E+1 Inexact Rounded
|
||||
resx231 rescale 1.05 +0 -> 1 Inexact Rounded
|
||||
resx232 rescale 1.06 +3 -> 0E+3 Inexact Rounded
|
||||
resx233 rescale 1.06 +2 -> 0E+2 Inexact Rounded
|
||||
resx234 rescale 1.06 +1 -> 0E+1 Inexact Rounded
|
||||
resx235 rescale 1.06 +0 -> 1 Inexact Rounded
|
||||
|
||||
resx240 rescale -10 +1 -> -1E+1 Rounded
|
||||
resx241 rescale +1 +1 -> 0E+1 Inexact Rounded
|
||||
resx242 rescale +10 +1 -> 1E+1 Rounded
|
||||
resx243 rescale 1E+1 +1 -> 1E+1 -- underneath this is E+1
|
||||
resx244 rescale 1E+2 +1 -> 1.0E+2 -- underneath this is E+1
|
||||
resx245 rescale 1E+3 +1 -> 1.00E+3 -- underneath this is E+1
|
||||
resx246 rescale 1E+4 +1 -> 1.000E+4 -- underneath this is E+1
|
||||
resx247 rescale 1E+5 +1 -> 1.0000E+5 -- underneath this is E+1
|
||||
resx248 rescale 1E+6 +1 -> 1.00000E+6 -- underneath this is E+1
|
||||
resx249 rescale 1E+7 +1 -> 1.000000E+7 -- underneath this is E+1
|
||||
resx250 rescale 1E+8 +1 -> 1.0000000E+8 -- underneath this is E+1
|
||||
resx251 rescale 1E+9 +1 -> 1.00000000E+9 -- underneath this is E+1
|
||||
-- next one tries to add 9 zeros
|
||||
resx252 rescale 1E+10 +1 -> NaN Invalid_operation
|
||||
resx253 rescale 1E-10 +1 -> 0E+1 Inexact Rounded
|
||||
resx254 rescale 1E-2 +1 -> 0E+1 Inexact Rounded
|
||||
resx255 rescale 0E-10 +1 -> 0E+1
|
||||
resx256 rescale -0E-10 +1 -> -0E+1
|
||||
resx257 rescale -0E-1 +1 -> -0E+1
|
||||
resx258 rescale -0 +1 -> -0E+1
|
||||
resx259 rescale -0E+1 +1 -> -0E+1
|
||||
|
||||
resx260 rescale -10 +2 -> -0E+2 Inexact Rounded
|
||||
resx261 rescale +1 +2 -> 0E+2 Inexact Rounded
|
||||
resx262 rescale +10 +2 -> 0E+2 Inexact Rounded
|
||||
resx263 rescale 1E+1 +2 -> 0E+2 Inexact Rounded
|
||||
resx264 rescale 1E+2 +2 -> 1E+2
|
||||
resx265 rescale 1E+3 +2 -> 1.0E+3
|
||||
resx266 rescale 1E+4 +2 -> 1.00E+4
|
||||
resx267 rescale 1E+5 +2 -> 1.000E+5
|
||||
resx268 rescale 1E+6 +2 -> 1.0000E+6
|
||||
resx269 rescale 1E+7 +2 -> 1.00000E+7
|
||||
resx270 rescale 1E+8 +2 -> 1.000000E+8
|
||||
resx271 rescale 1E+9 +2 -> 1.0000000E+9
|
||||
resx272 rescale 1E+10 +2 -> 1.00000000E+10
|
||||
resx273 rescale 1E-10 +2 -> 0E+2 Inexact Rounded
|
||||
resx274 rescale 1E-2 +2 -> 0E+2 Inexact Rounded
|
||||
resx275 rescale 0E-10 +2 -> 0E+2
|
||||
|
||||
resx280 rescale -10 +3 -> -0E+3 Inexact Rounded
|
||||
resx281 rescale +1 +3 -> 0E+3 Inexact Rounded
|
||||
resx282 rescale +10 +3 -> 0E+3 Inexact Rounded
|
||||
resx283 rescale 1E+1 +3 -> 0E+3 Inexact Rounded
|
||||
resx284 rescale 1E+2 +3 -> 0E+3 Inexact Rounded
|
||||
resx285 rescale 1E+3 +3 -> 1E+3
|
||||
resx286 rescale 1E+4 +3 -> 1.0E+4
|
||||
resx287 rescale 1E+5 +3 -> 1.00E+5
|
||||
resx288 rescale 1E+6 +3 -> 1.000E+6
|
||||
resx289 rescale 1E+7 +3 -> 1.0000E+7
|
||||
resx290 rescale 1E+8 +3 -> 1.00000E+8
|
||||
resx291 rescale 1E+9 +3 -> 1.000000E+9
|
||||
resx292 rescale 1E+10 +3 -> 1.0000000E+10
|
||||
resx293 rescale 1E-10 +3 -> 0E+3 Inexact Rounded
|
||||
resx294 rescale 1E-2 +3 -> 0E+3 Inexact Rounded
|
||||
resx295 rescale 0E-10 +3 -> 0E+3
|
||||
|
||||
-- round up from below [sign wrong in JIT compiler once]
|
||||
resx300 rescale 0.0078 -5 -> 0.00780
|
||||
resx301 rescale 0.0078 -4 -> 0.0078
|
||||
resx302 rescale 0.0078 -3 -> 0.008 Inexact Rounded
|
||||
resx303 rescale 0.0078 -2 -> 0.01 Inexact Rounded
|
||||
resx304 rescale 0.0078 -1 -> 0.0 Inexact Rounded
|
||||
resx305 rescale 0.0078 0 -> 0 Inexact Rounded
|
||||
resx306 rescale 0.0078 +1 -> 0E+1 Inexact Rounded
|
||||
resx307 rescale 0.0078 +2 -> 0E+2 Inexact Rounded
|
||||
|
||||
resx310 rescale -0.0078 -5 -> -0.00780
|
||||
resx311 rescale -0.0078 -4 -> -0.0078
|
||||
resx312 rescale -0.0078 -3 -> -0.008 Inexact Rounded
|
||||
resx313 rescale -0.0078 -2 -> -0.01 Inexact Rounded
|
||||
resx314 rescale -0.0078 -1 -> -0.0 Inexact Rounded
|
||||
resx315 rescale -0.0078 0 -> -0 Inexact Rounded
|
||||
resx316 rescale -0.0078 +1 -> -0E+1 Inexact Rounded
|
||||
resx317 rescale -0.0078 +2 -> -0E+2 Inexact Rounded
|
||||
|
||||
resx320 rescale 0.078 -5 -> 0.07800
|
||||
resx321 rescale 0.078 -4 -> 0.0780
|
||||
resx322 rescale 0.078 -3 -> 0.078
|
||||
resx323 rescale 0.078 -2 -> 0.08 Inexact Rounded
|
||||
resx324 rescale 0.078 -1 -> 0.1 Inexact Rounded
|
||||
resx325 rescale 0.078 0 -> 0 Inexact Rounded
|
||||
resx326 rescale 0.078 +1 -> 0E+1 Inexact Rounded
|
||||
resx327 rescale 0.078 +2 -> 0E+2 Inexact Rounded
|
||||
|
||||
resx330 rescale -0.078 -5 -> -0.07800
|
||||
resx331 rescale -0.078 -4 -> -0.0780
|
||||
resx332 rescale -0.078 -3 -> -0.078
|
||||
resx333 rescale -0.078 -2 -> -0.08 Inexact Rounded
|
||||
resx334 rescale -0.078 -1 -> -0.1 Inexact Rounded
|
||||
resx335 rescale -0.078 0 -> -0 Inexact Rounded
|
||||
resx336 rescale -0.078 +1 -> -0E+1 Inexact Rounded
|
||||
resx337 rescale -0.078 +2 -> -0E+2 Inexact Rounded
|
||||
|
||||
resx340 rescale 0.78 -5 -> 0.78000
|
||||
resx341 rescale 0.78 -4 -> 0.7800
|
||||
resx342 rescale 0.78 -3 -> 0.780
|
||||
resx343 rescale 0.78 -2 -> 0.78
|
||||
resx344 rescale 0.78 -1 -> 0.8 Inexact Rounded
|
||||
resx345 rescale 0.78 0 -> 1 Inexact Rounded
|
||||
resx346 rescale 0.78 +1 -> 0E+1 Inexact Rounded
|
||||
resx347 rescale 0.78 +2 -> 0E+2 Inexact Rounded
|
||||
|
||||
resx350 rescale -0.78 -5 -> -0.78000
|
||||
resx351 rescale -0.78 -4 -> -0.7800
|
||||
resx352 rescale -0.78 -3 -> -0.780
|
||||
resx353 rescale -0.78 -2 -> -0.78
|
||||
resx354 rescale -0.78 -1 -> -0.8 Inexact Rounded
|
||||
resx355 rescale -0.78 0 -> -1 Inexact Rounded
|
||||
resx356 rescale -0.78 +1 -> -0E+1 Inexact Rounded
|
||||
resx357 rescale -0.78 +2 -> -0E+2 Inexact Rounded
|
||||
|
||||
resx360 rescale 7.8 -5 -> 7.80000
|
||||
resx361 rescale 7.8 -4 -> 7.8000
|
||||
resx362 rescale 7.8 -3 -> 7.800
|
||||
resx363 rescale 7.8 -2 -> 7.80
|
||||
resx364 rescale 7.8 -1 -> 7.8
|
||||
resx365 rescale 7.8 0 -> 8 Inexact Rounded
|
||||
resx366 rescale 7.8 +1 -> 1E+1 Inexact Rounded
|
||||
resx367 rescale 7.8 +2 -> 0E+2 Inexact Rounded
|
||||
resx368 rescale 7.8 +3 -> 0E+3 Inexact Rounded
|
||||
|
||||
resx370 rescale -7.8 -5 -> -7.80000
|
||||
resx371 rescale -7.8 -4 -> -7.8000
|
||||
resx372 rescale -7.8 -3 -> -7.800
|
||||
resx373 rescale -7.8 -2 -> -7.80
|
||||
resx374 rescale -7.8 -1 -> -7.8
|
||||
resx375 rescale -7.8 0 -> -8 Inexact Rounded
|
||||
resx376 rescale -7.8 +1 -> -1E+1 Inexact Rounded
|
||||
resx377 rescale -7.8 +2 -> -0E+2 Inexact Rounded
|
||||
resx378 rescale -7.8 +3 -> -0E+3 Inexact Rounded
|
||||
|
||||
-- some individuals
|
||||
precision: 9
|
||||
resx380 rescale 352364.506 -2 -> 352364.51 Inexact Rounded
|
||||
resx381 rescale 3523645.06 -2 -> 3523645.06
|
||||
resx382 rescale 35236450.6 -2 -> NaN Invalid_operation
|
||||
resx383 rescale 352364506 -2 -> NaN Invalid_operation
|
||||
resx384 rescale -352364.506 -2 -> -352364.51 Inexact Rounded
|
||||
resx385 rescale -3523645.06 -2 -> -3523645.06
|
||||
resx386 rescale -35236450.6 -2 -> NaN Invalid_operation
|
||||
resx387 rescale -352364506 -2 -> NaN Invalid_operation
|
||||
|
||||
rounding: down
|
||||
resx389 rescale 35236450.6 -2 -> NaN Invalid_operation
|
||||
-- ? should that one instead have been:
|
||||
-- resx389 rescale 35236450.6 -2 -> NaN Invalid_operation
|
||||
rounding: half_up
|
||||
|
||||
-- and a few more from e-mail discussions
|
||||
precision: 7
|
||||
resx391 rescale 12.34567 -3 -> 12.346 Inexact Rounded
|
||||
resx392 rescale 123.4567 -3 -> 123.457 Inexact Rounded
|
||||
resx393 rescale 1234.567 -3 -> 1234.567
|
||||
resx394 rescale 12345.67 -3 -> NaN Invalid_operation
|
||||
resx395 rescale 123456.7 -3 -> NaN Invalid_operation
|
||||
resx396 rescale 1234567. -3 -> NaN Invalid_operation
|
||||
|
||||
-- some 9999 round-up cases
|
||||
precision: 9
|
||||
resx400 rescale 9.999 -5 -> 9.99900
|
||||
resx401 rescale 9.999 -4 -> 9.9990
|
||||
resx402 rescale 9.999 -3 -> 9.999
|
||||
resx403 rescale 9.999 -2 -> 10.00 Inexact Rounded
|
||||
resx404 rescale 9.999 -1 -> 10.0 Inexact Rounded
|
||||
resx405 rescale 9.999 0 -> 10 Inexact Rounded
|
||||
resx406 rescale 9.999 1 -> 1E+1 Inexact Rounded
|
||||
resx407 rescale 9.999 2 -> 0E+2 Inexact Rounded
|
||||
|
||||
resx410 rescale 0.999 -5 -> 0.99900
|
||||
resx411 rescale 0.999 -4 -> 0.9990
|
||||
resx412 rescale 0.999 -3 -> 0.999
|
||||
resx413 rescale 0.999 -2 -> 1.00 Inexact Rounded
|
||||
resx414 rescale 0.999 -1 -> 1.0 Inexact Rounded
|
||||
resx415 rescale 0.999 0 -> 1 Inexact Rounded
|
||||
resx416 rescale 0.999 1 -> 0E+1 Inexact Rounded
|
||||
|
||||
resx420 rescale 0.0999 -5 -> 0.09990
|
||||
resx421 rescale 0.0999 -4 -> 0.0999
|
||||
resx422 rescale 0.0999 -3 -> 0.100 Inexact Rounded
|
||||
resx423 rescale 0.0999 -2 -> 0.10 Inexact Rounded
|
||||
resx424 rescale 0.0999 -1 -> 0.1 Inexact Rounded
|
||||
resx425 rescale 0.0999 0 -> 0 Inexact Rounded
|
||||
resx426 rescale 0.0999 1 -> 0E+1 Inexact Rounded
|
||||
|
||||
resx430 rescale 0.00999 -5 -> 0.00999
|
||||
resx431 rescale 0.00999 -4 -> 0.0100 Inexact Rounded
|
||||
resx432 rescale 0.00999 -3 -> 0.010 Inexact Rounded
|
||||
resx433 rescale 0.00999 -2 -> 0.01 Inexact Rounded
|
||||
resx434 rescale 0.00999 -1 -> 0.0 Inexact Rounded
|
||||
resx435 rescale 0.00999 0 -> 0 Inexact Rounded
|
||||
resx436 rescale 0.00999 1 -> 0E+1 Inexact Rounded
|
||||
|
||||
resx440 rescale 0.000999 -5 -> 0.00100 Inexact Rounded
|
||||
resx441 rescale 0.000999 -4 -> 0.0010 Inexact Rounded
|
||||
resx442 rescale 0.000999 -3 -> 0.001 Inexact Rounded
|
||||
resx443 rescale 0.000999 -2 -> 0.00 Inexact Rounded
|
||||
resx444 rescale 0.000999 -1 -> 0.0 Inexact Rounded
|
||||
resx445 rescale 0.000999 0 -> 0 Inexact Rounded
|
||||
resx446 rescale 0.000999 1 -> 0E+1 Inexact Rounded
|
||||
|
||||
precision: 8
|
||||
resx449 rescale 9.999E-15 -23 -> NaN Invalid_operation
|
||||
resx450 rescale 9.999E-15 -22 -> 9.9990000E-15
|
||||
resx451 rescale 9.999E-15 -21 -> 9.999000E-15
|
||||
resx452 rescale 9.999E-15 -20 -> 9.99900E-15
|
||||
resx453 rescale 9.999E-15 -19 -> 9.9990E-15
|
||||
resx454 rescale 9.999E-15 -18 -> 9.999E-15
|
||||
resx455 rescale 9.999E-15 -17 -> 1.000E-14 Inexact Rounded
|
||||
resx456 rescale 9.999E-15 -16 -> 1.00E-14 Inexact Rounded
|
||||
resx457 rescale 9.999E-15 -15 -> 1.0E-14 Inexact Rounded
|
||||
resx458 rescale 9.999E-15 -14 -> 1E-14 Inexact Rounded
|
||||
resx459 rescale 9.999E-15 -13 -> 0E-13 Inexact Rounded
|
||||
resx460 rescale 9.999E-15 -12 -> 0E-12 Inexact Rounded
|
||||
resx461 rescale 9.999E-15 -11 -> 0E-11 Inexact Rounded
|
||||
resx462 rescale 9.999E-15 -10 -> 0E-10 Inexact Rounded
|
||||
resx463 rescale 9.999E-15 -9 -> 0E-9 Inexact Rounded
|
||||
resx464 rescale 9.999E-15 -8 -> 0E-8 Inexact Rounded
|
||||
resx465 rescale 9.999E-15 -7 -> 0E-7 Inexact Rounded
|
||||
resx466 rescale 9.999E-15 -6 -> 0.000000 Inexact Rounded
|
||||
resx467 rescale 9.999E-15 -5 -> 0.00000 Inexact Rounded
|
||||
resx468 rescale 9.999E-15 -4 -> 0.0000 Inexact Rounded
|
||||
resx469 rescale 9.999E-15 -3 -> 0.000 Inexact Rounded
|
||||
resx470 rescale 9.999E-15 -2 -> 0.00 Inexact Rounded
|
||||
resx471 rescale 9.999E-15 -1 -> 0.0 Inexact Rounded
|
||||
resx472 rescale 9.999E-15 0 -> 0 Inexact Rounded
|
||||
resx473 rescale 9.999E-15 1 -> 0E+1 Inexact Rounded
|
||||
|
||||
-- long operand checks [rhs checks removed]
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
resx481 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
|
||||
resx482 rescale 1234567800 +1 -> 1.23456780E+9 Rounded
|
||||
resx483 rescale 1234567890 +1 -> 1.23456789E+9 Rounded
|
||||
resx484 rescale 1234567891 +1 -> 1.23456789E+9 Inexact Rounded
|
||||
resx485 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
|
||||
resx486 rescale 1234567896 +1 -> 1.23456790E+9 Inexact Rounded
|
||||
-- a potential double-round
|
||||
resx487 rescale 1234.987643 -4 -> 1234.9876 Inexact Rounded
|
||||
resx488 rescale 1234.987647 -4 -> 1234.9876 Inexact Rounded
|
||||
|
||||
precision: 15
|
||||
resx491 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
|
||||
resx492 rescale 1234567800 +1 -> 1.23456780E+9 Rounded
|
||||
resx493 rescale 1234567890 +1 -> 1.23456789E+9 Rounded
|
||||
resx494 rescale 1234567891 +1 -> 1.23456789E+9 Inexact Rounded
|
||||
resx495 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
|
||||
resx496 rescale 1234567896 +1 -> 1.23456790E+9 Inexact Rounded
|
||||
resx497 rescale 1234.987643 -4 -> 1234.9876 Inexact Rounded
|
||||
resx498 rescale 1234.987647 -4 -> 1234.9876 Inexact Rounded
|
||||
|
||||
-- Zeros
|
||||
resx500 rescale 0 1 -> 0E+1
|
||||
resx501 rescale 0 0 -> 0
|
||||
resx502 rescale 0 -1 -> 0.0
|
||||
resx503 rescale 0.0 -1 -> 0.0
|
||||
resx504 rescale 0.0 0 -> 0
|
||||
resx505 rescale 0.0 +1 -> 0E+1
|
||||
resx506 rescale 0E+1 -1 -> 0.0
|
||||
resx507 rescale 0E+1 0 -> 0
|
||||
resx508 rescale 0E+1 +1 -> 0E+1
|
||||
resx509 rescale -0 1 -> -0E+1
|
||||
resx510 rescale -0 0 -> -0
|
||||
resx511 rescale -0 -1 -> -0.0
|
||||
resx512 rescale -0.0 -1 -> -0.0
|
||||
resx513 rescale -0.0 0 -> -0
|
||||
resx514 rescale -0.0 +1 -> -0E+1
|
||||
resx515 rescale -0E+1 -1 -> -0.0
|
||||
resx516 rescale -0E+1 0 -> -0
|
||||
resx517 rescale -0E+1 +1 -> -0E+1
|
||||
|
||||
-- Suspicious RHS values
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 15
|
||||
resx520 rescale 1.234 999999E+3 -> 0E+999999000 Inexact Rounded
|
||||
resx521 rescale 123.456 999999E+3 -> 0E+999999000 Inexact Rounded
|
||||
resx522 rescale 1.234 999999999 -> 0E+999999999 Inexact Rounded
|
||||
resx523 rescale 123.456 999999999 -> 0E+999999999 Inexact Rounded
|
||||
resx524 rescale 123.456 1000000000 -> NaN Invalid_operation
|
||||
resx525 rescale 123.456 12345678903 -> NaN Invalid_operation
|
||||
-- next four are "won't fit" overflows
|
||||
resx526 rescale 1.234 -999999E+3 -> NaN Invalid_operation
|
||||
resx527 rescale 123.456 -999999E+3 -> NaN Invalid_operation
|
||||
resx528 rescale 1.234 -999999999 -> NaN Invalid_operation
|
||||
resx529 rescale 123.456 -999999999 -> NaN Invalid_operation
|
||||
resx530 rescale 123.456 -1000000014 -> NaN Invalid_operation
|
||||
resx531 rescale 123.456 -12345678903 -> NaN Invalid_operation
|
||||
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 15
|
||||
resx532 rescale 1.234E+999 999 -> 1E+999 Inexact Rounded
|
||||
resx533 rescale 1.234E+998 999 -> 0E+999 Inexact Rounded
|
||||
resx534 rescale 1.234 999 -> 0E+999 Inexact Rounded
|
||||
resx535 rescale 1.234 1000 -> NaN Invalid_operation
|
||||
resx536 rescale 1.234 5000 -> NaN Invalid_operation
|
||||
resx537 rescale 0 -999 -> 0E-999
|
||||
-- next two are "won't fit" overflows
|
||||
resx538 rescale 1.234 -999 -> NaN Invalid_operation
|
||||
resx539 rescale 1.234 -1000 -> NaN Invalid_operation
|
||||
resx540 rescale 1.234 -5000 -> NaN Invalid_operation
|
||||
-- [more below]
|
||||
|
||||
-- check bounds (lhs maybe out of range for destination, etc.)
|
||||
precision: 7
|
||||
resx541 rescale 1E+999 +999 -> 1E+999
|
||||
resx542 rescale 1E+1000 +999 -> NaN Invalid_operation
|
||||
resx543 rescale 1E+999 +1000 -> NaN Invalid_operation
|
||||
resx544 rescale 1E-999 -999 -> 1E-999
|
||||
resx545 rescale 1E-1000 -999 -> 0E-999 Inexact Rounded
|
||||
resx546 rescale 1E-999 -1000 -> 1.0E-999
|
||||
resx547 rescale 1E-1005 -999 -> 0E-999 Inexact Rounded
|
||||
resx548 rescale 1E-1006 -999 -> 0E-999 Inexact Rounded
|
||||
resx549 rescale 1E-1007 -999 -> 0E-999 Inexact Rounded
|
||||
resx550 rescale 1E-998 -1005 -> NaN Invalid_operation -- won't fit
|
||||
resx551 rescale 1E-999 -1005 -> 1.000000E-999
|
||||
resx552 rescale 1E-1000 -1005 -> 1.00000E-1000 Subnormal
|
||||
resx553 rescale 1E-999 -1006 -> NaN Invalid_operation
|
||||
resx554 rescale 1E-999 -1007 -> NaN Invalid_operation
|
||||
-- related subnormal rounding
|
||||
resx555 rescale 1.666666E-999 -1005 -> 1.666666E-999
|
||||
resx556 rescale 1.666666E-1000 -1005 -> 1.66667E-1000 Underflow Subnormal Inexact Rounded
|
||||
resx557 rescale 1.666666E-1001 -1005 -> 1.6667E-1001 Underflow Subnormal Inexact Rounded
|
||||
resx558 rescale 1.666666E-1002 -1005 -> 1.667E-1002 Underflow Subnormal Inexact Rounded
|
||||
resx559 rescale 1.666666E-1003 -1005 -> 1.67E-1003 Underflow Subnormal Inexact Rounded
|
||||
resx560 rescale 1.666666E-1004 -1005 -> 1.7E-1004 Underflow Subnormal Inexact Rounded
|
||||
resx561 rescale 1.666666E-1005 -1005 -> 2E-1005 Underflow Subnormal Inexact Rounded
|
||||
resx562 rescale 1.666666E-1006 -1005 -> 0E-1005 Inexact Rounded
|
||||
resx563 rescale 1.666666E-1007 -1005 -> 0E-1005 Inexact Rounded
|
||||
|
||||
-- fractional RHS, some good and some bad
|
||||
precision: 9
|
||||
resx564 rescale 222 +2.0 -> 2E+2 Inexact Rounded
|
||||
resx565 rescale 222 +2.00000000 -> 2E+2 Inexact Rounded
|
||||
resx566 rescale 222 +2.00100000000 -> NaN Invalid_operation
|
||||
resx567 rescale 222 +2.000001 -> NaN Invalid_operation
|
||||
resx568 rescale 222 +2.000000001 -> NaN Invalid_operation
|
||||
resx569 rescale 222 +2.0000000001 -> NaN Invalid_operation
|
||||
resx570 rescale 222 +2.00000000001 -> NaN Invalid_operation
|
||||
resx571 rescale 222 +2.99999999999 -> NaN Invalid_operation
|
||||
resx572 rescale 222 -2.00000000 -> 222.00
|
||||
resx573 rescale 222 -2.00100000000 -> NaN Invalid_operation
|
||||
resx574 rescale 222 -2.0000001000 -> NaN Invalid_operation
|
||||
resx575 rescale 222 -2.00000000001 -> NaN Invalid_operation
|
||||
resx576 rescale 222 -2.99999999999 -> NaN Invalid_operation
|
||||
|
||||
-- Specials
|
||||
resx580 rescale Inf -Inf -> Infinity
|
||||
resx581 rescale Inf -1000 -> NaN Invalid_operation
|
||||
resx582 rescale Inf -1 -> NaN Invalid_operation
|
||||
resx583 rescale Inf 0 -> NaN Invalid_operation
|
||||
resx584 rescale Inf 1 -> NaN Invalid_operation
|
||||
resx585 rescale Inf 1000 -> NaN Invalid_operation
|
||||
resx586 rescale Inf Inf -> Infinity
|
||||
resx587 rescale -1000 Inf -> NaN Invalid_operation
|
||||
resx588 rescale -Inf Inf -> -Infinity
|
||||
resx589 rescale -1 Inf -> NaN Invalid_operation
|
||||
resx590 rescale 0 Inf -> NaN Invalid_operation
|
||||
resx591 rescale 1 Inf -> NaN Invalid_operation
|
||||
resx592 rescale 1000 Inf -> NaN Invalid_operation
|
||||
resx593 rescale Inf Inf -> Infinity
|
||||
resx594 rescale Inf -0 -> NaN Invalid_operation
|
||||
resx595 rescale -0 Inf -> NaN Invalid_operation
|
||||
|
||||
resx600 rescale -Inf -Inf -> -Infinity
|
||||
resx601 rescale -Inf -1000 -> NaN Invalid_operation
|
||||
resx602 rescale -Inf -1 -> NaN Invalid_operation
|
||||
resx603 rescale -Inf 0 -> NaN Invalid_operation
|
||||
resx604 rescale -Inf 1 -> NaN Invalid_operation
|
||||
resx605 rescale -Inf 1000 -> NaN Invalid_operation
|
||||
resx606 rescale -Inf Inf -> -Infinity
|
||||
resx607 rescale -1000 Inf -> NaN Invalid_operation
|
||||
resx608 rescale -Inf -Inf -> -Infinity
|
||||
resx609 rescale -1 -Inf -> NaN Invalid_operation
|
||||
resx610 rescale 0 -Inf -> NaN Invalid_operation
|
||||
resx611 rescale 1 -Inf -> NaN Invalid_operation
|
||||
resx612 rescale 1000 -Inf -> NaN Invalid_operation
|
||||
resx613 rescale Inf -Inf -> Infinity
|
||||
resx614 rescale -Inf -0 -> NaN Invalid_operation
|
||||
resx615 rescale -0 -Inf -> NaN Invalid_operation
|
||||
|
||||
resx621 rescale NaN -Inf -> NaN
|
||||
resx622 rescale NaN -1000 -> NaN
|
||||
resx623 rescale NaN -1 -> NaN
|
||||
resx624 rescale NaN 0 -> NaN
|
||||
resx625 rescale NaN 1 -> NaN
|
||||
resx626 rescale NaN 1000 -> NaN
|
||||
resx627 rescale NaN Inf -> NaN
|
||||
resx628 rescale NaN NaN -> NaN
|
||||
resx629 rescale -Inf NaN -> NaN
|
||||
resx630 rescale -1000 NaN -> NaN
|
||||
resx631 rescale -1 NaN -> NaN
|
||||
resx632 rescale 0 NaN -> NaN
|
||||
resx633 rescale 1 -NaN -> -NaN
|
||||
resx634 rescale 1000 NaN -> NaN
|
||||
resx635 rescale Inf NaN -> NaN
|
||||
resx636 rescale NaN -0 -> NaN
|
||||
resx637 rescale -0 NaN -> NaN
|
||||
|
||||
resx641 rescale sNaN -Inf -> NaN Invalid_operation
|
||||
resx642 rescale sNaN -1000 -> NaN Invalid_operation
|
||||
resx643 rescale sNaN -1 -> NaN Invalid_operation
|
||||
resx644 rescale sNaN 0 -> NaN Invalid_operation
|
||||
resx645 rescale sNaN 1 -> NaN Invalid_operation
|
||||
resx646 rescale sNaN 1000 -> NaN Invalid_operation
|
||||
resx647 rescale -sNaN NaN -> -NaN Invalid_operation
|
||||
resx648 rescale sNaN -sNaN -> NaN Invalid_operation
|
||||
resx649 rescale NaN sNaN -> NaN Invalid_operation
|
||||
resx650 rescale -Inf sNaN -> NaN Invalid_operation
|
||||
resx651 rescale -1000 sNaN -> NaN Invalid_operation
|
||||
resx652 rescale -1 sNaN -> NaN Invalid_operation
|
||||
resx653 rescale 0 sNaN -> NaN Invalid_operation
|
||||
resx654 rescale 1 -sNaN -> -NaN Invalid_operation
|
||||
resx655 rescale 1000 sNaN -> NaN Invalid_operation
|
||||
resx656 rescale Inf sNaN -> NaN Invalid_operation
|
||||
resx657 rescale NaN sNaN -> NaN Invalid_operation
|
||||
resx658 rescale sNaN -0 -> NaN Invalid_operation
|
||||
resx659 rescale -0 sNaN -> NaN Invalid_operation
|
||||
|
||||
-- propagating NaNs
|
||||
resx661 rescale NaN9 -Inf -> NaN9
|
||||
resx662 rescale NaN81 919 -> NaN81
|
||||
resx663 rescale NaN72 Inf -> NaN72
|
||||
resx664 rescale -NaN66 NaN5 -> -NaN66
|
||||
resx665 rescale -Inf NaN4 -> NaN4
|
||||
resx666 rescale -919 NaN32 -> NaN32
|
||||
resx667 rescale Inf NaN2 -> NaN2
|
||||
|
||||
resx671 rescale sNaN99 -Inf -> NaN99 Invalid_operation
|
||||
resx672 rescale -sNaN98 -11 -> -NaN98 Invalid_operation
|
||||
resx673 rescale sNaN97 NaN -> NaN97 Invalid_operation
|
||||
resx674 rescale sNaN16 sNaN94 -> NaN16 Invalid_operation
|
||||
resx675 rescale NaN95 sNaN93 -> NaN93 Invalid_operation
|
||||
resx676 rescale -Inf sNaN92 -> NaN92 Invalid_operation
|
||||
resx677 rescale 088 -sNaN91 -> -NaN91 Invalid_operation
|
||||
resx678 rescale Inf -sNaN90 -> -NaN90 Invalid_operation
|
||||
resx679 rescale NaN sNaN87 -> NaN87 Invalid_operation
|
||||
|
||||
-- subnormals and underflow
|
||||
precision: 4
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
resx710 rescale 1.00E-999 -999 -> 1E-999 Rounded
|
||||
resx711 rescale 0.1E-999 -1000 -> 1E-1000 Subnormal
|
||||
resx712 rescale 0.10E-999 -1000 -> 1E-1000 Subnormal Rounded
|
||||
resx713 rescale 0.100E-999 -1000 -> 1E-1000 Subnormal Rounded
|
||||
resx714 rescale 0.01E-999 -1001 -> 1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
resx715 rescale 0.999E-999 -999 -> 1E-999 Inexact Rounded
|
||||
resx716 rescale 0.099E-999 -1000 -> 1E-1000 Inexact Rounded Subnormal Underflow
|
||||
|
||||
resx717 rescale 0.009E-999 -1001 -> 1E-1001 Inexact Rounded Subnormal Underflow
|
||||
resx718 rescale 0.001E-999 -1001 -> 0E-1001 Inexact Rounded
|
||||
resx719 rescale 0.0009E-999 -1001 -> 0E-1001 Inexact Rounded
|
||||
resx720 rescale 0.0001E-999 -1001 -> 0E-1001 Inexact Rounded
|
||||
|
||||
resx730 rescale -1.00E-999 -999 -> -1E-999 Rounded
|
||||
resx731 rescale -0.1E-999 -999 -> -0E-999 Rounded Inexact
|
||||
resx732 rescale -0.10E-999 -999 -> -0E-999 Rounded Inexact
|
||||
resx733 rescale -0.100E-999 -999 -> -0E-999 Rounded Inexact
|
||||
resx734 rescale -0.01E-999 -999 -> -0E-999 Inexact Rounded
|
||||
-- next is rounded to Emin
|
||||
resx735 rescale -0.999E-999 -999 -> -1E-999 Inexact Rounded
|
||||
resx736 rescale -0.099E-999 -999 -> -0E-999 Inexact Rounded
|
||||
resx737 rescale -0.009E-999 -999 -> -0E-999 Inexact Rounded
|
||||
resx738 rescale -0.001E-999 -999 -> -0E-999 Inexact Rounded
|
||||
resx739 rescale -0.0001E-999 -999 -> -0E-999 Inexact Rounded
|
||||
|
||||
resx740 rescale -1.00E-999 -1000 -> -1.0E-999 Rounded
|
||||
resx741 rescale -0.1E-999 -1000 -> -1E-1000 Subnormal
|
||||
resx742 rescale -0.10E-999 -1000 -> -1E-1000 Subnormal Rounded
|
||||
resx743 rescale -0.100E-999 -1000 -> -1E-1000 Subnormal Rounded
|
||||
resx744 rescale -0.01E-999 -1000 -> -0E-1000 Inexact Rounded
|
||||
-- next is rounded to Emin
|
||||
resx745 rescale -0.999E-999 -1000 -> -1.0E-999 Inexact Rounded
|
||||
resx746 rescale -0.099E-999 -1000 -> -1E-1000 Inexact Rounded Subnormal Underflow
|
||||
resx747 rescale -0.009E-999 -1000 -> -0E-1000 Inexact Rounded
|
||||
resx748 rescale -0.001E-999 -1000 -> -0E-1000 Inexact Rounded
|
||||
resx749 rescale -0.0001E-999 -1000 -> -0E-1000 Inexact Rounded
|
||||
|
||||
resx750 rescale -1.00E-999 -1001 -> -1.00E-999
|
||||
resx751 rescale -0.1E-999 -1001 -> -1.0E-1000 Subnormal
|
||||
resx752 rescale -0.10E-999 -1001 -> -1.0E-1000 Subnormal
|
||||
resx753 rescale -0.100E-999 -1001 -> -1.0E-1000 Subnormal Rounded
|
||||
resx754 rescale -0.01E-999 -1001 -> -1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
resx755 rescale -0.999E-999 -1001 -> -1.00E-999 Inexact Rounded
|
||||
resx756 rescale -0.099E-999 -1001 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
resx757 rescale -0.009E-999 -1001 -> -1E-1001 Inexact Rounded Subnormal Underflow
|
||||
resx758 rescale -0.001E-999 -1001 -> -0E-1001 Inexact Rounded
|
||||
resx759 rescale -0.0001E-999 -1001 -> -0E-1001 Inexact Rounded
|
||||
|
||||
resx760 rescale -1.00E-999 -1002 -> -1.000E-999
|
||||
resx761 rescale -0.1E-999 -1002 -> -1.00E-1000 Subnormal
|
||||
resx762 rescale -0.10E-999 -1002 -> -1.00E-1000 Subnormal
|
||||
resx763 rescale -0.100E-999 -1002 -> -1.00E-1000 Subnormal
|
||||
resx764 rescale -0.01E-999 -1002 -> -1.0E-1001 Subnormal
|
||||
resx765 rescale -0.999E-999 -1002 -> -9.99E-1000 Subnormal
|
||||
resx766 rescale -0.099E-999 -1002 -> -9.9E-1001 Subnormal
|
||||
resx767 rescale -0.009E-999 -1002 -> -9E-1002 Subnormal
|
||||
resx768 rescale -0.001E-999 -1002 -> -1E-1002 Subnormal
|
||||
resx769 rescale -0.0001E-999 -1002 -> -0E-1002 Inexact Rounded
|
||||
|
||||
-- rhs must be no less than Etiny
|
||||
resx770 rescale -1.00E-999 -1003 -> NaN Invalid_operation
|
||||
resx771 rescale -0.1E-999 -1003 -> NaN Invalid_operation
|
||||
resx772 rescale -0.10E-999 -1003 -> NaN Invalid_operation
|
||||
resx773 rescale -0.100E-999 -1003 -> NaN Invalid_operation
|
||||
resx774 rescale -0.01E-999 -1003 -> NaN Invalid_operation
|
||||
resx775 rescale -0.999E-999 -1003 -> NaN Invalid_operation
|
||||
resx776 rescale -0.099E-999 -1003 -> NaN Invalid_operation
|
||||
resx777 rescale -0.009E-999 -1003 -> NaN Invalid_operation
|
||||
resx778 rescale -0.001E-999 -1003 -> NaN Invalid_operation
|
||||
resx779 rescale -0.0001E-999 -1003 -> NaN Invalid_operation
|
||||
|
||||
precision: 9
|
||||
maxExponent: 999999999
|
||||
minexponent: -999999999
|
||||
|
||||
-- getInt worries
|
||||
resx801 rescale 0 1000000000 -> NaN Invalid_operation
|
||||
resx802 rescale 0 -1000000000 -> 0E-1000000000
|
||||
resx803 rescale 0 2000000000 -> NaN Invalid_operation
|
||||
resx804 rescale 0 -2000000000 -> NaN Invalid_operation
|
||||
resx805 rescale 0 3000000000 -> NaN Invalid_operation
|
||||
resx806 rescale 0 -3000000000 -> NaN Invalid_operation
|
||||
resx807 rescale 0 4000000000 -> NaN Invalid_operation
|
||||
resx808 rescale 0 -4000000000 -> NaN Invalid_operation
|
||||
resx809 rescale 0 5000000000 -> NaN Invalid_operation
|
||||
resx810 rescale 0 -5000000000 -> NaN Invalid_operation
|
||||
resx811 rescale 0 6000000000 -> NaN Invalid_operation
|
||||
resx812 rescale 0 -6000000000 -> NaN Invalid_operation
|
||||
resx813 rescale 0 7000000000 -> NaN Invalid_operation
|
||||
resx814 rescale 0 -7000000000 -> NaN Invalid_operation
|
||||
resx815 rescale 0 8000000000 -> NaN Invalid_operation
|
||||
resx816 rescale 0 -8000000000 -> NaN Invalid_operation
|
||||
resx817 rescale 0 9000000000 -> NaN Invalid_operation
|
||||
resx818 rescale 0 -9000000000 -> NaN Invalid_operation
|
||||
resx819 rescale 0 9999999999 -> NaN Invalid_operation
|
||||
resx820 rescale 0 -9999999999 -> NaN Invalid_operation
|
||||
resx821 rescale 0 10000000000 -> NaN Invalid_operation
|
||||
resx822 rescale 0 -10000000000 -> NaN Invalid_operation
|
||||
|
||||
resx831 rescale 1 0E-1 -> 1
|
||||
resx832 rescale 1 0E-2 -> 1
|
||||
resx833 rescale 1 0E-3 -> 1
|
||||
resx834 rescale 1 0E-4 -> 1
|
||||
resx835 rescale 1 0E-100 -> 1
|
||||
resx836 rescale 1 0E-100000 -> 1
|
||||
resx837 rescale 1 0E+100 -> 1
|
||||
resx838 rescale 1 0E+100000 -> 1
|
||||
|
||||
resx841 rescale 0 5E-1000000 -> NaN Invalid_operation
|
||||
resx842 rescale 0 5E-1000000 -> NaN Invalid_operation
|
||||
resx843 rescale 0 999999999 -> 0E+999999999
|
||||
resx844 rescale 0 1000000000 -> NaN Invalid_operation
|
||||
resx845 rescale 0 -999999999 -> 0E-999999999
|
||||
resx846 rescale 0 -1000000000 -> 0E-1000000000
|
||||
resx847 rescale 0 -1000000001 -> 0E-1000000001
|
||||
resx848 rescale 0 -1000000002 -> 0E-1000000002
|
||||
resx849 rescale 0 -1000000003 -> 0E-1000000003
|
||||
resx850 rescale 0 -1000000004 -> 0E-1000000004
|
||||
resx851 rescale 0 -1000000005 -> 0E-1000000005
|
||||
resx852 rescale 0 -1000000006 -> 0E-1000000006
|
||||
resx853 rescale 0 -1000000007 -> 0E-1000000007
|
||||
resx854 rescale 0 -1000000008 -> NaN Invalid_operation
|
||||
|
||||
resx861 rescale 1 +2147483649 -> NaN Invalid_operation
|
||||
resx862 rescale 1 +2147483648 -> NaN Invalid_operation
|
||||
resx863 rescale 1 +2147483647 -> NaN Invalid_operation
|
||||
resx864 rescale 1 -2147483647 -> NaN Invalid_operation
|
||||
resx865 rescale 1 -2147483648 -> NaN Invalid_operation
|
||||
resx866 rescale 1 -2147483649 -> NaN Invalid_operation
|
||||
|
||||
-- Null tests
|
||||
res900 rescale 10 # -> NaN Invalid_operation
|
||||
res901 rescale # 10 -> NaN Invalid_operation
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,353 @@
|
|||
------------------------------------------------------------------------
|
||||
-- samequantum.decTest -- check quantums match --
|
||||
-- Copyright (c) IBM Corporation, 2001, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minExponent: -999
|
||||
|
||||
samq001 samequantum 0 0 -> 1
|
||||
samq002 samequantum 0 1 -> 1
|
||||
samq003 samequantum 1 0 -> 1
|
||||
samq004 samequantum 1 1 -> 1
|
||||
|
||||
samq011 samequantum 10 1E+1 -> 0
|
||||
samq012 samequantum 10E+1 10E+1 -> 1
|
||||
samq013 samequantum 100 10E+1 -> 0
|
||||
samq014 samequantum 100 1E+2 -> 0
|
||||
samq015 samequantum 0.1 1E-2 -> 0
|
||||
samq016 samequantum 0.1 1E-1 -> 1
|
||||
samq017 samequantum 0.1 1E-0 -> 0
|
||||
samq018 samequantum 999 999 -> 1
|
||||
samq019 samequantum 999E-1 99.9 -> 1
|
||||
samq020 samequantum 111E-1 22.2 -> 1
|
||||
samq021 samequantum 111E-1 1234.2 -> 1
|
||||
|
||||
-- zeros
|
||||
samq030 samequantum 0.0 1.1 -> 1
|
||||
samq031 samequantum 0.0 1.11 -> 0
|
||||
samq032 samequantum 0.0 0 -> 0
|
||||
samq033 samequantum 0.0 0.0 -> 1
|
||||
samq034 samequantum 0.0 0.00 -> 0
|
||||
samq035 samequantum 0E+1 0E+0 -> 0
|
||||
samq036 samequantum 0E+1 0E+1 -> 1
|
||||
samq037 samequantum 0E+1 0E+2 -> 0
|
||||
samq038 samequantum 0E-17 0E-16 -> 0
|
||||
samq039 samequantum 0E-17 0E-17 -> 1
|
||||
samq040 samequantum 0E-17 0E-18 -> 0
|
||||
samq041 samequantum 0E-17 0.0E-15 -> 0
|
||||
samq042 samequantum 0E-17 0.0E-16 -> 1
|
||||
samq043 samequantum 0E-17 0.0E-17 -> 0
|
||||
samq044 samequantum -0E-17 0.0E-16 -> 1
|
||||
samq045 samequantum 0E-17 -0.0E-17 -> 0
|
||||
samq046 samequantum 0E-17 -0.0E-16 -> 1
|
||||
samq047 samequantum -0E-17 0.0E-17 -> 0
|
||||
samq048 samequantum -0E-17 -0.0E-16 -> 1
|
||||
samq049 samequantum -0E-17 -0.0E-17 -> 0
|
||||
|
||||
-- specials & combinations
|
||||
|
||||
samq0110 samequantum -Inf -Inf -> 1
|
||||
samq0111 samequantum -Inf Inf -> 1
|
||||
samq0112 samequantum -Inf NaN -> 0
|
||||
samq0113 samequantum -Inf -7E+3 -> 0
|
||||
samq0114 samequantum -Inf -7 -> 0
|
||||
samq0115 samequantum -Inf -7E-3 -> 0
|
||||
samq0116 samequantum -Inf -0E-3 -> 0
|
||||
samq0117 samequantum -Inf -0 -> 0
|
||||
samq0118 samequantum -Inf -0E+3 -> 0
|
||||
samq0119 samequantum -Inf 0E-3 -> 0
|
||||
samq0120 samequantum -Inf 0 -> 0
|
||||
samq0121 samequantum -Inf 0E+3 -> 0
|
||||
samq0122 samequantum -Inf 7E-3 -> 0
|
||||
samq0123 samequantum -Inf 7 -> 0
|
||||
samq0124 samequantum -Inf 7E+3 -> 0
|
||||
samq0125 samequantum -Inf sNaN -> 0
|
||||
|
||||
samq0210 samequantum Inf -Inf -> 1
|
||||
samq0211 samequantum Inf Inf -> 1
|
||||
samq0212 samequantum Inf NaN -> 0
|
||||
samq0213 samequantum Inf -7E+3 -> 0
|
||||
samq0214 samequantum Inf -7 -> 0
|
||||
samq0215 samequantum Inf -7E-3 -> 0
|
||||
samq0216 samequantum Inf -0E-3 -> 0
|
||||
samq0217 samequantum Inf -0 -> 0
|
||||
samq0218 samequantum Inf -0E+3 -> 0
|
||||
samq0219 samequantum Inf 0E-3 -> 0
|
||||
samq0220 samequantum Inf 0 -> 0
|
||||
samq0221 samequantum Inf 0E+3 -> 0
|
||||
samq0222 samequantum Inf 7E-3 -> 0
|
||||
samq0223 samequantum Inf 7 -> 0
|
||||
samq0224 samequantum Inf 7E+3 -> 0
|
||||
samq0225 samequantum Inf sNaN -> 0
|
||||
|
||||
samq0310 samequantum NaN -Inf -> 0
|
||||
samq0311 samequantum NaN Inf -> 0
|
||||
samq0312 samequantum NaN NaN -> 1
|
||||
samq0313 samequantum NaN -7E+3 -> 0
|
||||
samq0314 samequantum NaN -7 -> 0
|
||||
samq0315 samequantum NaN -7E-3 -> 0
|
||||
samq0316 samequantum NaN -0E-3 -> 0
|
||||
samq0317 samequantum NaN -0 -> 0
|
||||
samq0318 samequantum NaN -0E+3 -> 0
|
||||
samq0319 samequantum NaN 0E-3 -> 0
|
||||
samq0320 samequantum NaN 0 -> 0
|
||||
samq0321 samequantum NaN 0E+3 -> 0
|
||||
samq0322 samequantum NaN 7E-3 -> 0
|
||||
samq0323 samequantum NaN 7 -> 0
|
||||
samq0324 samequantum NaN 7E+3 -> 0
|
||||
samq0325 samequantum NaN sNaN -> 1
|
||||
|
||||
samq0410 samequantum -7E+3 -Inf -> 0
|
||||
samq0411 samequantum -7E+3 Inf -> 0
|
||||
samq0412 samequantum -7E+3 NaN -> 0
|
||||
samq0413 samequantum -7E+3 -7E+3 -> 1
|
||||
samq0414 samequantum -7E+3 -7 -> 0
|
||||
samq0415 samequantum -7E+3 -7E-3 -> 0
|
||||
samq0416 samequantum -7E+3 -0E-3 -> 0
|
||||
samq0417 samequantum -7E+3 -0 -> 0
|
||||
samq0418 samequantum -7E+3 -0E+3 -> 1
|
||||
samq0419 samequantum -7E+3 0E-3 -> 0
|
||||
samq0420 samequantum -7E+3 0 -> 0
|
||||
samq0421 samequantum -7E+3 0E+3 -> 1
|
||||
samq0422 samequantum -7E+3 7E-3 -> 0
|
||||
samq0423 samequantum -7E+3 7 -> 0
|
||||
samq0424 samequantum -7E+3 7E+3 -> 1
|
||||
samq0425 samequantum -7E+3 sNaN -> 0
|
||||
|
||||
samq0510 samequantum -7 -Inf -> 0
|
||||
samq0511 samequantum -7 Inf -> 0
|
||||
samq0512 samequantum -7 NaN -> 0
|
||||
samq0513 samequantum -7 -7E+3 -> 0
|
||||
samq0514 samequantum -7 -7 -> 1
|
||||
samq0515 samequantum -7 -7E-3 -> 0
|
||||
samq0516 samequantum -7 -0E-3 -> 0
|
||||
samq0517 samequantum -7 -0 -> 1
|
||||
samq0518 samequantum -7 -0E+3 -> 0
|
||||
samq0519 samequantum -7 0E-3 -> 0
|
||||
samq0520 samequantum -7 0 -> 1
|
||||
samq0521 samequantum -7 0E+3 -> 0
|
||||
samq0522 samequantum -7 7E-3 -> 0
|
||||
samq0523 samequantum -7 7 -> 1
|
||||
samq0524 samequantum -7 7E+3 -> 0
|
||||
samq0525 samequantum -7 sNaN -> 0
|
||||
|
||||
samq0610 samequantum -7E-3 -Inf -> 0
|
||||
samq0611 samequantum -7E-3 Inf -> 0
|
||||
samq0612 samequantum -7E-3 NaN -> 0
|
||||
samq0613 samequantum -7E-3 -7E+3 -> 0
|
||||
samq0614 samequantum -7E-3 -7 -> 0
|
||||
samq0615 samequantum -7E-3 -7E-3 -> 1
|
||||
samq0616 samequantum -7E-3 -0E-3 -> 1
|
||||
samq0617 samequantum -7E-3 -0 -> 0
|
||||
samq0618 samequantum -7E-3 -0E+3 -> 0
|
||||
samq0619 samequantum -7E-3 0E-3 -> 1
|
||||
samq0620 samequantum -7E-3 0 -> 0
|
||||
samq0621 samequantum -7E-3 0E+3 -> 0
|
||||
samq0622 samequantum -7E-3 7E-3 -> 1
|
||||
samq0623 samequantum -7E-3 7 -> 0
|
||||
samq0624 samequantum -7E-3 7E+3 -> 0
|
||||
samq0625 samequantum -7E-3 sNaN -> 0
|
||||
|
||||
samq0710 samequantum -0E-3 -Inf -> 0
|
||||
samq0711 samequantum -0E-3 Inf -> 0
|
||||
samq0712 samequantum -0E-3 NaN -> 0
|
||||
samq0713 samequantum -0E-3 -7E+3 -> 0
|
||||
samq0714 samequantum -0E-3 -7 -> 0
|
||||
samq0715 samequantum -0E-3 -7E-3 -> 1
|
||||
samq0716 samequantum -0E-3 -0E-3 -> 1
|
||||
samq0717 samequantum -0E-3 -0 -> 0
|
||||
samq0718 samequantum -0E-3 -0E+3 -> 0
|
||||
samq0719 samequantum -0E-3 0E-3 -> 1
|
||||
samq0720 samequantum -0E-3 0 -> 0
|
||||
samq0721 samequantum -0E-3 0E+3 -> 0
|
||||
samq0722 samequantum -0E-3 7E-3 -> 1
|
||||
samq0723 samequantum -0E-3 7 -> 0
|
||||
samq0724 samequantum -0E-3 7E+3 -> 0
|
||||
samq0725 samequantum -0E-3 sNaN -> 0
|
||||
|
||||
samq0810 samequantum -0 -Inf -> 0
|
||||
samq0811 samequantum -0 Inf -> 0
|
||||
samq0812 samequantum -0 NaN -> 0
|
||||
samq0813 samequantum -0 -7E+3 -> 0
|
||||
samq0814 samequantum -0 -7 -> 1
|
||||
samq0815 samequantum -0 -7E-3 -> 0
|
||||
samq0816 samequantum -0 -0E-3 -> 0
|
||||
samq0817 samequantum -0 -0 -> 1
|
||||
samq0818 samequantum -0 -0E+3 -> 0
|
||||
samq0819 samequantum -0 0E-3 -> 0
|
||||
samq0820 samequantum -0 0 -> 1
|
||||
samq0821 samequantum -0 0E+3 -> 0
|
||||
samq0822 samequantum -0 7E-3 -> 0
|
||||
samq0823 samequantum -0 7 -> 1
|
||||
samq0824 samequantum -0 7E+3 -> 0
|
||||
samq0825 samequantum -0 sNaN -> 0
|
||||
|
||||
samq0910 samequantum -0E+3 -Inf -> 0
|
||||
samq0911 samequantum -0E+3 Inf -> 0
|
||||
samq0912 samequantum -0E+3 NaN -> 0
|
||||
samq0913 samequantum -0E+3 -7E+3 -> 1
|
||||
samq0914 samequantum -0E+3 -7 -> 0
|
||||
samq0915 samequantum -0E+3 -7E-3 -> 0
|
||||
samq0916 samequantum -0E+3 -0E-3 -> 0
|
||||
samq0917 samequantum -0E+3 -0 -> 0
|
||||
samq0918 samequantum -0E+3 -0E+3 -> 1
|
||||
samq0919 samequantum -0E+3 0E-3 -> 0
|
||||
samq0920 samequantum -0E+3 0 -> 0
|
||||
samq0921 samequantum -0E+3 0E+3 -> 1
|
||||
samq0922 samequantum -0E+3 7E-3 -> 0
|
||||
samq0923 samequantum -0E+3 7 -> 0
|
||||
samq0924 samequantum -0E+3 7E+3 -> 1
|
||||
samq0925 samequantum -0E+3 sNaN -> 0
|
||||
|
||||
samq1110 samequantum 0E-3 -Inf -> 0
|
||||
samq1111 samequantum 0E-3 Inf -> 0
|
||||
samq1112 samequantum 0E-3 NaN -> 0
|
||||
samq1113 samequantum 0E-3 -7E+3 -> 0
|
||||
samq1114 samequantum 0E-3 -7 -> 0
|
||||
samq1115 samequantum 0E-3 -7E-3 -> 1
|
||||
samq1116 samequantum 0E-3 -0E-3 -> 1
|
||||
samq1117 samequantum 0E-3 -0 -> 0
|
||||
samq1118 samequantum 0E-3 -0E+3 -> 0
|
||||
samq1119 samequantum 0E-3 0E-3 -> 1
|
||||
samq1120 samequantum 0E-3 0 -> 0
|
||||
samq1121 samequantum 0E-3 0E+3 -> 0
|
||||
samq1122 samequantum 0E-3 7E-3 -> 1
|
||||
samq1123 samequantum 0E-3 7 -> 0
|
||||
samq1124 samequantum 0E-3 7E+3 -> 0
|
||||
samq1125 samequantum 0E-3 sNaN -> 0
|
||||
|
||||
samq1210 samequantum 0 -Inf -> 0
|
||||
samq1211 samequantum 0 Inf -> 0
|
||||
samq1212 samequantum 0 NaN -> 0
|
||||
samq1213 samequantum 0 -7E+3 -> 0
|
||||
samq1214 samequantum 0 -7 -> 1
|
||||
samq1215 samequantum 0 -7E-3 -> 0
|
||||
samq1216 samequantum 0 -0E-3 -> 0
|
||||
samq1217 samequantum 0 -0 -> 1
|
||||
samq1218 samequantum 0 -0E+3 -> 0
|
||||
samq1219 samequantum 0 0E-3 -> 0
|
||||
samq1220 samequantum 0 0 -> 1
|
||||
samq1221 samequantum 0 0E+3 -> 0
|
||||
samq1222 samequantum 0 7E-3 -> 0
|
||||
samq1223 samequantum 0 7 -> 1
|
||||
samq1224 samequantum 0 7E+3 -> 0
|
||||
samq1225 samequantum 0 sNaN -> 0
|
||||
|
||||
samq1310 samequantum 0E+3 -Inf -> 0
|
||||
samq1311 samequantum 0E+3 Inf -> 0
|
||||
samq1312 samequantum 0E+3 NaN -> 0
|
||||
samq1313 samequantum 0E+3 -7E+3 -> 1
|
||||
samq1314 samequantum 0E+3 -7 -> 0
|
||||
samq1315 samequantum 0E+3 -7E-3 -> 0
|
||||
samq1316 samequantum 0E+3 -0E-3 -> 0
|
||||
samq1317 samequantum 0E+3 -0 -> 0
|
||||
samq1318 samequantum 0E+3 -0E+3 -> 1
|
||||
samq1319 samequantum 0E+3 0E-3 -> 0
|
||||
samq1320 samequantum 0E+3 0 -> 0
|
||||
samq1321 samequantum 0E+3 0E+3 -> 1
|
||||
samq1322 samequantum 0E+3 7E-3 -> 0
|
||||
samq1323 samequantum 0E+3 7 -> 0
|
||||
samq1324 samequantum 0E+3 7E+3 -> 1
|
||||
samq1325 samequantum 0E+3 sNaN -> 0
|
||||
|
||||
samq1410 samequantum 7E-3 -Inf -> 0
|
||||
samq1411 samequantum 7E-3 Inf -> 0
|
||||
samq1412 samequantum 7E-3 NaN -> 0
|
||||
samq1413 samequantum 7E-3 -7E+3 -> 0
|
||||
samq1414 samequantum 7E-3 -7 -> 0
|
||||
samq1415 samequantum 7E-3 -7E-3 -> 1
|
||||
samq1416 samequantum 7E-3 -0E-3 -> 1
|
||||
samq1417 samequantum 7E-3 -0 -> 0
|
||||
samq1418 samequantum 7E-3 -0E+3 -> 0
|
||||
samq1419 samequantum 7E-3 0E-3 -> 1
|
||||
samq1420 samequantum 7E-3 0 -> 0
|
||||
samq1421 samequantum 7E-3 0E+3 -> 0
|
||||
samq1422 samequantum 7E-3 7E-3 -> 1
|
||||
samq1423 samequantum 7E-3 7 -> 0
|
||||
samq1424 samequantum 7E-3 7E+3 -> 0
|
||||
samq1425 samequantum 7E-3 sNaN -> 0
|
||||
|
||||
samq1510 samequantum 7 -Inf -> 0
|
||||
samq1511 samequantum 7 Inf -> 0
|
||||
samq1512 samequantum 7 NaN -> 0
|
||||
samq1513 samequantum 7 -7E+3 -> 0
|
||||
samq1514 samequantum 7 -7 -> 1
|
||||
samq1515 samequantum 7 -7E-3 -> 0
|
||||
samq1516 samequantum 7 -0E-3 -> 0
|
||||
samq1517 samequantum 7 -0 -> 1
|
||||
samq1518 samequantum 7 -0E+3 -> 0
|
||||
samq1519 samequantum 7 0E-3 -> 0
|
||||
samq1520 samequantum 7 0 -> 1
|
||||
samq1521 samequantum 7 0E+3 -> 0
|
||||
samq1522 samequantum 7 7E-3 -> 0
|
||||
samq1523 samequantum 7 7 -> 1
|
||||
samq1524 samequantum 7 7E+3 -> 0
|
||||
samq1525 samequantum 7 sNaN -> 0
|
||||
|
||||
samq1610 samequantum 7E+3 -Inf -> 0
|
||||
samq1611 samequantum 7E+3 Inf -> 0
|
||||
samq1612 samequantum 7E+3 NaN -> 0
|
||||
samq1613 samequantum 7E+3 -7E+3 -> 1
|
||||
samq1614 samequantum 7E+3 -7 -> 0
|
||||
samq1615 samequantum 7E+3 -7E-3 -> 0
|
||||
samq1616 samequantum 7E+3 -0E-3 -> 0
|
||||
samq1617 samequantum 7E+3 -0 -> 0
|
||||
samq1618 samequantum 7E+3 -0E+3 -> 1
|
||||
samq1619 samequantum 7E+3 0E-3 -> 0
|
||||
samq1620 samequantum 7E+3 0 -> 0
|
||||
samq1621 samequantum 7E+3 0E+3 -> 1
|
||||
samq1622 samequantum 7E+3 7E-3 -> 0
|
||||
samq1623 samequantum 7E+3 7 -> 0
|
||||
samq1624 samequantum 7E+3 7E+3 -> 1
|
||||
samq1625 samequantum 7E+3 sNaN -> 0
|
||||
|
||||
samq1710 samequantum sNaN -Inf -> 0
|
||||
samq1711 samequantum sNaN Inf -> 0
|
||||
samq1712 samequantum sNaN NaN -> 1
|
||||
samq1713 samequantum sNaN -7E+3 -> 0
|
||||
samq1714 samequantum sNaN -7 -> 0
|
||||
samq1715 samequantum sNaN -7E-3 -> 0
|
||||
samq1716 samequantum sNaN -0E-3 -> 0
|
||||
samq1717 samequantum sNaN -0 -> 0
|
||||
samq1718 samequantum sNaN -0E+3 -> 0
|
||||
samq1719 samequantum sNaN 0E-3 -> 0
|
||||
samq1720 samequantum sNaN 0 -> 0
|
||||
samq1721 samequantum sNaN 0E+3 -> 0
|
||||
samq1722 samequantum sNaN 7E-3 -> 0
|
||||
samq1723 samequantum sNaN 7 -> 0
|
||||
samq1724 samequantum sNaN 7E+3 -> 0
|
||||
samq1725 samequantum sNaN sNaN -> 1
|
||||
-- noisy NaNs
|
||||
samq1730 samequantum sNaN3 sNaN3 -> 1
|
||||
samq1731 samequantum sNaN3 sNaN4 -> 1
|
||||
samq1732 samequantum NaN3 NaN3 -> 1
|
||||
samq1733 samequantum NaN3 NaN4 -> 1
|
||||
samq1734 samequantum sNaN3 3 -> 0
|
||||
samq1735 samequantum NaN3 3 -> 0
|
||||
samq1736 samequantum 4 sNaN4 -> 0
|
||||
samq1737 samequantum 3 NaN3 -> 0
|
||||
samq1738 samequantum Inf sNaN4 -> 0
|
||||
samq1739 samequantum -Inf NaN3 -> 0
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,863 @@
|
|||
------------------------------------------------------------------------
|
||||
-- subtract.decTest -- decimal subtraction --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 384
|
||||
minexponent: -383
|
||||
|
||||
-- [first group are 'quick confidence check']
|
||||
subx001 subtract 0 0 -> '0'
|
||||
subx002 subtract 1 1 -> '0'
|
||||
subx003 subtract 1 2 -> '-1'
|
||||
subx004 subtract 2 1 -> '1'
|
||||
subx005 subtract 2 2 -> '0'
|
||||
subx006 subtract 3 2 -> '1'
|
||||
subx007 subtract 2 3 -> '-1'
|
||||
|
||||
subx011 subtract -0 0 -> '-0'
|
||||
subx012 subtract -1 1 -> '-2'
|
||||
subx013 subtract -1 2 -> '-3'
|
||||
subx014 subtract -2 1 -> '-3'
|
||||
subx015 subtract -2 2 -> '-4'
|
||||
subx016 subtract -3 2 -> '-5'
|
||||
subx017 subtract -2 3 -> '-5'
|
||||
|
||||
subx021 subtract 0 -0 -> '0'
|
||||
subx022 subtract 1 -1 -> '2'
|
||||
subx023 subtract 1 -2 -> '3'
|
||||
subx024 subtract 2 -1 -> '3'
|
||||
subx025 subtract 2 -2 -> '4'
|
||||
subx026 subtract 3 -2 -> '5'
|
||||
subx027 subtract 2 -3 -> '5'
|
||||
|
||||
subx030 subtract 11 1 -> 10
|
||||
subx031 subtract 10 1 -> 9
|
||||
subx032 subtract 9 1 -> 8
|
||||
subx033 subtract 1 1 -> 0
|
||||
subx034 subtract 0 1 -> -1
|
||||
subx035 subtract -1 1 -> -2
|
||||
subx036 subtract -9 1 -> -10
|
||||
subx037 subtract -10 1 -> -11
|
||||
subx038 subtract -11 1 -> -12
|
||||
|
||||
subx040 subtract '5.75' '3.3' -> '2.45'
|
||||
subx041 subtract '5' '-3' -> '8'
|
||||
subx042 subtract '-5' '-3' -> '-2'
|
||||
subx043 subtract '-7' '2.5' -> '-9.5'
|
||||
subx044 subtract '0.7' '0.3' -> '0.4'
|
||||
subx045 subtract '1.3' '0.3' -> '1.0'
|
||||
subx046 subtract '1.25' '1.25' -> '0.00'
|
||||
|
||||
subx050 subtract '1.23456789' '1.00000000' -> '0.23456789'
|
||||
subx051 subtract '1.23456789' '1.00000089' -> '0.23456700'
|
||||
subx052 subtract '0.5555555559' '0.0000000001' -> '0.555555556' Inexact Rounded
|
||||
subx053 subtract '0.5555555559' '0.0000000005' -> '0.555555555' Inexact Rounded
|
||||
subx054 subtract '0.4444444444' '0.1111111111' -> '0.333333333' Inexact Rounded
|
||||
subx055 subtract '1.0000000000' '0.00000001' -> '0.999999990' Rounded
|
||||
subx056 subtract '0.4444444444999' '0' -> '0.444444444' Inexact Rounded
|
||||
subx057 subtract '0.4444444445000' '0' -> '0.444444445' Inexact Rounded
|
||||
|
||||
subx060 subtract '70' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
|
||||
subx061 subtract '700' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
|
||||
subx062 subtract '7000' '10000e+9' -> '-9.99999999E+12' Inexact Rounded
|
||||
subx063 subtract '70000' '10000e+9' -> '-9.99999993E+12' Rounded
|
||||
subx064 subtract '700000' '10000e+9' -> '-9.99999930E+12' Rounded
|
||||
-- symmetry:
|
||||
subx065 subtract '10000e+9' '70' -> '1.00000000E+13' Inexact Rounded
|
||||
subx066 subtract '10000e+9' '700' -> '1.00000000E+13' Inexact Rounded
|
||||
subx067 subtract '10000e+9' '7000' -> '9.99999999E+12' Inexact Rounded
|
||||
subx068 subtract '10000e+9' '70000' -> '9.99999993E+12' Rounded
|
||||
subx069 subtract '10000e+9' '700000' -> '9.99999930E+12' Rounded
|
||||
|
||||
-- change precision
|
||||
subx080 subtract '10000e+9' '70000' -> '9.99999993E+12' Rounded
|
||||
precision: 6
|
||||
subx081 subtract '10000e+9' '70000' -> '1.00000E+13' Inexact Rounded
|
||||
precision: 9
|
||||
|
||||
-- some of the next group are really constructor tests
|
||||
subx090 subtract '00.0' '0.0' -> '0.0'
|
||||
subx091 subtract '00.0' '0.00' -> '0.00'
|
||||
subx092 subtract '0.00' '00.0' -> '0.00'
|
||||
subx093 subtract '00.0' '0.00' -> '0.00'
|
||||
subx094 subtract '0.00' '00.0' -> '0.00'
|
||||
subx095 subtract '3' '.3' -> '2.7'
|
||||
subx096 subtract '3.' '.3' -> '2.7'
|
||||
subx097 subtract '3.0' '.3' -> '2.7'
|
||||
subx098 subtract '3.00' '.3' -> '2.70'
|
||||
subx099 subtract '3' '3' -> '0'
|
||||
subx100 subtract '3' '+3' -> '0'
|
||||
subx101 subtract '3' '-3' -> '6'
|
||||
subx102 subtract '3' '0.3' -> '2.7'
|
||||
subx103 subtract '3.' '0.3' -> '2.7'
|
||||
subx104 subtract '3.0' '0.3' -> '2.7'
|
||||
subx105 subtract '3.00' '0.3' -> '2.70'
|
||||
subx106 subtract '3' '3.0' -> '0.0'
|
||||
subx107 subtract '3' '+3.0' -> '0.0'
|
||||
subx108 subtract '3' '-3.0' -> '6.0'
|
||||
|
||||
-- the above all from add; massaged and extended. Now some new ones...
|
||||
-- [particularly important for comparisons]
|
||||
-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7
|
||||
-- with input rounding.
|
||||
subx120 subtract '10.23456784' '10.23456789' -> '-5E-8'
|
||||
subx121 subtract '10.23456785' '10.23456789' -> '-4E-8'
|
||||
subx122 subtract '10.23456786' '10.23456789' -> '-3E-8'
|
||||
subx123 subtract '10.23456787' '10.23456789' -> '-2E-8'
|
||||
subx124 subtract '10.23456788' '10.23456789' -> '-1E-8'
|
||||
subx125 subtract '10.23456789' '10.23456789' -> '0E-8'
|
||||
subx126 subtract '10.23456790' '10.23456789' -> '1E-8'
|
||||
subx127 subtract '10.23456791' '10.23456789' -> '2E-8'
|
||||
subx128 subtract '10.23456792' '10.23456789' -> '3E-8'
|
||||
subx129 subtract '10.23456793' '10.23456789' -> '4E-8'
|
||||
subx130 subtract '10.23456794' '10.23456789' -> '5E-8'
|
||||
subx131 subtract '10.23456781' '10.23456786' -> '-5E-8'
|
||||
subx132 subtract '10.23456782' '10.23456786' -> '-4E-8'
|
||||
subx133 subtract '10.23456783' '10.23456786' -> '-3E-8'
|
||||
subx134 subtract '10.23456784' '10.23456786' -> '-2E-8'
|
||||
subx135 subtract '10.23456785' '10.23456786' -> '-1E-8'
|
||||
subx136 subtract '10.23456786' '10.23456786' -> '0E-8'
|
||||
subx137 subtract '10.23456787' '10.23456786' -> '1E-8'
|
||||
subx138 subtract '10.23456788' '10.23456786' -> '2E-8'
|
||||
subx139 subtract '10.23456789' '10.23456786' -> '3E-8'
|
||||
subx140 subtract '10.23456790' '10.23456786' -> '4E-8'
|
||||
subx141 subtract '10.23456791' '10.23456786' -> '5E-8'
|
||||
subx142 subtract '1' '0.999999999' -> '1E-9'
|
||||
subx143 subtract '0.999999999' '1' -> '-1E-9'
|
||||
subx144 subtract '-10.23456780' '-10.23456786' -> '6E-8'
|
||||
subx145 subtract '-10.23456790' '-10.23456786' -> '-4E-8'
|
||||
subx146 subtract '-10.23456791' '-10.23456786' -> '-5E-8'
|
||||
|
||||
precision: 3
|
||||
subx150 subtract '12345678900000' '9999999999999' -> 2.35E+12 Inexact Rounded
|
||||
subx151 subtract '9999999999999' '12345678900000' -> -2.35E+12 Inexact Rounded
|
||||
precision: 6
|
||||
subx152 subtract '12345678900000' '9999999999999' -> 2.34568E+12 Inexact Rounded
|
||||
subx153 subtract '9999999999999' '12345678900000' -> -2.34568E+12 Inexact Rounded
|
||||
precision: 9
|
||||
subx154 subtract '12345678900000' '9999999999999' -> 2.34567890E+12 Inexact Rounded
|
||||
subx155 subtract '9999999999999' '12345678900000' -> -2.34567890E+12 Inexact Rounded
|
||||
precision: 12
|
||||
subx156 subtract '12345678900000' '9999999999999' -> 2.34567890000E+12 Inexact Rounded
|
||||
subx157 subtract '9999999999999' '12345678900000' -> -2.34567890000E+12 Inexact Rounded
|
||||
precision: 15
|
||||
subx158 subtract '12345678900000' '9999999999999' -> 2345678900001
|
||||
subx159 subtract '9999999999999' '12345678900000' -> -2345678900001
|
||||
precision: 9
|
||||
|
||||
-- additional scaled arithmetic tests [0.97 problem]
|
||||
subx160 subtract '0' '.1' -> '-0.1'
|
||||
subx161 subtract '00' '.97983' -> '-0.97983'
|
||||
subx162 subtract '0' '.9' -> '-0.9'
|
||||
subx163 subtract '0' '0.102' -> '-0.102'
|
||||
subx164 subtract '0' '.4' -> '-0.4'
|
||||
subx165 subtract '0' '.307' -> '-0.307'
|
||||
subx166 subtract '0' '.43822' -> '-0.43822'
|
||||
subx167 subtract '0' '.911' -> '-0.911'
|
||||
subx168 subtract '.0' '.02' -> '-0.02'
|
||||
subx169 subtract '00' '.392' -> '-0.392'
|
||||
subx170 subtract '0' '.26' -> '-0.26'
|
||||
subx171 subtract '0' '0.51' -> '-0.51'
|
||||
subx172 subtract '0' '.2234' -> '-0.2234'
|
||||
subx173 subtract '0' '.2' -> '-0.2'
|
||||
subx174 subtract '.0' '.0008' -> '-0.0008'
|
||||
-- 0. on left
|
||||
subx180 subtract '0.0' '-.1' -> '0.1'
|
||||
subx181 subtract '0.00' '-.97983' -> '0.97983'
|
||||
subx182 subtract '0.0' '-.9' -> '0.9'
|
||||
subx183 subtract '0.0' '-0.102' -> '0.102'
|
||||
subx184 subtract '0.0' '-.4' -> '0.4'
|
||||
subx185 subtract '0.0' '-.307' -> '0.307'
|
||||
subx186 subtract '0.0' '-.43822' -> '0.43822'
|
||||
subx187 subtract '0.0' '-.911' -> '0.911'
|
||||
subx188 subtract '0.0' '-.02' -> '0.02'
|
||||
subx189 subtract '0.00' '-.392' -> '0.392'
|
||||
subx190 subtract '0.0' '-.26' -> '0.26'
|
||||
subx191 subtract '0.0' '-0.51' -> '0.51'
|
||||
subx192 subtract '0.0' '-.2234' -> '0.2234'
|
||||
subx193 subtract '0.0' '-.2' -> '0.2'
|
||||
subx194 subtract '0.0' '-.0008' -> '0.0008'
|
||||
-- negatives of same
|
||||
subx200 subtract '0' '-.1' -> '0.1'
|
||||
subx201 subtract '00' '-.97983' -> '0.97983'
|
||||
subx202 subtract '0' '-.9' -> '0.9'
|
||||
subx203 subtract '0' '-0.102' -> '0.102'
|
||||
subx204 subtract '0' '-.4' -> '0.4'
|
||||
subx205 subtract '0' '-.307' -> '0.307'
|
||||
subx206 subtract '0' '-.43822' -> '0.43822'
|
||||
subx207 subtract '0' '-.911' -> '0.911'
|
||||
subx208 subtract '.0' '-.02' -> '0.02'
|
||||
subx209 subtract '00' '-.392' -> '0.392'
|
||||
subx210 subtract '0' '-.26' -> '0.26'
|
||||
subx211 subtract '0' '-0.51' -> '0.51'
|
||||
subx212 subtract '0' '-.2234' -> '0.2234'
|
||||
subx213 subtract '0' '-.2' -> '0.2'
|
||||
subx214 subtract '.0' '-.0008' -> '0.0008'
|
||||
|
||||
-- more fixed, LHS swaps [really the same as testcases under add]
|
||||
subx220 subtract '-56267E-12' 0 -> '-5.6267E-8'
|
||||
subx221 subtract '-56267E-11' 0 -> '-5.6267E-7'
|
||||
subx222 subtract '-56267E-10' 0 -> '-0.0000056267'
|
||||
subx223 subtract '-56267E-9' 0 -> '-0.000056267'
|
||||
subx224 subtract '-56267E-8' 0 -> '-0.00056267'
|
||||
subx225 subtract '-56267E-7' 0 -> '-0.0056267'
|
||||
subx226 subtract '-56267E-6' 0 -> '-0.056267'
|
||||
subx227 subtract '-56267E-5' 0 -> '-0.56267'
|
||||
subx228 subtract '-56267E-2' 0 -> '-562.67'
|
||||
subx229 subtract '-56267E-1' 0 -> '-5626.7'
|
||||
subx230 subtract '-56267E-0' 0 -> '-56267'
|
||||
-- symmetry ...
|
||||
subx240 subtract 0 '-56267E-12' -> '5.6267E-8'
|
||||
subx241 subtract 0 '-56267E-11' -> '5.6267E-7'
|
||||
subx242 subtract 0 '-56267E-10' -> '0.0000056267'
|
||||
subx243 subtract 0 '-56267E-9' -> '0.000056267'
|
||||
subx244 subtract 0 '-56267E-8' -> '0.00056267'
|
||||
subx245 subtract 0 '-56267E-7' -> '0.0056267'
|
||||
subx246 subtract 0 '-56267E-6' -> '0.056267'
|
||||
subx247 subtract 0 '-56267E-5' -> '0.56267'
|
||||
subx248 subtract 0 '-56267E-2' -> '562.67'
|
||||
subx249 subtract 0 '-56267E-1' -> '5626.7'
|
||||
subx250 subtract 0 '-56267E-0' -> '56267'
|
||||
|
||||
-- now some more from the 'new' add
|
||||
precision: 9
|
||||
subx301 subtract '1.23456789' '1.00000000' -> '0.23456789'
|
||||
subx302 subtract '1.23456789' '1.00000011' -> '0.23456778'
|
||||
|
||||
subx311 subtract '0.4444444444' '0.5555555555' -> '-0.111111111' Inexact Rounded
|
||||
subx312 subtract '0.4444444440' '0.5555555555' -> '-0.111111112' Inexact Rounded
|
||||
subx313 subtract '0.4444444444' '0.5555555550' -> '-0.111111111' Inexact Rounded
|
||||
subx314 subtract '0.44444444449' '0' -> '0.444444444' Inexact Rounded
|
||||
subx315 subtract '0.444444444499' '0' -> '0.444444444' Inexact Rounded
|
||||
subx316 subtract '0.4444444444999' '0' -> '0.444444444' Inexact Rounded
|
||||
subx317 subtract '0.4444444445000' '0' -> '0.444444445' Inexact Rounded
|
||||
subx318 subtract '0.4444444445001' '0' -> '0.444444445' Inexact Rounded
|
||||
subx319 subtract '0.444444444501' '0' -> '0.444444445' Inexact Rounded
|
||||
subx320 subtract '0.44444444451' '0' -> '0.444444445' Inexact Rounded
|
||||
|
||||
-- some carrying effects
|
||||
subx321 subtract '0.9998' '0.0000' -> '0.9998'
|
||||
subx322 subtract '0.9998' '0.0001' -> '0.9997'
|
||||
subx323 subtract '0.9998' '0.0002' -> '0.9996'
|
||||
subx324 subtract '0.9998' '0.0003' -> '0.9995'
|
||||
subx325 subtract '0.9998' '-0.0000' -> '0.9998'
|
||||
subx326 subtract '0.9998' '-0.0001' -> '0.9999'
|
||||
subx327 subtract '0.9998' '-0.0002' -> '1.0000'
|
||||
subx328 subtract '0.9998' '-0.0003' -> '1.0001'
|
||||
|
||||
subx330 subtract '70' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
|
||||
subx331 subtract '700' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
|
||||
subx332 subtract '7000' '10000e+9' -> '-9.99999999E+12' Inexact Rounded
|
||||
subx333 subtract '70000' '10000e+9' -> '-9.99999993E+12' Rounded
|
||||
subx334 subtract '700000' '10000e+9' -> '-9.99999930E+12' Rounded
|
||||
subx335 subtract '7000000' '10000e+9' -> '-9.99999300E+12' Rounded
|
||||
-- symmetry:
|
||||
subx340 subtract '10000e+9' '70' -> '1.00000000E+13' Inexact Rounded
|
||||
subx341 subtract '10000e+9' '700' -> '1.00000000E+13' Inexact Rounded
|
||||
subx342 subtract '10000e+9' '7000' -> '9.99999999E+12' Inexact Rounded
|
||||
subx343 subtract '10000e+9' '70000' -> '9.99999993E+12' Rounded
|
||||
subx344 subtract '10000e+9' '700000' -> '9.99999930E+12' Rounded
|
||||
subx345 subtract '10000e+9' '7000000' -> '9.99999300E+12' Rounded
|
||||
|
||||
-- same, higher precision
|
||||
precision: 15
|
||||
subx346 subtract '10000e+9' '7' -> '9999999999993'
|
||||
subx347 subtract '10000e+9' '70' -> '9999999999930'
|
||||
subx348 subtract '10000e+9' '700' -> '9999999999300'
|
||||
subx349 subtract '10000e+9' '7000' -> '9999999993000'
|
||||
subx350 subtract '10000e+9' '70000' -> '9999999930000'
|
||||
subx351 subtract '10000e+9' '700000' -> '9999999300000'
|
||||
subx352 subtract '7' '10000e+9' -> '-9999999999993'
|
||||
subx353 subtract '70' '10000e+9' -> '-9999999999930'
|
||||
subx354 subtract '700' '10000e+9' -> '-9999999999300'
|
||||
subx355 subtract '7000' '10000e+9' -> '-9999999993000'
|
||||
subx356 subtract '70000' '10000e+9' -> '-9999999930000'
|
||||
subx357 subtract '700000' '10000e+9' -> '-9999999300000'
|
||||
|
||||
-- zero preservation
|
||||
precision: 6
|
||||
subx360 subtract '10000e+9' '70000' -> '1.00000E+13' Inexact Rounded
|
||||
subx361 subtract 1 '0.0001' -> '0.9999'
|
||||
subx362 subtract 1 '0.00001' -> '0.99999'
|
||||
subx363 subtract 1 '0.000001' -> '0.999999'
|
||||
subx364 subtract 1 '0.0000001' -> '1.00000' Inexact Rounded
|
||||
subx365 subtract 1 '0.00000001' -> '1.00000' Inexact Rounded
|
||||
|
||||
-- some funny zeros [in case of bad signum]
|
||||
subx370 subtract 1 0 -> 1
|
||||
subx371 subtract 1 0. -> 1
|
||||
subx372 subtract 1 .0 -> 1.0
|
||||
subx373 subtract 1 0.0 -> 1.0
|
||||
subx374 subtract 0 1 -> -1
|
||||
subx375 subtract 0. 1 -> -1
|
||||
subx376 subtract .0 1 -> -1.0
|
||||
subx377 subtract 0.0 1 -> -1.0
|
||||
|
||||
precision: 9
|
||||
|
||||
-- leading 0 digit before round
|
||||
subx910 subtract -103519362 -51897955.3 -> -51621406.7
|
||||
subx911 subtract 159579.444 89827.5229 -> 69751.9211
|
||||
|
||||
subx920 subtract 333.123456 33.1234566 -> 299.999999 Inexact Rounded
|
||||
subx921 subtract 333.123456 33.1234565 -> 300.000000 Inexact Rounded
|
||||
subx922 subtract 133.123456 33.1234565 -> 99.9999995
|
||||
subx923 subtract 133.123456 33.1234564 -> 99.9999996
|
||||
subx924 subtract 133.123456 33.1234540 -> 100.000002 Rounded
|
||||
subx925 subtract 133.123456 43.1234560 -> 90.0000000
|
||||
subx926 subtract 133.123456 43.1234561 -> 89.9999999
|
||||
subx927 subtract 133.123456 43.1234566 -> 89.9999994
|
||||
subx928 subtract 101.123456 91.1234566 -> 9.9999994
|
||||
subx929 subtract 101.123456 99.1234566 -> 1.9999994
|
||||
|
||||
-- more of the same; probe for cluster boundary problems
|
||||
precision: 1
|
||||
subx930 subtract 11 2 -> 9
|
||||
precision: 2
|
||||
subx932 subtract 101 2 -> 99
|
||||
precision: 3
|
||||
subx934 subtract 101 2.1 -> 98.9
|
||||
subx935 subtract 101 92.01 -> 8.99
|
||||
precision: 4
|
||||
subx936 subtract 101 2.01 -> 98.99
|
||||
subx937 subtract 101 92.01 -> 8.99
|
||||
subx938 subtract 101 92.006 -> 8.994
|
||||
precision: 5
|
||||
subx939 subtract 101 2.001 -> 98.999
|
||||
subx940 subtract 101 92.001 -> 8.999
|
||||
subx941 subtract 101 92.0006 -> 8.9994
|
||||
precision: 6
|
||||
subx942 subtract 101 2.0001 -> 98.9999
|
||||
subx943 subtract 101 92.0001 -> 8.9999
|
||||
subx944 subtract 101 92.00006 -> 8.99994
|
||||
precision: 7
|
||||
subx945 subtract 101 2.00001 -> 98.99999
|
||||
subx946 subtract 101 92.00001 -> 8.99999
|
||||
subx947 subtract 101 92.000006 -> 8.999994
|
||||
precision: 8
|
||||
subx948 subtract 101 2.000001 -> 98.999999
|
||||
subx949 subtract 101 92.000001 -> 8.999999
|
||||
subx950 subtract 101 92.0000006 -> 8.9999994
|
||||
precision: 9
|
||||
subx951 subtract 101 2.0000001 -> 98.9999999
|
||||
subx952 subtract 101 92.0000001 -> 8.9999999
|
||||
subx953 subtract 101 92.00000006 -> 8.99999994
|
||||
|
||||
precision: 9
|
||||
|
||||
-- more LHS swaps [were fixed]
|
||||
subx390 subtract '-56267E-10' 0 -> '-0.0000056267'
|
||||
subx391 subtract '-56267E-6' 0 -> '-0.056267'
|
||||
subx392 subtract '-56267E-5' 0 -> '-0.56267'
|
||||
subx393 subtract '-56267E-4' 0 -> '-5.6267'
|
||||
subx394 subtract '-56267E-3' 0 -> '-56.267'
|
||||
subx395 subtract '-56267E-2' 0 -> '-562.67'
|
||||
subx396 subtract '-56267E-1' 0 -> '-5626.7'
|
||||
subx397 subtract '-56267E-0' 0 -> '-56267'
|
||||
subx398 subtract '-5E-10' 0 -> '-5E-10'
|
||||
subx399 subtract '-5E-7' 0 -> '-5E-7'
|
||||
subx400 subtract '-5E-6' 0 -> '-0.000005'
|
||||
subx401 subtract '-5E-5' 0 -> '-0.00005'
|
||||
subx402 subtract '-5E-4' 0 -> '-0.0005'
|
||||
subx403 subtract '-5E-1' 0 -> '-0.5'
|
||||
subx404 subtract '-5E0' 0 -> '-5'
|
||||
subx405 subtract '-5E1' 0 -> '-50'
|
||||
subx406 subtract '-5E5' 0 -> '-500000'
|
||||
subx407 subtract '-5E8' 0 -> '-500000000'
|
||||
subx408 subtract '-5E9' 0 -> '-5.00000000E+9' Rounded
|
||||
subx409 subtract '-5E10' 0 -> '-5.00000000E+10' Rounded
|
||||
subx410 subtract '-5E11' 0 -> '-5.00000000E+11' Rounded
|
||||
subx411 subtract '-5E100' 0 -> '-5.00000000E+100' Rounded
|
||||
|
||||
-- more RHS swaps [were fixed]
|
||||
subx420 subtract 0 '-56267E-10' -> '0.0000056267'
|
||||
subx421 subtract 0 '-56267E-6' -> '0.056267'
|
||||
subx422 subtract 0 '-56267E-5' -> '0.56267'
|
||||
subx423 subtract 0 '-56267E-4' -> '5.6267'
|
||||
subx424 subtract 0 '-56267E-3' -> '56.267'
|
||||
subx425 subtract 0 '-56267E-2' -> '562.67'
|
||||
subx426 subtract 0 '-56267E-1' -> '5626.7'
|
||||
subx427 subtract 0 '-56267E-0' -> '56267'
|
||||
subx428 subtract 0 '-5E-10' -> '5E-10'
|
||||
subx429 subtract 0 '-5E-7' -> '5E-7'
|
||||
subx430 subtract 0 '-5E-6' -> '0.000005'
|
||||
subx431 subtract 0 '-5E-5' -> '0.00005'
|
||||
subx432 subtract 0 '-5E-4' -> '0.0005'
|
||||
subx433 subtract 0 '-5E-1' -> '0.5'
|
||||
subx434 subtract 0 '-5E0' -> '5'
|
||||
subx435 subtract 0 '-5E1' -> '50'
|
||||
subx436 subtract 0 '-5E5' -> '500000'
|
||||
subx437 subtract 0 '-5E8' -> '500000000'
|
||||
subx438 subtract 0 '-5E9' -> '5.00000000E+9' Rounded
|
||||
subx439 subtract 0 '-5E10' -> '5.00000000E+10' Rounded
|
||||
subx440 subtract 0 '-5E11' -> '5.00000000E+11' Rounded
|
||||
subx441 subtract 0 '-5E100' -> '5.00000000E+100' Rounded
|
||||
|
||||
|
||||
-- try borderline precision, with carries, etc.
|
||||
precision: 15
|
||||
subx461 subtract '1E+12' '1' -> '999999999999'
|
||||
subx462 subtract '1E+12' '-1.11' -> '1000000000001.11'
|
||||
subx463 subtract '1.11' '-1E+12' -> '1000000000001.11'
|
||||
subx464 subtract '-1' '-1E+12' -> '999999999999'
|
||||
subx465 subtract '7E+12' '1' -> '6999999999999'
|
||||
subx466 subtract '7E+12' '-1.11' -> '7000000000001.11'
|
||||
subx467 subtract '1.11' '-7E+12' -> '7000000000001.11'
|
||||
subx468 subtract '-1' '-7E+12' -> '6999999999999'
|
||||
|
||||
-- 123456789012345 123456789012345 1 23456789012345
|
||||
subx470 subtract '0.444444444444444' '-0.555555555555563' -> '1.00000000000001' Inexact Rounded
|
||||
subx471 subtract '0.444444444444444' '-0.555555555555562' -> '1.00000000000001' Inexact Rounded
|
||||
subx472 subtract '0.444444444444444' '-0.555555555555561' -> '1.00000000000001' Inexact Rounded
|
||||
subx473 subtract '0.444444444444444' '-0.555555555555560' -> '1.00000000000000' Inexact Rounded
|
||||
subx474 subtract '0.444444444444444' '-0.555555555555559' -> '1.00000000000000' Inexact Rounded
|
||||
subx475 subtract '0.444444444444444' '-0.555555555555558' -> '1.00000000000000' Inexact Rounded
|
||||
subx476 subtract '0.444444444444444' '-0.555555555555557' -> '1.00000000000000' Inexact Rounded
|
||||
subx477 subtract '0.444444444444444' '-0.555555555555556' -> '1.00000000000000' Rounded
|
||||
subx478 subtract '0.444444444444444' '-0.555555555555555' -> '0.999999999999999'
|
||||
subx479 subtract '0.444444444444444' '-0.555555555555554' -> '0.999999999999998'
|
||||
subx480 subtract '0.444444444444444' '-0.555555555555553' -> '0.999999999999997'
|
||||
subx481 subtract '0.444444444444444' '-0.555555555555552' -> '0.999999999999996'
|
||||
subx482 subtract '0.444444444444444' '-0.555555555555551' -> '0.999999999999995'
|
||||
subx483 subtract '0.444444444444444' '-0.555555555555550' -> '0.999999999999994'
|
||||
|
||||
-- and some more, including residue effects and different roundings
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
subx500 subtract '123456789' 0 -> '123456789'
|
||||
subx501 subtract '123456789' 0.000000001 -> '123456789' Inexact Rounded
|
||||
subx502 subtract '123456789' 0.000001 -> '123456789' Inexact Rounded
|
||||
subx503 subtract '123456789' 0.1 -> '123456789' Inexact Rounded
|
||||
subx504 subtract '123456789' 0.4 -> '123456789' Inexact Rounded
|
||||
subx505 subtract '123456789' 0.49 -> '123456789' Inexact Rounded
|
||||
subx506 subtract '123456789' 0.499999 -> '123456789' Inexact Rounded
|
||||
subx507 subtract '123456789' 0.499999999 -> '123456789' Inexact Rounded
|
||||
subx508 subtract '123456789' 0.5 -> '123456789' Inexact Rounded
|
||||
subx509 subtract '123456789' 0.500000001 -> '123456788' Inexact Rounded
|
||||
subx510 subtract '123456789' 0.500001 -> '123456788' Inexact Rounded
|
||||
subx511 subtract '123456789' 0.51 -> '123456788' Inexact Rounded
|
||||
subx512 subtract '123456789' 0.6 -> '123456788' Inexact Rounded
|
||||
subx513 subtract '123456789' 0.9 -> '123456788' Inexact Rounded
|
||||
subx514 subtract '123456789' 0.99999 -> '123456788' Inexact Rounded
|
||||
subx515 subtract '123456789' 0.999999999 -> '123456788' Inexact Rounded
|
||||
subx516 subtract '123456789' 1 -> '123456788'
|
||||
subx517 subtract '123456789' 1.000000001 -> '123456788' Inexact Rounded
|
||||
subx518 subtract '123456789' 1.00001 -> '123456788' Inexact Rounded
|
||||
subx519 subtract '123456789' 1.1 -> '123456788' Inexact Rounded
|
||||
|
||||
rounding: half_even
|
||||
subx520 subtract '123456789' 0 -> '123456789'
|
||||
subx521 subtract '123456789' 0.000000001 -> '123456789' Inexact Rounded
|
||||
subx522 subtract '123456789' 0.000001 -> '123456789' Inexact Rounded
|
||||
subx523 subtract '123456789' 0.1 -> '123456789' Inexact Rounded
|
||||
subx524 subtract '123456789' 0.4 -> '123456789' Inexact Rounded
|
||||
subx525 subtract '123456789' 0.49 -> '123456789' Inexact Rounded
|
||||
subx526 subtract '123456789' 0.499999 -> '123456789' Inexact Rounded
|
||||
subx527 subtract '123456789' 0.499999999 -> '123456789' Inexact Rounded
|
||||
subx528 subtract '123456789' 0.5 -> '123456788' Inexact Rounded
|
||||
subx529 subtract '123456789' 0.500000001 -> '123456788' Inexact Rounded
|
||||
subx530 subtract '123456789' 0.500001 -> '123456788' Inexact Rounded
|
||||
subx531 subtract '123456789' 0.51 -> '123456788' Inexact Rounded
|
||||
subx532 subtract '123456789' 0.6 -> '123456788' Inexact Rounded
|
||||
subx533 subtract '123456789' 0.9 -> '123456788' Inexact Rounded
|
||||
subx534 subtract '123456789' 0.99999 -> '123456788' Inexact Rounded
|
||||
subx535 subtract '123456789' 0.999999999 -> '123456788' Inexact Rounded
|
||||
subx536 subtract '123456789' 1 -> '123456788'
|
||||
subx537 subtract '123456789' 1.00000001 -> '123456788' Inexact Rounded
|
||||
subx538 subtract '123456789' 1.00001 -> '123456788' Inexact Rounded
|
||||
subx539 subtract '123456789' 1.1 -> '123456788' Inexact Rounded
|
||||
-- critical few with even bottom digit...
|
||||
subx540 subtract '123456788' 0.499999999 -> '123456788' Inexact Rounded
|
||||
subx541 subtract '123456788' 0.5 -> '123456788' Inexact Rounded
|
||||
subx542 subtract '123456788' 0.500000001 -> '123456787' Inexact Rounded
|
||||
|
||||
rounding: down
|
||||
subx550 subtract '123456789' 0 -> '123456789'
|
||||
subx551 subtract '123456789' 0.000000001 -> '123456788' Inexact Rounded
|
||||
subx552 subtract '123456789' 0.000001 -> '123456788' Inexact Rounded
|
||||
subx553 subtract '123456789' 0.1 -> '123456788' Inexact Rounded
|
||||
subx554 subtract '123456789' 0.4 -> '123456788' Inexact Rounded
|
||||
subx555 subtract '123456789' 0.49 -> '123456788' Inexact Rounded
|
||||
subx556 subtract '123456789' 0.499999 -> '123456788' Inexact Rounded
|
||||
subx557 subtract '123456789' 0.499999999 -> '123456788' Inexact Rounded
|
||||
subx558 subtract '123456789' 0.5 -> '123456788' Inexact Rounded
|
||||
subx559 subtract '123456789' 0.500000001 -> '123456788' Inexact Rounded
|
||||
subx560 subtract '123456789' 0.500001 -> '123456788' Inexact Rounded
|
||||
subx561 subtract '123456789' 0.51 -> '123456788' Inexact Rounded
|
||||
subx562 subtract '123456789' 0.6 -> '123456788' Inexact Rounded
|
||||
subx563 subtract '123456789' 0.9 -> '123456788' Inexact Rounded
|
||||
subx564 subtract '123456789' 0.99999 -> '123456788' Inexact Rounded
|
||||
subx565 subtract '123456789' 0.999999999 -> '123456788' Inexact Rounded
|
||||
subx566 subtract '123456789' 1 -> '123456788'
|
||||
subx567 subtract '123456789' 1.00000001 -> '123456787' Inexact Rounded
|
||||
subx568 subtract '123456789' 1.00001 -> '123456787' Inexact Rounded
|
||||
subx569 subtract '123456789' 1.1 -> '123456787' Inexact Rounded
|
||||
|
||||
-- symmetry...
|
||||
rounding: half_up
|
||||
subx600 subtract 0 '123456789' -> '-123456789'
|
||||
subx601 subtract 0.000000001 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx602 subtract 0.000001 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx603 subtract 0.1 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx604 subtract 0.4 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx605 subtract 0.49 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx606 subtract 0.499999 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx607 subtract 0.499999999 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx608 subtract 0.5 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx609 subtract 0.500000001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx610 subtract 0.500001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx611 subtract 0.51 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx612 subtract 0.6 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx613 subtract 0.9 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx614 subtract 0.99999 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx615 subtract 0.999999999 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx616 subtract 1 '123456789' -> '-123456788'
|
||||
subx617 subtract 1.000000001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx618 subtract 1.00001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx619 subtract 1.1 '123456789' -> '-123456788' Inexact Rounded
|
||||
|
||||
rounding: half_even
|
||||
subx620 subtract 0 '123456789' -> '-123456789'
|
||||
subx621 subtract 0.000000001 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx622 subtract 0.000001 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx623 subtract 0.1 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx624 subtract 0.4 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx625 subtract 0.49 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx626 subtract 0.499999 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx627 subtract 0.499999999 '123456789' -> '-123456789' Inexact Rounded
|
||||
subx628 subtract 0.5 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx629 subtract 0.500000001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx630 subtract 0.500001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx631 subtract 0.51 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx632 subtract 0.6 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx633 subtract 0.9 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx634 subtract 0.99999 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx635 subtract 0.999999999 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx636 subtract 1 '123456789' -> '-123456788'
|
||||
subx637 subtract 1.00000001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx638 subtract 1.00001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx639 subtract 1.1 '123456789' -> '-123456788' Inexact Rounded
|
||||
-- critical few with even bottom digit...
|
||||
subx640 subtract 0.499999999 '123456788' -> '-123456788' Inexact Rounded
|
||||
subx641 subtract 0.5 '123456788' -> '-123456788' Inexact Rounded
|
||||
subx642 subtract 0.500000001 '123456788' -> '-123456787' Inexact Rounded
|
||||
|
||||
rounding: down
|
||||
subx650 subtract 0 '123456789' -> '-123456789'
|
||||
subx651 subtract 0.000000001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx652 subtract 0.000001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx653 subtract 0.1 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx654 subtract 0.4 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx655 subtract 0.49 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx656 subtract 0.499999 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx657 subtract 0.499999999 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx658 subtract 0.5 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx659 subtract 0.500000001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx660 subtract 0.500001 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx661 subtract 0.51 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx662 subtract 0.6 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx663 subtract 0.9 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx664 subtract 0.99999 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx665 subtract 0.999999999 '123456789' -> '-123456788' Inexact Rounded
|
||||
subx666 subtract 1 '123456789' -> '-123456788'
|
||||
subx667 subtract 1.00000001 '123456789' -> '-123456787' Inexact Rounded
|
||||
subx668 subtract 1.00001 '123456789' -> '-123456787' Inexact Rounded
|
||||
subx669 subtract 1.1 '123456789' -> '-123456787' Inexact Rounded
|
||||
|
||||
|
||||
-- lots of leading zeros in intermediate result, and showing effects of
|
||||
-- input rounding would have affected the following
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
subx670 subtract '123456789' '123456788.1' -> 0.9
|
||||
subx671 subtract '123456789' '123456788.9' -> 0.1
|
||||
subx672 subtract '123456789' '123456789.1' -> -0.1
|
||||
subx673 subtract '123456789' '123456789.5' -> -0.5
|
||||
subx674 subtract '123456789' '123456789.9' -> -0.9
|
||||
|
||||
rounding: half_even
|
||||
subx680 subtract '123456789' '123456788.1' -> 0.9
|
||||
subx681 subtract '123456789' '123456788.9' -> 0.1
|
||||
subx682 subtract '123456789' '123456789.1' -> -0.1
|
||||
subx683 subtract '123456789' '123456789.5' -> -0.5
|
||||
subx684 subtract '123456789' '123456789.9' -> -0.9
|
||||
|
||||
subx685 subtract '123456788' '123456787.1' -> 0.9
|
||||
subx686 subtract '123456788' '123456787.9' -> 0.1
|
||||
subx687 subtract '123456788' '123456788.1' -> -0.1
|
||||
subx688 subtract '123456788' '123456788.5' -> -0.5
|
||||
subx689 subtract '123456788' '123456788.9' -> -0.9
|
||||
|
||||
rounding: down
|
||||
subx690 subtract '123456789' '123456788.1' -> 0.9
|
||||
subx691 subtract '123456789' '123456788.9' -> 0.1
|
||||
subx692 subtract '123456789' '123456789.1' -> -0.1
|
||||
subx693 subtract '123456789' '123456789.5' -> -0.5
|
||||
subx694 subtract '123456789' '123456789.9' -> -0.9
|
||||
|
||||
-- input preparation tests
|
||||
rounding: half_up
|
||||
precision: 3
|
||||
|
||||
subx700 subtract '12345678900000' -9999999999999 -> '2.23E+13' Inexact Rounded
|
||||
subx701 subtract '9999999999999' -12345678900000 -> '2.23E+13' Inexact Rounded
|
||||
subx702 subtract '12E+3' '-3456' -> '1.55E+4' Inexact Rounded
|
||||
subx703 subtract '12E+3' '-3446' -> '1.54E+4' Inexact Rounded
|
||||
subx704 subtract '12E+3' '-3454' -> '1.55E+4' Inexact Rounded
|
||||
subx705 subtract '12E+3' '-3444' -> '1.54E+4' Inexact Rounded
|
||||
|
||||
subx706 subtract '3456' '-12E+3' -> '1.55E+4' Inexact Rounded
|
||||
subx707 subtract '3446' '-12E+3' -> '1.54E+4' Inexact Rounded
|
||||
subx708 subtract '3454' '-12E+3' -> '1.55E+4' Inexact Rounded
|
||||
subx709 subtract '3444' '-12E+3' -> '1.54E+4' Inexact Rounded
|
||||
|
||||
-- overflow and underflow tests [subnormals now possible]
|
||||
maxexponent: 999999999
|
||||
minexponent: -999999999
|
||||
precision: 9
|
||||
rounding: down
|
||||
subx710 subtract 1E+999999999 -9E+999999999 -> 9.99999999E+999999999 Overflow Inexact Rounded
|
||||
subx711 subtract 9E+999999999 -1E+999999999 -> 9.99999999E+999999999 Overflow Inexact Rounded
|
||||
rounding: half_up
|
||||
subx712 subtract 1E+999999999 -9E+999999999 -> Infinity Overflow Inexact Rounded
|
||||
subx713 subtract 9E+999999999 -1E+999999999 -> Infinity Overflow Inexact Rounded
|
||||
subx714 subtract -1.1E-999999999 -1E-999999999 -> -1E-1000000000 Subnormal
|
||||
subx715 subtract 1E-999999999 +1.1e-999999999 -> -1E-1000000000 Subnormal
|
||||
subx716 subtract -1E+999999999 +9E+999999999 -> -Infinity Overflow Inexact Rounded
|
||||
subx717 subtract -9E+999999999 +1E+999999999 -> -Infinity Overflow Inexact Rounded
|
||||
subx718 subtract +1.1E-999999999 +1E-999999999 -> 1E-1000000000 Subnormal
|
||||
subx719 subtract -1E-999999999 -1.1e-999999999 -> 1E-1000000000 Subnormal
|
||||
|
||||
precision: 3
|
||||
subx720 subtract 1 9.999E+999999999 -> -Infinity Inexact Overflow Rounded
|
||||
subx721 subtract 1 -9.999E+999999999 -> Infinity Inexact Overflow Rounded
|
||||
subx722 subtract 9.999E+999999999 1 -> Infinity Inexact Overflow Rounded
|
||||
subx723 subtract -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
|
||||
subx724 subtract 1 9.999E+999999999 -> -Infinity Inexact Overflow Rounded
|
||||
subx725 subtract 1 -9.999E+999999999 -> Infinity Inexact Overflow Rounded
|
||||
subx726 subtract 9.999E+999999999 1 -> Infinity Inexact Overflow Rounded
|
||||
subx727 subtract -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
|
||||
|
||||
-- [more below]
|
||||
|
||||
-- long operand checks
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
precision: 9
|
||||
sub731 subtract 12345678000 0 -> 1.23456780E+10 Rounded
|
||||
sub732 subtract 0 12345678000 -> -1.23456780E+10 Rounded
|
||||
sub733 subtract 1234567800 0 -> 1.23456780E+9 Rounded
|
||||
sub734 subtract 0 1234567800 -> -1.23456780E+9 Rounded
|
||||
sub735 subtract 1234567890 0 -> 1.23456789E+9 Rounded
|
||||
sub736 subtract 0 1234567890 -> -1.23456789E+9 Rounded
|
||||
sub737 subtract 1234567891 0 -> 1.23456789E+9 Inexact Rounded
|
||||
sub738 subtract 0 1234567891 -> -1.23456789E+9 Inexact Rounded
|
||||
sub739 subtract 12345678901 0 -> 1.23456789E+10 Inexact Rounded
|
||||
sub740 subtract 0 12345678901 -> -1.23456789E+10 Inexact Rounded
|
||||
sub741 subtract 1234567896 0 -> 1.23456790E+9 Inexact Rounded
|
||||
sub742 subtract 0 1234567896 -> -1.23456790E+9 Inexact Rounded
|
||||
|
||||
precision: 15
|
||||
sub751 subtract 12345678000 0 -> 12345678000
|
||||
sub752 subtract 0 12345678000 -> -12345678000
|
||||
sub753 subtract 1234567800 0 -> 1234567800
|
||||
sub754 subtract 0 1234567800 -> -1234567800
|
||||
sub755 subtract 1234567890 0 -> 1234567890
|
||||
sub756 subtract 0 1234567890 -> -1234567890
|
||||
sub757 subtract 1234567891 0 -> 1234567891
|
||||
sub758 subtract 0 1234567891 -> -1234567891
|
||||
sub759 subtract 12345678901 0 -> 12345678901
|
||||
sub760 subtract 0 12345678901 -> -12345678901
|
||||
sub761 subtract 1234567896 0 -> 1234567896
|
||||
sub762 subtract 0 1234567896 -> -1234567896
|
||||
|
||||
-- Specials
|
||||
subx780 subtract -Inf Inf -> -Infinity
|
||||
subx781 subtract -Inf 1000 -> -Infinity
|
||||
subx782 subtract -Inf 1 -> -Infinity
|
||||
subx783 subtract -Inf -0 -> -Infinity
|
||||
subx784 subtract -Inf -1 -> -Infinity
|
||||
subx785 subtract -Inf -1000 -> -Infinity
|
||||
subx787 subtract -1000 Inf -> -Infinity
|
||||
subx788 subtract -Inf Inf -> -Infinity
|
||||
subx789 subtract -1 Inf -> -Infinity
|
||||
subx790 subtract 0 Inf -> -Infinity
|
||||
subx791 subtract 1 Inf -> -Infinity
|
||||
subx792 subtract 1000 Inf -> -Infinity
|
||||
|
||||
subx800 subtract Inf Inf -> NaN Invalid_operation
|
||||
subx801 subtract Inf 1000 -> Infinity
|
||||
subx802 subtract Inf 1 -> Infinity
|
||||
subx803 subtract Inf 0 -> Infinity
|
||||
subx804 subtract Inf -0 -> Infinity
|
||||
subx805 subtract Inf -1 -> Infinity
|
||||
subx806 subtract Inf -1000 -> Infinity
|
||||
subx807 subtract Inf -Inf -> Infinity
|
||||
subx808 subtract -1000 -Inf -> Infinity
|
||||
subx809 subtract -Inf -Inf -> NaN Invalid_operation
|
||||
subx810 subtract -1 -Inf -> Infinity
|
||||
subx811 subtract -0 -Inf -> Infinity
|
||||
subx812 subtract 0 -Inf -> Infinity
|
||||
subx813 subtract 1 -Inf -> Infinity
|
||||
subx814 subtract 1000 -Inf -> Infinity
|
||||
subx815 subtract Inf -Inf -> Infinity
|
||||
|
||||
subx821 subtract NaN Inf -> NaN
|
||||
subx822 subtract -NaN 1000 -> -NaN
|
||||
subx823 subtract NaN 1 -> NaN
|
||||
subx824 subtract NaN 0 -> NaN
|
||||
subx825 subtract NaN -0 -> NaN
|
||||
subx826 subtract NaN -1 -> NaN
|
||||
subx827 subtract NaN -1000 -> NaN
|
||||
subx828 subtract NaN -Inf -> NaN
|
||||
subx829 subtract -NaN NaN -> -NaN
|
||||
subx830 subtract -Inf NaN -> NaN
|
||||
subx831 subtract -1000 NaN -> NaN
|
||||
subx832 subtract -1 NaN -> NaN
|
||||
subx833 subtract -0 NaN -> NaN
|
||||
subx834 subtract 0 NaN -> NaN
|
||||
subx835 subtract 1 NaN -> NaN
|
||||
subx836 subtract 1000 -NaN -> -NaN
|
||||
subx837 subtract Inf NaN -> NaN
|
||||
|
||||
subx841 subtract sNaN Inf -> NaN Invalid_operation
|
||||
subx842 subtract -sNaN 1000 -> -NaN Invalid_operation
|
||||
subx843 subtract sNaN 1 -> NaN Invalid_operation
|
||||
subx844 subtract sNaN 0 -> NaN Invalid_operation
|
||||
subx845 subtract sNaN -0 -> NaN Invalid_operation
|
||||
subx846 subtract sNaN -1 -> NaN Invalid_operation
|
||||
subx847 subtract sNaN -1000 -> NaN Invalid_operation
|
||||
subx848 subtract sNaN NaN -> NaN Invalid_operation
|
||||
subx849 subtract sNaN sNaN -> NaN Invalid_operation
|
||||
subx850 subtract NaN sNaN -> NaN Invalid_operation
|
||||
subx851 subtract -Inf -sNaN -> -NaN Invalid_operation
|
||||
subx852 subtract -1000 sNaN -> NaN Invalid_operation
|
||||
subx853 subtract -1 sNaN -> NaN Invalid_operation
|
||||
subx854 subtract -0 sNaN -> NaN Invalid_operation
|
||||
subx855 subtract 0 sNaN -> NaN Invalid_operation
|
||||
subx856 subtract 1 sNaN -> NaN Invalid_operation
|
||||
subx857 subtract 1000 sNaN -> NaN Invalid_operation
|
||||
subx858 subtract Inf sNaN -> NaN Invalid_operation
|
||||
subx859 subtract NaN sNaN -> NaN Invalid_operation
|
||||
|
||||
-- propagating NaNs
|
||||
subx861 subtract NaN01 -Inf -> NaN1
|
||||
subx862 subtract -NaN02 -1000 -> -NaN2
|
||||
subx863 subtract NaN03 1000 -> NaN3
|
||||
subx864 subtract NaN04 Inf -> NaN4
|
||||
subx865 subtract NaN05 NaN61 -> NaN5
|
||||
subx866 subtract -Inf -NaN71 -> -NaN71
|
||||
subx867 subtract -1000 NaN81 -> NaN81
|
||||
subx868 subtract 1000 NaN91 -> NaN91
|
||||
subx869 subtract Inf NaN101 -> NaN101
|
||||
subx871 subtract sNaN011 -Inf -> NaN11 Invalid_operation
|
||||
subx872 subtract sNaN012 -1000 -> NaN12 Invalid_operation
|
||||
subx873 subtract -sNaN013 1000 -> -NaN13 Invalid_operation
|
||||
subx874 subtract sNaN014 NaN171 -> NaN14 Invalid_operation
|
||||
subx875 subtract sNaN015 sNaN181 -> NaN15 Invalid_operation
|
||||
subx876 subtract NaN016 sNaN191 -> NaN191 Invalid_operation
|
||||
subx877 subtract -Inf sNaN201 -> NaN201 Invalid_operation
|
||||
subx878 subtract -1000 sNaN211 -> NaN211 Invalid_operation
|
||||
subx879 subtract 1000 -sNaN221 -> -NaN221 Invalid_operation
|
||||
subx880 subtract Inf sNaN231 -> NaN231 Invalid_operation
|
||||
subx881 subtract NaN025 sNaN241 -> NaN241 Invalid_operation
|
||||
|
||||
-- edge case spills
|
||||
subx901 subtract 2.E-3 1.002 -> -1.000
|
||||
subx902 subtract 2.0E-3 1.002 -> -1.0000
|
||||
subx903 subtract 2.00E-3 1.0020 -> -1.00000
|
||||
subx904 subtract 2.000E-3 1.00200 -> -1.000000
|
||||
subx905 subtract 2.0000E-3 1.002000 -> -1.0000000
|
||||
subx906 subtract 2.00000E-3 1.0020000 -> -1.00000000
|
||||
subx907 subtract 2.000000E-3 1.00200000 -> -1.000000000
|
||||
subx908 subtract 2.0000000E-3 1.002000000 -> -1.0000000000
|
||||
|
||||
-- subnormals and underflows
|
||||
precision: 3
|
||||
maxexponent: 999
|
||||
minexponent: -999
|
||||
subx1010 subtract 0 1.00E-999 -> -1.00E-999
|
||||
subx1011 subtract 0 0.1E-999 -> -1E-1000 Subnormal
|
||||
subx1012 subtract 0 0.10E-999 -> -1.0E-1000 Subnormal
|
||||
subx1013 subtract 0 0.100E-999 -> -1.0E-1000 Subnormal Rounded
|
||||
subx1014 subtract 0 0.01E-999 -> -1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
subx1015 subtract 0 0.999E-999 -> -1.00E-999 Inexact Rounded Subnormal Underflow
|
||||
subx1016 subtract 0 0.099E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
subx1017 subtract 0 0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow
|
||||
subx1018 subtract 0 0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
subx1019 subtract 0 0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
subx1020 subtract 0 0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
|
||||
subx1030 subtract 0 -1.00E-999 -> 1.00E-999
|
||||
subx1031 subtract 0 -0.1E-999 -> 1E-1000 Subnormal
|
||||
subx1032 subtract 0 -0.10E-999 -> 1.0E-1000 Subnormal
|
||||
subx1033 subtract 0 -0.100E-999 -> 1.0E-1000 Subnormal Rounded
|
||||
subx1034 subtract 0 -0.01E-999 -> 1E-1001 Subnormal
|
||||
-- next is rounded to Emin
|
||||
subx1035 subtract 0 -0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow
|
||||
subx1036 subtract 0 -0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
subx1037 subtract 0 -0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
|
||||
subx1038 subtract 0 -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
subx1039 subtract 0 -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
subx1040 subtract 0 -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
|
||||
|
||||
-- some non-zero subnormal subtracts
|
||||
-- subx1056 is a tricky case
|
||||
rounding: half_up
|
||||
subx1050 subtract 1.00E-999 0.1E-999 -> 9.0E-1000 Subnormal
|
||||
subx1051 subtract 0.1E-999 0.1E-999 -> 0E-1000
|
||||
subx1052 subtract 0.10E-999 0.1E-999 -> 0E-1001
|
||||
subx1053 subtract 0.100E-999 0.1E-999 -> 0E-1001 Clamped
|
||||
subx1054 subtract 0.01E-999 0.1E-999 -> -9E-1001 Subnormal
|
||||
subx1055 subtract 0.999E-999 0.1E-999 -> 9.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
subx1056 subtract 0.099E-999 0.1E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
|
||||
subx1057 subtract 0.009E-999 0.1E-999 -> -9E-1001 Inexact Rounded Subnormal Underflow
|
||||
subx1058 subtract 0.001E-999 0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
subx1059 subtract 0.0009E-999 0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
subx1060 subtract 0.0001E-999 0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
|
||||
|
||||
|
||||
-- check for double-rounded subnormals
|
||||
precision: 5
|
||||
maxexponent: 79
|
||||
minexponent: -79
|
||||
subx1101 subtract 0 1.52444E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
subx1102 subtract 0 1.52445E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
subx1103 subtract 0 1.52446E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
subx1104 subtract 1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
subx1105 subtract 1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
subx1106 subtract 1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
|
||||
|
||||
subx1111 subtract 1.2345678E-80 1.2345671E-80 -> 0E-83 Inexact Rounded Subnormal Underflow
|
||||
subx1112 subtract 1.2345678E-80 1.2345618E-80 -> 0E-83 Inexact Rounded Subnormal Underflow
|
||||
subx1113 subtract 1.2345678E-80 1.2345178E-80 -> 0E-83 Inexact Rounded Subnormal Underflow
|
||||
subx1114 subtract 1.2345678E-80 1.2341678E-80 -> 0E-83 Inexact Rounded Subnormal Underflow
|
||||
subx1115 subtract 1.2345678E-80 1.2315678E-80 -> 3E-83 Rounded Subnormal
|
||||
subx1116 subtract 1.2345678E-80 1.2145678E-80 -> 2.0E-82 Rounded Subnormal
|
||||
subx1117 subtract 1.2345678E-80 1.1345678E-80 -> 1.00E-81 Rounded Subnormal
|
||||
subx1118 subtract 1.2345678E-80 0.2345678E-80 -> 1.000E-80 Rounded Subnormal
|
||||
|
||||
-- Null tests
|
||||
subx9990 subtract 10 # -> NaN Invalid_operation
|
||||
subx9991 subtract # 10 -> NaN Invalid_operation
|
|
@ -0,0 +1,58 @@
|
|||
------------------------------------------------------------------------
|
||||
-- testall.decTest -- run all general decimal arithmetic testcases --
|
||||
-- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.35
|
||||
|
||||
-- core tests (using Extended: 1) --------------------------------------
|
||||
dectest: base
|
||||
dectest: abs
|
||||
dectest: add
|
||||
dectest: clamp
|
||||
dectest: compare
|
||||
dectest: divide
|
||||
dectest: divideint
|
||||
dectest: inexact
|
||||
dectest: max
|
||||
dectest: min
|
||||
dectest: minus
|
||||
dectest: multiply
|
||||
dectest: normalize
|
||||
dectest: plus
|
||||
dectest: power
|
||||
dectest: quantize
|
||||
dectest: randoms
|
||||
dectest: remainder
|
||||
dectest: remaindernear
|
||||
dectest: rescale -- [obsolete]
|
||||
dectest: rounding
|
||||
dectest: samequantum
|
||||
dectest: squareroot
|
||||
dectest: subtract
|
||||
dectest: tointegral
|
||||
dectest: trim
|
||||
|
||||
-- The next are for the Strawman 4d concrete representations
|
||||
dectest: decimal32
|
||||
dectest: decimal64
|
||||
dectest: decimal128
|
||||
|
||||
|
||||
-- General 31->33-digit boundary tests
|
||||
dectest: randomBound32
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
------------------------------------------------------------------------
|
||||
-- tointegral.decTest -- round decimal to integral value --
|
||||
-- Copyright (c) IBM Corporation, 2001, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.38
|
||||
|
||||
-- This set of tests tests the extended specification 'round-to-integral
|
||||
-- value' operation (from IEEE 854, later modified in 754r).
|
||||
-- All non-zero results are defined as being those from either copy or
|
||||
-- quantize, so those are assumed to have been tested.
|
||||
-- Note that 754r requires that Inexact not be set, and we similarly
|
||||
-- assume Rounded is not set.
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minExponent: -999
|
||||
|
||||
intx001 tointegral 0 -> 0
|
||||
intx002 tointegral 0.0 -> 0
|
||||
intx003 tointegral 0.1 -> 0
|
||||
intx004 tointegral 0.2 -> 0
|
||||
intx005 tointegral 0.3 -> 0
|
||||
intx006 tointegral 0.4 -> 0
|
||||
intx007 tointegral 0.5 -> 1
|
||||
intx008 tointegral 0.6 -> 1
|
||||
intx009 tointegral 0.7 -> 1
|
||||
intx010 tointegral 0.8 -> 1
|
||||
intx011 tointegral 0.9 -> 1
|
||||
intx012 tointegral 1 -> 1
|
||||
intx013 tointegral 1.0 -> 1
|
||||
intx014 tointegral 1.1 -> 1
|
||||
intx015 tointegral 1.2 -> 1
|
||||
intx016 tointegral 1.3 -> 1
|
||||
intx017 tointegral 1.4 -> 1
|
||||
intx018 tointegral 1.5 -> 2
|
||||
intx019 tointegral 1.6 -> 2
|
||||
intx020 tointegral 1.7 -> 2
|
||||
intx021 tointegral 1.8 -> 2
|
||||
intx022 tointegral 1.9 -> 2
|
||||
-- negatives
|
||||
intx031 tointegral -0 -> -0
|
||||
intx032 tointegral -0.0 -> -0
|
||||
intx033 tointegral -0.1 -> -0
|
||||
intx034 tointegral -0.2 -> -0
|
||||
intx035 tointegral -0.3 -> -0
|
||||
intx036 tointegral -0.4 -> -0
|
||||
intx037 tointegral -0.5 -> -1
|
||||
intx038 tointegral -0.6 -> -1
|
||||
intx039 tointegral -0.7 -> -1
|
||||
intx040 tointegral -0.8 -> -1
|
||||
intx041 tointegral -0.9 -> -1
|
||||
intx042 tointegral -1 -> -1
|
||||
intx043 tointegral -1.0 -> -1
|
||||
intx044 tointegral -1.1 -> -1
|
||||
intx045 tointegral -1.2 -> -1
|
||||
intx046 tointegral -1.3 -> -1
|
||||
intx047 tointegral -1.4 -> -1
|
||||
intx048 tointegral -1.5 -> -2
|
||||
intx049 tointegral -1.6 -> -2
|
||||
intx050 tointegral -1.7 -> -2
|
||||
intx051 tointegral -1.8 -> -2
|
||||
intx052 tointegral -1.9 -> -2
|
||||
-- next two would be NaN using quantize(x, 0)
|
||||
intx053 tointegral 10E+30 -> 1.0E+31
|
||||
intx054 tointegral -10E+30 -> -1.0E+31
|
||||
|
||||
-- numbers around precision
|
||||
precision: 9
|
||||
intx060 tointegral '56267E-10' -> '0'
|
||||
intx061 tointegral '56267E-5' -> '1'
|
||||
intx062 tointegral '56267E-2' -> '563'
|
||||
intx063 tointegral '56267E-1' -> '5627'
|
||||
intx065 tointegral '56267E-0' -> '56267'
|
||||
intx066 tointegral '56267E+0' -> '56267'
|
||||
intx067 tointegral '56267E+1' -> '5.6267E+5'
|
||||
intx068 tointegral '56267E+2' -> '5.6267E+6'
|
||||
intx069 tointegral '56267E+3' -> '5.6267E+7'
|
||||
intx070 tointegral '56267E+4' -> '5.6267E+8'
|
||||
intx071 tointegral '56267E+5' -> '5.6267E+9'
|
||||
intx072 tointegral '56267E+6' -> '5.6267E+10'
|
||||
intx073 tointegral '1.23E+96' -> '1.23E+96'
|
||||
intx074 tointegral '1.23E+384' -> '1.23E+384'
|
||||
intx075 tointegral '1.23E+999' -> '1.23E+999'
|
||||
|
||||
intx080 tointegral '-56267E-10' -> '-0'
|
||||
intx081 tointegral '-56267E-5' -> '-1'
|
||||
intx082 tointegral '-56267E-2' -> '-563'
|
||||
intx083 tointegral '-56267E-1' -> '-5627'
|
||||
intx085 tointegral '-56267E-0' -> '-56267'
|
||||
intx086 tointegral '-56267E+0' -> '-56267'
|
||||
intx087 tointegral '-56267E+1' -> '-5.6267E+5'
|
||||
intx088 tointegral '-56267E+2' -> '-5.6267E+6'
|
||||
intx089 tointegral '-56267E+3' -> '-5.6267E+7'
|
||||
intx090 tointegral '-56267E+4' -> '-5.6267E+8'
|
||||
intx091 tointegral '-56267E+5' -> '-5.6267E+9'
|
||||
intx092 tointegral '-56267E+6' -> '-5.6267E+10'
|
||||
intx093 tointegral '-1.23E+96' -> '-1.23E+96'
|
||||
intx094 tointegral '-1.23E+384' -> '-1.23E+384'
|
||||
intx095 tointegral '-1.23E+999' -> '-1.23E+999'
|
||||
|
||||
-- subnormal inputs
|
||||
intx100 tointegral 1E-999 -> 0
|
||||
intx101 tointegral 0.1E-999 -> 0
|
||||
intx102 tointegral 0.01E-999 -> 0
|
||||
intx103 tointegral 0E-999 -> 0
|
||||
|
||||
-- specials and zeros
|
||||
intx120 tointegral 'Inf' -> Infinity
|
||||
intx121 tointegral '-Inf' -> -Infinity
|
||||
intx122 tointegral NaN -> NaN
|
||||
intx123 tointegral sNaN -> NaN Invalid_operation
|
||||
intx124 tointegral 0 -> 0
|
||||
intx125 tointegral -0 -> -0
|
||||
intx126 tointegral 0.000 -> 0
|
||||
intx127 tointegral 0.00 -> 0
|
||||
intx128 tointegral 0.0 -> 0
|
||||
intx129 tointegral 0 -> 0
|
||||
intx130 tointegral 0E-3 -> 0
|
||||
intx131 tointegral 0E-2 -> 0
|
||||
intx132 tointegral 0E-1 -> 0
|
||||
intx133 tointegral 0E-0 -> 0
|
||||
intx134 tointegral 0E+1 -> 0E+1
|
||||
intx135 tointegral 0E+2 -> 0E+2
|
||||
intx136 tointegral 0E+3 -> 0E+3
|
||||
intx137 tointegral 0E+4 -> 0E+4
|
||||
intx138 tointegral 0E+5 -> 0E+5
|
||||
intx139 tointegral -0.000 -> -0
|
||||
intx140 tointegral -0.00 -> -0
|
||||
intx141 tointegral -0.0 -> -0
|
||||
intx142 tointegral -0 -> -0
|
||||
intx143 tointegral -0E-3 -> -0
|
||||
intx144 tointegral -0E-2 -> -0
|
||||
intx145 tointegral -0E-1 -> -0
|
||||
intx146 tointegral -0E-0 -> -0
|
||||
intx147 tointegral -0E+1 -> -0E+1
|
||||
intx148 tointegral -0E+2 -> -0E+2
|
||||
intx149 tointegral -0E+3 -> -0E+3
|
||||
intx150 tointegral -0E+4 -> -0E+4
|
||||
intx151 tointegral -0E+5 -> -0E+5
|
||||
-- propagating NaNs
|
||||
intx152 tointegral NaN808 -> NaN808
|
||||
intx153 tointegral sNaN080 -> NaN80 Invalid_operation
|
||||
intx154 tointegral -NaN808 -> -NaN808
|
||||
intx155 tointegral -sNaN080 -> -NaN80 Invalid_operation
|
||||
intx156 tointegral -NaN -> -NaN
|
||||
intx157 tointegral -sNaN -> -NaN Invalid_operation
|
||||
|
||||
-- examples
|
||||
rounding: half_up
|
||||
precision: 9
|
||||
intx200 tointegral 2.1 -> 2
|
||||
intx201 tointegral 100 -> 100
|
||||
intx202 tointegral 100.0 -> 100
|
||||
intx203 tointegral 101.5 -> 102
|
||||
intx204 tointegral -101.5 -> -102
|
||||
intx205 tointegral 10E+5 -> 1.0E+6
|
||||
intx206 tointegral 7.89E+77 -> 7.89E+77
|
||||
intx207 tointegral -Inf -> -Infinity
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
------------------------------------------------------------------------
|
||||
-- trim.decTest -- remove insignificant trailing zeros --
|
||||
-- Copyright (c) IBM Corporation, 2003. All rights reserved. --
|
||||
------------------------------------------------------------------------
|
||||
-- Please see the document "General Decimal Arithmetic Testcases" --
|
||||
-- at http://www2.hursley.ibm.com/decimal for the description of --
|
||||
-- these testcases. --
|
||||
-- --
|
||||
-- These testcases are experimental ('beta' versions), and they --
|
||||
-- may contain errors. They are offered on an as-is basis. In --
|
||||
-- particular, achieving the same results as the tests here is not --
|
||||
-- a guarantee that an implementation complies with any Standard --
|
||||
-- or specification. The tests are not exhaustive. --
|
||||
-- --
|
||||
-- Please send comments, suggestions, and corrections to the author: --
|
||||
-- Mike Cowlishaw, IBM Fellow --
|
||||
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
|
||||
-- mfc@uk.ibm.com --
|
||||
------------------------------------------------------------------------
|
||||
version: 2.35
|
||||
|
||||
extended: 1
|
||||
precision: 9
|
||||
rounding: half_up
|
||||
maxExponent: 999
|
||||
minexponent: -999
|
||||
|
||||
trmx001 trim '1' -> '1'
|
||||
trmx002 trim '-1' -> '-1'
|
||||
trmx003 trim '1.00' -> '1'
|
||||
trmx004 trim '-1.00' -> '-1'
|
||||
trmx005 trim '0' -> '0'
|
||||
trmx006 trim '0.00' -> '0'
|
||||
trmx007 trim '00.0' -> '0'
|
||||
trmx008 trim '00.00' -> '0'
|
||||
trmx009 trim '00' -> '0'
|
||||
|
||||
trmx010 trim '-2' -> '-2'
|
||||
trmx011 trim '2' -> '2'
|
||||
trmx012 trim '-2.00' -> '-2'
|
||||
trmx013 trim '2.00' -> '2'
|
||||
trmx014 trim '-0' -> '-0'
|
||||
trmx015 trim '-0.00' -> '-0'
|
||||
trmx016 trim '-00.0' -> '-0'
|
||||
trmx017 trim '-00.00' -> '-0'
|
||||
trmx018 trim '-00' -> '-0'
|
||||
trmx019 trim '0E+5' -> '0'
|
||||
trmx020 trim '-0E+1' -> '-0'
|
||||
|
||||
trmx030 trim '+0.1' -> '0.1'
|
||||
trmx031 trim '-0.1' -> '-0.1'
|
||||
trmx032 trim '+0.01' -> '0.01'
|
||||
trmx033 trim '-0.01' -> '-0.01'
|
||||
trmx034 trim '+0.001' -> '0.001'
|
||||
trmx035 trim '-0.001' -> '-0.001'
|
||||
trmx036 trim '+0.000001' -> '0.000001'
|
||||
trmx037 trim '-0.000001' -> '-0.000001'
|
||||
trmx038 trim '+0.000000000001' -> '1E-12'
|
||||
trmx039 trim '-0.000000000001' -> '-1E-12'
|
||||
|
||||
trmx041 trim 1.1 -> 1.1
|
||||
trmx042 trim 1.10 -> 1.1
|
||||
trmx043 trim 1.100 -> 1.1
|
||||
trmx044 trim 1.110 -> 1.11
|
||||
trmx045 trim -1.1 -> -1.1
|
||||
trmx046 trim -1.10 -> -1.1
|
||||
trmx047 trim -1.100 -> -1.1
|
||||
trmx048 trim -1.110 -> -1.11
|
||||
trmx049 trim 9.9 -> 9.9
|
||||
trmx050 trim 9.90 -> 9.9
|
||||
trmx051 trim 9.900 -> 9.9
|
||||
trmx052 trim 9.990 -> 9.99
|
||||
trmx053 trim -9.9 -> -9.9
|
||||
trmx054 trim -9.90 -> -9.9
|
||||
trmx055 trim -9.900 -> -9.9
|
||||
trmx056 trim -9.990 -> -9.99
|
||||
|
||||
-- some insignificant trailing fractional zeros
|
||||
trmx060 trim 10.0 -> 10
|
||||
trmx061 trim 10.00 -> 10
|
||||
trmx062 trim 100.0 -> 100
|
||||
trmx063 trim 100.00 -> 100
|
||||
trmx064 trim 1.1000E+3 -> 1100
|
||||
trmx065 trim 1.10000E+3 -> 1100
|
||||
trmx066 trim -10.0 -> -10
|
||||
trmx067 trim -10.00 -> -10
|
||||
trmx068 trim -100.0 -> -100
|
||||
trmx069 trim -100.00 -> -100
|
||||
trmx070 trim -1.1000E+3 -> -1100
|
||||
trmx071 trim -1.10000E+3 -> -1100
|
||||
|
||||
-- some insignificant trailing zeros with positive exponent
|
||||
trmx080 trim 10E+1 -> 1E+2
|
||||
trmx081 trim 100E+1 -> 1E+3
|
||||
trmx082 trim 1.0E+2 -> 1E+2
|
||||
trmx083 trim 1.0E+3 -> 1E+3
|
||||
trmx084 trim 1.1E+3 -> 1.1E+3
|
||||
trmx085 trim 1.00E+3 -> 1E+3
|
||||
trmx086 trim 1.10E+3 -> 1.1E+3
|
||||
trmx087 trim -10E+1 -> -1E+2
|
||||
trmx088 trim -100E+1 -> -1E+3
|
||||
trmx089 trim -1.0E+2 -> -1E+2
|
||||
trmx090 trim -1.0E+3 -> -1E+3
|
||||
trmx091 trim -1.1E+3 -> -1.1E+3
|
||||
trmx092 trim -1.00E+3 -> -1E+3
|
||||
trmx093 trim -1.10E+3 -> -1.1E+3
|
||||
|
||||
-- some significant trailing zeros
|
||||
trmx100 trim 11 -> 11
|
||||
trmx101 trim 10 -> 10
|
||||
trmx102 trim 10. -> 10
|
||||
trmx103 trim 1.1E+1 -> 11
|
||||
trmx104 trim 1.0E+1 -> 10
|
||||
trmx105 trim 1.10E+2 -> 110
|
||||
trmx106 trim 1.00E+2 -> 100
|
||||
trmx107 trim 1.100E+3 -> 1100
|
||||
trmx108 trim 1.000E+3 -> 1000
|
||||
trmx109 trim 1.000000E+6 -> 1000000
|
||||
trmx110 trim -11 -> -11
|
||||
trmx111 trim -10 -> -10
|
||||
trmx112 trim -10. -> -10
|
||||
trmx113 trim -1.1E+1 -> -11
|
||||
trmx114 trim -1.0E+1 -> -10
|
||||
trmx115 trim -1.10E+2 -> -110
|
||||
trmx116 trim -1.00E+2 -> -100
|
||||
trmx117 trim -1.100E+3 -> -1100
|
||||
trmx118 trim -1.000E+3 -> -1000
|
||||
trmx119 trim -1.00000E+5 -> -100000
|
||||
trmx120 trim -1.000000E+6 -> -1000000
|
||||
|
||||
-- examples from decArith
|
||||
trmx140 trim '2.1' -> '2.1'
|
||||
trmx141 trim '-2.0' -> '-2'
|
||||
trmx142 trim '1.200' -> '1.2'
|
||||
trmx143 trim '-120' -> '-120'
|
||||
trmx144 trim '120.00' -> '120'
|
||||
trmx145 trim '0.00' -> '0'
|
||||
|
||||
-- utilities pass through specials without raising exceptions
|
||||
trmx320 trim 'Inf' -> 'Infinity'
|
||||
trmx321 trim '-Inf' -> '-Infinity'
|
||||
trmx322 trim NaN -> NaN
|
||||
trmx323 trim sNaN -> sNaN
|
||||
trmx324 trim NaN999 -> NaN999
|
||||
trmx325 trim sNaN777 -> sNaN777
|
||||
trmx326 trim -NaN -> -NaN
|
||||
trmx327 trim -sNaN -> -sNaN
|
||||
trmx328 trim -NaN999 -> -NaN999
|
||||
trmx329 trim -sNaN777 -> -sNaN777
|
||||
|
||||
-- Null test
|
||||
trmx900 trim # -> NaN Invalid_operation
|
|
@ -71,6 +71,9 @@ resources to test. Currently only the following are defined:
|
|||
bsddb - It is okay to run the bsddb testsuite, which takes
|
||||
a long time to complete.
|
||||
|
||||
decimal - Test the decimal module against a large suite that
|
||||
verifies compliance with standards.
|
||||
|
||||
To enable all resources except one, use '-uall,-<resource>'. For
|
||||
example, to run all the tests except for the bsddb tests, give the
|
||||
option '-uall,-bsddb'.
|
||||
|
@ -112,7 +115,8 @@ if sys.platform == 'darwin':
|
|||
|
||||
from test import test_support
|
||||
|
||||
RESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', 'bsddb')
|
||||
RESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', 'bsddb',
|
||||
'decimal')
|
||||
|
||||
|
||||
def usage(code, msg=''):
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue