summaryrefslogtreecommitdiffstats
path: root/Lib/test/decimaltestdata/decimal64.decTest
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/decimaltestdata/decimal64.decTest')
-rw-r--r--Lib/test/decimaltestdata/decimal64.decTest421
1 files changed, 421 insertions, 0 deletions
diff --git a/Lib/test/decimaltestdata/decimal64.decTest b/Lib/test/decimaltestdata/decimal64.decTest
new file mode 100644
index 0000000..74599be
--- /dev/null
+++ b/Lib/test/decimaltestdata/decimal64.decTest
@@ -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
+