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