reduce.decTest 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. ------------------------------------------------------------------------
  2. -- reduce.decTest -- remove trailing zeros --
  3. -- Copyright (c) IBM Corporation, 2003, 2008. All rights reserved. --
  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. ------------------------------------------------------------------------
  20. -- [This used to be called normalize.]
  21. version: 2.59
  22. extended: 1
  23. precision: 9
  24. rounding: half_up
  25. maxExponent: 999
  26. minexponent: -999
  27. redx001 reduce '1' -> '1'
  28. redx002 reduce '-1' -> '-1'
  29. redx003 reduce '1.00' -> '1'
  30. redx004 reduce '-1.00' -> '-1'
  31. redx005 reduce '0' -> '0'
  32. redx006 reduce '0.00' -> '0'
  33. redx007 reduce '00.0' -> '0'
  34. redx008 reduce '00.00' -> '0'
  35. redx009 reduce '00' -> '0'
  36. redx010 reduce '0E+1' -> '0'
  37. redx011 reduce '0E+5' -> '0'
  38. redx012 reduce '-2' -> '-2'
  39. redx013 reduce '2' -> '2'
  40. redx014 reduce '-2.00' -> '-2'
  41. redx015 reduce '2.00' -> '2'
  42. redx016 reduce '-0' -> '-0'
  43. redx017 reduce '-0.00' -> '-0'
  44. redx018 reduce '-00.0' -> '-0'
  45. redx019 reduce '-00.00' -> '-0'
  46. redx020 reduce '-00' -> '-0'
  47. redx021 reduce '-0E+5' -> '-0'
  48. redx022 reduce '-0E+1' -> '-0'
  49. redx030 reduce '+0.1' -> '0.1'
  50. redx031 reduce '-0.1' -> '-0.1'
  51. redx032 reduce '+0.01' -> '0.01'
  52. redx033 reduce '-0.01' -> '-0.01'
  53. redx034 reduce '+0.001' -> '0.001'
  54. redx035 reduce '-0.001' -> '-0.001'
  55. redx036 reduce '+0.000001' -> '0.000001'
  56. redx037 reduce '-0.000001' -> '-0.000001'
  57. redx038 reduce '+0.000000000001' -> '1E-12'
  58. redx039 reduce '-0.000000000001' -> '-1E-12'
  59. redx041 reduce 1.1 -> 1.1
  60. redx042 reduce 1.10 -> 1.1
  61. redx043 reduce 1.100 -> 1.1
  62. redx044 reduce 1.110 -> 1.11
  63. redx045 reduce -1.1 -> -1.1
  64. redx046 reduce -1.10 -> -1.1
  65. redx047 reduce -1.100 -> -1.1
  66. redx048 reduce -1.110 -> -1.11
  67. redx049 reduce 9.9 -> 9.9
  68. redx050 reduce 9.90 -> 9.9
  69. redx051 reduce 9.900 -> 9.9
  70. redx052 reduce 9.990 -> 9.99
  71. redx053 reduce -9.9 -> -9.9
  72. redx054 reduce -9.90 -> -9.9
  73. redx055 reduce -9.900 -> -9.9
  74. redx056 reduce -9.990 -> -9.99
  75. -- some trailing fractional zeros with zeros in units
  76. redx060 reduce 10.0 -> 1E+1
  77. redx061 reduce 10.00 -> 1E+1
  78. redx062 reduce 100.0 -> 1E+2
  79. redx063 reduce 100.00 -> 1E+2
  80. redx064 reduce 1.1000E+3 -> 1.1E+3
  81. redx065 reduce 1.10000E+3 -> 1.1E+3
  82. redx066 reduce -10.0 -> -1E+1
  83. redx067 reduce -10.00 -> -1E+1
  84. redx068 reduce -100.0 -> -1E+2
  85. redx069 reduce -100.00 -> -1E+2
  86. redx070 reduce -1.1000E+3 -> -1.1E+3
  87. redx071 reduce -1.10000E+3 -> -1.1E+3
  88. -- some insignificant trailing zeros with positive exponent
  89. redx080 reduce 10E+1 -> 1E+2
  90. redx081 reduce 100E+1 -> 1E+3
  91. redx082 reduce 1.0E+2 -> 1E+2
  92. redx083 reduce 1.0E+3 -> 1E+3
  93. redx084 reduce 1.1E+3 -> 1.1E+3
  94. redx085 reduce 1.00E+3 -> 1E+3
  95. redx086 reduce 1.10E+3 -> 1.1E+3
  96. redx087 reduce -10E+1 -> -1E+2
  97. redx088 reduce -100E+1 -> -1E+3
  98. redx089 reduce -1.0E+2 -> -1E+2
  99. redx090 reduce -1.0E+3 -> -1E+3
  100. redx091 reduce -1.1E+3 -> -1.1E+3
  101. redx092 reduce -1.00E+3 -> -1E+3
  102. redx093 reduce -1.10E+3 -> -1.1E+3
  103. -- some significant trailing zeros, were we to be trimming
  104. redx100 reduce 11 -> 11
  105. redx101 reduce 10 -> 1E+1
  106. redx102 reduce 10. -> 1E+1
  107. redx103 reduce 1.1E+1 -> 11
  108. redx104 reduce 1.0E+1 -> 1E+1
  109. redx105 reduce 1.10E+2 -> 1.1E+2
  110. redx106 reduce 1.00E+2 -> 1E+2
  111. redx107 reduce 1.100E+3 -> 1.1E+3
  112. redx108 reduce 1.000E+3 -> 1E+3
  113. redx109 reduce 1.000000E+6 -> 1E+6
  114. redx110 reduce -11 -> -11
  115. redx111 reduce -10 -> -1E+1
  116. redx112 reduce -10. -> -1E+1
  117. redx113 reduce -1.1E+1 -> -11
  118. redx114 reduce -1.0E+1 -> -1E+1
  119. redx115 reduce -1.10E+2 -> -1.1E+2
  120. redx116 reduce -1.00E+2 -> -1E+2
  121. redx117 reduce -1.100E+3 -> -1.1E+3
  122. redx118 reduce -1.000E+3 -> -1E+3
  123. redx119 reduce -1.00000E+5 -> -1E+5
  124. redx120 reduce -1.000000E+6 -> -1E+6
  125. redx121 reduce -10.00000E+6 -> -1E+7
  126. redx122 reduce -100.0000E+6 -> -1E+8
  127. redx123 reduce -1000.000E+6 -> -1E+9
  128. redx124 reduce -10000.00E+6 -> -1E+10
  129. redx125 reduce -100000.0E+6 -> -1E+11
  130. redx126 reduce -1000000.E+6 -> -1E+12
  131. -- examples from decArith
  132. redx140 reduce '2.1' -> '2.1'
  133. redx141 reduce '-2.0' -> '-2'
  134. redx142 reduce '1.200' -> '1.2'
  135. redx143 reduce '-120' -> '-1.2E+2'
  136. redx144 reduce '120.00' -> '1.2E+2'
  137. redx145 reduce '0.00' -> '0'
  138. -- overflow tests
  139. maxexponent: 999999999
  140. minexponent: -999999999
  141. precision: 3
  142. redx160 reduce 9.999E+999999999 -> Infinity Inexact Overflow Rounded
  143. redx161 reduce -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
  144. -- subnormals and underflow
  145. precision: 3
  146. maxexponent: 999
  147. minexponent: -999
  148. redx210 reduce 1.00E-999 -> 1E-999
  149. redx211 reduce 0.1E-999 -> 1E-1000 Subnormal
  150. redx212 reduce 0.10E-999 -> 1E-1000 Subnormal
  151. redx213 reduce 0.100E-999 -> 1E-1000 Subnormal Rounded
  152. redx214 reduce 0.01E-999 -> 1E-1001 Subnormal
  153. -- next is rounded to Emin
  154. redx215 reduce 0.999E-999 -> 1E-999 Inexact Rounded Subnormal Underflow
  155. redx216 reduce 0.099E-999 -> 1E-1000 Inexact Rounded Subnormal Underflow
  156. redx217 reduce 0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
  157. redx218 reduce 0.001E-999 -> 0 Inexact Rounded Subnormal Underflow Clamped
  158. redx219 reduce 0.0009E-999 -> 0 Inexact Rounded Subnormal Underflow Clamped
  159. redx220 reduce 0.0001E-999 -> 0 Inexact Rounded Subnormal Underflow Clamped
  160. redx230 reduce -1.00E-999 -> -1E-999
  161. redx231 reduce -0.1E-999 -> -1E-1000 Subnormal
  162. redx232 reduce -0.10E-999 -> -1E-1000 Subnormal
  163. redx233 reduce -0.100E-999 -> -1E-1000 Subnormal Rounded
  164. redx234 reduce -0.01E-999 -> -1E-1001 Subnormal
  165. -- next is rounded to Emin
  166. redx235 reduce -0.999E-999 -> -1E-999 Inexact Rounded Subnormal Underflow
  167. redx236 reduce -0.099E-999 -> -1E-1000 Inexact Rounded Subnormal Underflow
  168. redx237 reduce -0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow
  169. redx238 reduce -0.001E-999 -> -0 Inexact Rounded Subnormal Underflow Clamped
  170. redx239 reduce -0.0009E-999 -> -0 Inexact Rounded Subnormal Underflow Clamped
  171. redx240 reduce -0.0001E-999 -> -0 Inexact Rounded Subnormal Underflow Clamped
  172. -- more reshaping
  173. precision: 9
  174. redx260 reduce '56260E-10' -> '0.000005626'
  175. redx261 reduce '56260E-5' -> '0.5626'
  176. redx262 reduce '56260E-2' -> '562.6'
  177. redx263 reduce '56260E-1' -> '5626'
  178. redx265 reduce '56260E-0' -> '5.626E+4'
  179. redx266 reduce '56260E+0' -> '5.626E+4'
  180. redx267 reduce '56260E+1' -> '5.626E+5'
  181. redx268 reduce '56260E+2' -> '5.626E+6'
  182. redx269 reduce '56260E+3' -> '5.626E+7'
  183. redx270 reduce '56260E+4' -> '5.626E+8'
  184. redx271 reduce '56260E+5' -> '5.626E+9'
  185. redx272 reduce '56260E+6' -> '5.626E+10'
  186. redx280 reduce '-56260E-10' -> '-0.000005626'
  187. redx281 reduce '-56260E-5' -> '-0.5626'
  188. redx282 reduce '-56260E-2' -> '-562.6'
  189. redx283 reduce '-56260E-1' -> '-5626'
  190. redx285 reduce '-56260E-0' -> '-5.626E+4'
  191. redx286 reduce '-56260E+0' -> '-5.626E+4'
  192. redx287 reduce '-56260E+1' -> '-5.626E+5'
  193. redx288 reduce '-56260E+2' -> '-5.626E+6'
  194. redx289 reduce '-56260E+3' -> '-5.626E+7'
  195. redx290 reduce '-56260E+4' -> '-5.626E+8'
  196. redx291 reduce '-56260E+5' -> '-5.626E+9'
  197. redx292 reduce '-56260E+6' -> '-5.626E+10'
  198. -- FL test
  199. precision: 40
  200. redx295 reduce 9892345673.0123456780000000000 -> 9892345673.012345678
  201. -- specials
  202. redx820 reduce 'Inf' -> 'Infinity'
  203. redx821 reduce '-Inf' -> '-Infinity'
  204. redx822 reduce NaN -> NaN
  205. redx823 reduce sNaN -> NaN Invalid_operation
  206. redx824 reduce NaN101 -> NaN101
  207. redx825 reduce sNaN010 -> NaN10 Invalid_operation
  208. redx827 reduce -NaN -> -NaN
  209. redx828 reduce -sNaN -> -NaN Invalid_operation
  210. redx829 reduce -NaN101 -> -NaN101
  211. redx830 reduce -sNaN010 -> -NaN10 Invalid_operation
  212. -- payload decapitate
  213. precision: 5
  214. redx62100 reduce sNaN1234567890 -> NaN67890 Invalid_operation
  215. -- Null test
  216. redx900 reduce # -> NaN Invalid_operation