/Lib/test/decimaltestdata/ddFMA.decTest

http://unladen-swallow.googlecode.com/ · Unknown · 1698 lines · 1561 code · 137 blank · 0 comment · 0 complexity · 61cf3b51d9aa76e50b6062935955f12f MD5 · raw file

Large files are truncated click here to view the full file

  1. ------------------------------------------------------------------------
  2. -- ddFMA.decTest -- decDouble Fused Multiply Add --
  3. -- Copyright (c) IBM Corporation, 1981, 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. version: 2.58
  21. precision: 16
  22. maxExponent: 384
  23. minExponent: -383
  24. extended: 1
  25. clamp: 1
  26. rounding: half_even
  27. -- These tests comprese three parts:
  28. -- 1. Sanity checks and other three-operand tests (especially those
  29. -- where the fused operation makes a difference)
  30. -- 2. Multiply tests (third operand is neutral zero [0E+emax])
  31. -- 3. Addition tests (first operand is 1)
  32. -- The multiply and addition tests are extensive because FMA may have
  33. -- its own dedicated multiplication or addition routine(s), and they
  34. -- also inherently check the left-to-right properties.
  35. -- Sanity checks
  36. ddfma0001 fma 1 1 1 -> 2
  37. ddfma0002 fma 1 1 2 -> 3
  38. ddfma0003 fma 2 2 3 -> 7
  39. ddfma0004 fma 9 9 9 -> 90
  40. ddfma0005 fma -1 1 1 -> 0
  41. ddfma0006 fma -1 1 2 -> 1
  42. ddfma0007 fma -2 2 3 -> -1
  43. ddfma0008 fma -9 9 9 -> -72
  44. ddfma0011 fma 1 -1 1 -> 0
  45. ddfma0012 fma 1 -1 2 -> 1
  46. ddfma0013 fma 2 -2 3 -> -1
  47. ddfma0014 fma 9 -9 9 -> -72
  48. ddfma0015 fma 1 1 -1 -> 0
  49. ddfma0016 fma 1 1 -2 -> -1
  50. ddfma0017 fma 2 2 -3 -> 1
  51. ddfma0018 fma 9 9 -9 -> 72
  52. -- non-integer exacts
  53. ddfma0100 fma 25.2 63.6 -438 -> 1164.72
  54. ddfma0101 fma 0.301 0.380 334 -> 334.114380
  55. ddfma0102 fma 49.2 -4.8 23.3 -> -212.86
  56. ddfma0103 fma 4.22 0.079 -94.6 -> -94.26662
  57. ddfma0104 fma 903 0.797 0.887 -> 720.578
  58. ddfma0105 fma 6.13 -161 65.9 -> -921.03
  59. ddfma0106 fma 28.2 727 5.45 -> 20506.85
  60. ddfma0107 fma 4 605 688 -> 3108
  61. ddfma0108 fma 93.3 0.19 0.226 -> 17.953
  62. ddfma0109 fma 0.169 -341 5.61 -> -52.019
  63. ddfma0110 fma -72.2 30 -51.2 -> -2217.2
  64. ddfma0111 fma -0.409 13 20.4 -> 15.083
  65. ddfma0112 fma 317 77.0 19.0 -> 24428.0
  66. ddfma0113 fma 47 6.58 1.62 -> 310.88
  67. ddfma0114 fma 1.36 0.984 0.493 -> 1.83124
  68. ddfma0115 fma 72.7 274 1.56 -> 19921.36
  69. ddfma0116 fma 335 847 83 -> 283828
  70. ddfma0117 fma 666 0.247 25.4 -> 189.902
  71. ddfma0118 fma -3.87 3.06 78.0 -> 66.1578
  72. ddfma0119 fma 0.742 192 35.6 -> 178.064
  73. ddfma0120 fma -91.6 5.29 0.153 -> -484.411
  74. -- cases where result is different from separate multiply + add; each
  75. -- is preceded by the result of unfused multiply and add
  76. -- [this is about 20% of all similar cases in general]
  77. -- -> 7.123356429257969E+16
  78. ddfma0201 fma 27583489.6645 2582471078.04 2593183.42371 -> 7.123356429257970E+16 Inexact Rounded
  79. -- -> 22813275328.80506
  80. ddfma0208 fma 24280.355566 939577.397653 2032.013252 -> 22813275328.80507 Inexact Rounded
  81. -- -> -2.030397734278062E+16
  82. ddfma0209 fma 7848976432 -2586831.2281 137903.517909 -> -2.030397734278061E+16 Inexact Rounded
  83. -- -> 2040774094814.077
  84. ddfma0217 fma 56890.388731 35872030.4255 339337.123410 -> 2040774094814.078 Inexact Rounded
  85. -- -> 2.714469575205049E+18
  86. ddfma0220 fma 7533543.57445 360317763928 5073392.31638 -> 2.714469575205050E+18 Inexact Rounded
  87. -- -> 1.011676297716716E+19
  88. ddfma0223 fma 739945255.563 13672312784.1 -994381.53572 -> 1.011676297716715E+19 Inexact Rounded
  89. -- -> -2.914135721455315E+23
  90. ddfma0224 fma -413510957218 704729988550 9234162614.0 -> -2.914135721455314E+23 Inexact Rounded
  91. -- -> 2.620119863365786E+17
  92. ddfma0226 fma 437484.00601 598906432790 894450638.442 -> 2.620119863365787E+17 Inexact Rounded
  93. -- -> 1.272647995808178E+19
  94. ddfma0253 fma 73287556929 173651305.784 -358312568.389 -> 1.272647995808177E+19 Inexact Rounded
  95. -- -> -1.753769320861851E+18
  96. ddfma0257 fma 203258304486 -8628278.8066 153127.446727 -> -1.753769320861850E+18 Inexact Rounded
  97. -- -> -1.550737835263346E+17
  98. ddfma0260 fma 42560533.1774 -3643605282.86 178277.96377 -> -1.550737835263347E+17 Inexact Rounded
  99. -- -> 2.897624620576005E+22
  100. ddfma0269 fma 142656587375 203118879670 604576103991 -> 2.897624620576004E+22 Inexact Rounded
  101. -- Cases where multiply would overflow or underflow if separate
  102. fma0300 fma 9e+384 10 0 -> Infinity Overflow Inexact Rounded
  103. fma0301 fma 1e+384 10 0 -> Infinity Overflow Inexact Rounded
  104. fma0302 fma 1e+384 10 -1e+384 -> 9.000000000000000E+384 Clamped
  105. fma0303 fma 1e+384 10 -9e+384 -> 1.000000000000000E+384 Clamped
  106. -- subnormal etc.
  107. fma0305 fma 1e-398 0.1 0 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
  108. fma0306 fma 1e-398 0.1 1 -> 1.000000000000000 Inexact Rounded
  109. fma0307 fma 1e-398 0.1 1e-398 -> 1E-398 Underflow Subnormal Inexact Rounded
  110. -- Infinite combinations
  111. ddfma0800 fma Inf Inf Inf -> Infinity
  112. ddfma0801 fma Inf Inf -Inf -> NaN Invalid_operation
  113. ddfma0802 fma Inf -Inf Inf -> NaN Invalid_operation
  114. ddfma0803 fma Inf -Inf -Inf -> -Infinity
  115. ddfma0804 fma -Inf Inf Inf -> NaN Invalid_operation
  116. ddfma0805 fma -Inf Inf -Inf -> -Infinity
  117. ddfma0806 fma -Inf -Inf Inf -> Infinity
  118. ddfma0807 fma -Inf -Inf -Inf -> NaN Invalid_operation
  119. -- Triple NaN propagation
  120. ddfma0900 fma NaN2 NaN3 NaN5 -> NaN2
  121. ddfma0901 fma 0 NaN3 NaN5 -> NaN3
  122. ddfma0902 fma 0 0 NaN5 -> NaN5
  123. -- first sNaN wins (consider qNaN from earlier sNaN being
  124. -- overridden by an sNaN in third operand)
  125. ddfma0903 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation
  126. ddfma0904 fma 0 sNaN2 sNaN3 -> NaN2 Invalid_operation
  127. ddfma0905 fma 0 0 sNaN3 -> NaN3 Invalid_operation
  128. ddfma0906 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation
  129. ddfma0907 fma NaN7 sNaN2 sNaN3 -> NaN2 Invalid_operation
  130. ddfma0908 fma NaN7 NaN5 sNaN3 -> NaN3 Invalid_operation
  131. -- MULTIPLICATION TESTS ------------------------------------------------
  132. -- sanity checks
  133. ddfma2000 fma 2 2 0e+384 -> 4
  134. ddfma2001 fma 2 3 0e+384 -> 6
  135. ddfma2002 fma 5 1 0e+384 -> 5
  136. ddfma2003 fma 5 2 0e+384 -> 10
  137. ddfma2004 fma 1.20 2 0e+384 -> 2.40
  138. ddfma2005 fma 1.20 0 0e+384 -> 0.00
  139. ddfma2006 fma 1.20 -2 0e+384 -> -2.40
  140. ddfma2007 fma -1.20 2 0e+384 -> -2.40
  141. ddfma2008 fma -1.20 0 0e+384 -> 0.00
  142. ddfma2009 fma -1.20 -2 0e+384 -> 2.40
  143. ddfma2010 fma 5.09 7.1 0e+384 -> 36.139
  144. ddfma2011 fma 2.5 4 0e+384 -> 10.0
  145. ddfma2012 fma 2.50 4 0e+384 -> 10.00
  146. ddfma2013 fma 1.23456789 1.00000000 0e+384 -> 1.234567890000000 Rounded
  147. ddfma2015 fma 2.50 4 0e+384 -> 10.00
  148. ddfma2016 fma 9.999999999 9.999999999 0e+384 -> 99.99999998000000 Inexact Rounded
  149. ddfma2017 fma 9.999999999 -9.999999999 0e+384 -> -99.99999998000000 Inexact Rounded
  150. ddfma2018 fma -9.999999999 9.999999999 0e+384 -> -99.99999998000000 Inexact Rounded
  151. ddfma2019 fma -9.999999999 -9.999999999 0e+384 -> 99.99999998000000 Inexact Rounded
  152. -- zeros, etc.
  153. ddfma2021 fma 0 0 0e+384 -> 0
  154. ddfma2022 fma 0 -0 0e+384 -> 0
  155. ddfma2023 fma -0 0 0e+384 -> 0
  156. ddfma2024 fma -0 -0 0e+384 -> 0
  157. ddfma2025 fma -0.0 -0.0 0e+384 -> 0.00
  158. ddfma2026 fma -0.0 -0.0 0e+384 -> 0.00
  159. ddfma2027 fma -0.0 -0.0 0e+384 -> 0.00
  160. ddfma2028 fma -0.0 -0.0 0e+384 -> 0.00
  161. ddfma2030 fma 5.00 1E-3 0e+384 -> 0.00500
  162. ddfma2031 fma 00.00 0.000 0e+384 -> 0.00000
  163. ddfma2032 fma 00.00 0E-3 0e+384 -> 0.00000 -- rhs is 0
  164. ddfma2033 fma 0E-3 00.00 0e+384 -> 0.00000 -- lhs is 0
  165. ddfma2034 fma -5.00 1E-3 0e+384 -> -0.00500
  166. ddfma2035 fma -00.00 0.000 0e+384 -> 0.00000
  167. ddfma2036 fma -00.00 0E-3 0e+384 -> 0.00000 -- rhs is 0
  168. ddfma2037 fma -0E-3 00.00 0e+384 -> 0.00000 -- lhs is 0
  169. ddfma2038 fma 5.00 -1E-3 0e+384 -> -0.00500
  170. ddfma2039 fma 00.00 -0.000 0e+384 -> 0.00000
  171. ddfma2040 fma 00.00 -0E-3 0e+384 -> 0.00000 -- rhs is 0
  172. ddfma2041 fma 0E-3 -00.00 0e+384 -> 0.00000 -- lhs is 0
  173. ddfma2042 fma -5.00 -1E-3 0e+384 -> 0.00500
  174. ddfma2043 fma -00.00 -0.000 0e+384 -> 0.00000
  175. ddfma2044 fma -00.00 -0E-3 0e+384 -> 0.00000 -- rhs is 0
  176. ddfma2045 fma -0E-3 -00.00 -0e+384 -> 0.00000 -- lhs is 0
  177. ddfma2046 fma -0E-3 00.00 -0e+384 -> -0.00000
  178. ddfma2047 fma 0E-3 -00.00 -0e+384 -> -0.00000
  179. ddfma2048 fma 0E-3 00.00 -0e+384 -> 0.00000
  180. -- examples from decarith
  181. ddfma2050 fma 1.20 3 0e+384 -> 3.60
  182. ddfma2051 fma 7 3 0e+384 -> 21
  183. ddfma2052 fma 0.9 0.8 0e+384 -> 0.72
  184. ddfma2053 fma 0.9 -0 0e+384 -> 0.0
  185. ddfma2054 fma 654321 654321 0e+384 -> 428135971041
  186. ddfma2060 fma 123.45 1e7 0e+384 -> 1.2345E+9
  187. ddfma2061 fma 123.45 1e8 0e+384 -> 1.2345E+10
  188. ddfma2062 fma 123.45 1e+9 0e+384 -> 1.2345E+11
  189. ddfma2063 fma 123.45 1e10 0e+384 -> 1.2345E+12
  190. ddfma2064 fma 123.45 1e11 0e+384 -> 1.2345E+13
  191. ddfma2065 fma 123.45 1e12 0e+384 -> 1.2345E+14
  192. ddfma2066 fma 123.45 1e13 0e+384 -> 1.2345E+15
  193. -- test some intermediate lengths
  194. -- 1234567890123456
  195. ddfma2080 fma 0.1 1230123456456789 0e+384 -> 123012345645678.9
  196. ddfma2084 fma 0.1 1230123456456789 0e+384 -> 123012345645678.9
  197. ddfma2090 fma 1230123456456789 0.1 0e+384 -> 123012345645678.9
  198. ddfma2094 fma 1230123456456789 0.1 0e+384 -> 123012345645678.9
  199. -- test some more edge cases and carries
  200. ddfma2101 fma 9 9 0e+384 -> 81
  201. ddfma2102 fma 9 90 0e+384 -> 810
  202. ddfma2103 fma 9 900 0e+384 -> 8100
  203. ddfma2104 fma 9 9000 0e+384 -> 81000
  204. ddfma2105 fma 9 90000 0e+384 -> 810000
  205. ddfma2106 fma 9 900000 0e+384 -> 8100000
  206. ddfma2107 fma 9 9000000 0e+384 -> 81000000
  207. ddfma2108 fma 9 90000000 0e+384 -> 810000000
  208. ddfma2109 fma 9 900000000 0e+384 -> 8100000000
  209. ddfma2110 fma 9 9000000000 0e+384 -> 81000000000
  210. ddfma2111 fma 9 90000000000 0e+384 -> 810000000000
  211. ddfma2112 fma 9 900000000000 0e+384 -> 8100000000000
  212. ddfma2113 fma 9 9000000000000 0e+384 -> 81000000000000
  213. ddfma2114 fma 9 90000000000000 0e+384 -> 810000000000000
  214. ddfma2115 fma 9 900000000000000 0e+384 -> 8100000000000000
  215. --ddfma2116 fma 9 9000000000000000 0e+384 -> 81000000000000000
  216. --ddfma2117 fma 9 90000000000000000 0e+384 -> 810000000000000000
  217. --ddfma2118 fma 9 900000000000000000 0e+384 -> 8100000000000000000
  218. --ddfma2119 fma 9 9000000000000000000 0e+384 -> 81000000000000000000
  219. --ddfma2120 fma 9 90000000000000000000 0e+384 -> 810000000000000000000
  220. --ddfma2121 fma 9 900000000000000000000 0e+384 -> 8100000000000000000000
  221. --ddfma2122 fma 9 9000000000000000000000 0e+384 -> 81000000000000000000000
  222. --ddfma2123 fma 9 90000000000000000000000 0e+384 -> 810000000000000000000000
  223. -- test some more edge cases without carries
  224. ddfma2131 fma 3 3 0e+384 -> 9
  225. ddfma2132 fma 3 30 0e+384 -> 90
  226. ddfma2133 fma 3 300 0e+384 -> 900
  227. ddfma2134 fma 3 3000 0e+384 -> 9000
  228. ddfma2135 fma 3 30000 0e+384 -> 90000
  229. ddfma2136 fma 3 300000 0e+384 -> 900000
  230. ddfma2137 fma 3 3000000 0e+384 -> 9000000
  231. ddfma2138 fma 3 30000000 0e+384 -> 90000000
  232. ddfma2139 fma 3 300000000 0e+384 -> 900000000
  233. ddfma2140 fma 3 3000000000 0e+384 -> 9000000000
  234. ddfma2141 fma 3 30000000000 0e+384 -> 90000000000
  235. ddfma2142 fma 3 300000000000 0e+384 -> 900000000000
  236. ddfma2143 fma 3 3000000000000 0e+384 -> 9000000000000
  237. ddfma2144 fma 3 30000000000000 0e+384 -> 90000000000000
  238. ddfma2145 fma 3 300000000000000 0e+384 -> 900000000000000
  239. -- test some edge cases with exact rounding
  240. ddfma2301 fma 9 9 0e+384 -> 81
  241. ddfma2302 fma 9 90 0e+384 -> 810
  242. ddfma2303 fma 9 900 0e+384 -> 8100
  243. ddfma2304 fma 9 9000 0e+384 -> 81000
  244. ddfma2305 fma 9 90000 0e+384 -> 810000
  245. ddfma2306 fma 9 900000 0e+384 -> 8100000
  246. ddfma2307 fma 9 9000000 0e+384 -> 81000000
  247. ddfma2308 fma 9 90000000 0e+384 -> 810000000
  248. ddfma2309 fma 9 900000000 0e+384 -> 8100000000
  249. ddfma2310 fma 9 9000000000 0e+384 -> 81000000000
  250. ddfma2311 fma 9 90000000000 0e+384 -> 810000000000
  251. ddfma2312 fma 9 900000000000 0e+384 -> 8100000000000
  252. ddfma2313 fma 9 9000000000000 0e+384 -> 81000000000000
  253. ddfma2314 fma 9 90000000000000 0e+384 -> 810000000000000
  254. ddfma2315 fma 9 900000000000000 0e+384 -> 8100000000000000
  255. ddfma2316 fma 9 9000000000000000 0e+384 -> 8.100000000000000E+16 Rounded
  256. ddfma2317 fma 90 9000000000000000 0e+384 -> 8.100000000000000E+17 Rounded
  257. ddfma2318 fma 900 9000000000000000 0e+384 -> 8.100000000000000E+18 Rounded
  258. ddfma2319 fma 9000 9000000000000000 0e+384 -> 8.100000000000000E+19 Rounded
  259. ddfma2320 fma 90000 9000000000000000 0e+384 -> 8.100000000000000E+20 Rounded
  260. ddfma2321 fma 900000 9000000000000000 0e+384 -> 8.100000000000000E+21 Rounded
  261. ddfma2322 fma 9000000 9000000000000000 0e+384 -> 8.100000000000000E+22 Rounded
  262. ddfma2323 fma 90000000 9000000000000000 0e+384 -> 8.100000000000000E+23 Rounded
  263. -- tryzeros cases
  264. ddfma2504 fma 0E-260 1000E-260 0e+384 -> 0E-398 Clamped
  265. ddfma2505 fma 100E+260 0E+260 0e+384 -> 0E+369 Clamped
  266. -- mixed with zeros
  267. ddfma2541 fma 0 -1 0e+384 -> 0
  268. ddfma2542 fma -0 -1 0e+384 -> 0
  269. ddfma2543 fma 0 1 0e+384 -> 0
  270. ddfma2544 fma -0 1 0e+384 -> 0
  271. ddfma2545 fma -1 0 0e+384 -> 0
  272. ddfma2546 fma -1 -0 0e+384 -> 0
  273. ddfma2547 fma 1 0 0e+384 -> 0
  274. ddfma2548 fma 1 -0 0e+384 -> 0
  275. ddfma2551 fma 0.0 -1 0e+384 -> 0.0
  276. ddfma2552 fma -0.0 -1 0e+384 -> 0.0
  277. ddfma2553 fma 0.0 1 0e+384 -> 0.0
  278. ddfma2554 fma -0.0 1 0e+384 -> 0.0
  279. ddfma2555 fma -1.0 0 0e+384 -> 0.0
  280. ddfma2556 fma -1.0 -0 0e+384 -> 0.0
  281. ddfma2557 fma 1.0 0 0e+384 -> 0.0
  282. ddfma2558 fma 1.0 -0 0e+384 -> 0.0
  283. ddfma2561 fma 0 -1.0 0e+384 -> 0.0
  284. ddfma2562 fma -0 -1.0 0e+384 -> 0.0
  285. ddfma2563 fma 0 1.0 0e+384 -> 0.0
  286. ddfma2564 fma -0 1.0 0e+384 -> 0.0
  287. ddfma2565 fma -1 0.0 0e+384 -> 0.0
  288. ddfma2566 fma -1 -0.0 0e+384 -> 0.0
  289. ddfma2567 fma 1 0.0 0e+384 -> 0.0
  290. ddfma2568 fma 1 -0.0 0e+384 -> 0.0
  291. ddfma2571 fma 0.0 -1.0 0e+384 -> 0.00
  292. ddfma2572 fma -0.0 -1.0 0e+384 -> 0.00
  293. ddfma2573 fma 0.0 1.0 0e+384 -> 0.00
  294. ddfma2574 fma -0.0 1.0 0e+384 -> 0.00
  295. ddfma2575 fma -1.0 0.0 0e+384 -> 0.00
  296. ddfma2576 fma -1.0 -0.0 0e+384 -> 0.00
  297. ddfma2577 fma 1.0 0.0 0e+384 -> 0.00
  298. ddfma2578 fma 1.0 -0.0 0e+384 -> 0.00
  299. -- Specials
  300. ddfma2580 fma Inf -Inf 0e+384 -> -Infinity
  301. ddfma2581 fma Inf -1000 0e+384 -> -Infinity
  302. ddfma2582 fma Inf -1 0e+384 -> -Infinity
  303. ddfma2583 fma Inf -0 0e+384 -> NaN Invalid_operation
  304. ddfma2584 fma Inf 0 0e+384 -> NaN Invalid_operation
  305. ddfma2585 fma Inf 1 0e+384 -> Infinity
  306. ddfma2586 fma Inf 1000 0e+384 -> Infinity
  307. ddfma2587 fma Inf Inf 0e+384 -> Infinity
  308. ddfma2588 fma -1000 Inf 0e+384 -> -Infinity
  309. ddfma2589 fma -Inf Inf 0e+384 -> -Infinity
  310. ddfma2590 fma -1 Inf 0e+384 -> -Infinity
  311. ddfma2591 fma -0 Inf 0e+384 -> NaN Invalid_operation
  312. ddfma2592 fma 0 Inf 0e+384 -> NaN Invalid_operation
  313. ddfma2593 fma 1 Inf 0e+384 -> Infinity
  314. ddfma2594 fma 1000 Inf 0e+384 -> Infinity
  315. ddfma2595 fma Inf Inf 0e+384 -> Infinity
  316. ddfma2600 fma -Inf -Inf 0e+384 -> Infinity
  317. ddfma2601 fma -Inf -1000 0e+384 -> Infinity
  318. ddfma2602 fma -Inf -1 0e+384 -> Infinity
  319. ddfma2603 fma -Inf -0 0e+384 -> NaN Invalid_operation
  320. ddfma2604 fma -Inf 0 0e+384 -> NaN Invalid_operation
  321. ddfma2605 fma -Inf 1 0e+384 -> -Infinity
  322. ddfma2606 fma -Inf 1000 0e+384 -> -Infinity
  323. ddfma2607 fma -Inf Inf 0e+384 -> -Infinity
  324. ddfma2608 fma -1000 Inf 0e+384 -> -Infinity
  325. ddfma2609 fma -Inf -Inf 0e+384 -> Infinity
  326. ddfma2610 fma -1 -Inf 0e+384 -> Infinity
  327. ddfma2611 fma -0 -Inf 0e+384 -> NaN Invalid_operation
  328. ddfma2612 fma 0 -Inf 0e+384 -> NaN Invalid_operation
  329. ddfma2613 fma 1 -Inf 0e+384 -> -Infinity
  330. ddfma2614 fma 1000 -Inf 0e+384 -> -Infinity
  331. ddfma2615 fma Inf -Inf 0e+384 -> -Infinity
  332. ddfma2621 fma NaN -Inf 0e+384 -> NaN
  333. ddfma2622 fma NaN -1000 0e+384 -> NaN
  334. ddfma2623 fma NaN -1 0e+384 -> NaN
  335. ddfma2624 fma NaN -0 0e+384 -> NaN
  336. ddfma2625 fma NaN 0 0e+384 -> NaN
  337. ddfma2626 fma NaN 1 0e+384 -> NaN
  338. ddfma2627 fma NaN 1000 0e+384 -> NaN
  339. ddfma2628 fma NaN Inf 0e+384 -> NaN
  340. ddfma2629 fma NaN NaN 0e+384 -> NaN
  341. ddfma2630 fma -Inf NaN 0e+384 -> NaN
  342. ddfma2631 fma -1000 NaN 0e+384 -> NaN
  343. ddfma2632 fma -1 NaN 0e+384 -> NaN
  344. ddfma2633 fma -0 NaN 0e+384 -> NaN
  345. ddfma2634 fma 0 NaN 0e+384 -> NaN
  346. ddfma2635 fma 1 NaN 0e+384 -> NaN
  347. ddfma2636 fma 1000 NaN 0e+384 -> NaN
  348. ddfma2637 fma Inf NaN 0e+384 -> NaN
  349. ddfma2641 fma sNaN -Inf 0e+384 -> NaN Invalid_operation
  350. ddfma2642 fma sNaN -1000 0e+384 -> NaN Invalid_operation
  351. ddfma2643 fma sNaN -1 0e+384 -> NaN Invalid_operation
  352. ddfma2644 fma sNaN -0 0e+384 -> NaN Invalid_operation
  353. ddfma2645 fma sNaN 0 0e+384 -> NaN Invalid_operation
  354. ddfma2646 fma sNaN 1 0e+384 -> NaN Invalid_operation
  355. ddfma2647 fma sNaN 1000 0e+384 -> NaN Invalid_operation
  356. ddfma2648 fma sNaN NaN 0e+384 -> NaN Invalid_operation
  357. ddfma2649 fma sNaN sNaN 0e+384 -> NaN Invalid_operation
  358. ddfma2650 fma NaN sNaN 0e+384 -> NaN Invalid_operation
  359. ddfma2651 fma -Inf sNaN 0e+384 -> NaN Invalid_operation
  360. ddfma2652 fma -1000 sNaN 0e+384 -> NaN Invalid_operation
  361. ddfma2653 fma -1 sNaN 0e+384 -> NaN Invalid_operation
  362. ddfma2654 fma -0 sNaN 0e+384 -> NaN Invalid_operation
  363. ddfma2655 fma 0 sNaN 0e+384 -> NaN Invalid_operation
  364. ddfma2656 fma 1 sNaN 0e+384 -> NaN Invalid_operation
  365. ddfma2657 fma 1000 sNaN 0e+384 -> NaN Invalid_operation
  366. ddfma2658 fma Inf sNaN 0e+384 -> NaN Invalid_operation
  367. ddfma2659 fma NaN sNaN 0e+384 -> NaN Invalid_operation
  368. -- propagating NaNs
  369. ddfma2661 fma NaN9 -Inf 0e+384 -> NaN9
  370. ddfma2662 fma NaN8 999 0e+384 -> NaN8
  371. ddfma2663 fma NaN71 Inf 0e+384 -> NaN71
  372. ddfma2664 fma NaN6 NaN5 0e+384 -> NaN6
  373. ddfma2665 fma -Inf NaN4 0e+384 -> NaN4
  374. ddfma2666 fma -999 NaN33 0e+384 -> NaN33
  375. ddfma2667 fma Inf NaN2 0e+384 -> NaN2
  376. ddfma2671 fma sNaN99 -Inf 0e+384 -> NaN99 Invalid_operation
  377. ddfma2672 fma sNaN98 -11 0e+384 -> NaN98 Invalid_operation
  378. ddfma2673 fma sNaN97 NaN 0e+384 -> NaN97 Invalid_operation
  379. ddfma2674 fma sNaN16 sNaN94 0e+384 -> NaN16 Invalid_operation
  380. ddfma2675 fma NaN95 sNaN93 0e+384 -> NaN93 Invalid_operation
  381. ddfma2676 fma -Inf sNaN92 0e+384 -> NaN92 Invalid_operation
  382. ddfma2677 fma 088 sNaN91 0e+384 -> NaN91 Invalid_operation
  383. ddfma2678 fma Inf sNaN90 0e+384 -> NaN90 Invalid_operation
  384. ddfma2679 fma NaN sNaN89 0e+384 -> NaN89 Invalid_operation
  385. ddfma2681 fma -NaN9 -Inf 0e+384 -> -NaN9
  386. ddfma2682 fma -NaN8 999 0e+384 -> -NaN8
  387. ddfma2683 fma -NaN71 Inf 0e+384 -> -NaN71
  388. ddfma2684 fma -NaN6 -NaN5 0e+384 -> -NaN6
  389. ddfma2685 fma -Inf -NaN4 0e+384 -> -NaN4
  390. ddfma2686 fma -999 -NaN33 0e+384 -> -NaN33
  391. ddfma2687 fma Inf -NaN2 0e+384 -> -NaN2
  392. ddfma2691 fma -sNaN99 -Inf 0e+384 -> -NaN99 Invalid_operation
  393. ddfma2692 fma -sNaN98 -11 0e+384 -> -NaN98 Invalid_operation
  394. ddfma2693 fma -sNaN97 NaN 0e+384 -> -NaN97 Invalid_operation
  395. ddfma2694 fma -sNaN16 -sNaN94 0e+384 -> -NaN16 Invalid_operation
  396. ddfma2695 fma -NaN95 -sNaN93 0e+384 -> -NaN93 Invalid_operation
  397. ddfma2696 fma -Inf -sNaN92 0e+384 -> -NaN92 Invalid_operation
  398. ddfma2697 fma 088 -sNaN91 0e+384 -> -NaN91 Invalid_operation
  399. ddfma2698 fma Inf -sNaN90 0e+384 -> -NaN90 Invalid_operation
  400. ddfma2699 fma -NaN -sNaN89 0e+384 -> -NaN89 Invalid_operation
  401. ddfma2701 fma -NaN -Inf 0e+384 -> -NaN
  402. ddfma2702 fma -NaN 999 0e+384 -> -NaN
  403. ddfma2703 fma -NaN Inf 0e+384 -> -NaN
  404. ddfma2704 fma -NaN -NaN 0e+384 -> -NaN
  405. ddfma2705 fma -Inf -NaN0 0e+384 -> -NaN
  406. ddfma2706 fma -999 -NaN 0e+384 -> -NaN
  407. ddfma2707 fma Inf -NaN 0e+384 -> -NaN
  408. ddfma2711 fma -sNaN -Inf 0e+384 -> -NaN Invalid_operation
  409. ddfma2712 fma -sNaN -11 0e+384 -> -NaN Invalid_operation
  410. ddfma2713 fma -sNaN00 NaN 0e+384 -> -NaN Invalid_operation
  411. ddfma2714 fma -sNaN -sNaN 0e+384 -> -NaN Invalid_operation
  412. ddfma2715 fma -NaN -sNaN 0e+384 -> -NaN Invalid_operation
  413. ddfma2716 fma -Inf -sNaN 0e+384 -> -NaN Invalid_operation
  414. ddfma2717 fma 088 -sNaN 0e+384 -> -NaN Invalid_operation
  415. ddfma2718 fma Inf -sNaN 0e+384 -> -NaN Invalid_operation
  416. ddfma2719 fma -NaN -sNaN 0e+384 -> -NaN Invalid_operation
  417. -- overflow and underflow tests .. note subnormal results
  418. -- signs
  419. ddfma2751 fma 1e+277 1e+311 0e+384 -> Infinity Overflow Inexact Rounded
  420. ddfma2752 fma 1e+277 -1e+311 0e+384 -> -Infinity Overflow Inexact Rounded
  421. ddfma2753 fma -1e+277 1e+311 0e+384 -> -Infinity Overflow Inexact Rounded
  422. ddfma2754 fma -1e+277 -1e+311 0e+384 -> Infinity Overflow Inexact Rounded
  423. ddfma2755 fma 1e-277 1e-311 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
  424. ddfma2756 fma 1e-277 -1e-311 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
  425. ddfma2757 fma -1e-277 1e-311 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
  426. ddfma2758 fma -1e-277 -1e-311 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
  427. -- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
  428. ddfma2760 fma 1e-291 1e-101 0e+384 -> 1E-392 Subnormal
  429. ddfma2761 fma 1e-291 1e-102 0e+384 -> 1E-393 Subnormal
  430. ddfma2762 fma 1e-291 1e-103 0e+384 -> 1E-394 Subnormal
  431. ddfma2763 fma 1e-291 1e-104 0e+384 -> 1E-395 Subnormal
  432. ddfma2764 fma 1e-291 1e-105 0e+384 -> 1E-396 Subnormal
  433. ddfma2765 fma 1e-291 1e-106 0e+384 -> 1E-397 Subnormal
  434. ddfma2766 fma 1e-291 1e-107 0e+384 -> 1E-398 Subnormal
  435. ddfma2767 fma 1e-291 1e-108 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
  436. ddfma2768 fma 1e-291 1e-109 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
  437. ddfma2769 fma 1e-291 1e-110 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
  438. -- [no equivalent of 'subnormal' for overflow]
  439. ddfma2770 fma 1e+60 1e+321 0e+384 -> 1.000000000000E+381 Clamped
  440. ddfma2771 fma 1e+60 1e+322 0e+384 -> 1.0000000000000E+382 Clamped
  441. ddfma2772 fma 1e+60 1e+323 0e+384 -> 1.00000000000000E+383 Clamped
  442. ddfma2773 fma 1e+60 1e+324 0e+384 -> 1.000000000000000E+384 Clamped
  443. ddfma2774 fma 1e+60 1e+325 0e+384 -> Infinity Overflow Inexact Rounded
  444. ddfma2775 fma 1e+60 1e+326 0e+384 -> Infinity Overflow Inexact Rounded
  445. ddfma2776 fma 1e+60 1e+327 0e+384 -> Infinity Overflow Inexact Rounded
  446. ddfma2777 fma 1e+60 1e+328 0e+384 -> Infinity Overflow Inexact Rounded
  447. ddfma2778 fma 1e+60 1e+329 0e+384 -> Infinity Overflow Inexact Rounded
  448. ddfma2779 fma 1e+60 1e+330 0e+384 -> Infinity Overflow Inexact Rounded
  449. ddfma2801 fma 1.0000E-394 1 0e+384 -> 1.0000E-394 Subnormal
  450. ddfma2802 fma 1.000E-394 1e-1 0e+384 -> 1.000E-395 Subnormal
  451. ddfma2803 fma 1.00E-394 1e-2 0e+384 -> 1.00E-396 Subnormal
  452. ddfma2804 fma 1.0E-394 1e-3 0e+384 -> 1.0E-397 Subnormal
  453. ddfma2805 fma 1.0E-394 1e-4 0e+384 -> 1E-398 Subnormal Rounded
  454. ddfma2806 fma 1.3E-394 1e-4 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded
  455. ddfma2807 fma 1.5E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
  456. ddfma2808 fma 1.7E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
  457. ddfma2809 fma 2.3E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
  458. ddfma2810 fma 2.5E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
  459. ddfma2811 fma 2.7E-394 1e-4 0e+384 -> 3E-398 Underflow Subnormal Inexact Rounded
  460. ddfma2812 fma 1.49E-394 1e-4 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded
  461. ddfma2813 fma 1.50E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
  462. ddfma2814 fma 1.51E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
  463. ddfma2815 fma 2.49E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
  464. ddfma2816 fma 2.50E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
  465. ddfma2817 fma 2.51E-394 1e-4 0e+384 -> 3E-398 Underflow Subnormal Inexact Rounded
  466. ddfma2818 fma 1E-394 1e-4 0e+384 -> 1E-398 Subnormal
  467. ddfma2819 fma 3E-394 1e-5 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
  468. ddfma2820 fma 5E-394 1e-5 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
  469. ddfma2821 fma 7E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded
  470. ddfma2822 fma 9E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded
  471. ddfma2823 fma 9.9E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded
  472. ddfma2824 fma 1E-394 -1e-4 0e+384 -> -1E-398 Subnormal
  473. ddfma2825 fma 3E-394 -1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
  474. ddfma2826 fma -5E-394 1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
  475. ddfma2827 fma 7E-394 -1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded
  476. ddfma2828 fma -9E-394 1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded
  477. ddfma2829 fma 9.9E-394 -1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded
  478. ddfma2830 fma 3.0E-394 -1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
  479. ddfma2831 fma 1.0E-199 1e-200 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
  480. ddfma2832 fma 1.0E-199 1e-199 0e+384 -> 1E-398 Subnormal Rounded
  481. ddfma2833 fma 1.0E-199 1e-198 0e+384 -> 1.0E-397 Subnormal
  482. ddfma2834 fma 2.0E-199 2e-198 0e+384 -> 4.0E-397 Subnormal
  483. ddfma2835 fma 4.0E-199 4e-198 0e+384 -> 1.60E-396 Subnormal
  484. ddfma2836 fma 10.0E-199 10e-198 0e+384 -> 1.000E-395 Subnormal
  485. ddfma2837 fma 30.0E-199 30e-198 0e+384 -> 9.000E-395 Subnormal
  486. ddfma2838 fma 40.0E-199 40e-188 0e+384 -> 1.6000E-384 Subnormal
  487. ddfma2839 fma 40.0E-199 40e-187 0e+384 -> 1.6000E-383
  488. ddfma2840 fma 40.0E-199 40e-186 0e+384 -> 1.6000E-382
  489. -- Long operand overflow may be a different path
  490. ddfma2870 fma 100 9.999E+383 0e+384 -> Infinity Inexact Overflow Rounded
  491. ddfma2871 fma 100 -9.999E+383 0e+384 -> -Infinity Inexact Overflow Rounded
  492. ddfma2872 fma 9.999E+383 100 0e+384 -> Infinity Inexact Overflow Rounded
  493. ddfma2873 fma -9.999E+383 100 0e+384 -> -Infinity Inexact Overflow Rounded
  494. -- check for double-rounded subnormals
  495. ddfma2881 fma 1.2347E-355 1.2347E-40 0e+384 -> 1.524E-395 Inexact Rounded Subnormal Underflow
  496. ddfma2882 fma 1.234E-355 1.234E-40 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow
  497. ddfma2883 fma 1.23E-355 1.23E-40 0e+384 -> 1.513E-395 Inexact Rounded Subnormal Underflow
  498. ddfma2884 fma 1.2E-355 1.2E-40 0e+384 -> 1.44E-395 Subnormal
  499. ddfma2885 fma 1.2E-355 1.2E-41 0e+384 -> 1.44E-396 Subnormal
  500. ddfma2886 fma 1.2E-355 1.2E-42 0e+384 -> 1.4E-397 Subnormal Inexact Rounded Underflow
  501. ddfma2887 fma 1.2E-355 1.3E-42 0e+384 -> 1.6E-397 Subnormal Inexact Rounded Underflow
  502. ddfma2888 fma 1.3E-355 1.3E-42 0e+384 -> 1.7E-397 Subnormal Inexact Rounded Underflow
  503. ddfma2889 fma 1.3E-355 1.3E-43 0e+384 -> 2E-398 Subnormal Inexact Rounded Underflow
  504. ddfma2890 fma 1.3E-356 1.3E-43 0e+384 -> 0E-398 Clamped Subnormal Inexact Rounded Underflow
  505. ddfma2891 fma 1.2345E-39 1.234E-355 0e+384 -> 1.5234E-394 Inexact Rounded Subnormal Underflow
  506. ddfma2892 fma 1.23456E-39 1.234E-355 0e+384 -> 1.5234E-394 Inexact Rounded Subnormal Underflow
  507. ddfma2893 fma 1.2345E-40 1.234E-355 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow
  508. ddfma2894 fma 1.23456E-40 1.234E-355 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow
  509. ddfma2895 fma 1.2345E-41 1.234E-355 0e+384 -> 1.52E-396 Inexact Rounded Subnormal Underflow
  510. ddfma2896 fma 1.23456E-41 1.234E-355 0e+384 -> 1.52E-396 Inexact Rounded Subnormal Underflow
  511. -- Now explore the case where we get a normal result with Underflow
  512. ddfma2900 fma 0.3000000000E-191 0.3000000000E-191 0e+384 -> 9.00000000000000E-384 Subnormal Rounded
  513. ddfma2901 fma 0.3000000001E-191 0.3000000001E-191 0e+384 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded
  514. ddfma2902 fma 9.999999999999999E-383 0.0999999999999 0e+384 -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded
  515. ddfma2903 fma 9.999999999999999E-383 0.09999999999999 0e+384 -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded
  516. ddfma2904 fma 9.999999999999999E-383 0.099999999999999 0e+384 -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded
  517. ddfma2905 fma 9.999999999999999E-383 0.0999999999999999 0e+384 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded
  518. -- prove operands are exact
  519. ddfma2906 fma 9.999999999999999E-383 1 0e+384 -> 9.999999999999999E-383
  520. ddfma2907 fma 1 0.09999999999999999 0e+384 -> 0.09999999999999999
  521. -- the next rounds to Nmin
  522. ddfma2908 fma 9.999999999999999E-383 0.09999999999999999 0e+384 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
  523. -- hugest
  524. ddfma2909 fma 9999999999999999 9999999999999999 0e+384 -> 9.999999999999998E+31 Inexact Rounded
  525. -- Null tests
  526. ddfma2990 fma 10 # 0e+384 -> NaN Invalid_operation
  527. ddfma2991 fma # 10 0e+384 -> NaN Invalid_operation
  528. -- ADDITION TESTS ------------------------------------------------------
  529. -- [first group are 'quick confidence check']
  530. ddfma3001 fma 1 1 1 -> 2
  531. ddfma3002 fma 1 2 3 -> 5
  532. ddfma3003 fma 1 '5.75' '3.3' -> 9.05
  533. ddfma3004 fma 1 '5' '-3' -> 2
  534. ddfma3005 fma 1 '-5' '-3' -> -8
  535. ddfma3006 fma 1 '-7' '2.5' -> -4.5
  536. ddfma3007 fma 1 '0.7' '0.3' -> 1.0
  537. ddfma3008 fma 1 '1.25' '1.25' -> 2.50
  538. ddfma3009 fma 1 '1.23456789' '1.00000000' -> '2.23456789'
  539. ddfma3010 fma 1 '1.23456789' '1.00000011' -> '2.23456800'
  540. -- 1234567890123456 1234567890123456
  541. ddfma3011 fma 1 '0.4444444444444446' '0.5555555555555555' -> '1.000000000000000' Inexact Rounded
  542. ddfma3012 fma 1 '0.4444444444444445' '0.5555555555555555' -> '1.000000000000000' Rounded
  543. ddfma3013 fma 1 '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999'
  544. ddfma3014 fma 1 '4444444444444444' '0.49' -> '4444444444444444' Inexact Rounded
  545. ddfma3015 fma 1 '4444444444444444' '0.499' -> '4444444444444444' Inexact Rounded
  546. ddfma3016 fma 1 '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded
  547. ddfma3017 fma 1 '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded
  548. ddfma3018 fma 1 '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded
  549. ddfma3019 fma 1 '4444444444444444' '0.501' -> '4444444444444445' Inexact Rounded
  550. ddfma3020 fma 1 '4444444444444444' '0.51' -> '4444444444444445' Inexact Rounded
  551. ddfma3021 fma 1 0 1 -> 1
  552. ddfma3022 fma 1 1 1 -> 2
  553. ddfma3023 fma 1 2 1 -> 3
  554. ddfma3024 fma 1 3 1 -> 4
  555. ddfma3025 fma 1 4 1 -> 5
  556. ddfma3026 fma 1 5 1 -> 6
  557. ddfma3027 fma 1 6 1 -> 7
  558. ddfma3028 fma 1 7 1 -> 8
  559. ddfma3029 fma 1 8 1 -> 9
  560. ddfma3030 fma 1 9 1 -> 10
  561. -- some carrying effects
  562. ddfma3031 fma 1 '0.9998' '0.0000' -> '0.9998'
  563. ddfma3032 fma 1 '0.9998' '0.0001' -> '0.9999'
  564. ddfma3033 fma 1 '0.9998' '0.0002' -> '1.0000'
  565. ddfma3034 fma 1 '0.9998' '0.0003' -> '1.0001'
  566. ddfma3035 fma 1 '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
  567. ddfma3036 fma 1 '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
  568. ddfma3037 fma 1 '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
  569. ddfma3038 fma 1 '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded
  570. ddfma3039 fma 1 '700000' '10000e+16' -> '1.000000000000007E+20' Rounded
  571. -- symmetry:
  572. ddfma3040 fma 1 '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded
  573. ddfma3041 fma 1 '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded
  574. ddfma3042 fma 1 '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded
  575. ddfma3044 fma 1 '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded
  576. ddfma3045 fma 1 '10000e+16' '700000' -> '1.000000000000007E+20' Rounded
  577. -- same, without rounding
  578. ddfma3046 fma 1 '10000e+9' '7' -> '10000000000007'
  579. ddfma3047 fma 1 '10000e+9' '70' -> '10000000000070'
  580. ddfma3048 fma 1 '10000e+9' '700' -> '10000000000700'
  581. ddfma3049 fma 1 '10000e+9' '7000' -> '10000000007000'
  582. ddfma3050 fma 1 '10000e+9' '70000' -> '10000000070000'
  583. ddfma3051 fma 1 '10000e+9' '700000' -> '10000000700000'
  584. ddfma3052 fma 1 '10000e+9' '7000000' -> '10000007000000'
  585. -- examples from decarith
  586. ddfma3053 fma 1 '12' '7.00' -> '19.00'
  587. ddfma3054 fma 1 '1.3' '-1.07' -> '0.23'
  588. ddfma3055 fma 1 '1.3' '-1.30' -> '0.00'
  589. ddfma3056 fma 1 '1.3' '-2.07' -> '-0.77'
  590. ddfma3057 fma 1 '1E+2' '1E+4' -> '1.01E+4'
  591. -- leading zero preservation
  592. ddfma3061 fma 1 1 '0.0001' -> '1.0001'
  593. ddfma3062 fma 1 1 '0.00001' -> '1.00001'
  594. ddfma3063 fma 1 1 '0.000001' -> '1.000001'
  595. ddfma3064 fma 1 1 '0.0000001' -> '1.0000001'
  596. ddfma3065 fma 1 1 '0.00000001' -> '1.00000001'
  597. -- some funny zeros [in case of bad signum]
  598. ddfma3070 fma 1 1 0 -> 1
  599. ddfma3071 fma 1 1 0. -> 1
  600. ddfma3072 fma 1 1 .0 -> 1.0
  601. ddfma3073 fma 1 1 0.0 -> 1.0
  602. ddfma3074 fma 1 1 0.00 -> 1.00
  603. ddfma3075 fma 1 0 1 -> 1
  604. ddfma3076 fma 1 0. 1 -> 1
  605. ddfma3077 fma 1 .0 1 -> 1.0
  606. ddfma3078 fma 1 0.0 1 -> 1.0
  607. ddfma3079 fma 1 0.00 1 -> 1.00
  608. -- some carries
  609. ddfma3080 fma 1 999999998 1 -> 999999999
  610. ddfma3081 fma 1 999999999 1 -> 1000000000
  611. ddfma3082 fma 1 99999999 1 -> 100000000
  612. ddfma3083 fma 1 9999999 1 -> 10000000
  613. ddfma3084 fma 1 999999 1 -> 1000000
  614. ddfma3085 fma 1 99999 1 -> 100000
  615. ddfma3086 fma 1 9999 1 -> 10000
  616. ddfma3087 fma 1 999 1 -> 1000
  617. ddfma3088 fma 1 99 1 -> 100
  618. ddfma3089 fma 1 9 1 -> 10
  619. -- more LHS swaps
  620. ddfma3090 fma 1 '-56267E-10' 0 -> '-0.0000056267'
  621. ddfma3091 fma 1 '-56267E-6' 0 -> '-0.056267'
  622. ddfma3092 fma 1 '-56267E-5' 0 -> '-0.56267'
  623. ddfma3093 fma 1 '-56267E-4' 0 -> '-5.6267'
  624. ddfma3094 fma 1 '-56267E-3' 0 -> '-56.267'
  625. ddfma3095 fma 1 '-56267E-2' 0 -> '-562.67'
  626. ddfma3096 fma 1 '-56267E-1' 0 -> '-5626.7'
  627. ddfma3097 fma 1 '-56267E-0' 0 -> '-56267'
  628. ddfma3098 fma 1 '-5E-10' 0 -> '-5E-10'
  629. ddfma3099 fma 1 '-5E-7' 0 -> '-5E-7'
  630. ddfma3100 fma 1 '-5E-6' 0 -> '-0.000005'
  631. ddfma3101 fma 1 '-5E-5' 0 -> '-0.00005'
  632. ddfma3102 fma 1 '-5E-4' 0 -> '-0.0005'
  633. ddfma3103 fma 1 '-5E-1' 0 -> '-0.5'
  634. ddfma3104 fma 1 '-5E0' 0 -> '-5'
  635. ddfma3105 fma 1 '-5E1' 0 -> '-50'
  636. ddfma3106 fma 1 '-5E5' 0 -> '-500000'
  637. ddfma3107 fma 1 '-5E15' 0 -> '-5000000000000000'
  638. ddfma3108 fma 1 '-5E16' 0 -> '-5.000000000000000E+16' Rounded
  639. ddfma3109 fma 1 '-5E17' 0 -> '-5.000000000000000E+17' Rounded
  640. ddfma3110 fma 1 '-5E18' 0 -> '-5.000000000000000E+18' Rounded
  641. ddfma3111 fma 1 '-5E100' 0 -> '-5.000000000000000E+100' Rounded
  642. -- more RHS swaps
  643. ddfma3113 fma 1 0 '-56267E-10' -> '-0.0000056267'
  644. ddfma3114 fma 1 0 '-56267E-6' -> '-0.056267'
  645. ddfma3116 fma 1 0 '-56267E-5' -> '-0.56267'
  646. ddfma3117 fma 1 0 '-56267E-4' -> '-5.6267'
  647. ddfma3119 fma 1 0 '-56267E-3' -> '-56.267'
  648. ddfma3120 fma 1 0 '-56267E-2' -> '-562.67'
  649. ddfma3121 fma 1 0 '-56267E-1' -> '-5626.7'
  650. ddfma3122 fma 1 0 '-56267E-0' -> '-56267'
  651. ddfma3123 fma 1 0 '-5E-10' -> '-5E-10'
  652. ddfma3124 fma 1 0 '-5E-7' -> '-5E-7'
  653. ddfma3125 fma 1 0 '-5E-6' -> '-0.000005'
  654. ddfma3126 fma 1 0 '-5E-5' -> '-0.00005'
  655. ddfma3127 fma 1 0 '-5E-4' -> '-0.0005'
  656. ddfma3128 fma 1 0 '-5E-1' -> '-0.5'
  657. ddfma3129 fma 1 0 '-5E0' -> '-5'
  658. ddfma3130 fma 1 0 '-5E1' -> '-50'
  659. ddfma3131 fma 1 0 '-5E5' -> '-500000'
  660. ddfma3132 fma 1 0 '-5E15' -> '-5000000000000000'
  661. ddfma3133 fma 1 0 '-5E16' -> '-5.000000000000000E+16' Rounded
  662. ddfma3134 fma 1 0 '-5E17' -> '-5.000000000000000E+17' Rounded
  663. ddfma3135 fma 1 0 '-5E18' -> '-5.000000000000000E+18' Rounded
  664. ddfma3136 fma 1 0 '-5E100' -> '-5.000000000000000E+100' Rounded
  665. -- related
  666. ddfma3137 fma 1 1 '0E-19' -> '1.000000000000000' Rounded
  667. ddfma3138 fma 1 -1 '0E-19' -> '-1.000000000000000' Rounded
  668. ddfma3139 fma 1 '0E-19' 1 -> '1.000000000000000' Rounded
  669. ddfma3140 fma 1 '0E-19' -1 -> '-1.000000000000000' Rounded
  670. ddfma3141 fma 1 1E+11 0.0000 -> '100000000000.0000'
  671. ddfma3142 fma 1 1E+11 0.00000 -> '100000000000.0000' Rounded
  672. ddfma3143 fma 1 0.000 1E+12 -> '1000000000000.000'
  673. ddfma3144 fma 1 0.0000 1E+12 -> '1000000000000.000' Rounded
  674. -- [some of the next group are really constructor tests]
  675. ddfma3146 fma 1 '00.0' 0 -> '0.0'
  676. ddfma3147 fma 1 '0.00' 0 -> '0.00'
  677. ddfma3148 fma 1 0 '0.00' -> '0.00'
  678. ddfma3149 fma 1 0 '00.0' -> '0.0'
  679. ddfma3150 fma 1 '00.0' '0.00' -> '0.00'
  680. ddfma3151 fma 1 '0.00' '00.0' -> '0.00'
  681. ddfma3152 fma 1 '3' '.3' -> '3.3'
  682. ddfma3153 fma 1 '3.' '.3' -> '3.3'
  683. ddfma3154 fma 1 '3.0' '.3' -> '3.3'
  684. ddfma3155 fma 1 '3.00' '.3' -> '3.30'
  685. ddfma3156 fma 1 '3' '3' -> '6'
  686. ddfma3157 fma 1 '3' '+3' -> '6'
  687. ddfma3158 fma 1 '3' '-3' -> '0'
  688. ddfma3159 fma 1 '0.3' '-0.3' -> '0.0'
  689. ddfma3160 fma 1 '0.03' '-0.03' -> '0.00'
  690. -- try borderline precision, with carries, etc.
  691. ddfma3161 fma 1 '1E+12' '-1' -> '999999999999'
  692. ddfma3162 fma 1 '1E+12' '1.11' -> '1000000000001.11'
  693. ddfma3163 fma 1 '1.11' '1E+12' -> '1000000000001.11'
  694. ddfma3164 fma 1 '-1' '1E+12' -> '999999999999'
  695. ddfma3165 fma 1 '7E+12' '-1' -> '6999999999999'
  696. ddfma3166 fma 1 '7E+12' '1.11' -> '7000000000001.11'
  697. ddfma3167 fma 1 '1.11' '7E+12' -> '7000000000001.11'
  698. ddfma3168 fma 1 '-1' '7E+12' -> '6999999999999'
  699. rounding: half_up
  700. -- 1.234567890123456 1234567890123456 1 234567890123456
  701. ddfma3170 fma 1 '4.444444444444444' '0.5555555555555567' -> '5.000000000000001' Inexact Rounded
  702. ddfma3171 fma 1 '4.444444444444444' '0.5555555555555566' -> '5.000000000000001' Inexact Rounded
  703. ddfma3172 fma 1 '4.444444444444444' '0.5555555555555565' -> '5.000000000000001' Inexact Rounded
  704. ddfma3173 fma 1 '4.444444444444444' '0.5555555555555564' -> '5.000000000000000' Inexact Rounded
  705. ddfma3174 fma 1 '4.444444444444444' '0.5555555555555553' -> '4.999999999999999' Inexact Rounded
  706. ddfma3175 fma 1 '4.444444444444444' '0.5555555555555552' -> '4.999999999999999' Inexact Rounded
  707. ddfma3176 fma 1 '4.444444444444444' '0.5555555555555551' -> '4.999999999999999' Inexact Rounded
  708. ddfma3177 fma 1 '4.444444444444444' '0.5555555555555550' -> '4.999999999999999' Rounded
  709. ddfma3178 fma 1 '4.444444444444444' '0.5555555555555545' -> '4.999999999999999' Inexact Rounded
  710. ddfma3179 fma 1 '4.444444444444444' '0.5555555555555544' -> '4.999999999999998' Inexact Rounded
  711. ddfma3180 fma 1 '4.444444444444444' '0.5555555555555543' -> '4.999999999999998' Inexact Rounded
  712. ddfma3181 fma 1 '4.444444444444444' '0.5555555555555542' -> '4.999999999999998' Inexact Rounded
  713. ddfma3182 fma 1 '4.444444444444444' '0.5555555555555541' -> '4.999999999999998' Inexact Rounded
  714. ddfma3183 fma 1 '4.444444444444444' '0.5555555555555540' -> '4.999999999999998' Rounded
  715. -- and some more, including residue effects and different roundings
  716. rounding: half_up
  717. ddfma3200 fma 1 '1234560123456789' 0 -> '1234560123456789'
  718. ddfma3201 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded
  719. ddfma3202 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded
  720. ddfma3203 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded
  721. ddfma3204 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded
  722. ddfma3205 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded
  723. ddfma3206 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded
  724. ddfma3207 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded
  725. ddfma3208 fma 1 '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded
  726. ddfma3209 fma 1 '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded
  727. ddfma3210 fma 1 '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded
  728. ddfma3211 fma 1 '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded
  729. ddfma3212 fma 1 '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded
  730. ddfma3213 fma 1 '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded
  731. ddfma3214 fma 1 '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded
  732. ddfma3215 fma 1 '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded
  733. ddfma3216 fma 1 '1234560123456789' 1 -> '1234560123456790'
  734. ddfma3217 fma 1 '1234560123456789' 1.000000001 -> '1234560123456790' Inexact Rounded
  735. ddfma3218 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded
  736. ddfma3219 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded
  737. rounding: half_even
  738. ddfma3220 fma 1 '1234560123456789' 0 -> '1234560123456789'
  739. ddfma3221 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded
  740. ddfma3222 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded
  741. ddfma3223 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded
  742. ddfma3224 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded
  743. ddfma3225 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded
  744. ddfma3226 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded
  745. ddfma3227 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded
  746. ddfma3228 fma 1 '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded
  747. ddfma3229 fma 1 '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded
  748. ddfma3230 fma 1 '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded
  749. ddfma3231 fma 1 '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded
  750. ddfma3232 fma 1 '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded
  751. ddfma3233 fma 1 '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded
  752. ddfma3234 fma 1 '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded
  753. ddfma3235 fma 1 '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded
  754. ddfma3236 fma 1 '1234560123456789' 1 -> '1234560123456790'
  755. ddfma3237 fma 1 '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded
  756. ddfma3238 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded
  757. ddfma3239 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded
  758. -- critical few with even bottom digit...
  759. ddfma3240 fma 1 '1234560123456788' 0.499999999 -> '1234560123456788' Inexact Rounded
  760. ddfma3241 fma 1 '1234560123456788' 0.5 -> '1234560123456788' Inexact Rounded
  761. ddfma3242 fma 1 '1234560123456788' 0.500000001 -> '1234560123456789' Inexact Rounded
  762. rounding: down
  763. ddfma3250 fma 1 '1234560123456789' 0 -> '1234560123456789'
  764. ddfma3251 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded
  765. ddfma3252 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded
  766. ddfma3253 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded
  767. ddfma3254 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded
  768. ddfma3255 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded
  769. ddfma3256 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded
  770. ddfma3257 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded
  771. ddfma3258 fma 1 '1234560123456789' 0.5 -> '1234560123456789' Inexact Rounded
  772. ddfma3259 fma 1 '1234560123456789' 0.500000001 -> '1234560123456789' Inexact Rounded
  773. ddfma3260 fma 1 '1234560123456789' 0.500001 -> '1234560123456789' Inexact Rounded
  774. ddfma3261 fma 1 '1234560123456789' 0.51 -> '1234560123456789' Inexact Rounded
  775. ddfma3262 fma 1 '1234560123456789' 0.6 -> '1234560123456789' Inexact Rounded
  776. ddfma3263 fma 1 '1234560123456789' 0.9 -> '1234560123456789' Inexact Rounded
  777. ddfma3264 fma 1 '1234560123456789' 0.99999 -> '1234560123456789' Inexact Rounded
  778. ddfma3265 fma 1 '1234560123456789' 0.999999999 -> '1234560123456789' Inexact Rounded
  779. ddfma3266 fma 1 '1234560123456789' 1 -> '1234560123456790'
  780. ddfma3267 fma 1 '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded
  781. ddfma3268 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded
  782. ddfma3269 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded
  783. -- 1 in last place tests
  784. rounding: half_up
  785. ddfma3301 fma 1 -1 1 -> 0
  786. ddfma3302 fma 1 0 1 -> 1
  787. ddfma3303 fma 1 1 1