------------------------------------------------------------------------ -- clamp.decTest -- clamped exponent tests (format-independent) -- -- Copyright (c) Mike Cowlishaw, 1981, 2010. All rights reserved. -- -- Parts copyright (c) IBM Corporation, 1981, 2008. -- ------------------------------------------------------------------------ -- Please see the document "General Decimal Arithmetic Testcases" -- -- at http://speleotrove.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, mfc@speleotrove.com -- ------------------------------------------------------------------------ version: 2.62 -- This set of tests uses the same limits as the 8-byte concrete -- representation, but applies clamping without using format-specific -- conversions. extended: 1 precision: 16 rounding: half_even maxExponent: 384 minExponent: -383 clamp: 1 -- General testcases -- Normality clam010 apply 1234567890123456 -> 1234567890123456 clam011 apply 1234567890123456.0 -> 1234567890123456 Rounded clam012 apply 1234567890123456.1 -> 1234567890123456 Rounded Inexact clam013 apply -1234567890123456 -> -1234567890123456 clam014 apply -1234567890123456.0 -> -1234567890123456 Rounded clam015 apply -1234567890123456.1 -> -1234567890123456 Rounded Inexact -- Nmax and similar clam022 apply 9.999999999999999E+384 -> 9.999999999999999E+384 clam024 apply 1.234567890123456E+384 -> 1.234567890123456E+384 -- fold-downs (more below) clam030 apply 1.23E+384 -> 1.230000000000000E+384 Clamped clam032 apply 1E+384 -> 1.000000000000000E+384 Clamped clam051 apply 12345 -> 12345 clam053 apply 1234 -> 1234 clam055 apply 123 -> 123 clam057 apply 12 -> 12 clam059 apply 1 -> 1 clam061 apply 1.23 -> 1.23 clam063 apply 123.45 -> 123.45 -- Nmin and below clam071 apply 1E-383 -> 1E-383 clam073 apply 1.000000000000000E-383 -> 1.000000000000000E-383 clam075 apply 1.000000000000001E-383 -> 1.000000000000001E-383 clam077 apply 0.100000000000000E-383 -> 1.00000000000000E-384 Subnormal clam079 apply 0.000000000000010E-383 -> 1.0E-397 Subnormal clam081 apply 0.00000000000001E-383 -> 1E-397 Subnormal clam083 apply 0.000000000000001E-383 -> 1E-398 Subnormal -- underflows clam090 apply 1e-398 -> #0000000000000001 Subnormal clam091 apply 1.9e-398 -> #0000000000000002 Subnormal Underflow Inexact Rounded clam092 apply 1.1e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded clam093 apply 1.00000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded clam094 apply 1.00000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded clam095 apply 1.000000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded clam096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped clam097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped clam098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped clam099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped -- Same again, negatives -- Nmax and similar clam122 apply -9.999999999999999E+384 -> -9.999999999999999E+384 clam124 apply -1.234567890123456E+384 -> -1.234567890123456E+384 -- fold-downs (more below) clam130 apply -1.23E+384 -> -1.230000000000000E+384 Clamped clam132 apply -1E+384 -> -1.000000000000000E+384 Clamped clam151 apply -12345 -> -12345 clam153 apply -1234 -> -1234 clam155 apply -123 -> -123 clam157 apply -12 -> -12 clam159 apply -1 -> -1 clam161 apply -1.23 -> -1.23 clam163 apply -123.45 -> -123.45 -- Nmin and below clam171 apply -1E-383 -> -1E-383 clam173 apply -1.000000000000000E-383 -> -1.000000000000000E-383 clam175 apply -1.000000000000001E-383 -> -1.000000000000001E-383 clam177 apply -0.100000000000000E-383 -> -1.00000000000000E-384 Subnormal clam179 apply -0.000000000000010E-383 -> -1.0E-397 Subnormal clam181 apply -0.00000000000001E-383 -> -1E-397 Subnormal clam183 apply -0.000000000000001E-383 -> -1E-398 Subnormal -- underflows clam189 apply -1e-398 -> #8000000000000001 Subnormal clam190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded clam191 apply -1.9e-398 -> #8000000000000002 Subnormal Underflow Inexact Rounded clam192 apply -1.1e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded clam193 apply -1.00000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded clam194 apply -1.00000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded clam195 apply -1.000000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded clam196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped clam197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped clam198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped clam199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped -- zeros clam401 apply 0E-500 -> 0E-398 Clamped clam402 apply 0E-400 -> 0E-398 Clamped clam403 apply 0E-398 -> 0E-398 clam404 apply 0.000000000000000E-383 -> 0E-398 clam405 apply 0E-2 -> 0.00 clam406 apply 0 -> 0 clam407 apply 0E+3 -> 0E+3 clam408 apply 0E+369 -> 0E+369 -- clamped zeros... clam410 apply 0E+370 -> 0E+369 Clamped clam411 apply 0E+384 -> 0E+369 Clamped clam412 apply 0E+400 -> 0E+369 Clamped clam413 apply 0E+500 -> 0E+369 Clamped -- negative zeros clam420 apply -0E-500 -> -0E-398 Clamped clam421 apply -0E-400 -> -0E-398 Clamped clam422 apply -0E-398 -> -0E-398 clam423 apply -0.000000000000000E-383 -> -0E-398 clam424 apply -0E-2 -> -0.00 clam425 apply -0 -> -0 clam426 apply -0E+3 -> -0E+3 clam427 apply -0E+369 -> -0E+369 -- clamped zeros... clam431 apply -0E+370 -> -0E+369 Clamped clam432 apply -0E+384 -> -0E+369 Clamped clam433 apply -0E+400 -> -0E+369 Clamped clam434 apply -0E+500 -> -0E+369 Clamped -- fold-down full sequence clam601 apply 1E+384 -> 1.000000000000000E+384 Clamped clam603 apply 1E+383 -> 1.00000000000000E+383 Clamped clam605 apply 1E+382 -> 1.0000000000000E+382 Clamped clam607 apply 1E+381 -> 1.000000000000E+381 Clamped clam609 apply 1E+380 -> 1.00000000000E+380 Clamped clam611 apply 1E+379 -> 1.0000000000E+379 Clamped clam613 apply 1E+378 -> 1.000000000E+378 Clamped clam615 apply 1E+377 -> 1.00000000E+377 Clamped clam617 apply 1E+376 -> 1.0000000E+376 Clamped clam619 apply 1E+375 -> 1.000000E+375 Clamped clam621 apply 1E+374 -> 1.00000E+374 Clamped clam623 apply 1E+373 -> 1.0000E+373 Clamped clam625 apply 1E+372 -> 1.000E+372 Clamped clam627 apply 1E+371 -> 1.00E+371 Clamped clam629 apply 1E+370 -> 1.0E+370 Clamped clam631 apply 1E+369 -> 1E+369 clam633 apply 1E+368 -> 1E+368 -- same with 9s clam641 apply 9E+384 -> 9.000000000000000E+384 Clamped clam643 apply 9E+383 -> 9.00000000000000E+383 Clamped clam645 apply 9E+382 -> 9.0000000000000E+382 Clamped clam647 apply 9E+381 -> 9.000000000000E+381 Clamped clam649 apply 9E+380 -> 9.00000000000E+380 Clamped clam651 apply 9E+379 -> 9.0000000000E+379 Clamped clam653 apply 9E+378 -> 9.000000000E+378 Clamped clam655 apply 9E+377 -> 9.00000000E+377 Clamped clam657 apply 9E+376 -> 9.0000000E+376 Clamped clam659 apply 9E+375 -> 9.000000E+375 Clamped clam661 apply 9E+374 -> 9.00000E+374 Clamped clam663 apply 9E+373 -> 9.0000E+373 Clamped clam665 apply 9E+372 -> 9.000E+372 Clamped clam667 apply 9E+371 -> 9.00E+371 Clamped clam669 apply 9E+370 -> 9.0E+370 Clamped clam671 apply 9E+369 -> 9E+369 clam673 apply 9E+368 -> 9E+368 -- subnormals clamped to 0-Etiny precision: 16 maxExponent: 384 minExponent: -383 clam681 apply 7E-398 -> 7E-398 Subnormal clam682 apply 0E-398 -> 0E-398 clam683 apply 7E-399 -> 1E-398 Subnormal Underflow Inexact Rounded clam684 apply 4E-399 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded clam685 apply 7E-400 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded clam686 apply 7E-401 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded clam687 apply 0E-399 -> 0E-398 Clamped clam688 apply 0E-400 -> 0E-398 Clamped clam689 apply 0E-401 -> 0E-398 Clamped -- example from documentation precision: 7 rounding: half_even maxExponent: +96 minExponent: -95 clamp: 0 clam700 apply 1.23E+96 -> 1.23E+96 clamp: 1 clam701 apply 1.23E+96 -> 1.230000E+96 Clamped