| Raymond Hettinger | 7c85fa4 | 2004-07-01 11:01:35 +0000 | [diff] [blame] | 1 | ------------------------------------------------------------------------ | 
 | 2 | -- clamp.decTest -- clamped exponent tests (format-independent)       -- | 
| Benjamin Peterson | f17ff4e | 2008-07-31 16:32:12 +0000 | [diff] [blame] | 3 | -- Copyright (c) IBM Corporation, 2000, 2008.  All rights reserved.   -- | 
| Raymond Hettinger | 7c85fa4 | 2004-07-01 11:01:35 +0000 | [diff] [blame] | 4 | ------------------------------------------------------------------------ | 
 | 5 | -- Please see the document "General Decimal Arithmetic Testcases"     -- | 
 | 6 | -- at http://www2.hursley.ibm.com/decimal for the description of      -- | 
 | 7 | -- these testcases.                                                   -- | 
 | 8 | --                                                                    -- | 
 | 9 | -- These testcases are experimental ('beta' versions), and they       -- | 
 | 10 | -- may contain errors.  They are offered on an as-is basis.  In       -- | 
 | 11 | -- particular, achieving the same results as the tests here is not    -- | 
 | 12 | -- a guarantee that an implementation complies with any Standard      -- | 
 | 13 | -- or specification.  The tests are not exhaustive.                   -- | 
 | 14 | --                                                                    -- | 
 | 15 | -- Please send comments, suggestions, and corrections to the author:  -- | 
 | 16 | --   Mike Cowlishaw, IBM Fellow                                       -- | 
 | 17 | --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         -- | 
 | 18 | --   mfc@uk.ibm.com                                                   -- | 
 | 19 | ------------------------------------------------------------------------ | 
| Mark Dickinson | d08fb83 | 2009-10-08 16:33:06 +0000 | [diff] [blame] | 20 | version: 2.59 | 
| Raymond Hettinger | 7c85fa4 | 2004-07-01 11:01:35 +0000 | [diff] [blame] | 21 |  | 
 | 22 | -- This set of tests uses the same limits as the 8-byte concrete | 
 | 23 | -- representation, but applies clamping without using format-specific | 
 | 24 | -- conversions. | 
 | 25 |  | 
 | 26 | extended:    1 | 
 | 27 | precision:   16 | 
 | 28 | rounding:    half_even | 
 | 29 | maxExponent: 384 | 
 | 30 | minExponent: -383 | 
 | 31 | clamp:       1 | 
 | 32 |  | 
 | 33 | -- General testcases | 
 | 34 |  | 
 | 35 | -- Normality | 
 | 36 | clam010 apply   1234567890123456   ->  1234567890123456 | 
 | 37 | clam011 apply   1234567890123456.0 ->  1234567890123456 Rounded | 
 | 38 | clam012 apply   1234567890123456.1 ->  1234567890123456 Rounded Inexact | 
 | 39 | clam013 apply  -1234567890123456   -> -1234567890123456 | 
 | 40 | clam014 apply  -1234567890123456.0 -> -1234567890123456 Rounded | 
 | 41 | clam015 apply  -1234567890123456.1 -> -1234567890123456 Rounded Inexact | 
 | 42 |  | 
 | 43 |  | 
 | 44 | -- Nmax and similar | 
 | 45 | clam022 apply   9.999999999999999E+384  -> 9.999999999999999E+384 | 
 | 46 | clam024 apply   1.234567890123456E+384  -> 1.234567890123456E+384 | 
 | 47 | -- fold-downs (more below) | 
 | 48 | clam030 apply   1.23E+384               -> 1.230000000000000E+384 Clamped | 
 | 49 | clam032 apply   1E+384                  -> 1.000000000000000E+384 Clamped | 
 | 50 |  | 
 | 51 | clam051 apply   12345                   -> 12345 | 
 | 52 | clam053 apply   1234                    -> 1234 | 
 | 53 | clam055 apply   123                     -> 123 | 
 | 54 | clam057 apply   12                      -> 12 | 
 | 55 | clam059 apply   1                       -> 1 | 
 | 56 | clam061 apply   1.23                    -> 1.23 | 
 | 57 | clam063 apply   123.45                  -> 123.45 | 
 | 58 |  | 
 | 59 | -- Nmin and below | 
 | 60 | clam071 apply   1E-383                  -> 1E-383 | 
 | 61 | clam073 apply   1.000000000000000E-383  -> 1.000000000000000E-383 | 
 | 62 | clam075 apply   1.000000000000001E-383  -> 1.000000000000001E-383 | 
 | 63 |  | 
 | 64 | clam077 apply   0.100000000000000E-383  -> 1.00000000000000E-384  Subnormal | 
 | 65 | clam079 apply   0.000000000000010E-383  -> 1.0E-397               Subnormal | 
 | 66 | clam081 apply   0.00000000000001E-383   -> 1E-397                 Subnormal | 
 | 67 | clam083 apply   0.000000000000001E-383  -> 1E-398                 Subnormal | 
 | 68 |  | 
 | 69 | -- underflows | 
 | 70 | clam090 apply   1e-398                  -> #0000000000000001  Subnormal | 
 | 71 | clam091 apply   1.9e-398                -> #0000000000000002  Subnormal Underflow Inexact Rounded | 
 | 72 | clam092 apply   1.1e-398                -> #0000000000000001  Subnormal Underflow Inexact Rounded | 
 | 73 | clam093 apply   1.00000000001e-398      -> #0000000000000001  Subnormal Underflow Inexact Rounded | 
 | 74 | clam094 apply   1.00000000000001e-398   -> #0000000000000001  Subnormal Underflow Inexact Rounded | 
 | 75 | clam095 apply   1.000000000000001e-398  -> #0000000000000001  Subnormal Underflow Inexact Rounded | 
| Thomas Wouters | 1b7f891 | 2007-09-19 03:06:30 +0000 | [diff] [blame] | 76 | clam096 apply   0.1e-398                -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped | 
 | 77 | clam097 apply   0.00000000001e-398      -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped | 
 | 78 | clam098 apply   0.00000000000001e-398   -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped | 
 | 79 | clam099 apply   0.000000000000001e-398  -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped | 
| Raymond Hettinger | 7c85fa4 | 2004-07-01 11:01:35 +0000 | [diff] [blame] | 80 |  | 
 | 81 | -- Same again, negatives | 
 | 82 | -- Nmax and similar | 
 | 83 | clam122 apply  -9.999999999999999E+384  -> -9.999999999999999E+384 | 
 | 84 | clam124 apply  -1.234567890123456E+384  -> -1.234567890123456E+384 | 
 | 85 | -- fold-downs (more below) | 
 | 86 | clam130 apply  -1.23E+384               -> -1.230000000000000E+384 Clamped | 
 | 87 | clam132 apply  -1E+384                  -> -1.000000000000000E+384 Clamped | 
 | 88 |  | 
 | 89 | clam151 apply  -12345                   -> -12345 | 
 | 90 | clam153 apply  -1234                    -> -1234 | 
 | 91 | clam155 apply  -123                     -> -123 | 
 | 92 | clam157 apply  -12                      -> -12 | 
 | 93 | clam159 apply  -1                       -> -1 | 
 | 94 | clam161 apply  -1.23                    -> -1.23 | 
 | 95 | clam163 apply  -123.45                  -> -123.45 | 
 | 96 |  | 
 | 97 | -- Nmin and below | 
 | 98 | clam171 apply  -1E-383                  -> -1E-383 | 
 | 99 | clam173 apply  -1.000000000000000E-383  -> -1.000000000000000E-383 | 
 | 100 | clam175 apply  -1.000000000000001E-383  -> -1.000000000000001E-383 | 
 | 101 |  | 
 | 102 | clam177 apply  -0.100000000000000E-383  -> -1.00000000000000E-384  Subnormal | 
 | 103 | clam179 apply  -0.000000000000010E-383  -> -1.0E-397               Subnormal | 
 | 104 | clam181 apply  -0.00000000000001E-383   -> -1E-397                 Subnormal | 
 | 105 | clam183 apply  -0.000000000000001E-383  -> -1E-398                 Subnormal | 
 | 106 |  | 
 | 107 | -- underflows | 
 | 108 | clam189 apply   -1e-398                 -> #8000000000000001  Subnormal | 
 | 109 | clam190 apply   -1.0e-398               -> #8000000000000001  Subnormal Rounded | 
 | 110 | clam191 apply   -1.9e-398               -> #8000000000000002  Subnormal Underflow Inexact Rounded | 
 | 111 | clam192 apply   -1.1e-398               -> #8000000000000001  Subnormal Underflow Inexact Rounded | 
 | 112 | clam193 apply   -1.00000000001e-398     -> #8000000000000001  Subnormal Underflow Inexact Rounded | 
 | 113 | clam194 apply   -1.00000000000001e-398  -> #8000000000000001  Subnormal Underflow Inexact Rounded | 
 | 114 | clam195 apply   -1.000000000000001e-398 -> #8000000000000001  Subnormal Underflow Inexact Rounded | 
| Thomas Wouters | 1b7f891 | 2007-09-19 03:06:30 +0000 | [diff] [blame] | 115 | clam196 apply   -0.1e-398               -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped | 
 | 116 | clam197 apply   -0.00000000001e-398     -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped | 
 | 117 | clam198 apply   -0.00000000000001e-398  -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped | 
 | 118 | clam199 apply   -0.000000000000001e-398 -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped | 
| Raymond Hettinger | 7c85fa4 | 2004-07-01 11:01:35 +0000 | [diff] [blame] | 119 |  | 
 | 120 | -- zeros | 
 | 121 | clam401 apply   0E-500                  -> 0E-398  Clamped | 
 | 122 | clam402 apply   0E-400                  -> 0E-398  Clamped | 
 | 123 | clam403 apply   0E-398                  -> 0E-398 | 
 | 124 | clam404 apply   0.000000000000000E-383  -> 0E-398 | 
 | 125 | clam405 apply   0E-2                    ->  0.00 | 
 | 126 | clam406 apply   0                       -> 0 | 
 | 127 | clam407 apply   0E+3                    -> 0E+3 | 
 | 128 | clam408 apply   0E+369                  -> 0E+369 | 
 | 129 | -- clamped zeros... | 
 | 130 | clam410 apply   0E+370                  -> 0E+369 Clamped | 
 | 131 | clam411 apply   0E+384                  -> 0E+369 Clamped | 
 | 132 | clam412 apply   0E+400                  -> 0E+369 Clamped | 
 | 133 | clam413 apply   0E+500                  -> 0E+369 Clamped | 
 | 134 |  | 
 | 135 | -- negative zeros | 
 | 136 | clam420 apply   -0E-500                 -> -0E-398 Clamped | 
 | 137 | clam421 apply   -0E-400                 -> -0E-398 Clamped | 
 | 138 | clam422 apply   -0E-398                 -> -0E-398 | 
 | 139 | clam423 apply   -0.000000000000000E-383 -> -0E-398 | 
 | 140 | clam424 apply   -0E-2                   -> -0.00 | 
 | 141 | clam425 apply   -0                      -> -0 | 
 | 142 | clam426 apply   -0E+3                   -> -0E+3 | 
 | 143 | clam427 apply   -0E+369                 -> -0E+369 | 
 | 144 | -- clamped zeros... | 
 | 145 | clam431 apply   -0E+370                 -> -0E+369 Clamped | 
 | 146 | clam432 apply   -0E+384                 -> -0E+369 Clamped | 
 | 147 | clam433 apply   -0E+400                 -> -0E+369 Clamped | 
 | 148 | clam434 apply   -0E+500                 -> -0E+369 Clamped | 
 | 149 |  | 
 | 150 | -- fold-down full sequence | 
 | 151 | clam601 apply   1E+384                  -> 1.000000000000000E+384 Clamped | 
 | 152 | clam603 apply   1E+383                  -> 1.00000000000000E+383 Clamped | 
 | 153 | clam605 apply   1E+382                  -> 1.0000000000000E+382 Clamped | 
 | 154 | clam607 apply   1E+381                  -> 1.000000000000E+381 Clamped | 
 | 155 | clam609 apply   1E+380                  -> 1.00000000000E+380 Clamped | 
 | 156 | clam611 apply   1E+379                  -> 1.0000000000E+379 Clamped | 
 | 157 | clam613 apply   1E+378                  -> 1.000000000E+378 Clamped | 
 | 158 | clam615 apply   1E+377                  -> 1.00000000E+377 Clamped | 
 | 159 | clam617 apply   1E+376                  -> 1.0000000E+376 Clamped | 
 | 160 | clam619 apply   1E+375                  -> 1.000000E+375 Clamped | 
 | 161 | clam621 apply   1E+374                  -> 1.00000E+374 Clamped | 
 | 162 | clam623 apply   1E+373                  -> 1.0000E+373 Clamped | 
 | 163 | clam625 apply   1E+372                  -> 1.000E+372 Clamped | 
 | 164 | clam627 apply   1E+371                  -> 1.00E+371 Clamped | 
 | 165 | clam629 apply   1E+370                  -> 1.0E+370 Clamped | 
 | 166 | clam631 apply   1E+369                  -> 1E+369 | 
 | 167 | clam633 apply   1E+368                  -> 1E+368 | 
 | 168 | -- same with 9s | 
 | 169 | clam641 apply   9E+384                  -> 9.000000000000000E+384 Clamped | 
 | 170 | clam643 apply   9E+383                  -> 9.00000000000000E+383 Clamped | 
 | 171 | clam645 apply   9E+382                  -> 9.0000000000000E+382 Clamped | 
 | 172 | clam647 apply   9E+381                  -> 9.000000000000E+381 Clamped | 
 | 173 | clam649 apply   9E+380                  -> 9.00000000000E+380 Clamped | 
 | 174 | clam651 apply   9E+379                  -> 9.0000000000E+379 Clamped | 
 | 175 | clam653 apply   9E+378                  -> 9.000000000E+378 Clamped | 
 | 176 | clam655 apply   9E+377                  -> 9.00000000E+377 Clamped | 
 | 177 | clam657 apply   9E+376                  -> 9.0000000E+376 Clamped | 
 | 178 | clam659 apply   9E+375                  -> 9.000000E+375 Clamped | 
 | 179 | clam661 apply   9E+374                  -> 9.00000E+374 Clamped | 
 | 180 | clam663 apply   9E+373                  -> 9.0000E+373 Clamped | 
 | 181 | clam665 apply   9E+372                  -> 9.000E+372 Clamped | 
 | 182 | clam667 apply   9E+371                  -> 9.00E+371 Clamped | 
 | 183 | clam669 apply   9E+370                  -> 9.0E+370 Clamped | 
 | 184 | clam671 apply   9E+369                  -> 9E+369 | 
 | 185 | clam673 apply   9E+368                  -> 9E+368 | 
 | 186 |  | 
| Thomas Wouters | 1b7f891 | 2007-09-19 03:06:30 +0000 | [diff] [blame] | 187 | -- subnormals clamped to 0-Etiny | 
 | 188 | precision:   16 | 
 | 189 | maxExponent: 384 | 
 | 190 | minExponent: -383 | 
 | 191 | clam681 apply 7E-398     -> 7E-398 Subnormal | 
 | 192 | clam682 apply 0E-398     -> 0E-398 | 
 | 193 | clam683 apply 7E-399     -> 1E-398 Subnormal Underflow Inexact Rounded | 
 | 194 | clam684 apply 4E-399     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded | 
 | 195 | clam685 apply 7E-400     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded | 
 | 196 | clam686 apply 7E-401     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded | 
 | 197 | clam687 apply 0E-399     -> 0E-398 Clamped | 
 | 198 | clam688 apply 0E-400     -> 0E-398 Clamped | 
 | 199 | clam689 apply 0E-401     -> 0E-398 Clamped | 
 | 200 |  | 
| Raymond Hettinger | 7c85fa4 | 2004-07-01 11:01:35 +0000 | [diff] [blame] | 201 | -- example from documentation | 
 | 202 | precision:   7 | 
 | 203 | rounding:    half_even | 
 | 204 | maxExponent: +96 | 
 | 205 | minExponent: -95 | 
 | 206 |  | 
 | 207 | clamp:       0 | 
 | 208 | clam700 apply   1.23E+96                -> 1.23E+96 | 
 | 209 |  | 
 | 210 | clamp:       1 | 
 | 211 | clam701 apply   1.23E+96                -> 1.230000E+96 Clamped |