You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			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.58
 | 
						|
 | 
						|
-- 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
 |