| ------------------------------------------------------------------------ |
| -- 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 |