summaryrefslogtreecommitdiffstats
path: root/Lib/test/decimaltestdata/clamp.decTest
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/decimaltestdata/clamp.decTest')
-rw-r--r--Lib/test/decimaltestdata/clamp.decTest197
1 files changed, 197 insertions, 0 deletions
diff --git a/Lib/test/decimaltestdata/clamp.decTest b/Lib/test/decimaltestdata/clamp.decTest
new file mode 100644
index 0000000..fafe708
--- /dev/null
+++ b/Lib/test/decimaltestdata/clamp.decTest
@@ -0,0 +1,197 @@
+------------------------------------------------------------------------
+-- clamp.decTest -- clamped exponent tests (format-independent) --
+-- Copyright (c) IBM Corporation, 2000, 2003. 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.38
+
+-- 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
+clam097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
+clam098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
+clam099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
+
+-- 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
+clam197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
+clam198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
+clam199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
+
+-- 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
+
+-- 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