------------------------------------------------------------------------ | |
-- clamp.decTest -- clamped exponent tests (format-independent) -- | |
-- 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 -- | |
------------------------------------------------------------------------ | |
version: 2.59 | |
-- 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 |