/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
- ------------------------------------------------------------------------
- -- ddFMA.decTest -- decDouble Fused Multiply Add --
- -- Copyright (c) IBM Corporation, 1981, 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.58
-
- precision: 16
- maxExponent: 384
- minExponent: -383
- extended: 1
- clamp: 1
- rounding: half_even
-
- -- These tests comprese three parts:
- -- 1. Sanity checks and other three-operand tests (especially those
- -- where the fused operation makes a difference)
- -- 2. Multiply tests (third operand is neutral zero [0E+emax])
- -- 3. Addition tests (first operand is 1)
- -- The multiply and addition tests are extensive because FMA may have
- -- its own dedicated multiplication or addition routine(s), and they
- -- also inherently check the left-to-right properties.
-
- -- Sanity checks
- ddfma0001 fma 1 1 1 -> 2
- ddfma0002 fma 1 1 2 -> 3
- ddfma0003 fma 2 2 3 -> 7
- ddfma0004 fma 9 9 9 -> 90
- ddfma0005 fma -1 1 1 -> 0
- ddfma0006 fma -1 1 2 -> 1
- ddfma0007 fma -2 2 3 -> -1
- ddfma0008 fma -9 9 9 -> -72
- ddfma0011 fma 1 -1 1 -> 0
- ddfma0012 fma 1 -1 2 -> 1
- ddfma0013 fma 2 -2 3 -> -1
- ddfma0014 fma 9 -9 9 -> -72
- ddfma0015 fma 1 1 -1 -> 0
- ddfma0016 fma 1 1 -2 -> -1
- ddfma0017 fma 2 2 -3 -> 1
- ddfma0018 fma 9 9 -9 -> 72
-
- -- non-integer exacts
- ddfma0100 fma 25.2 63.6 -438 -> 1164.72
- ddfma0101 fma 0.301 0.380 334 -> 334.114380
- ddfma0102 fma 49.2 -4.8 23.3 -> -212.86
- ddfma0103 fma 4.22 0.079 -94.6 -> -94.26662
- ddfma0104 fma 903 0.797 0.887 -> 720.578
- ddfma0105 fma 6.13 -161 65.9 -> -921.03
- ddfma0106 fma 28.2 727 5.45 -> 20506.85
- ddfma0107 fma 4 605 688 -> 3108
- ddfma0108 fma 93.3 0.19 0.226 -> 17.953
- ddfma0109 fma 0.169 -341 5.61 -> -52.019
- ddfma0110 fma -72.2 30 -51.2 -> -2217.2
- ddfma0111 fma -0.409 13 20.4 -> 15.083
- ddfma0112 fma 317 77.0 19.0 -> 24428.0
- ddfma0113 fma 47 6.58 1.62 -> 310.88
- ddfma0114 fma 1.36 0.984 0.493 -> 1.83124
- ddfma0115 fma 72.7 274 1.56 -> 19921.36
- ddfma0116 fma 335 847 83 -> 283828
- ddfma0117 fma 666 0.247 25.4 -> 189.902
- ddfma0118 fma -3.87 3.06 78.0 -> 66.1578
- ddfma0119 fma 0.742 192 35.6 -> 178.064
- ddfma0120 fma -91.6 5.29 0.153 -> -484.411
-
- -- cases where result is different from separate multiply + add; each
- -- is preceded by the result of unfused multiply and add
- -- [this is about 20% of all similar cases in general]
- -- -> 7.123356429257969E+16
- ddfma0201 fma 27583489.6645 2582471078.04 2593183.42371 -> 7.123356429257970E+16 Inexact Rounded
- -- -> 22813275328.80506
- ddfma0208 fma 24280.355566 939577.397653 2032.013252 -> 22813275328.80507 Inexact Rounded
- -- -> -2.030397734278062E+16
- ddfma0209 fma 7848976432 -2586831.2281 137903.517909 -> -2.030397734278061E+16 Inexact Rounded
- -- -> 2040774094814.077
- ddfma0217 fma 56890.388731 35872030.4255 339337.123410 -> 2040774094814.078 Inexact Rounded
- -- -> 2.714469575205049E+18
- ddfma0220 fma 7533543.57445 360317763928 5073392.31638 -> 2.714469575205050E+18 Inexact Rounded
- -- -> 1.011676297716716E+19
- ddfma0223 fma 739945255.563 13672312784.1 -994381.53572 -> 1.011676297716715E+19 Inexact Rounded
- -- -> -2.914135721455315E+23
- ddfma0224 fma -413510957218 704729988550 9234162614.0 -> -2.914135721455314E+23 Inexact Rounded
- -- -> 2.620119863365786E+17
- ddfma0226 fma 437484.00601 598906432790 894450638.442 -> 2.620119863365787E+17 Inexact Rounded
- -- -> 1.272647995808178E+19
- ddfma0253 fma 73287556929 173651305.784 -358312568.389 -> 1.272647995808177E+19 Inexact Rounded
- -- -> -1.753769320861851E+18
- ddfma0257 fma 203258304486 -8628278.8066 153127.446727 -> -1.753769320861850E+18 Inexact Rounded
- -- -> -1.550737835263346E+17
- ddfma0260 fma 42560533.1774 -3643605282.86 178277.96377 -> -1.550737835263347E+17 Inexact Rounded
- -- -> 2.897624620576005E+22
- ddfma0269 fma 142656587375 203118879670 604576103991 -> 2.897624620576004E+22 Inexact Rounded
-
- -- Cases where multiply would overflow or underflow if separate
- fma0300 fma 9e+384 10 0 -> Infinity Overflow Inexact Rounded
- fma0301 fma 1e+384 10 0 -> Infinity Overflow Inexact Rounded
- fma0302 fma 1e+384 10 -1e+384 -> 9.000000000000000E+384 Clamped
- fma0303 fma 1e+384 10 -9e+384 -> 1.000000000000000E+384 Clamped
- -- subnormal etc.
- fma0305 fma 1e-398 0.1 0 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
- fma0306 fma 1e-398 0.1 1 -> 1.000000000000000 Inexact Rounded
- fma0307 fma 1e-398 0.1 1e-398 -> 1E-398 Underflow Subnormal Inexact Rounded
-
- -- Infinite combinations
- ddfma0800 fma Inf Inf Inf -> Infinity
- ddfma0801 fma Inf Inf -Inf -> NaN Invalid_operation
- ddfma0802 fma Inf -Inf Inf -> NaN Invalid_operation
- ddfma0803 fma Inf -Inf -Inf -> -Infinity
- ddfma0804 fma -Inf Inf Inf -> NaN Invalid_operation
- ddfma0805 fma -Inf Inf -Inf -> -Infinity
- ddfma0806 fma -Inf -Inf Inf -> Infinity
- ddfma0807 fma -Inf -Inf -Inf -> NaN Invalid_operation
-
- -- Triple NaN propagation
- ddfma0900 fma NaN2 NaN3 NaN5 -> NaN2
- ddfma0901 fma 0 NaN3 NaN5 -> NaN3
- ddfma0902 fma 0 0 NaN5 -> NaN5
- -- first sNaN wins (consider qNaN from earlier sNaN being
- -- overridden by an sNaN in third operand)
- ddfma0903 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation
- ddfma0904 fma 0 sNaN2 sNaN3 -> NaN2 Invalid_operation
- ddfma0905 fma 0 0 sNaN3 -> NaN3 Invalid_operation
- ddfma0906 fma sNaN1 sNaN2 sNaN3 -> NaN1 Invalid_operation
- ddfma0907 fma NaN7 sNaN2 sNaN3 -> NaN2 Invalid_operation
- ddfma0908 fma NaN7 NaN5 sNaN3 -> NaN3 Invalid_operation
-
- -- MULTIPLICATION TESTS ------------------------------------------------
-
- -- sanity checks
- ddfma2000 fma 2 2 0e+384 -> 4
- ddfma2001 fma 2 3 0e+384 -> 6
- ddfma2002 fma 5 1 0e+384 -> 5
- ddfma2003 fma 5 2 0e+384 -> 10
- ddfma2004 fma 1.20 2 0e+384 -> 2.40
- ddfma2005 fma 1.20 0 0e+384 -> 0.00
- ddfma2006 fma 1.20 -2 0e+384 -> -2.40
- ddfma2007 fma -1.20 2 0e+384 -> -2.40
- ddfma2008 fma -1.20 0 0e+384 -> 0.00
- ddfma2009 fma -1.20 -2 0e+384 -> 2.40
- ddfma2010 fma 5.09 7.1 0e+384 -> 36.139
- ddfma2011 fma 2.5 4 0e+384 -> 10.0
- ddfma2012 fma 2.50 4 0e+384 -> 10.00
- ddfma2013 fma 1.23456789 1.00000000 0e+384 -> 1.234567890000000 Rounded
- ddfma2015 fma 2.50 4 0e+384 -> 10.00
- ddfma2016 fma 9.999999999 9.999999999 0e+384 -> 99.99999998000000 Inexact Rounded
- ddfma2017 fma 9.999999999 -9.999999999 0e+384 -> -99.99999998000000 Inexact Rounded
- ddfma2018 fma -9.999999999 9.999999999 0e+384 -> -99.99999998000000 Inexact Rounded
- ddfma2019 fma -9.999999999 -9.999999999 0e+384 -> 99.99999998000000 Inexact Rounded
-
- -- zeros, etc.
- ddfma2021 fma 0 0 0e+384 -> 0
- ddfma2022 fma 0 -0 0e+384 -> 0
- ddfma2023 fma -0 0 0e+384 -> 0
- ddfma2024 fma -0 -0 0e+384 -> 0
- ddfma2025 fma -0.0 -0.0 0e+384 -> 0.00
- ddfma2026 fma -0.0 -0.0 0e+384 -> 0.00
- ddfma2027 fma -0.0 -0.0 0e+384 -> 0.00
- ddfma2028 fma -0.0 -0.0 0e+384 -> 0.00
- ddfma2030 fma 5.00 1E-3 0e+384 -> 0.00500
- ddfma2031 fma 00.00 0.000 0e+384 -> 0.00000
- ddfma2032 fma 00.00 0E-3 0e+384 -> 0.00000 -- rhs is 0
- ddfma2033 fma 0E-3 00.00 0e+384 -> 0.00000 -- lhs is 0
- ddfma2034 fma -5.00 1E-3 0e+384 -> -0.00500
- ddfma2035 fma -00.00 0.000 0e+384 -> 0.00000
- ddfma2036 fma -00.00 0E-3 0e+384 -> 0.00000 -- rhs is 0
- ddfma2037 fma -0E-3 00.00 0e+384 -> 0.00000 -- lhs is 0
- ddfma2038 fma 5.00 -1E-3 0e+384 -> -0.00500
- ddfma2039 fma 00.00 -0.000 0e+384 -> 0.00000
- ddfma2040 fma 00.00 -0E-3 0e+384 -> 0.00000 -- rhs is 0
- ddfma2041 fma 0E-3 -00.00 0e+384 -> 0.00000 -- lhs is 0
- ddfma2042 fma -5.00 -1E-3 0e+384 -> 0.00500
- ddfma2043 fma -00.00 -0.000 0e+384 -> 0.00000
- ddfma2044 fma -00.00 -0E-3 0e+384 -> 0.00000 -- rhs is 0
- ddfma2045 fma -0E-3 -00.00 -0e+384 -> 0.00000 -- lhs is 0
- ddfma2046 fma -0E-3 00.00 -0e+384 -> -0.00000
- ddfma2047 fma 0E-3 -00.00 -0e+384 -> -0.00000
- ddfma2048 fma 0E-3 00.00 -0e+384 -> 0.00000
-
- -- examples from decarith
- ddfma2050 fma 1.20 3 0e+384 -> 3.60
- ddfma2051 fma 7 3 0e+384 -> 21
- ddfma2052 fma 0.9 0.8 0e+384 -> 0.72
- ddfma2053 fma 0.9 -0 0e+384 -> 0.0
- ddfma2054 fma 654321 654321 0e+384 -> 428135971041
-
- ddfma2060 fma 123.45 1e7 0e+384 -> 1.2345E+9
- ddfma2061 fma 123.45 1e8 0e+384 -> 1.2345E+10
- ddfma2062 fma 123.45 1e+9 0e+384 -> 1.2345E+11
- ddfma2063 fma 123.45 1e10 0e+384 -> 1.2345E+12
- ddfma2064 fma 123.45 1e11 0e+384 -> 1.2345E+13
- ddfma2065 fma 123.45 1e12 0e+384 -> 1.2345E+14
- ddfma2066 fma 123.45 1e13 0e+384 -> 1.2345E+15
-
-
- -- test some intermediate lengths
- -- 1234567890123456
- ddfma2080 fma 0.1 1230123456456789 0e+384 -> 123012345645678.9
- ddfma2084 fma 0.1 1230123456456789 0e+384 -> 123012345645678.9
- ddfma2090 fma 1230123456456789 0.1 0e+384 -> 123012345645678.9
- ddfma2094 fma 1230123456456789 0.1 0e+384 -> 123012345645678.9
-
- -- test some more edge cases and carries
- ddfma2101 fma 9 9 0e+384 -> 81
- ddfma2102 fma 9 90 0e+384 -> 810
- ddfma2103 fma 9 900 0e+384 -> 8100
- ddfma2104 fma 9 9000 0e+384 -> 81000
- ddfma2105 fma 9 90000 0e+384 -> 810000
- ddfma2106 fma 9 900000 0e+384 -> 8100000
- ddfma2107 fma 9 9000000 0e+384 -> 81000000
- ddfma2108 fma 9 90000000 0e+384 -> 810000000
- ddfma2109 fma 9 900000000 0e+384 -> 8100000000
- ddfma2110 fma 9 9000000000 0e+384 -> 81000000000
- ddfma2111 fma 9 90000000000 0e+384 -> 810000000000
- ddfma2112 fma 9 900000000000 0e+384 -> 8100000000000
- ddfma2113 fma 9 9000000000000 0e+384 -> 81000000000000
- ddfma2114 fma 9 90000000000000 0e+384 -> 810000000000000
- ddfma2115 fma 9 900000000000000 0e+384 -> 8100000000000000
- --ddfma2116 fma 9 9000000000000000 0e+384 -> 81000000000000000
- --ddfma2117 fma 9 90000000000000000 0e+384 -> 810000000000000000
- --ddfma2118 fma 9 900000000000000000 0e+384 -> 8100000000000000000
- --ddfma2119 fma 9 9000000000000000000 0e+384 -> 81000000000000000000
- --ddfma2120 fma 9 90000000000000000000 0e+384 -> 810000000000000000000
- --ddfma2121 fma 9 900000000000000000000 0e+384 -> 8100000000000000000000
- --ddfma2122 fma 9 9000000000000000000000 0e+384 -> 81000000000000000000000
- --ddfma2123 fma 9 90000000000000000000000 0e+384 -> 810000000000000000000000
- -- test some more edge cases without carries
- ddfma2131 fma 3 3 0e+384 -> 9
- ddfma2132 fma 3 30 0e+384 -> 90
- ddfma2133 fma 3 300 0e+384 -> 900
- ddfma2134 fma 3 3000 0e+384 -> 9000
- ddfma2135 fma 3 30000 0e+384 -> 90000
- ddfma2136 fma 3 300000 0e+384 -> 900000
- ddfma2137 fma 3 3000000 0e+384 -> 9000000
- ddfma2138 fma 3 30000000 0e+384 -> 90000000
- ddfma2139 fma 3 300000000 0e+384 -> 900000000
- ddfma2140 fma 3 3000000000 0e+384 -> 9000000000
- ddfma2141 fma 3 30000000000 0e+384 -> 90000000000
- ddfma2142 fma 3 300000000000 0e+384 -> 900000000000
- ddfma2143 fma 3 3000000000000 0e+384 -> 9000000000000
- ddfma2144 fma 3 30000000000000 0e+384 -> 90000000000000
- ddfma2145 fma 3 300000000000000 0e+384 -> 900000000000000
-
- -- test some edge cases with exact rounding
- ddfma2301 fma 9 9 0e+384 -> 81
- ddfma2302 fma 9 90 0e+384 -> 810
- ddfma2303 fma 9 900 0e+384 -> 8100
- ddfma2304 fma 9 9000 0e+384 -> 81000
- ddfma2305 fma 9 90000 0e+384 -> 810000
- ddfma2306 fma 9 900000 0e+384 -> 8100000
- ddfma2307 fma 9 9000000 0e+384 -> 81000000
- ddfma2308 fma 9 90000000 0e+384 -> 810000000
- ddfma2309 fma 9 900000000 0e+384 -> 8100000000
- ddfma2310 fma 9 9000000000 0e+384 -> 81000000000
- ddfma2311 fma 9 90000000000 0e+384 -> 810000000000
- ddfma2312 fma 9 900000000000 0e+384 -> 8100000000000
- ddfma2313 fma 9 9000000000000 0e+384 -> 81000000000000
- ddfma2314 fma 9 90000000000000 0e+384 -> 810000000000000
- ddfma2315 fma 9 900000000000000 0e+384 -> 8100000000000000
- ddfma2316 fma 9 9000000000000000 0e+384 -> 8.100000000000000E+16 Rounded
- ddfma2317 fma 90 9000000000000000 0e+384 -> 8.100000000000000E+17 Rounded
- ddfma2318 fma 900 9000000000000000 0e+384 -> 8.100000000000000E+18 Rounded
- ddfma2319 fma 9000 9000000000000000 0e+384 -> 8.100000000000000E+19 Rounded
- ddfma2320 fma 90000 9000000000000000 0e+384 -> 8.100000000000000E+20 Rounded
- ddfma2321 fma 900000 9000000000000000 0e+384 -> 8.100000000000000E+21 Rounded
- ddfma2322 fma 9000000 9000000000000000 0e+384 -> 8.100000000000000E+22 Rounded
- ddfma2323 fma 90000000 9000000000000000 0e+384 -> 8.100000000000000E+23 Rounded
-
- -- tryzeros cases
- ddfma2504 fma 0E-260 1000E-260 0e+384 -> 0E-398 Clamped
- ddfma2505 fma 100E+260 0E+260 0e+384 -> 0E+369 Clamped
-
- -- mixed with zeros
- ddfma2541 fma 0 -1 0e+384 -> 0
- ddfma2542 fma -0 -1 0e+384 -> 0
- ddfma2543 fma 0 1 0e+384 -> 0
- ddfma2544 fma -0 1 0e+384 -> 0
- ddfma2545 fma -1 0 0e+384 -> 0
- ddfma2546 fma -1 -0 0e+384 -> 0
- ddfma2547 fma 1 0 0e+384 -> 0
- ddfma2548 fma 1 -0 0e+384 -> 0
-
- ddfma2551 fma 0.0 -1 0e+384 -> 0.0
- ddfma2552 fma -0.0 -1 0e+384 -> 0.0
- ddfma2553 fma 0.0 1 0e+384 -> 0.0
- ddfma2554 fma -0.0 1 0e+384 -> 0.0
- ddfma2555 fma -1.0 0 0e+384 -> 0.0
- ddfma2556 fma -1.0 -0 0e+384 -> 0.0
- ddfma2557 fma 1.0 0 0e+384 -> 0.0
- ddfma2558 fma 1.0 -0 0e+384 -> 0.0
-
- ddfma2561 fma 0 -1.0 0e+384 -> 0.0
- ddfma2562 fma -0 -1.0 0e+384 -> 0.0
- ddfma2563 fma 0 1.0 0e+384 -> 0.0
- ddfma2564 fma -0 1.0 0e+384 -> 0.0
- ddfma2565 fma -1 0.0 0e+384 -> 0.0
- ddfma2566 fma -1 -0.0 0e+384 -> 0.0
- ddfma2567 fma 1 0.0 0e+384 -> 0.0
- ddfma2568 fma 1 -0.0 0e+384 -> 0.0
-
- ddfma2571 fma 0.0 -1.0 0e+384 -> 0.00
- ddfma2572 fma -0.0 -1.0 0e+384 -> 0.00
- ddfma2573 fma 0.0 1.0 0e+384 -> 0.00
- ddfma2574 fma -0.0 1.0 0e+384 -> 0.00
- ddfma2575 fma -1.0 0.0 0e+384 -> 0.00
- ddfma2576 fma -1.0 -0.0 0e+384 -> 0.00
- ddfma2577 fma 1.0 0.0 0e+384 -> 0.00
- ddfma2578 fma 1.0 -0.0 0e+384 -> 0.00
-
- -- Specials
- ddfma2580 fma Inf -Inf 0e+384 -> -Infinity
- ddfma2581 fma Inf -1000 0e+384 -> -Infinity
- ddfma2582 fma Inf -1 0e+384 -> -Infinity
- ddfma2583 fma Inf -0 0e+384 -> NaN Invalid_operation
- ddfma2584 fma Inf 0 0e+384 -> NaN Invalid_operation
- ddfma2585 fma Inf 1 0e+384 -> Infinity
- ddfma2586 fma Inf 1000 0e+384 -> Infinity
- ddfma2587 fma Inf Inf 0e+384 -> Infinity
- ddfma2588 fma -1000 Inf 0e+384 -> -Infinity
- ddfma2589 fma -Inf Inf 0e+384 -> -Infinity
- ddfma2590 fma -1 Inf 0e+384 -> -Infinity
- ddfma2591 fma -0 Inf 0e+384 -> NaN Invalid_operation
- ddfma2592 fma 0 Inf 0e+384 -> NaN Invalid_operation
- ddfma2593 fma 1 Inf 0e+384 -> Infinity
- ddfma2594 fma 1000 Inf 0e+384 -> Infinity
- ddfma2595 fma Inf Inf 0e+384 -> Infinity
-
- ddfma2600 fma -Inf -Inf 0e+384 -> Infinity
- ddfma2601 fma -Inf -1000 0e+384 -> Infinity
- ddfma2602 fma -Inf -1 0e+384 -> Infinity
- ddfma2603 fma -Inf -0 0e+384 -> NaN Invalid_operation
- ddfma2604 fma -Inf 0 0e+384 -> NaN Invalid_operation
- ddfma2605 fma -Inf 1 0e+384 -> -Infinity
- ddfma2606 fma -Inf 1000 0e+384 -> -Infinity
- ddfma2607 fma -Inf Inf 0e+384 -> -Infinity
- ddfma2608 fma -1000 Inf 0e+384 -> -Infinity
- ddfma2609 fma -Inf -Inf 0e+384 -> Infinity
- ddfma2610 fma -1 -Inf 0e+384 -> Infinity
- ddfma2611 fma -0 -Inf 0e+384 -> NaN Invalid_operation
- ddfma2612 fma 0 -Inf 0e+384 -> NaN Invalid_operation
- ddfma2613 fma 1 -Inf 0e+384 -> -Infinity
- ddfma2614 fma 1000 -Inf 0e+384 -> -Infinity
- ddfma2615 fma Inf -Inf 0e+384 -> -Infinity
-
- ddfma2621 fma NaN -Inf 0e+384 -> NaN
- ddfma2622 fma NaN -1000 0e+384 -> NaN
- ddfma2623 fma NaN -1 0e+384 -> NaN
- ddfma2624 fma NaN -0 0e+384 -> NaN
- ddfma2625 fma NaN 0 0e+384 -> NaN
- ddfma2626 fma NaN 1 0e+384 -> NaN
- ddfma2627 fma NaN 1000 0e+384 -> NaN
- ddfma2628 fma NaN Inf 0e+384 -> NaN
- ddfma2629 fma NaN NaN 0e+384 -> NaN
- ddfma2630 fma -Inf NaN 0e+384 -> NaN
- ddfma2631 fma -1000 NaN 0e+384 -> NaN
- ddfma2632 fma -1 NaN 0e+384 -> NaN
- ddfma2633 fma -0 NaN 0e+384 -> NaN
- ddfma2634 fma 0 NaN 0e+384 -> NaN
- ddfma2635 fma 1 NaN 0e+384 -> NaN
- ddfma2636 fma 1000 NaN 0e+384 -> NaN
- ddfma2637 fma Inf NaN 0e+384 -> NaN
-
- ddfma2641 fma sNaN -Inf 0e+384 -> NaN Invalid_operation
- ddfma2642 fma sNaN -1000 0e+384 -> NaN Invalid_operation
- ddfma2643 fma sNaN -1 0e+384 -> NaN Invalid_operation
- ddfma2644 fma sNaN -0 0e+384 -> NaN Invalid_operation
- ddfma2645 fma sNaN 0 0e+384 -> NaN Invalid_operation
- ddfma2646 fma sNaN 1 0e+384 -> NaN Invalid_operation
- ddfma2647 fma sNaN 1000 0e+384 -> NaN Invalid_operation
- ddfma2648 fma sNaN NaN 0e+384 -> NaN Invalid_operation
- ddfma2649 fma sNaN sNaN 0e+384 -> NaN Invalid_operation
- ddfma2650 fma NaN sNaN 0e+384 -> NaN Invalid_operation
- ddfma2651 fma -Inf sNaN 0e+384 -> NaN Invalid_operation
- ddfma2652 fma -1000 sNaN 0e+384 -> NaN Invalid_operation
- ddfma2653 fma -1 sNaN 0e+384 -> NaN Invalid_operation
- ddfma2654 fma -0 sNaN 0e+384 -> NaN Invalid_operation
- ddfma2655 fma 0 sNaN 0e+384 -> NaN Invalid_operation
- ddfma2656 fma 1 sNaN 0e+384 -> NaN Invalid_operation
- ddfma2657 fma 1000 sNaN 0e+384 -> NaN Invalid_operation
- ddfma2658 fma Inf sNaN 0e+384 -> NaN Invalid_operation
- ddfma2659 fma NaN sNaN 0e+384 -> NaN Invalid_operation
-
- -- propagating NaNs
- ddfma2661 fma NaN9 -Inf 0e+384 -> NaN9
- ddfma2662 fma NaN8 999 0e+384 -> NaN8
- ddfma2663 fma NaN71 Inf 0e+384 -> NaN71
- ddfma2664 fma NaN6 NaN5 0e+384 -> NaN6
- ddfma2665 fma -Inf NaN4 0e+384 -> NaN4
- ddfma2666 fma -999 NaN33 0e+384 -> NaN33
- ddfma2667 fma Inf NaN2 0e+384 -> NaN2
-
- ddfma2671 fma sNaN99 -Inf 0e+384 -> NaN99 Invalid_operation
- ddfma2672 fma sNaN98 -11 0e+384 -> NaN98 Invalid_operation
- ddfma2673 fma sNaN97 NaN 0e+384 -> NaN97 Invalid_operation
- ddfma2674 fma sNaN16 sNaN94 0e+384 -> NaN16 Invalid_operation
- ddfma2675 fma NaN95 sNaN93 0e+384 -> NaN93 Invalid_operation
- ddfma2676 fma -Inf sNaN92 0e+384 -> NaN92 Invalid_operation
- ddfma2677 fma 088 sNaN91 0e+384 -> NaN91 Invalid_operation
- ddfma2678 fma Inf sNaN90 0e+384 -> NaN90 Invalid_operation
- ddfma2679 fma NaN sNaN89 0e+384 -> NaN89 Invalid_operation
-
- ddfma2681 fma -NaN9 -Inf 0e+384 -> -NaN9
- ddfma2682 fma -NaN8 999 0e+384 -> -NaN8
- ddfma2683 fma -NaN71 Inf 0e+384 -> -NaN71
- ddfma2684 fma -NaN6 -NaN5 0e+384 -> -NaN6
- ddfma2685 fma -Inf -NaN4 0e+384 -> -NaN4
- ddfma2686 fma -999 -NaN33 0e+384 -> -NaN33
- ddfma2687 fma Inf -NaN2 0e+384 -> -NaN2
-
- ddfma2691 fma -sNaN99 -Inf 0e+384 -> -NaN99 Invalid_operation
- ddfma2692 fma -sNaN98 -11 0e+384 -> -NaN98 Invalid_operation
- ddfma2693 fma -sNaN97 NaN 0e+384 -> -NaN97 Invalid_operation
- ddfma2694 fma -sNaN16 -sNaN94 0e+384 -> -NaN16 Invalid_operation
- ddfma2695 fma -NaN95 -sNaN93 0e+384 -> -NaN93 Invalid_operation
- ddfma2696 fma -Inf -sNaN92 0e+384 -> -NaN92 Invalid_operation
- ddfma2697 fma 088 -sNaN91 0e+384 -> -NaN91 Invalid_operation
- ddfma2698 fma Inf -sNaN90 0e+384 -> -NaN90 Invalid_operation
- ddfma2699 fma -NaN -sNaN89 0e+384 -> -NaN89 Invalid_operation
-
- ddfma2701 fma -NaN -Inf 0e+384 -> -NaN
- ddfma2702 fma -NaN 999 0e+384 -> -NaN
- ddfma2703 fma -NaN Inf 0e+384 -> -NaN
- ddfma2704 fma -NaN -NaN 0e+384 -> -NaN
- ddfma2705 fma -Inf -NaN0 0e+384 -> -NaN
- ddfma2706 fma -999 -NaN 0e+384 -> -NaN
- ddfma2707 fma Inf -NaN 0e+384 -> -NaN
-
- ddfma2711 fma -sNaN -Inf 0e+384 -> -NaN Invalid_operation
- ddfma2712 fma -sNaN -11 0e+384 -> -NaN Invalid_operation
- ddfma2713 fma -sNaN00 NaN 0e+384 -> -NaN Invalid_operation
- ddfma2714 fma -sNaN -sNaN 0e+384 -> -NaN Invalid_operation
- ddfma2715 fma -NaN -sNaN 0e+384 -> -NaN Invalid_operation
- ddfma2716 fma -Inf -sNaN 0e+384 -> -NaN Invalid_operation
- ddfma2717 fma 088 -sNaN 0e+384 -> -NaN Invalid_operation
- ddfma2718 fma Inf -sNaN 0e+384 -> -NaN Invalid_operation
- ddfma2719 fma -NaN -sNaN 0e+384 -> -NaN Invalid_operation
-
- -- overflow and underflow tests .. note subnormal results
- -- signs
- ddfma2751 fma 1e+277 1e+311 0e+384 -> Infinity Overflow Inexact Rounded
- ddfma2752 fma 1e+277 -1e+311 0e+384 -> -Infinity Overflow Inexact Rounded
- ddfma2753 fma -1e+277 1e+311 0e+384 -> -Infinity Overflow Inexact Rounded
- ddfma2754 fma -1e+277 -1e+311 0e+384 -> Infinity Overflow Inexact Rounded
- ddfma2755 fma 1e-277 1e-311 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
- ddfma2756 fma 1e-277 -1e-311 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
- ddfma2757 fma -1e-277 1e-311 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
- ddfma2758 fma -1e-277 -1e-311 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-
- -- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
- ddfma2760 fma 1e-291 1e-101 0e+384 -> 1E-392 Subnormal
- ddfma2761 fma 1e-291 1e-102 0e+384 -> 1E-393 Subnormal
- ddfma2762 fma 1e-291 1e-103 0e+384 -> 1E-394 Subnormal
- ddfma2763 fma 1e-291 1e-104 0e+384 -> 1E-395 Subnormal
- ddfma2764 fma 1e-291 1e-105 0e+384 -> 1E-396 Subnormal
- ddfma2765 fma 1e-291 1e-106 0e+384 -> 1E-397 Subnormal
- ddfma2766 fma 1e-291 1e-107 0e+384 -> 1E-398 Subnormal
- ddfma2767 fma 1e-291 1e-108 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
- ddfma2768 fma 1e-291 1e-109 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
- ddfma2769 fma 1e-291 1e-110 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
- -- [no equivalent of 'subnormal' for overflow]
- ddfma2770 fma 1e+60 1e+321 0e+384 -> 1.000000000000E+381 Clamped
- ddfma2771 fma 1e+60 1e+322 0e+384 -> 1.0000000000000E+382 Clamped
- ddfma2772 fma 1e+60 1e+323 0e+384 -> 1.00000000000000E+383 Clamped
- ddfma2773 fma 1e+60 1e+324 0e+384 -> 1.000000000000000E+384 Clamped
- ddfma2774 fma 1e+60 1e+325 0e+384 -> Infinity Overflow Inexact Rounded
- ddfma2775 fma 1e+60 1e+326 0e+384 -> Infinity Overflow Inexact Rounded
- ddfma2776 fma 1e+60 1e+327 0e+384 -> Infinity Overflow Inexact Rounded
- ddfma2777 fma 1e+60 1e+328 0e+384 -> Infinity Overflow Inexact Rounded
- ddfma2778 fma 1e+60 1e+329 0e+384 -> Infinity Overflow Inexact Rounded
- ddfma2779 fma 1e+60 1e+330 0e+384 -> Infinity Overflow Inexact Rounded
-
- ddfma2801 fma 1.0000E-394 1 0e+384 -> 1.0000E-394 Subnormal
- ddfma2802 fma 1.000E-394 1e-1 0e+384 -> 1.000E-395 Subnormal
- ddfma2803 fma 1.00E-394 1e-2 0e+384 -> 1.00E-396 Subnormal
- ddfma2804 fma 1.0E-394 1e-3 0e+384 -> 1.0E-397 Subnormal
- ddfma2805 fma 1.0E-394 1e-4 0e+384 -> 1E-398 Subnormal Rounded
- ddfma2806 fma 1.3E-394 1e-4 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded
- ddfma2807 fma 1.5E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
- ddfma2808 fma 1.7E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
- ddfma2809 fma 2.3E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
- ddfma2810 fma 2.5E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
- ddfma2811 fma 2.7E-394 1e-4 0e+384 -> 3E-398 Underflow Subnormal Inexact Rounded
- ddfma2812 fma 1.49E-394 1e-4 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded
- ddfma2813 fma 1.50E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
- ddfma2814 fma 1.51E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
- ddfma2815 fma 2.49E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
- ddfma2816 fma 2.50E-394 1e-4 0e+384 -> 2E-398 Underflow Subnormal Inexact Rounded
- ddfma2817 fma 2.51E-394 1e-4 0e+384 -> 3E-398 Underflow Subnormal Inexact Rounded
-
- ddfma2818 fma 1E-394 1e-4 0e+384 -> 1E-398 Subnormal
- ddfma2819 fma 3E-394 1e-5 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
- ddfma2820 fma 5E-394 1e-5 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
- ddfma2821 fma 7E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded
- ddfma2822 fma 9E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded
- ddfma2823 fma 9.9E-394 1e-5 0e+384 -> 1E-398 Underflow Subnormal Inexact Rounded
-
- ddfma2824 fma 1E-394 -1e-4 0e+384 -> -1E-398 Subnormal
- ddfma2825 fma 3E-394 -1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
- ddfma2826 fma -5E-394 1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
- ddfma2827 fma 7E-394 -1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded
- ddfma2828 fma -9E-394 1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded
- ddfma2829 fma 9.9E-394 -1e-5 0e+384 -> -1E-398 Underflow Subnormal Inexact Rounded
- ddfma2830 fma 3.0E-394 -1e-5 0e+384 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-
- ddfma2831 fma 1.0E-199 1e-200 0e+384 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
- ddfma2832 fma 1.0E-199 1e-199 0e+384 -> 1E-398 Subnormal Rounded
- ddfma2833 fma 1.0E-199 1e-198 0e+384 -> 1.0E-397 Subnormal
- ddfma2834 fma 2.0E-199 2e-198 0e+384 -> 4.0E-397 Subnormal
- ddfma2835 fma 4.0E-199 4e-198 0e+384 -> 1.60E-396 Subnormal
- ddfma2836 fma 10.0E-199 10e-198 0e+384 -> 1.000E-395 Subnormal
- ddfma2837 fma 30.0E-199 30e-198 0e+384 -> 9.000E-395 Subnormal
- ddfma2838 fma 40.0E-199 40e-188 0e+384 -> 1.6000E-384 Subnormal
- ddfma2839 fma 40.0E-199 40e-187 0e+384 -> 1.6000E-383
- ddfma2840 fma 40.0E-199 40e-186 0e+384 -> 1.6000E-382
-
- -- Long operand overflow may be a different path
- ddfma2870 fma 100 9.999E+383 0e+384 -> Infinity Inexact Overflow Rounded
- ddfma2871 fma 100 -9.999E+383 0e+384 -> -Infinity Inexact Overflow Rounded
- ddfma2872 fma 9.999E+383 100 0e+384 -> Infinity Inexact Overflow Rounded
- ddfma2873 fma -9.999E+383 100 0e+384 -> -Infinity Inexact Overflow Rounded
-
- -- check for double-rounded subnormals
- ddfma2881 fma 1.2347E-355 1.2347E-40 0e+384 -> 1.524E-395 Inexact Rounded Subnormal Underflow
- ddfma2882 fma 1.234E-355 1.234E-40 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow
- ddfma2883 fma 1.23E-355 1.23E-40 0e+384 -> 1.513E-395 Inexact Rounded Subnormal Underflow
- ddfma2884 fma 1.2E-355 1.2E-40 0e+384 -> 1.44E-395 Subnormal
- ddfma2885 fma 1.2E-355 1.2E-41 0e+384 -> 1.44E-396 Subnormal
- ddfma2886 fma 1.2E-355 1.2E-42 0e+384 -> 1.4E-397 Subnormal Inexact Rounded Underflow
- ddfma2887 fma 1.2E-355 1.3E-42 0e+384 -> 1.6E-397 Subnormal Inexact Rounded Underflow
- ddfma2888 fma 1.3E-355 1.3E-42 0e+384 -> 1.7E-397 Subnormal Inexact Rounded Underflow
- ddfma2889 fma 1.3E-355 1.3E-43 0e+384 -> 2E-398 Subnormal Inexact Rounded Underflow
- ddfma2890 fma 1.3E-356 1.3E-43 0e+384 -> 0E-398 Clamped Subnormal Inexact Rounded Underflow
-
- ddfma2891 fma 1.2345E-39 1.234E-355 0e+384 -> 1.5234E-394 Inexact Rounded Subnormal Underflow
- ddfma2892 fma 1.23456E-39 1.234E-355 0e+384 -> 1.5234E-394 Inexact Rounded Subnormal Underflow
- ddfma2893 fma 1.2345E-40 1.234E-355 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow
- ddfma2894 fma 1.23456E-40 1.234E-355 0e+384 -> 1.523E-395 Inexact Rounded Subnormal Underflow
- ddfma2895 fma 1.2345E-41 1.234E-355 0e+384 -> 1.52E-396 Inexact Rounded Subnormal Underflow
- ddfma2896 fma 1.23456E-41 1.234E-355 0e+384 -> 1.52E-396 Inexact Rounded Subnormal Underflow
-
- -- Now explore the case where we get a normal result with Underflow
- ddfma2900 fma 0.3000000000E-191 0.3000000000E-191 0e+384 -> 9.00000000000000E-384 Subnormal Rounded
- ddfma2901 fma 0.3000000001E-191 0.3000000001E-191 0e+384 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded
- ddfma2902 fma 9.999999999999999E-383 0.0999999999999 0e+384 -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded
- ddfma2903 fma 9.999999999999999E-383 0.09999999999999 0e+384 -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded
- ddfma2904 fma 9.999999999999999E-383 0.099999999999999 0e+384 -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded
- ddfma2905 fma 9.999999999999999E-383 0.0999999999999999 0e+384 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded
- -- prove operands are exact
- ddfma2906 fma 9.999999999999999E-383 1 0e+384 -> 9.999999999999999E-383
- ddfma2907 fma 1 0.09999999999999999 0e+384 -> 0.09999999999999999
- -- the next rounds to Nmin
- ddfma2908 fma 9.999999999999999E-383 0.09999999999999999 0e+384 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-
- -- hugest
- ddfma2909 fma 9999999999999999 9999999999999999 0e+384 -> 9.999999999999998E+31 Inexact Rounded
-
- -- Null tests
- ddfma2990 fma 10 # 0e+384 -> NaN Invalid_operation
- ddfma2991 fma # 10 0e+384 -> NaN Invalid_operation
-
-
- -- ADDITION TESTS ------------------------------------------------------
-
- -- [first group are 'quick confidence check']
- ddfma3001 fma 1 1 1 -> 2
- ddfma3002 fma 1 2 3 -> 5
- ddfma3003 fma 1 '5.75' '3.3' -> 9.05
- ddfma3004 fma 1 '5' '-3' -> 2
- ddfma3005 fma 1 '-5' '-3' -> -8
- ddfma3006 fma 1 '-7' '2.5' -> -4.5
- ddfma3007 fma 1 '0.7' '0.3' -> 1.0
- ddfma3008 fma 1 '1.25' '1.25' -> 2.50
- ddfma3009 fma 1 '1.23456789' '1.00000000' -> '2.23456789'
- ddfma3010 fma 1 '1.23456789' '1.00000011' -> '2.23456800'
-
- -- 1234567890123456 1234567890123456
- ddfma3011 fma 1 '0.4444444444444446' '0.5555555555555555' -> '1.000000000000000' Inexact Rounded
- ddfma3012 fma 1 '0.4444444444444445' '0.5555555555555555' -> '1.000000000000000' Rounded
- ddfma3013 fma 1 '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999'
- ddfma3014 fma 1 '4444444444444444' '0.49' -> '4444444444444444' Inexact Rounded
- ddfma3015 fma 1 '4444444444444444' '0.499' -> '4444444444444444' Inexact Rounded
- ddfma3016 fma 1 '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded
- ddfma3017 fma 1 '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded
- ddfma3018 fma 1 '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded
- ddfma3019 fma 1 '4444444444444444' '0.501' -> '4444444444444445' Inexact Rounded
- ddfma3020 fma 1 '4444444444444444' '0.51' -> '4444444444444445' Inexact Rounded
-
- ddfma3021 fma 1 0 1 -> 1
- ddfma3022 fma 1 1 1 -> 2
- ddfma3023 fma 1 2 1 -> 3
- ddfma3024 fma 1 3 1 -> 4
- ddfma3025 fma 1 4 1 -> 5
- ddfma3026 fma 1 5 1 -> 6
- ddfma3027 fma 1 6 1 -> 7
- ddfma3028 fma 1 7 1 -> 8
- ddfma3029 fma 1 8 1 -> 9
- ddfma3030 fma 1 9 1 -> 10
-
- -- some carrying effects
- ddfma3031 fma 1 '0.9998' '0.0000' -> '0.9998'
- ddfma3032 fma 1 '0.9998' '0.0001' -> '0.9999'
- ddfma3033 fma 1 '0.9998' '0.0002' -> '1.0000'
- ddfma3034 fma 1 '0.9998' '0.0003' -> '1.0001'
-
- ddfma3035 fma 1 '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
- ddfma3036 fma 1 '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
- ddfma3037 fma 1 '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
- ddfma3038 fma 1 '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded
- ddfma3039 fma 1 '700000' '10000e+16' -> '1.000000000000007E+20' Rounded
-
- -- symmetry:
- ddfma3040 fma 1 '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded
- ddfma3041 fma 1 '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded
- ddfma3042 fma 1 '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded
- ddfma3044 fma 1 '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded
- ddfma3045 fma 1 '10000e+16' '700000' -> '1.000000000000007E+20' Rounded
-
- -- same, without rounding
- ddfma3046 fma 1 '10000e+9' '7' -> '10000000000007'
- ddfma3047 fma 1 '10000e+9' '70' -> '10000000000070'
- ddfma3048 fma 1 '10000e+9' '700' -> '10000000000700'
- ddfma3049 fma 1 '10000e+9' '7000' -> '10000000007000'
- ddfma3050 fma 1 '10000e+9' '70000' -> '10000000070000'
- ddfma3051 fma 1 '10000e+9' '700000' -> '10000000700000'
- ddfma3052 fma 1 '10000e+9' '7000000' -> '10000007000000'
-
- -- examples from decarith
- ddfma3053 fma 1 '12' '7.00' -> '19.00'
- ddfma3054 fma 1 '1.3' '-1.07' -> '0.23'
- ddfma3055 fma 1 '1.3' '-1.30' -> '0.00'
- ddfma3056 fma 1 '1.3' '-2.07' -> '-0.77'
- ddfma3057 fma 1 '1E+2' '1E+4' -> '1.01E+4'
-
- -- leading zero preservation
- ddfma3061 fma 1 1 '0.0001' -> '1.0001'
- ddfma3062 fma 1 1 '0.00001' -> '1.00001'
- ddfma3063 fma 1 1 '0.000001' -> '1.000001'
- ddfma3064 fma 1 1 '0.0000001' -> '1.0000001'
- ddfma3065 fma 1 1 '0.00000001' -> '1.00000001'
-
- -- some funny zeros [in case of bad signum]
- ddfma3070 fma 1 1 0 -> 1
- ddfma3071 fma 1 1 0. -> 1
- ddfma3072 fma 1 1 .0 -> 1.0
- ddfma3073 fma 1 1 0.0 -> 1.0
- ddfma3074 fma 1 1 0.00 -> 1.00
- ddfma3075 fma 1 0 1 -> 1
- ddfma3076 fma 1 0. 1 -> 1
- ddfma3077 fma 1 .0 1 -> 1.0
- ddfma3078 fma 1 0.0 1 -> 1.0
- ddfma3079 fma 1 0.00 1 -> 1.00
-
- -- some carries
- ddfma3080 fma 1 999999998 1 -> 999999999
- ddfma3081 fma 1 999999999 1 -> 1000000000
- ddfma3082 fma 1 99999999 1 -> 100000000
- ddfma3083 fma 1 9999999 1 -> 10000000
- ddfma3084 fma 1 999999 1 -> 1000000
- ddfma3085 fma 1 99999 1 -> 100000
- ddfma3086 fma 1 9999 1 -> 10000
- ddfma3087 fma 1 999 1 -> 1000
- ddfma3088 fma 1 99 1 -> 100
- ddfma3089 fma 1 9 1 -> 10
-
-
- -- more LHS swaps
- ddfma3090 fma 1 '-56267E-10' 0 -> '-0.0000056267'
- ddfma3091 fma 1 '-56267E-6' 0 -> '-0.056267'
- ddfma3092 fma 1 '-56267E-5' 0 -> '-0.56267'
- ddfma3093 fma 1 '-56267E-4' 0 -> '-5.6267'
- ddfma3094 fma 1 '-56267E-3' 0 -> '-56.267'
- ddfma3095 fma 1 '-56267E-2' 0 -> '-562.67'
- ddfma3096 fma 1 '-56267E-1' 0 -> '-5626.7'
- ddfma3097 fma 1 '-56267E-0' 0 -> '-56267'
- ddfma3098 fma 1 '-5E-10' 0 -> '-5E-10'
- ddfma3099 fma 1 '-5E-7' 0 -> '-5E-7'
- ddfma3100 fma 1 '-5E-6' 0 -> '-0.000005'
- ddfma3101 fma 1 '-5E-5' 0 -> '-0.00005'
- ddfma3102 fma 1 '-5E-4' 0 -> '-0.0005'
- ddfma3103 fma 1 '-5E-1' 0 -> '-0.5'
- ddfma3104 fma 1 '-5E0' 0 -> '-5'
- ddfma3105 fma 1 '-5E1' 0 -> '-50'
- ddfma3106 fma 1 '-5E5' 0 -> '-500000'
- ddfma3107 fma 1 '-5E15' 0 -> '-5000000000000000'
- ddfma3108 fma 1 '-5E16' 0 -> '-5.000000000000000E+16' Rounded
- ddfma3109 fma 1 '-5E17' 0 -> '-5.000000000000000E+17' Rounded
- ddfma3110 fma 1 '-5E18' 0 -> '-5.000000000000000E+18' Rounded
- ddfma3111 fma 1 '-5E100' 0 -> '-5.000000000000000E+100' Rounded
-
- -- more RHS swaps
- ddfma3113 fma 1 0 '-56267E-10' -> '-0.0000056267'
- ddfma3114 fma 1 0 '-56267E-6' -> '-0.056267'
- ddfma3116 fma 1 0 '-56267E-5' -> '-0.56267'
- ddfma3117 fma 1 0 '-56267E-4' -> '-5.6267'
- ddfma3119 fma 1 0 '-56267E-3' -> '-56.267'
- ddfma3120 fma 1 0 '-56267E-2' -> '-562.67'
- ddfma3121 fma 1 0 '-56267E-1' -> '-5626.7'
- ddfma3122 fma 1 0 '-56267E-0' -> '-56267'
- ddfma3123 fma 1 0 '-5E-10' -> '-5E-10'
- ddfma3124 fma 1 0 '-5E-7' -> '-5E-7'
- ddfma3125 fma 1 0 '-5E-6' -> '-0.000005'
- ddfma3126 fma 1 0 '-5E-5' -> '-0.00005'
- ddfma3127 fma 1 0 '-5E-4' -> '-0.0005'
- ddfma3128 fma 1 0 '-5E-1' -> '-0.5'
- ddfma3129 fma 1 0 '-5E0' -> '-5'
- ddfma3130 fma 1 0 '-5E1' -> '-50'
- ddfma3131 fma 1 0 '-5E5' -> '-500000'
- ddfma3132 fma 1 0 '-5E15' -> '-5000000000000000'
- ddfma3133 fma 1 0 '-5E16' -> '-5.000000000000000E+16' Rounded
- ddfma3134 fma 1 0 '-5E17' -> '-5.000000000000000E+17' Rounded
- ddfma3135 fma 1 0 '-5E18' -> '-5.000000000000000E+18' Rounded
- ddfma3136 fma 1 0 '-5E100' -> '-5.000000000000000E+100' Rounded
-
- -- related
- ddfma3137 fma 1 1 '0E-19' -> '1.000000000000000' Rounded
- ddfma3138 fma 1 -1 '0E-19' -> '-1.000000000000000' Rounded
- ddfma3139 fma 1 '0E-19' 1 -> '1.000000000000000' Rounded
- ddfma3140 fma 1 '0E-19' -1 -> '-1.000000000000000' Rounded
- ddfma3141 fma 1 1E+11 0.0000 -> '100000000000.0000'
- ddfma3142 fma 1 1E+11 0.00000 -> '100000000000.0000' Rounded
- ddfma3143 fma 1 0.000 1E+12 -> '1000000000000.000'
- ddfma3144 fma 1 0.0000 1E+12 -> '1000000000000.000' Rounded
-
- -- [some of the next group are really constructor tests]
- ddfma3146 fma 1 '00.0' 0 -> '0.0'
- ddfma3147 fma 1 '0.00' 0 -> '0.00'
- ddfma3148 fma 1 0 '0.00' -> '0.00'
- ddfma3149 fma 1 0 '00.0' -> '0.0'
- ddfma3150 fma 1 '00.0' '0.00' -> '0.00'
- ddfma3151 fma 1 '0.00' '00.0' -> '0.00'
- ddfma3152 fma 1 '3' '.3' -> '3.3'
- ddfma3153 fma 1 '3.' '.3' -> '3.3'
- ddfma3154 fma 1 '3.0' '.3' -> '3.3'
- ddfma3155 fma 1 '3.00' '.3' -> '3.30'
- ddfma3156 fma 1 '3' '3' -> '6'
- ddfma3157 fma 1 '3' '+3' -> '6'
- ddfma3158 fma 1 '3' '-3' -> '0'
- ddfma3159 fma 1 '0.3' '-0.3' -> '0.0'
- ddfma3160 fma 1 '0.03' '-0.03' -> '0.00'
-
- -- try borderline precision, with carries, etc.
- ddfma3161 fma 1 '1E+12' '-1' -> '999999999999'
- ddfma3162 fma 1 '1E+12' '1.11' -> '1000000000001.11'
- ddfma3163 fma 1 '1.11' '1E+12' -> '1000000000001.11'
- ddfma3164 fma 1 '-1' '1E+12' -> '999999999999'
- ddfma3165 fma 1 '7E+12' '-1' -> '6999999999999'
- ddfma3166 fma 1 '7E+12' '1.11' -> '7000000000001.11'
- ddfma3167 fma 1 '1.11' '7E+12' -> '7000000000001.11'
- ddfma3168 fma 1 '-1' '7E+12' -> '6999999999999'
-
- rounding: half_up
- -- 1.234567890123456 1234567890123456 1 234567890123456
- ddfma3170 fma 1 '4.444444444444444' '0.5555555555555567' -> '5.000000000000001' Inexact Rounded
- ddfma3171 fma 1 '4.444444444444444' '0.5555555555555566' -> '5.000000000000001' Inexact Rounded
- ddfma3172 fma 1 '4.444444444444444' '0.5555555555555565' -> '5.000000000000001' Inexact Rounded
- ddfma3173 fma 1 '4.444444444444444' '0.5555555555555564' -> '5.000000000000000' Inexact Rounded
- ddfma3174 fma 1 '4.444444444444444' '0.5555555555555553' -> '4.999999999999999' Inexact Rounded
- ddfma3175 fma 1 '4.444444444444444' '0.5555555555555552' -> '4.999999999999999' Inexact Rounded
- ddfma3176 fma 1 '4.444444444444444' '0.5555555555555551' -> '4.999999999999999' Inexact Rounded
- ddfma3177 fma 1 '4.444444444444444' '0.5555555555555550' -> '4.999999999999999' Rounded
- ddfma3178 fma 1 '4.444444444444444' '0.5555555555555545' -> '4.999999999999999' Inexact Rounded
- ddfma3179 fma 1 '4.444444444444444' '0.5555555555555544' -> '4.999999999999998' Inexact Rounded
- ddfma3180 fma 1 '4.444444444444444' '0.5555555555555543' -> '4.999999999999998' Inexact Rounded
- ddfma3181 fma 1 '4.444444444444444' '0.5555555555555542' -> '4.999999999999998' Inexact Rounded
- ddfma3182 fma 1 '4.444444444444444' '0.5555555555555541' -> '4.999999999999998' Inexact Rounded
- ddfma3183 fma 1 '4.444444444444444' '0.5555555555555540' -> '4.999999999999998' Rounded
-
- -- and some more, including residue effects and different roundings
- rounding: half_up
- ddfma3200 fma 1 '1234560123456789' 0 -> '1234560123456789'
- ddfma3201 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded
- ddfma3202 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded
- ddfma3203 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded
- ddfma3204 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded
- ddfma3205 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded
- ddfma3206 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded
- ddfma3207 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded
- ddfma3208 fma 1 '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded
- ddfma3209 fma 1 '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded
- ddfma3210 fma 1 '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded
- ddfma3211 fma 1 '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded
- ddfma3212 fma 1 '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded
- ddfma3213 fma 1 '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded
- ddfma3214 fma 1 '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded
- ddfma3215 fma 1 '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded
- ddfma3216 fma 1 '1234560123456789' 1 -> '1234560123456790'
- ddfma3217 fma 1 '1234560123456789' 1.000000001 -> '1234560123456790' Inexact Rounded
- ddfma3218 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded
- ddfma3219 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded
-
- rounding: half_even
- ddfma3220 fma 1 '1234560123456789' 0 -> '1234560123456789'
- ddfma3221 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded
- ddfma3222 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded
- ddfma3223 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded
- ddfma3224 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded
- ddfma3225 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded
- ddfma3226 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded
- ddfma3227 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded
- ddfma3228 fma 1 '1234560123456789' 0.5 -> '1234560123456790' Inexact Rounded
- ddfma3229 fma 1 '1234560123456789' 0.500000001 -> '1234560123456790' Inexact Rounded
- ddfma3230 fma 1 '1234560123456789' 0.500001 -> '1234560123456790' Inexact Rounded
- ddfma3231 fma 1 '1234560123456789' 0.51 -> '1234560123456790' Inexact Rounded
- ddfma3232 fma 1 '1234560123456789' 0.6 -> '1234560123456790' Inexact Rounded
- ddfma3233 fma 1 '1234560123456789' 0.9 -> '1234560123456790' Inexact Rounded
- ddfma3234 fma 1 '1234560123456789' 0.99999 -> '1234560123456790' Inexact Rounded
- ddfma3235 fma 1 '1234560123456789' 0.999999999 -> '1234560123456790' Inexact Rounded
- ddfma3236 fma 1 '1234560123456789' 1 -> '1234560123456790'
- ddfma3237 fma 1 '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded
- ddfma3238 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded
- ddfma3239 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded
- -- critical few with even bottom digit...
- ddfma3240 fma 1 '1234560123456788' 0.499999999 -> '1234560123456788' Inexact Rounded
- ddfma3241 fma 1 '1234560123456788' 0.5 -> '1234560123456788' Inexact Rounded
- ddfma3242 fma 1 '1234560123456788' 0.500000001 -> '1234560123456789' Inexact Rounded
-
- rounding: down
- ddfma3250 fma 1 '1234560123456789' 0 -> '1234560123456789'
- ddfma3251 fma 1 '1234560123456789' 0.000000001 -> '1234560123456789' Inexact Rounded
- ddfma3252 fma 1 '1234560123456789' 0.000001 -> '1234560123456789' Inexact Rounded
- ddfma3253 fma 1 '1234560123456789' 0.1 -> '1234560123456789' Inexact Rounded
- ddfma3254 fma 1 '1234560123456789' 0.4 -> '1234560123456789' Inexact Rounded
- ddfma3255 fma 1 '1234560123456789' 0.49 -> '1234560123456789' Inexact Rounded
- ddfma3256 fma 1 '1234560123456789' 0.499999 -> '1234560123456789' Inexact Rounded
- ddfma3257 fma 1 '1234560123456789' 0.499999999 -> '1234560123456789' Inexact Rounded
- ddfma3258 fma 1 '1234560123456789' 0.5 -> '1234560123456789' Inexact Rounded
- ddfma3259 fma 1 '1234560123456789' 0.500000001 -> '1234560123456789' Inexact Rounded
- ddfma3260 fma 1 '1234560123456789' 0.500001 -> '1234560123456789' Inexact Rounded
- ddfma3261 fma 1 '1234560123456789' 0.51 -> '1234560123456789' Inexact Rounded
- ddfma3262 fma 1 '1234560123456789' 0.6 -> '1234560123456789' Inexact Rounded
- ddfma3263 fma 1 '1234560123456789' 0.9 -> '1234560123456789' Inexact Rounded
- ddfma3264 fma 1 '1234560123456789' 0.99999 -> '1234560123456789' Inexact Rounded
- ddfma3265 fma 1 '1234560123456789' 0.999999999 -> '1234560123456789' Inexact Rounded
- ddfma3266 fma 1 '1234560123456789' 1 -> '1234560123456790'
- ddfma3267 fma 1 '1234560123456789' 1.00000001 -> '1234560123456790' Inexact Rounded
- ddfma3268 fma 1 '1234560123456789' 1.00001 -> '1234560123456790' Inexact Rounded
- ddfma3269 fma 1 '1234560123456789' 1.1 -> '1234560123456790' Inexact Rounded
-
- -- 1 in last place tests
- rounding: half_up
- ddfma3301 fma 1 -1 1 -> 0
- ddfma3302 fma 1 0 1 -> 1
- ddfma3303 fma 1 1 1…