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 | 8a54653 | 2009-10-08 16:30:38 +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 |