212 lines
11 KiB
Plaintext
212 lines
11 KiB
Plaintext
------------------------------------------------------------------------
|
|
-- 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
|