Repository URL to install this package:
------------------------------------------------------------------------ -- ddEncode.decTest -- decimal eight-byte format testcases -- -- Copyright (c) IBM Corporation, 2000, 2008. All rights reserved. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://www2.hursley.ibm.com/decimal for the description of -- -- these testcases. -- -- -- -- These testcases are experimental ('beta' versions), and they -- -- may contain errors. They are offered on an as-is basis. In -- -- particular, achieving the same results as the tests here is not -- -- a guarantee that an implementation complies with any Standard -- -- or specification. The tests are not exhaustive. -- -- -- -- Please send comments, suggestions, and corrections to the author: -- -- Mike Cowlishaw, IBM Fellow -- -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- -- mfc@uk.ibm.com -- ------------------------------------------------------------------------ -- [Previously called decimal64.decTest] version: 2.59 -- This set of tests is for the eight-byte concrete representation. -- Its characteristics are: -- -- 1 bit sign -- 5 bits combination field -- 8 bits exponent continuation -- 50 bits coefficient continuation -- -- Total exponent length 10 bits -- Total coefficient length 54 bits (16 digits) -- -- Elimit = 767 (maximum encoded exponent) -- Emax = 384 (largest exponent value) -- Emin = -383 (smallest exponent value) -- bias = 398 (subtracted from encoded exponent) = -Etiny -- The testcases here have only exactly representable data on the -- 'left-hand-side'; rounding from strings is tested in 'base' -- testcase groups. extended: 1 clamp: 1 precision: 16 rounding: half_up maxExponent: 384 minExponent: -383 -- General testcases -- (mostly derived from the Strawman 4 document and examples) dece001 apply #A2300000000003D0 -> -7.50 dece002 apply -7.50 -> #A2300000000003D0 -- derivative canonical plain strings dece003 apply #A23c0000000003D0 -> -7.50E+3 dece004 apply -7.50E+3 -> #A23c0000000003D0 dece005 apply #A2380000000003D0 -> -750 dece006 apply -750 -> #A2380000000003D0 dece007 apply #A2340000000003D0 -> -75.0 dece008 apply -75.0 -> #A2340000000003D0 dece009 apply #A22c0000000003D0 -> -0.750 dece010 apply -0.750 -> #A22c0000000003D0 dece011 apply #A2280000000003D0 -> -0.0750 dece012 apply -0.0750 -> #A2280000000003D0 dece013 apply #A2200000000003D0 -> -0.000750 dece014 apply -0.000750 -> #A2200000000003D0 dece015 apply #A2180000000003D0 -> -0.00000750 dece016 apply -0.00000750 -> #A2180000000003D0 dece017 apply #A2140000000003D0 -> -7.50E-7 dece018 apply -7.50E-7 -> #A2140000000003D0 -- Normality dece020 apply 1234567890123456 -> #263934b9c1e28e56 dece021 apply -1234567890123456 -> #a63934b9c1e28e56 dece022 apply 1234.567890123456 -> #260934b9c1e28e56 dece023 apply #260934b9c1e28e56 -> 1234.567890123456 dece024 apply 1111111111111111 -> #2638912449124491 dece025 apply 9999999999999999 -> #6e38ff3fcff3fcff -- Nmax and similar dece031 apply 9999999999999999E+369 -> #77fcff3fcff3fcff dece032 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff dece033 apply #77fcff3fcff3fcff -> 9.999999999999999E+384 dece034 apply 1.234567890123456E+384 -> #47fd34b9c1e28e56 dece035 apply #47fd34b9c1e28e56 -> 1.234567890123456E+384 -- fold-downs (more below) dece036 apply 1.23E+384 -> #47fd300000000000 Clamped dece037 apply #47fd300000000000 -> 1.230000000000000E+384 decd038 apply 1E+384 -> #47fc000000000000 Clamped decd039 apply #47fc000000000000 -> 1.000000000000000E+384 decd051 apply 12345 -> #22380000000049c5 decd052 apply #22380000000049c5 -> 12345 decd053 apply 1234 -> #2238000000000534 decd054 apply #2238000000000534 -> 1234 decd055 apply 123 -> #22380000000000a3 decd056 apply #22380000000000a3 -> 123 decd057 apply 12 -> #2238000000000012 decd058 apply #2238000000000012 -> 12 decd059 apply 1 -> #2238000000000001 decd060 apply #2238000000000001 -> 1 decd061 apply 1.23 -> #22300000000000a3 decd062 apply #22300000000000a3 -> 1.23 decd063 apply 123.45 -> #22300000000049c5 decd064 apply #22300000000049c5 -> 123.45 -- Nmin and below decd071 apply 1E-383 -> #003c000000000001 decd072 apply #003c000000000001 -> 1E-383 decd073 apply 1.000000000000000E-383 -> #0400000000000000 decd074 apply #0400000000000000 -> 1.000000000000000E-383 decd075 apply 1.000000000000001E-383 -> #0400000000000001 decd076 apply #0400000000000001 -> 1.000000000000001E-383 decd077 apply 0.100000000000000E-383 -> #0000800000000000 Subnormal decd078 apply #0000800000000000 -> 1.00000000000000E-384 Subnormal decd079 apply 0.000000000000010E-383 -> #0000000000000010 Subnormal decd080 apply #0000000000000010 -> 1.0E-397 Subnormal decd081 apply 0.00000000000001E-383 -> #0004000000000001 Subnormal decd082 apply #0004000000000001 -> 1E-397 Subnormal decd083 apply 0.000000000000001E-383 -> #0000000000000001 Subnormal decd084 apply #0000000000000001 -> 1E-398 Subnormal -- next is smallest all-nines decd085 apply 9999999999999999E-398 -> #6400ff3fcff3fcff decd086 apply #6400ff3fcff3fcff -> 9.999999999999999E-383 -- and a problematic divide result decd088 apply 1.111111111111111E-383 -> #0400912449124491 decd089 apply #0400912449124491 -> 1.111111111111111E-383 -- forties decd090 apply 40 -> #2238000000000040 decd091 apply 39.99 -> #2230000000000cff -- underflows cannot be tested as all LHS exact -- Same again, negatives -- Nmax and similar decd122 apply -9.999999999999999E+384 -> #f7fcff3fcff3fcff decd123 apply #f7fcff3fcff3fcff -> -9.999999999999999E+384 decd124 apply -1.234567890123456E+384 -> #c7fd34b9c1e28e56 decd125 apply #c7fd34b9c1e28e56 -> -1.234567890123456E+384 -- fold-downs (more below) decd130 apply -1.23E+384 -> #c7fd300000000000 Clamped decd131 apply #c7fd300000000000 -> -1.230000000000000E+384 decd132 apply -1E+384 -> #c7fc000000000000 Clamped decd133 apply #c7fc000000000000 -> -1.000000000000000E+384 -- overflows decd151 apply -12345 -> #a2380000000049c5 decd152 apply #a2380000000049c5 -> -12345 decd153 apply -1234 -> #a238000000000534 decd154 apply #a238000000000534 -> -1234 decd155 apply -123 -> #a2380000000000a3 decd156 apply #a2380000000000a3 -> -123 decd157 apply -12 -> #a238000000000012 decd158 apply #a238000000000012 -> -12 decd159 apply -1 -> #a238000000000001 decd160 apply #a238000000000001 -> -1 decd161 apply -1.23 -> #a2300000000000a3 decd162 apply #a2300000000000a3 -> -1.23 decd163 apply -123.45 -> #a2300000000049c5 decd164 apply #a2300000000049c5 -> -123.45 -- Nmin and below decd171 apply -1E-383 -> #803c000000000001 decd172 apply #803c000000000001 -> -1E-383 decd173 apply -1.000000000000000E-383 -> #8400000000000000 decd174 apply #8400000000000000 -> -1.000000000000000E-383 decd175 apply -1.000000000000001E-383 -> #8400000000000001 decd176 apply #8400000000000001 -> -1.000000000000001E-383 decd177 apply -0.100000000000000E-383 -> #8000800000000000 Subnormal decd178 apply #8000800000000000 -> -1.00000000000000E-384 Subnormal decd179 apply -0.000000000000010E-383 -> #8000000000000010 Subnormal decd180 apply #8000000000000010 -> -1.0E-397 Subnormal decd181 apply -0.00000000000001E-383 -> #8004000000000001 Subnormal decd182 apply #8004000000000001 -> -1E-397 Subnormal decd183 apply -0.000000000000001E-383 -> #8000000000000001 Subnormal decd184 apply #8000000000000001 -> -1E-398 Subnormal -- next is smallest all-nines decd185 apply -9999999999999999E-398 -> #e400ff3fcff3fcff decd186 apply #e400ff3fcff3fcff -> -9.999999999999999E-383 -- and a tricky subnormal decd187 apply 1.11111111111524E-384 -> #00009124491246a4 Subnormal decd188 apply #00009124491246a4 -> 1.11111111111524E-384 Subnormal -- near-underflows decd189 apply -1e-398 -> #8000000000000001 Subnormal decd190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded -- zeros decd401 apply 0E-500 -> #0000000000000000 Clamped decd402 apply 0E-400 -> #0000000000000000 Clamped decd403 apply 0E-398 -> #0000000000000000 decd404 apply #0000000000000000 -> 0E-398 decd405 apply 0.000000000000000E-383 -> #0000000000000000 decd406 apply #0000000000000000 -> 0E-398 decd407 apply 0E-2 -> #2230000000000000 decd408 apply #2230000000000000 -> 0.00 decd409 apply 0 -> #2238000000000000 decd410 apply #2238000000000000 -> 0 decd411 apply 0E+3 -> #2244000000000000 decd412 apply #2244000000000000 -> 0E+3 decd413 apply 0E+369 -> #43fc000000000000 decd414 apply #43fc000000000000 -> 0E+369 -- clamped zeros... decd415 apply 0E+370 -> #43fc000000000000 Clamped decd416 apply #43fc000000000000 -> 0E+369 decd417 apply 0E+384 -> #43fc000000000000 Clamped decd418 apply #43fc000000000000 -> 0E+369 decd419 apply 0E+400 -> #43fc000000000000 Clamped decd420 apply #43fc000000000000 -> 0E+369 decd421 apply 0E+500 -> #43fc000000000000 Clamped decd422 apply #43fc000000000000 -> 0E+369 -- negative zeros decd431 apply -0E-400 -> #8000000000000000 Clamped decd432 apply -0E-400 -> #8000000000000000 Clamped decd433 apply -0E-398 -> #8000000000000000 decd434 apply #8000000000000000 -> -0E-398 decd435 apply -0.000000000000000E-383 -> #8000000000000000 decd436 apply #8000000000000000 -> -0E-398 decd437 apply -0E-2 -> #a230000000000000 decd438 apply #a230000000000000 -> -0.00 decd439 apply -0 -> #a238000000000000 decd440 apply #a238000000000000 -> -0 decd441 apply -0E+3 -> #a244000000000000 decd442 apply #a244000000000000 -> -0E+3 decd443 apply -0E+369 -> #c3fc000000000000 decd444 apply #c3fc000000000000 -> -0E+369 -- clamped zeros... decd445 apply -0E+370 -> #c3fc000000000000 Clamped decd446 apply #c3fc000000000000 -> -0E+369 decd447 apply -0E+384 -> #c3fc000000000000 Clamped decd448 apply #c3fc000000000000 -> -0E+369 decd449 apply -0E+400 -> #c3fc000000000000 Clamped decd450 apply #c3fc000000000000 -> -0E+369 decd451 apply -0E+500 -> #c3fc000000000000 Clamped decd452 apply #c3fc000000000000 -> -0E+369 -- exponents decd460 apply #225c000000000007 -> 7E+9 decd461 apply 7E+9 -> #225c000000000007 decd462 apply #23c4000000000007 -> 7E+99 decd463 apply 7E+99 -> #23c4000000000007 -- Specials decd500 apply Infinity -> #7800000000000000 decd501 apply #7878787878787878 -> #7800000000000000 decd502 apply #7800000000000000 -> Infinity decd503 apply #7979797979797979 -> #7800000000000000 decd504 apply #7900000000000000 -> Infinity decd505 apply #7a7a7a7a7a7a7a7a -> #7800000000000000 decd506 apply #7a00000000000000 -> Infinity decd507 apply #7b7b7b7b7b7b7b7b -> #7800000000000000 decd508 apply #7b00000000000000 -> Infinity decd509 apply NaN -> #7c00000000000000 decd510 apply #7c7c7c7c7c7c7c7c -> #7c007c7c7c7c7c7c decd511 apply #7c00000000000000 -> NaN decd512 apply #7d7d7d7d7d7d7d7d -> #7c017d7d7d7d7d7d decd513 apply #7d00000000000000 -> NaN decd514 apply #7e7e7e7e7e7e7e7e -> #7e007e7e7e7e7c7e decd515 apply #7e00000000000000 -> sNaN decd516 apply #7f7f7f7f7f7f7f7f -> #7e007f7f7f7f7c7f decd517 apply #7f00000000000000 -> sNaN decd518 apply #7fffffffffffffff -> sNaN999999999999999 decd519 apply #7fffffffffffffff -> #7e00ff3fcff3fcff decd520 apply -Infinity -> #f800000000000000 decd521 apply #f878787878787878 -> #f800000000000000 decd522 apply #f800000000000000 -> -Infinity decd523 apply #f979797979797979 -> #f800000000000000 decd524 apply #f900000000000000 -> -Infinity decd525 apply #fa7a7a7a7a7a7a7a -> #f800000000000000 decd526 apply #fa00000000000000 -> -Infinity decd527 apply #fb7b7b7b7b7b7b7b -> #f800000000000000 decd528 apply #fb00000000000000 -> -Infinity decd529 apply -NaN -> #fc00000000000000 decd530 apply #fc7c7c7c7c7c7c7c -> #fc007c7c7c7c7c7c decd531 apply #fc00000000000000 -> -NaN decd532 apply #fd7d7d7d7d7d7d7d -> #fc017d7d7d7d7d7d decd533 apply #fd00000000000000 -> -NaN decd534 apply #fe7e7e7e7e7e7e7e -> #fe007e7e7e7e7c7e decd535 apply #fe00000000000000 -> -sNaN decd536 apply #ff7f7f7f7f7f7f7f -> #fe007f7f7f7f7c7f decd537 apply #ff00000000000000 -> -sNaN decd538 apply #ffffffffffffffff -> -sNaN999999999999999 decd539 apply #ffffffffffffffff -> #fe00ff3fcff3fcff -- diagnostic NaNs decd540 apply NaN -> #7c00000000000000 decd541 apply NaN0 -> #7c00000000000000 decd542 apply NaN1 -> #7c00000000000001 decd543 apply NaN12 -> #7c00000000000012 decd544 apply NaN79 -> #7c00000000000079 decd545 apply NaN12345 -> #7c000000000049c5 decd546 apply NaN123456 -> #7c00000000028e56 decd547 apply NaN799799 -> #7c000000000f7fdf decd548 apply NaN799799799799799 -> #7c03dff7fdff7fdf decd549 apply NaN999999999999999 -> #7c00ff3fcff3fcff -- too many digits -- fold-down full sequence decd601 apply 1E+384 -> #47fc000000000000 Clamped decd602 apply #47fc000000000000 -> 1.000000000000000E+384 decd603 apply 1E+383 -> #43fc800000000000 Clamped decd604 apply #43fc800000000000 -> 1.00000000000000E+383 decd605 apply 1E+382 -> #43fc100000000000 Clamped decd606 apply #43fc100000000000 -> 1.0000000000000E+382 decd607 apply 1E+381 -> #43fc010000000000 Clamped decd608 apply #43fc010000000000 -> 1.000000000000E+381 decd609 apply 1E+380 -> #43fc002000000000 Clamped decd610 apply #43fc002000000000 -> 1.00000000000E+380 decd611 apply 1E+379 -> #43fc000400000000 Clamped decd612 apply #43fc000400000000 -> 1.0000000000E+379 decd613 apply 1E+378 -> #43fc000040000000 Clamped decd614 apply #43fc000040000000 -> 1.000000000E+378 decd615 apply 1E+377 -> #43fc000008000000 Clamped decd616 apply #43fc000008000000 -> 1.00000000E+377 decd617 apply 1E+376 -> #43fc000001000000 Clamped decd618 apply #43fc000001000000 -> 1.0000000E+376 decd619 apply 1E+375 -> #43fc000000100000 Clamped decd620 apply #43fc000000100000 -> 1.000000E+375 decd621 apply 1E+374 -> #43fc000000020000 Clamped decd622 apply #43fc000000020000 -> 1.00000E+374 decd623 apply 1E+373 -> #43fc000000004000 Clamped decd624 apply #43fc000000004000 -> 1.0000E+373 decd625 apply 1E+372 -> #43fc000000000400 Clamped decd626 apply #43fc000000000400 -> 1.000E+372 decd627 apply 1E+371 -> #43fc000000000080 Clamped decd628 apply #43fc000000000080 -> 1.00E+371 decd629 apply 1E+370 -> #43fc000000000010 Clamped decd630 apply #43fc000000000010 -> 1.0E+370 decd631 apply 1E+369 -> #43fc000000000001 decd632 apply #43fc000000000001 -> 1E+369 decd633 apply 1E+368 -> #43f8000000000001 decd634 apply #43f8000000000001 -> 1E+368 -- same with 9s decd641 apply 9E+384 -> #77fc000000000000 Clamped decd642 apply #77fc000000000000 -> 9.000000000000000E+384 decd643 apply 9E+383 -> #43fc8c0000000000 Clamped decd644 apply #43fc8c0000000000 -> 9.00000000000000E+383 decd645 apply 9E+382 -> #43fc1a0000000000 ClampedLoading ...