1------------------------------------------------------------------------
2-- fma.decTest -- decimal 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------------------------------------------------------------------------
20version: 2.59
21
22extended:    1
23precision:   9
24rounding:    half_up
25maxExponent: 384
26minexponent: -383
27
28-- These tests comprese three parts:
29--   1. Sanity checks and other three-operand tests (especially those
30--      where the fused operation makes a difference)
31--   2. Multiply tests (third operand is neutral zero [0E+emax])
32--   3. Addition tests (first operand is 1)
33-- The multiply and addition tests are extensive because FMA may have
34-- its own dedicated multiplication or addition routine(s), and they
35-- also inherently check the left-to-right properties.
36
37-- Sanity checks
38fmax0001 fma  1   1   1 ->   2
39fmax0002 fma  1   1   2 ->   3
40fmax0003 fma  2   2   3 ->   7
41fmax0004 fma  9   9   9 ->  90
42fmax0005 fma -1   1   1 ->   0
43fmax0006 fma -1   1   2 ->   1
44fmax0007 fma -2   2   3 ->  -1
45fmax0008 fma -9   9   9 -> -72
46fmax0011 fma  1  -1   1 ->   0
47fmax0012 fma  1  -1   2 ->   1
48fmax0013 fma  2  -2   3 ->  -1
49fmax0014 fma  9  -9   9 -> -72
50fmax0015 fma  1   1  -1 ->   0
51fmax0016 fma  1   1  -2 ->  -1
52fmax0017 fma  2   2  -3 ->   1
53fmax0018 fma  9   9  -9 ->  72
54fmax0019 fma  3   5   7 ->  22
55fmax0029 fma  3  -5   7 ->  -8
56
57-- non-integer exacts
58fma0100  fma    25.2   63.6   -438  ->  1164.72
59fma0101  fma   0.301  0.380    334  ->  334.114380
60fma0102  fma    49.2   -4.8   23.3  ->  -212.86
61fma0103  fma    4.22  0.079  -94.6  ->  -94.26662
62fma0104  fma     903  0.797  0.887  ->  720.578
63fma0105  fma    6.13   -161   65.9  ->  -921.03
64fma0106  fma    28.2    727   5.45  ->  20506.85
65fma0107  fma       4    605    688  ->  3108
66fma0108  fma    93.3   0.19  0.226  ->  17.953
67fma0109  fma   0.169   -341   5.61  ->  -52.019
68fma0110  fma   -72.2     30  -51.2  ->  -2217.2
69fma0111  fma  -0.409     13   20.4  ->  15.083
70fma0112  fma     317   77.0   19.0  ->  24428.0
71fma0113  fma      47   6.58   1.62  ->  310.88
72fma0114  fma    1.36  0.984  0.493  ->  1.83124
73fma0115  fma    72.7    274   1.56  ->  19921.36
74fma0116  fma     335    847     83  ->  283828
75fma0117  fma     666  0.247   25.4  ->  189.902
76fma0118  fma   -3.87   3.06   78.0  ->  66.1578
77fma0119  fma   0.742    192   35.6  ->  178.064
78fma0120  fma   -91.6   5.29  0.153  ->  -484.411
79
80-- cases where result is different from separate multiply + add; each
81-- is preceded by the result of unfused multiply and add
82-- [this is about 20% of all similar  cases in general]
83--               888565290   1557.96930  -86087.7578  -> 1.38435735E+12
84fma0201  fma     888565290   1557.96930  -86087.7578  -> 1.38435736E+12  Inexact Rounded
85--             -85519342.9    735155419     42010431  -> -6.28700084E+16
86fma0205  fma   -85519342.9    735155419     42010431  -> -6.28700083E+16 Inexact Rounded
87--                -98025.5  -294603.472   10414348.2  -> 2.88890669E+10
88fma0208  fma      -98025.5  -294603.472   10414348.2  -> 2.88890670E+10  Inexact Rounded
89--              5967627.39   83526540.6   498494.810  -> 4.98455271E+14
90fma0211  fma    5967627.39   83526540.6   498494.810  -> 4.98455272E+14  Inexact Rounded
91--               3456.9433    874.39518   197866.615  ->  3220601.18
92fma0216  fma     3456.9433    874.39518   197866.615  ->  3220601.17     Inexact Rounded
93--              62769.8287   2096.98927    48.420317  ->  131627705
94fma0218  fma    62769.8287   2096.98927    48.420317  ->  131627706      Inexact Rounded
95--               -68.81500   59961113.9     -8988862  -> -4.13521291E+9
96fma0219  fma     -68.81500   59961113.9     -8988862  -> -4.13521292E+9  Inexact Rounded
97--              2126341.02   63491.5152    302427455  -> 1.35307040E+11
98fma0226  fma    2126341.02   63491.5152    302427455  -> 1.35307041E+11  Inexact Rounded
99
100
101-- Infinite combinations
102fmax0800 fma  Inf   Inf   Inf    ->  Infinity
103fmax0801 fma  Inf   Inf  -Inf    ->  NaN Invalid_operation
104fmax0802 fma  Inf  -Inf   Inf    ->  NaN Invalid_operation
105fmax0803 fma  Inf  -Inf  -Inf    -> -Infinity
106fmax0804 fma -Inf   Inf   Inf    ->  NaN Invalid_operation
107fmax0805 fma -Inf   Inf  -Inf    -> -Infinity
108fmax0806 fma -Inf  -Inf   Inf    ->  Infinity
109fmax0807 fma -Inf  -Inf  -Inf    ->  NaN Invalid_operation
110fmax0808 fma -Inf   0       1    ->  NaN Invalid_operation
111fmax0809 fma -Inf   0     NaN    ->  NaN Invalid_operation
112
113-- Triple NaN propagation
114fmax0900 fma  NaN2  NaN3  NaN5   ->  NaN2
115fmax0901 fma  0     NaN3  NaN5   ->  NaN3
116fmax0902 fma  0     0     NaN5   ->  NaN5
117-- first sNaN wins (consider qNaN from earlier sNaN being
118-- overridden by an sNaN in third operand)
119fmax0903 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
120fmax0904 fma  0     sNaN2 sNaN3  ->  NaN2 Invalid_operation
121fmax0905 fma  0     0     sNaN3  ->  NaN3 Invalid_operation
122fmax0906 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
123fmax0907 fma  NaN7  sNaN2 sNaN3  ->  NaN2 Invalid_operation
124fmax0908 fma  NaN7  NaN5  sNaN3  ->  NaN3 Invalid_operation
125
126-- MULTIPLICATION TESTS ------------------------------------------------
127-- sanity checks (as base, above)
128fmax2000 fma 2      2  0E+999999  -> 4
129fmax2001 fma 2      3  0E+999999  -> 6
130fmax2002 fma 5      1  0E+999999  -> 5
131fmax2003 fma 5      2  0E+999999  -> 10
132fmax2004 fma 1.20   2  0E+999999  -> 2.40
133fmax2005 fma 1.20   0  0E+999999  -> 0.00
134fmax2006 fma 1.20  -2  0E+999999  -> -2.40
135fmax2007 fma -1.20  2  0E+999999  -> -2.40
136fmax2008 fma -1.20  0  0E+999999  -> 0.00
137fmax2009 fma -1.20 -2  0E+999999  -> 2.40
138fmax2010 fma 5.09 7.1  0E+999999  -> 36.139
139fmax2011 fma 2.5    4  0E+999999  -> 10.0
140fmax2012 fma 2.50   4  0E+999999  -> 10.00
141fmax2013 fma 1.23456789 1.00000000  0E+999999  -> 1.23456789 Rounded
142fmax2014 fma 9.999999999 9.999999999  0E+999999  -> 100.000000 Inexact Rounded
143fmax2015 fma 2.50   4  0E+999999  -> 10.00
144precision: 6
145fmax2016 fma 2.50   4  0E+999999  -> 10.00
146fmax2017 fma  9.999999  9.999999  0E+999999  ->  100.000 Inexact Rounded
147fmax2018 fma  9.999999 -9.999999  0E+999999  -> -100.000 Inexact Rounded
148fmax2019 fma -9.999999  9.999999  0E+999999  -> -100.000 Inexact Rounded
149fmax2020 fma -9.999999 -9.999999  0E+999999  ->  100.000 Inexact Rounded
150
151-- 1999.12.21: next one is an edge case if intermediate longs are used
152precision: 15
153fmax2059 fma 999999999999 9765625  0E+999999  -> 9.76562499999023E+18 Inexact Rounded
154precision: 30
155fmax2160 fma 999999999999 9765625  0E+999999  -> 9765624999990234375
156precision: 9
157-----
158
159-- zeros, etc.
160fmax2021 fma  0      0      0E+999999  ->  0
161fmax2022 fma  0     -0      0E+999999  ->  0
162fmax2023 fma -0      0      0E+999999  ->  0
163fmax2024 fma -0     -0      0E+999999  ->  0
164fmax2025 fma -0.0   -0.0    0E+999999  ->  0.00
165fmax2026 fma -0.0   -0.0    0E+999999  ->  0.00
166fmax2027 fma -0.0   -0.0    0E+999999  ->  0.00
167fmax2028 fma -0.0   -0.0    0E+999999  ->  0.00
168fmax2030 fma  5.00   1E-3   0E+999999  ->  0.00500
169fmax2031 fma  00.00  0.000  0E+999999  ->  0.00000
170fmax2032 fma  00.00  0E-3   0E+999999  ->  0.00000     -- rhs is 0
171fmax2033 fma  0E-3   00.00  0E+999999  ->  0.00000     -- lhs is 0
172fmax2034 fma -5.00   1E-3   0E+999999  -> -0.00500
173fmax2035 fma -00.00  0.000  0E+999999  ->  0.00000
174fmax2036 fma -00.00  0E-3   0E+999999  ->  0.00000     -- rhs is 0
175fmax2037 fma -0E-3   00.00  0E+999999  ->  0.00000     -- lhs is 0
176fmax2038 fma  5.00  -1E-3   0E+999999  -> -0.00500
177fmax2039 fma  00.00 -0.000  0E+999999  ->  0.00000
178fmax2040 fma  00.00 -0E-3   0E+999999  ->  0.00000     -- rhs is 0
179fmax2041 fma  0E-3  -00.00  0E+999999  ->  0.00000     -- lhs is 0
180fmax2042 fma -5.00  -1E-3   0E+999999  ->  0.00500
181fmax2043 fma -00.00 -0.000  0E+999999  ->  0.00000
182fmax2044 fma -00.00 -0E-3   0E+999999  ->  0.00000     -- rhs is 0
183fmax2045 fma -0E-3  -00.00  0E+999999  ->  0.00000     -- lhs is 0
184
185-- examples from decarith multiply
186fmax2050 fma 1.20 3         0E+999999  -> 3.60
187fmax2051 fma 7    3         0E+999999  -> 21
188fmax2052 fma 0.9  0.8       0E+999999  -> 0.72
189fmax2053 fma 0.9  -0        0E+999999  -> 0.0
190fmax2054 fma 654321 654321  0E+999999  -> 4.28135971E+11  Inexact Rounded
191
192fmax2060 fma 123.45 1e7   0E+999999  ->  1.2345E+9
193fmax2061 fma 123.45 1e8   0E+999999  ->  1.2345E+10
194fmax2062 fma 123.45 1e+9  0E+999999  ->  1.2345E+11
195fmax2063 fma 123.45 1e10  0E+999999  ->  1.2345E+12
196fmax2064 fma 123.45 1e11  0E+999999  ->  1.2345E+13
197fmax2065 fma 123.45 1e12  0E+999999  ->  1.2345E+14
198fmax2066 fma 123.45 1e13  0E+999999  ->  1.2345E+15
199
200
201-- test some intermediate lengths
202precision: 9
203fmax2080 fma 0.1 123456789           0E+999999  -> 12345678.9
204fmax2081 fma 0.1 1234567891          0E+999999  -> 123456789 Inexact Rounded
205fmax2082 fma 0.1 12345678912         0E+999999  -> 1.23456789E+9 Inexact Rounded
206fmax2083 fma 0.1 12345678912345      0E+999999  -> 1.23456789E+12 Inexact Rounded
207fmax2084 fma 0.1 123456789           0E+999999  -> 12345678.9
208precision: 8
209fmax2085 fma 0.1 12345678912         0E+999999  -> 1.2345679E+9 Inexact Rounded
210fmax2086 fma 0.1 12345678912345      0E+999999  -> 1.2345679E+12 Inexact Rounded
211precision: 7
212fmax2087 fma 0.1 12345678912         0E+999999  -> 1.234568E+9 Inexact Rounded
213fmax2088 fma 0.1 12345678912345      0E+999999  -> 1.234568E+12 Inexact Rounded
214
215precision: 9
216fmax2090 fma 123456789          0.1  0E+999999  -> 12345678.9
217fmax2091 fma 1234567891         0.1  0E+999999  -> 123456789 Inexact Rounded
218fmax2092 fma 12345678912        0.1  0E+999999  -> 1.23456789E+9 Inexact Rounded
219fmax2093 fma 12345678912345     0.1  0E+999999  -> 1.23456789E+12 Inexact Rounded
220fmax2094 fma 123456789          0.1  0E+999999  -> 12345678.9
221precision: 8
222fmax2095 fma 12345678912        0.1  0E+999999  -> 1.2345679E+9 Inexact Rounded
223fmax2096 fma 12345678912345     0.1  0E+999999  -> 1.2345679E+12 Inexact Rounded
224precision: 7
225fmax2097 fma 12345678912        0.1  0E+999999  -> 1.234568E+9 Inexact Rounded
226fmax2098 fma 12345678912345     0.1  0E+999999  -> 1.234568E+12 Inexact Rounded
227
228-- test some more edge cases and carries
229maxexponent: 9999
230minexponent: -9999
231precision: 33
232fmax2101 fma 9 9    0E+999999  -> 81
233fmax2102 fma 9 90    0E+999999  -> 810
234fmax2103 fma 9 900    0E+999999  -> 8100
235fmax2104 fma 9 9000    0E+999999  -> 81000
236fmax2105 fma 9 90000    0E+999999  -> 810000
237fmax2106 fma 9 900000    0E+999999  -> 8100000
238fmax2107 fma 9 9000000    0E+999999  -> 81000000
239fmax2108 fma 9 90000000    0E+999999  -> 810000000
240fmax2109 fma 9 900000000    0E+999999  -> 8100000000
241fmax2110 fma 9 9000000000    0E+999999  -> 81000000000
242fmax2111 fma 9 90000000000    0E+999999  -> 810000000000
243fmax2112 fma 9 900000000000    0E+999999  -> 8100000000000
244fmax2113 fma 9 9000000000000    0E+999999  -> 81000000000000
245fmax2114 fma 9 90000000000000    0E+999999  -> 810000000000000
246fmax2115 fma 9 900000000000000    0E+999999  -> 8100000000000000
247fmax2116 fma 9 9000000000000000    0E+999999  -> 81000000000000000
248fmax2117 fma 9 90000000000000000    0E+999999  -> 810000000000000000
249fmax2118 fma 9 900000000000000000    0E+999999  -> 8100000000000000000
250fmax2119 fma 9 9000000000000000000    0E+999999  -> 81000000000000000000
251fmax2120 fma 9 90000000000000000000    0E+999999  -> 810000000000000000000
252fmax2121 fma 9 900000000000000000000    0E+999999  -> 8100000000000000000000
253fmax2122 fma 9 9000000000000000000000    0E+999999  -> 81000000000000000000000
254fmax2123 fma 9 90000000000000000000000    0E+999999  -> 810000000000000000000000
255-- test some more edge cases without carries
256fmax2131 fma 3 3    0E+999999  -> 9
257fmax2132 fma 3 30    0E+999999  -> 90
258fmax2133 fma 3 300    0E+999999  -> 900
259fmax2134 fma 3 3000    0E+999999  -> 9000
260fmax2135 fma 3 30000    0E+999999  -> 90000
261fmax2136 fma 3 300000    0E+999999  -> 900000
262fmax2137 fma 3 3000000    0E+999999  -> 9000000
263fmax2138 fma 3 30000000    0E+999999  -> 90000000
264fmax2139 fma 3 300000000    0E+999999  -> 900000000
265fmax2140 fma 3 3000000000    0E+999999  -> 9000000000
266fmax2141 fma 3 30000000000    0E+999999  -> 90000000000
267fmax2142 fma 3 300000000000    0E+999999  -> 900000000000
268fmax2143 fma 3 3000000000000    0E+999999  -> 9000000000000
269fmax2144 fma 3 30000000000000    0E+999999  -> 90000000000000
270fmax2145 fma 3 300000000000000    0E+999999  -> 900000000000000
271fmax2146 fma 3 3000000000000000    0E+999999  -> 9000000000000000
272fmax2147 fma 3 30000000000000000    0E+999999  -> 90000000000000000
273fmax2148 fma 3 300000000000000000    0E+999999  -> 900000000000000000
274fmax2149 fma 3 3000000000000000000    0E+999999  -> 9000000000000000000
275fmax2150 fma 3 30000000000000000000    0E+999999  -> 90000000000000000000
276fmax2151 fma 3 300000000000000000000    0E+999999  -> 900000000000000000000
277fmax2152 fma 3 3000000000000000000000    0E+999999  -> 9000000000000000000000
278fmax2153 fma 3 30000000000000000000000    0E+999999  -> 90000000000000000000000
279
280maxexponent: 999999
281minexponent: -999999
282precision: 9
283-- test some cases that are close to exponent overflow/underflow
284fmax2170 fma 1 9e999999     0E+999999  -> 9E+999999
285fmax2171 fma 1 9.9e999999   0E+999999  -> 9.9E+999999
286fmax2172 fma 1 9.99e999999  0E+999999  -> 9.99E+999999
287fmax2173 fma 9e999999    1  0E+999999  -> 9E+999999
288fmax2174 fma 9.9e999999  1  0E+999999  -> 9.9E+999999
289fmax2176 fma 9.99e999999 1  0E+999999  -> 9.99E+999999
290fmax2177 fma 1 9.99999e999999  0E+999999  -> 9.99999E+999999
291fmax2178 fma 9.99999e999999 1  0E+999999  -> 9.99999E+999999
292
293fmax2180 fma 0.1 9e-999998    0E+999999  -> 9E-999999
294fmax2181 fma 0.1 99e-999998   0E+999999  -> 9.9E-999998
295fmax2182 fma 0.1 999e-999998  0E+999999  -> 9.99E-999997
296
297fmax2183 fma 0.1 9e-999998      0E+999999  -> 9E-999999
298fmax2184 fma 0.1 99e-999998     0E+999999  -> 9.9E-999998
299fmax2185 fma 0.1 999e-999998    0E+999999  -> 9.99E-999997
300fmax2186 fma 0.1 999e-999997    0E+999999  -> 9.99E-999996
301fmax2187 fma 0.1 9999e-999997   0E+999999  -> 9.999E-999995
302fmax2188 fma 0.1 99999e-999997  0E+999999  -> 9.9999E-999994
303
304fmax2190 fma 1 9e-999998    0E+999999  -> 9E-999998
305fmax2191 fma 1 99e-999998   0E+999999  -> 9.9E-999997
306fmax2192 fma 1 999e-999998  0E+999999  -> 9.99E-999996
307fmax2193 fma 9e-999998   1  0E+999999  -> 9E-999998
308fmax2194 fma 99e-999998  1  0E+999999  -> 9.9E-999997
309fmax2195 fma 999e-999998 1  0E+999999  -> 9.99E-999996
310
311-- long operand triangle
312precision: 33
313fmax2246 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671916511992830 Inexact Rounded
314precision: 32
315fmax2247 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967191651199283  Inexact Rounded
316precision: 31
317fmax2248 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719165119928   Inexact Rounded
318precision: 30
319fmax2249 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671916511993    Inexact Rounded
320precision: 29
321fmax2250 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967191651199     Inexact Rounded
322precision: 28
323fmax2251 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719165120      Inexact Rounded
324precision: 27
325fmax2252 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671916512       Inexact Rounded
326precision: 26
327fmax2253 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967191651        Inexact Rounded
328precision: 25
329fmax2254 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719165         Inexact Rounded
330precision: 24
331fmax2255 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671917          Inexact Rounded
332precision: 23
333fmax2256 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967192           Inexact Rounded
334precision: 22
335fmax2257 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719            Inexact Rounded
336precision: 21
337fmax2258 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369672             Inexact Rounded
338precision: 20
339fmax2259 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967              Inexact Rounded
340precision: 19
341fmax2260 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933697               Inexact Rounded
342precision: 18
343fmax2261 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193370                Inexact Rounded
344precision: 17
345fmax2262 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119337                 Inexact Rounded
346precision: 16
347fmax2263 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011934                  Inexact Rounded
348precision: 15
349fmax2264 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193                   Inexact Rounded
350precision: 14
351fmax2265 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119                    Inexact Rounded
352precision: 13
353fmax2266 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908012                     Inexact Rounded
354precision: 12
355fmax2267 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801                      Inexact Rounded
356precision: 11
357fmax2268 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080                       Inexact Rounded
358precision: 10
359fmax2269 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908                        Inexact Rounded
360precision:  9
361fmax2270 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.291                         Inexact Rounded
362precision:  8
363fmax2271 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29                          Inexact Rounded
364precision:  7
365fmax2272 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.3                           Inexact Rounded
366precision:  6
367fmax2273 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433                            Inexact Rounded
368precision:  5
369fmax2274 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.4543E+5                         Inexact Rounded
370precision:  4
371fmax2275 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.454E+5                         Inexact Rounded
372precision:  3
373fmax2276 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.45E+5                         Inexact Rounded
374precision:  2
375fmax2277 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.5E+5                         Inexact Rounded
376precision:  1
377fmax2278 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1E+5                          Inexact Rounded
378
379-- test some edge cases with exact rounding
380maxexponent: 9999
381minexponent: -9999
382precision: 9
383fmax2301 fma 9 9    0E+999999  -> 81
384fmax2302 fma 9 90    0E+999999  -> 810
385fmax2303 fma 9 900    0E+999999  -> 8100
386fmax2304 fma 9 9000    0E+999999  -> 81000
387fmax2305 fma 9 90000    0E+999999  -> 810000
388fmax2306 fma 9 900000    0E+999999  -> 8100000
389fmax2307 fma 9 9000000    0E+999999  -> 81000000
390fmax2308 fma 9 90000000    0E+999999  -> 810000000
391fmax2309 fma 9 900000000    0E+999999  -> 8.10000000E+9   Rounded
392fmax2310 fma 9 9000000000    0E+999999  -> 8.10000000E+10  Rounded
393fmax2311 fma 9 90000000000    0E+999999  -> 8.10000000E+11  Rounded
394fmax2312 fma 9 900000000000    0E+999999  -> 8.10000000E+12  Rounded
395fmax2313 fma 9 9000000000000    0E+999999  -> 8.10000000E+13  Rounded
396fmax2314 fma 9 90000000000000    0E+999999  -> 8.10000000E+14  Rounded
397fmax2315 fma 9 900000000000000    0E+999999  -> 8.10000000E+15  Rounded
398fmax2316 fma 9 9000000000000000    0E+999999  -> 8.10000000E+16  Rounded
399fmax2317 fma 9 90000000000000000    0E+999999  -> 8.10000000E+17  Rounded
400fmax2318 fma 9 900000000000000000    0E+999999  -> 8.10000000E+18  Rounded
401fmax2319 fma 9 9000000000000000000    0E+999999  -> 8.10000000E+19  Rounded
402fmax2320 fma 9 90000000000000000000    0E+999999  -> 8.10000000E+20  Rounded
403fmax2321 fma 9 900000000000000000000    0E+999999  -> 8.10000000E+21  Rounded
404fmax2322 fma 9 9000000000000000000000    0E+999999  -> 8.10000000E+22  Rounded
405fmax2323 fma 9 90000000000000000000000    0E+999999  -> 8.10000000E+23  Rounded
406
407-- fastpath breakers
408precision:   29
409fmax2330 fma 1.491824697641270317824852952837224 1.105170918075647624811707826490246514675628614562883537345747603  0E+999999  -> 1.6487212707001281468486507878 Inexact Rounded
410precision:   55
411fmax2331 fma 0.8958341352965282506768545828765117803873717284891040428 0.8958341352965282506768545828765117803873717284891040428  0E+999999  -> 0.8025187979624784829842553829934069955890983696752228299 Inexact Rounded
412
413
414-- tryzeros cases
415precision:   7
416rounding:    half_up
417maxExponent: 92
418minexponent: -92
419fmax2504  fma  0E-60 1000E-60   0E+999999  -> 0E-98 Clamped
420fmax2505  fma  100E+60 0E+60    0E+999999  -> 0E+92 Clamped
421
422-- mixed with zeros
423maxexponent: 999999
424minexponent: -999999
425precision: 9
426fmax2541 fma  0    -1      0E+999999  ->  0
427fmax2542 fma -0    -1      0E+999999  ->  0
428fmax2543 fma  0     1      0E+999999  ->  0
429fmax2544 fma -0     1      0E+999999  ->  0
430fmax2545 fma -1     0      0E+999999  ->  0
431fmax2546 fma -1    -0      0E+999999  ->  0
432fmax2547 fma  1     0      0E+999999  ->  0
433fmax2548 fma  1    -0      0E+999999  ->  0
434
435fmax2551 fma  0.0  -1      0E+999999  ->  0.0
436fmax2552 fma -0.0  -1      0E+999999  ->  0.0
437fmax2553 fma  0.0   1      0E+999999  ->  0.0
438fmax2554 fma -0.0   1      0E+999999  ->  0.0
439fmax2555 fma -1.0   0      0E+999999  ->  0.0
440fmax2556 fma -1.0  -0      0E+999999  ->  0.0
441fmax2557 fma  1.0   0      0E+999999  ->  0.0
442fmax2558 fma  1.0  -0      0E+999999  ->  0.0
443
444fmax2561 fma  0    -1.0    0E+999999  ->  0.0
445fmax2562 fma -0    -1.0    0E+999999  ->  0.0
446fmax2563 fma  0     1.0    0E+999999  ->  0.0
447fmax2564 fma -0     1.0    0E+999999  ->  0.0
448fmax2565 fma -1     0.0    0E+999999  ->  0.0
449fmax2566 fma -1    -0.0    0E+999999  ->  0.0
450fmax2567 fma  1     0.0    0E+999999  ->  0.0
451fmax2568 fma  1    -0.0    0E+999999  ->  0.0
452
453fmax2571 fma  0.0  -1.0    0E+999999  ->  0.00
454fmax2572 fma -0.0  -1.0    0E+999999  ->  0.00
455fmax2573 fma  0.0   1.0    0E+999999  ->  0.00
456fmax2574 fma -0.0   1.0    0E+999999  ->  0.00
457fmax2575 fma -1.0   0.0    0E+999999  ->  0.00
458fmax2576 fma -1.0  -0.0    0E+999999  ->  0.00
459fmax2577 fma  1.0   0.0    0E+999999  ->  0.00
460fmax2578 fma  1.0  -0.0    0E+999999  ->  0.00
461
462
463-- Specials
464fmax2580 fma  Inf  -Inf    0E+999999  -> -Infinity
465fmax2581 fma  Inf  -1000   0E+999999  -> -Infinity
466fmax2582 fma  Inf  -1      0E+999999  -> -Infinity
467fmax2583 fma  Inf  -0      0E+999999  ->  NaN  Invalid_operation
468fmax2584 fma  Inf   0      0E+999999  ->  NaN  Invalid_operation
469fmax2585 fma  Inf   1      0E+999999  ->  Infinity
470fmax2586 fma  Inf   1000   0E+999999  ->  Infinity
471fmax2587 fma  Inf   Inf    0E+999999  ->  Infinity
472fmax2588 fma -1000  Inf    0E+999999  -> -Infinity
473fmax2589 fma -Inf   Inf    0E+999999  -> -Infinity
474fmax2590 fma -1     Inf    0E+999999  -> -Infinity
475fmax2591 fma -0     Inf    0E+999999  ->  NaN  Invalid_operation
476fmax2592 fma  0     Inf    0E+999999  ->  NaN  Invalid_operation
477fmax2593 fma  1     Inf    0E+999999  ->  Infinity
478fmax2594 fma  1000  Inf    0E+999999  ->  Infinity
479fmax2595 fma  Inf   Inf    0E+999999  ->  Infinity
480
481fmax2600 fma -Inf  -Inf    0E+999999  ->  Infinity
482fmax2601 fma -Inf  -1000   0E+999999  ->  Infinity
483fmax2602 fma -Inf  -1      0E+999999  ->  Infinity
484fmax2603 fma -Inf  -0      0E+999999  ->  NaN  Invalid_operation
485fmax2604 fma -Inf   0      0E+999999  ->  NaN  Invalid_operation
486fmax2605 fma -Inf   1      0E+999999  -> -Infinity
487fmax2606 fma -Inf   1000   0E+999999  -> -Infinity
488fmax2607 fma -Inf   Inf    0E+999999  -> -Infinity
489fmax2608 fma -1000  Inf    0E+999999  -> -Infinity
490fmax2609 fma -Inf  -Inf    0E+999999  ->  Infinity
491fmax2610 fma -1    -Inf    0E+999999  ->  Infinity
492fmax2611 fma -0    -Inf    0E+999999  ->  NaN  Invalid_operation
493fmax2612 fma  0    -Inf    0E+999999  ->  NaN  Invalid_operation
494fmax2613 fma  1    -Inf    0E+999999  -> -Infinity
495fmax2614 fma  1000 -Inf    0E+999999  -> -Infinity
496fmax2615 fma  Inf  -Inf    0E+999999  -> -Infinity
497
498fmax2621 fma  NaN -Inf     0E+999999  ->  NaN
499fmax2622 fma  NaN -1000    0E+999999  ->  NaN
500fmax2623 fma  NaN -1       0E+999999  ->  NaN
501fmax2624 fma  NaN -0       0E+999999  ->  NaN
502fmax2625 fma  NaN  0       0E+999999  ->  NaN
503fmax2626 fma  NaN  1       0E+999999  ->  NaN
504fmax2627 fma  NaN  1000    0E+999999  ->  NaN
505fmax2628 fma  NaN  Inf     0E+999999  ->  NaN
506fmax2629 fma  NaN  NaN     0E+999999  ->  NaN
507fmax2630 fma -Inf  NaN     0E+999999  ->  NaN
508fmax2631 fma -1000 NaN     0E+999999  ->  NaN
509fmax2632 fma -1    NaN     0E+999999  ->  NaN
510fmax2633 fma -0    NaN     0E+999999  ->  NaN
511fmax2634 fma  0    NaN     0E+999999  ->  NaN
512fmax2635 fma  1    NaN     0E+999999  ->  NaN
513fmax2636 fma  1000 NaN     0E+999999  ->  NaN
514fmax2637 fma  Inf  NaN     0E+999999  ->  NaN
515
516fmax2641 fma  sNaN -Inf    0E+999999  ->  NaN  Invalid_operation
517fmax2642 fma  sNaN -1000   0E+999999  ->  NaN  Invalid_operation
518fmax2643 fma  sNaN -1      0E+999999  ->  NaN  Invalid_operation
519fmax2644 fma  sNaN -0      0E+999999  ->  NaN  Invalid_operation
520fmax2645 fma  sNaN  0      0E+999999  ->  NaN  Invalid_operation
521fmax2646 fma  sNaN  1      0E+999999  ->  NaN  Invalid_operation
522fmax2647 fma  sNaN  1000   0E+999999  ->  NaN  Invalid_operation
523fmax2648 fma  sNaN  NaN    0E+999999  ->  NaN  Invalid_operation
524fmax2649 fma  sNaN sNaN    0E+999999  ->  NaN  Invalid_operation
525fmax2650 fma  NaN  sNaN    0E+999999  ->  NaN  Invalid_operation
526fmax2651 fma -Inf  sNaN    0E+999999  ->  NaN  Invalid_operation
527fmax2652 fma -1000 sNaN    0E+999999  ->  NaN  Invalid_operation
528fmax2653 fma -1    sNaN    0E+999999  ->  NaN  Invalid_operation
529fmax2654 fma -0    sNaN    0E+999999  ->  NaN  Invalid_operation
530fmax2655 fma  0    sNaN    0E+999999  ->  NaN  Invalid_operation
531fmax2656 fma  1    sNaN    0E+999999  ->  NaN  Invalid_operation
532fmax2657 fma  1000 sNaN    0E+999999  ->  NaN  Invalid_operation
533fmax2658 fma  Inf  sNaN    0E+999999  ->  NaN  Invalid_operation
534fmax2659 fma  NaN  sNaN    0E+999999  ->  NaN  Invalid_operation
535
536-- propagating NaNs
537fmax2661 fma  NaN9 -Inf    0E+999999  ->  NaN9
538fmax2662 fma  NaN8  999    0E+999999  ->  NaN8
539fmax2663 fma  NaN71 Inf    0E+999999  ->  NaN71
540fmax2664 fma  NaN6  NaN5   0E+999999  ->  NaN6
541fmax2665 fma -Inf   NaN4   0E+999999  ->  NaN4
542fmax2666 fma -999   NaN33  0E+999999  ->  NaN33
543fmax2667 fma  Inf   NaN2   0E+999999  ->  NaN2
544
545fmax2671 fma  sNaN99 -Inf     0E+999999  ->  NaN99 Invalid_operation
546fmax2672 fma  sNaN98 -11      0E+999999  ->  NaN98 Invalid_operation
547fmax2673 fma  sNaN97  NaN     0E+999999  ->  NaN97 Invalid_operation
548fmax2674 fma  sNaN16 sNaN94   0E+999999  ->  NaN16 Invalid_operation
549fmax2675 fma  NaN95  sNaN93   0E+999999  ->  NaN93 Invalid_operation
550fmax2676 fma -Inf    sNaN92   0E+999999  ->  NaN92 Invalid_operation
551fmax2677 fma  088    sNaN91   0E+999999  ->  NaN91 Invalid_operation
552fmax2678 fma  Inf    sNaN90   0E+999999  ->  NaN90 Invalid_operation
553fmax2679 fma  NaN    sNaN89   0E+999999  ->  NaN89 Invalid_operation
554
555fmax2681 fma -NaN9 -Inf    0E+999999  -> -NaN9
556fmax2682 fma -NaN8  999    0E+999999  -> -NaN8
557fmax2683 fma -NaN71 Inf    0E+999999  -> -NaN71
558fmax2684 fma -NaN6 -NaN5   0E+999999  -> -NaN6
559fmax2685 fma -Inf  -NaN4   0E+999999  -> -NaN4
560fmax2686 fma -999  -NaN33  0E+999999  -> -NaN33
561fmax2687 fma  Inf  -NaN2   0E+999999  -> -NaN2
562
563fmax2691 fma -sNaN99 -Inf     0E+999999  -> -NaN99 Invalid_operation
564fmax2692 fma -sNaN98 -11      0E+999999  -> -NaN98 Invalid_operation
565fmax2693 fma -sNaN97  NaN     0E+999999  -> -NaN97 Invalid_operation
566fmax2694 fma -sNaN16 -sNaN94  0E+999999  -> -NaN16 Invalid_operation
567fmax2695 fma -NaN95  -sNaN93  0E+999999  -> -NaN93 Invalid_operation
568fmax2696 fma -Inf    -sNaN92  0E+999999  -> -NaN92 Invalid_operation
569fmax2697 fma  088    -sNaN91  0E+999999  -> -NaN91 Invalid_operation
570fmax2698 fma  Inf    -sNaN90  0E+999999  -> -NaN90 Invalid_operation
571fmax2699 fma -NaN    -sNaN89  0E+999999  -> -NaN89 Invalid_operation
572
573fmax2701 fma -NaN  -Inf    0E+999999  -> -NaN
574fmax2702 fma -NaN   999    0E+999999  -> -NaN
575fmax2703 fma -NaN   Inf    0E+999999  -> -NaN
576fmax2704 fma -NaN  -NaN    0E+999999  -> -NaN
577fmax2705 fma -Inf  -NaN0   0E+999999  -> -NaN
578fmax2706 fma -999  -NaN    0E+999999  -> -NaN
579fmax2707 fma  Inf  -NaN    0E+999999  -> -NaN
580
581fmax2711 fma -sNaN   -Inf     0E+999999  -> -NaN Invalid_operation
582fmax2712 fma -sNaN   -11      0E+999999  -> -NaN Invalid_operation
583fmax2713 fma -sNaN00  NaN     0E+999999  -> -NaN Invalid_operation
584fmax2714 fma -sNaN   -sNaN    0E+999999  -> -NaN Invalid_operation
585fmax2715 fma -NaN    -sNaN    0E+999999  -> -NaN Invalid_operation
586fmax2716 fma -Inf    -sNaN    0E+999999  -> -NaN Invalid_operation
587fmax2717 fma  088    -sNaN    0E+999999  -> -NaN Invalid_operation
588fmax2718 fma  Inf    -sNaN    0E+999999  -> -NaN Invalid_operation
589fmax2719 fma -NaN    -sNaN    0E+999999  -> -NaN Invalid_operation
590
591-- overflow and underflow tests .. note subnormal results
592maxexponent: 999999
593minexponent: -999999
594fmax2730 fma +1.23456789012345E-0 9E+999999  0E+999999  -> Infinity Inexact Overflow Rounded
595fmax2731 fma 9E+999999 +1.23456789012345E-0  0E+999999  -> Infinity Inexact Overflow Rounded
596fmax2732 fma +0.100 9E-999999  0E+999999  -> 9.00E-1000000 Subnormal
597fmax2733 fma 9E-999999 +0.100  0E+999999  -> 9.00E-1000000 Subnormal
598fmax2735 fma -1.23456789012345E-0 9E+999999  0E+999999  -> -Infinity Inexact Overflow Rounded
599fmax2736 fma 9E+999999 -1.23456789012345E-0  0E+999999  -> -Infinity Inexact Overflow Rounded
600fmax2737 fma -0.100 9E-999999  0E+999999  -> -9.00E-1000000 Subnormal
601fmax2738 fma 9E-999999 -0.100  0E+999999  -> -9.00E-1000000 Subnormal
602
603-- signs
604fmax2751 fma  1e+777777  1e+411111  0E+999999  ->  Infinity Overflow Inexact Rounded
605fmax2752 fma  1e+777777 -1e+411111  0E+999999  -> -Infinity Overflow Inexact Rounded
606fmax2753 fma -1e+777777  1e+411111  0E+999999  -> -Infinity Overflow Inexact Rounded
607fmax2754 fma -1e+777777 -1e+411111  0E+999999  ->  Infinity Overflow Inexact Rounded
608fmax2755 fma  1e-777777  1e-411111  0E+999999  ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
609fmax2756 fma  1e-777777 -1e-411111  0E+999999  -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
610fmax2757 fma -1e-777777  1e-411111  0E+999999  -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
611fmax2758 fma -1e-777777 -1e-411111  0E+999999  ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
612
613-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
614precision: 9
615fmax2760 fma 1e-600000 1e-400001  0E+999999  -> 1E-1000001 Subnormal
616fmax2761 fma 1e-600000 1e-400002  0E+999999  -> 1E-1000002 Subnormal
617fmax2762 fma 1e-600000 1e-400003  0E+999999  -> 1E-1000003 Subnormal
618fmax2763 fma 1e-600000 1e-400004  0E+999999  -> 1E-1000004 Subnormal
619fmax2764 fma 1e-600000 1e-400005  0E+999999  -> 1E-1000005 Subnormal
620fmax2765 fma 1e-600000 1e-400006  0E+999999  -> 1E-1000006 Subnormal
621fmax2766 fma 1e-600000 1e-400007  0E+999999  -> 1E-1000007 Subnormal
622fmax2767 fma 1e-600000 1e-400008  0E+999999  -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
623fmax2768 fma 1e-600000 1e-400009  0E+999999  -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
624fmax2769 fma 1e-600000 1e-400010  0E+999999  -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
625-- [no equivalent of 'subnormal' for overflow]
626fmax2770 fma 1e+600000 1e+400001  0E+999999  -> Infinity Overflow Inexact Rounded
627fmax2771 fma 1e+600000 1e+400002  0E+999999  -> Infinity Overflow Inexact Rounded
628fmax2772 fma 1e+600000 1e+400003  0E+999999  -> Infinity Overflow Inexact Rounded
629fmax2773 fma 1e+600000 1e+400004  0E+999999  -> Infinity Overflow Inexact Rounded
630fmax2774 fma 1e+600000 1e+400005  0E+999999  -> Infinity Overflow Inexact Rounded
631fmax2775 fma 1e+600000 1e+400006  0E+999999  -> Infinity Overflow Inexact Rounded
632fmax2776 fma 1e+600000 1e+400007  0E+999999  -> Infinity Overflow Inexact Rounded
633fmax2777 fma 1e+600000 1e+400008  0E+999999  -> Infinity Overflow Inexact Rounded
634fmax2778 fma 1e+600000 1e+400009  0E+999999  -> Infinity Overflow Inexact Rounded
635fmax2779 fma 1e+600000 1e+400010  0E+999999  -> Infinity Overflow Inexact Rounded
636
637-- 'subnormal' test edge condition at higher precisions
638precision: 99
639fmax2780 fma 1e-600000 1e-400007  0E+999999  -> 1E-1000007 Subnormal
640fmax2781 fma 1e-600000 1e-400008  0E+999999  -> 1E-1000008 Subnormal
641fmax2782 fma 1e-600000 1e-400097  0E+999999  -> 1E-1000097 Subnormal
642fmax2783 fma 1e-600000 1e-400098  0E+999999  -> 0E-1000097 Underflow Subnormal Inexact Rounded Clamped
643precision: 999
644fmax2784 fma 1e-600000 1e-400997  0E+999999  -> 1E-1000997 Subnormal
645fmax2785 fma 1e-600000 1e-400998  0E+999999  -> 0E-1000997 Underflow Subnormal Inexact Rounded Clamped
646
647-- test subnormals rounding
648precision:   5
649maxExponent: 999
650minexponent: -999
651rounding:    half_even
652
653fmax2801 fma  1.0000E-999  1      0E+999999  -> 1.0000E-999
654fmax2802 fma  1.000E-999   1e-1   0E+999999  -> 1.000E-1000 Subnormal
655fmax2803 fma  1.00E-999    1e-2   0E+999999  -> 1.00E-1001  Subnormal
656fmax2804 fma  1.0E-999     1e-3   0E+999999  -> 1.0E-1002   Subnormal
657fmax2805 fma  1.0E-999     1e-4   0E+999999  -> 1E-1003     Subnormal Rounded
658fmax2806 fma  1.3E-999     1e-4   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded
659fmax2807 fma  1.5E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
660fmax2808 fma  1.7E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
661fmax2809 fma  2.3E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
662fmax2810 fma  2.5E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
663fmax2811 fma  2.7E-999     1e-4   0E+999999  -> 3E-1003     Underflow Subnormal Inexact Rounded
664fmax2812 fma  1.49E-999    1e-4   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded
665fmax2813 fma  1.50E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
666fmax2814 fma  1.51E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
667fmax2815 fma  2.49E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
668fmax2816 fma  2.50E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
669fmax2817 fma  2.51E-999    1e-4   0E+999999  -> 3E-1003     Underflow Subnormal Inexact Rounded
670
671fmax2818 fma  1E-999       1e-4   0E+999999  -> 1E-1003     Subnormal
672fmax2819 fma  3E-999       1e-5   0E+999999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
673fmax2820 fma  5E-999       1e-5   0E+999999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
674fmax2821 fma  7E-999       1e-5   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded
675fmax2822 fma  9E-999       1e-5   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded
676fmax2823 fma  9.9E-999     1e-5   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded
677
678fmax2824 fma  1E-999      -1e-4   0E+999999  -> -1E-1003    Subnormal
679fmax2825 fma  3E-999      -1e-5   0E+999999  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
680fmax2826 fma -5E-999       1e-5   0E+999999  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
681fmax2827 fma  7E-999      -1e-5   0E+999999  -> -1E-1003    Underflow Subnormal Inexact Rounded
682fmax2828 fma -9E-999       1e-5   0E+999999  -> -1E-1003    Underflow Subnormal Inexact Rounded
683fmax2829 fma  9.9E-999    -1e-5   0E+999999  -> -1E-1003    Underflow Subnormal Inexact Rounded
684fmax2830 fma  3.0E-999    -1e-5   0E+999999  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
685
686fmax2831 fma  1.0E-501     1e-501  0E+999999  -> 1.0E-1002   Subnormal
687fmax2832 fma  2.0E-501     2e-501  0E+999999  -> 4.0E-1002   Subnormal
688fmax2833 fma  4.0E-501     4e-501  0E+999999  -> 1.60E-1001  Subnormal
689fmax2834 fma 10.0E-501    10e-501  0E+999999  -> 1.000E-1000 Subnormal
690fmax2835 fma 30.0E-501    30e-501  0E+999999  -> 9.000E-1000 Subnormal
691fmax2836 fma 40.0E-501    40e-501  0E+999999  -> 1.6000E-999
692
693-- squares
694fmax2840 fma  1E-502       1e-502  0E+999999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
695fmax2841 fma  1E-501       1e-501  0E+999999  -> 1E-1002     Subnormal
696fmax2842 fma  2E-501       2e-501  0E+999999  -> 4E-1002     Subnormal
697fmax2843 fma  4E-501       4e-501  0E+999999  -> 1.6E-1001   Subnormal
698fmax2844 fma 10E-501      10e-501  0E+999999  -> 1.00E-1000  Subnormal
699fmax2845 fma 30E-501      30e-501  0E+999999  -> 9.00E-1000  Subnormal
700fmax2846 fma 40E-501      40e-501  0E+999999  -> 1.600E-999
701
702-- cubes
703fmax2850 fma  1E-670     1e-335  0E+999999  -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
704fmax2851 fma  1E-668     1e-334  0E+999999  -> 1E-1002    Subnormal
705fmax2852 fma  4E-668     2e-334  0E+999999  -> 8E-1002    Subnormal
706fmax2853 fma  9E-668     3e-334  0E+999999  -> 2.7E-1001  Subnormal
707fmax2854 fma 16E-668     4e-334  0E+999999  -> 6.4E-1001  Subnormal
708fmax2855 fma 25E-668     5e-334  0E+999999  -> 1.25E-1000 Subnormal
709fmax2856 fma 10E-668   100e-334  0E+999999  -> 1.000E-999
710
711-- test derived from result of 0.099 ** 999 at 15 digits with unlimited exponent
712precision: 19
713fmax2860 fma  6636851557994578716E-520 6636851557994578716E-520  0E+999999  -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded
714
715-- Long operand overflow may be a different path
716precision: 3
717maxExponent: 999999
718minexponent: -999999
719fmax2870 fma 1  9.999E+999999    0E+999999  ->  Infinity Inexact Overflow Rounded
720fmax2871 fma 1 -9.999E+999999    0E+999999  -> -Infinity Inexact Overflow Rounded
721fmax2872 fma    9.999E+999999 1  0E+999999  ->  Infinity Inexact Overflow Rounded
722fmax2873 fma   -9.999E+999999 1  0E+999999  -> -Infinity Inexact Overflow Rounded
723
724-- check for double-rounded subnormals
725precision:   5
726maxexponent: 79
727minexponent: -79
728fmax2881 fma  1.2347E-40  1.2347E-40   0E+999999  ->  1.524E-80  Inexact Rounded Subnormal Underflow
729fmax2882 fma  1.234E-40  1.234E-40     0E+999999  ->  1.523E-80  Inexact Rounded Subnormal Underflow
730fmax2883 fma  1.23E-40   1.23E-40      0E+999999  ->  1.513E-80  Inexact Rounded Subnormal Underflow
731fmax2884 fma  1.2E-40    1.2E-40       0E+999999  ->  1.44E-80   Subnormal
732fmax2885 fma  1.2E-40    1.2E-41       0E+999999  ->  1.44E-81   Subnormal
733fmax2886 fma  1.2E-40    1.2E-42       0E+999999  ->  1.4E-82    Subnormal Inexact Rounded Underflow
734fmax2887 fma  1.2E-40    1.3E-42       0E+999999  ->  1.6E-82    Subnormal Inexact Rounded Underflow
735fmax2888 fma  1.3E-40    1.3E-42       0E+999999  ->  1.7E-82    Subnormal Inexact Rounded Underflow
736fmax2889 fma  1.3E-40    1.3E-43       0E+999999  ->    2E-83    Subnormal Inexact Rounded Underflow
737fmax2890 fma  1.3E-41    1.3E-43       0E+999999  ->    0E-83    Clamped Subnormal Inexact Rounded Underflow
738
739fmax2891 fma  1.2345E-39   1.234E-40   0E+999999  ->  1.5234E-79 Inexact Rounded
740fmax2892 fma  1.23456E-39  1.234E-40   0E+999999  ->  1.5234E-79 Inexact Rounded
741fmax2893 fma  1.2345E-40   1.234E-40   0E+999999  ->  1.523E-80  Inexact Rounded Subnormal Underflow
742fmax2894 fma  1.23456E-40  1.234E-40   0E+999999  ->  1.523E-80  Inexact Rounded Subnormal Underflow
743fmax2895 fma  1.2345E-41   1.234E-40   0E+999999  ->  1.52E-81   Inexact Rounded Subnormal Underflow
744fmax2896 fma  1.23456E-41  1.234E-40   0E+999999  ->  1.52E-81   Inexact Rounded Subnormal Underflow
745
746-- Now explore the case where we get a normal result with Underflow
747precision:   16
748rounding:    half_up
749maxExponent: 384
750minExponent: -383
751
752fmax2900 fma  0.3000000000E-191 0.3000000000E-191  0E+999999  -> 9.00000000000000E-384 Subnormal Rounded
753fmax2901 fma  0.3000000001E-191 0.3000000001E-191  0E+999999  -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded
754fmax2902 fma  9.999999999999999E-383  0.0999999999999          0E+999999  -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded
755fmax2903 fma  9.999999999999999E-383  0.09999999999999         0E+999999  -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded
756fmax2904 fma  9.999999999999999E-383  0.099999999999999        0E+999999  -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded
757fmax2905 fma  9.999999999999999E-383  0.0999999999999999       0E+999999  -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded
758-- prove operands are exact
759fmax2906 fma  9.999999999999999E-383  1                        0E+999999  -> 9.999999999999999E-383
760fmax2907 fma                       1  0.09999999999999999      0E+999999  -> 0.09999999999999999
761-- the next rounds to Nmin
762fmax2908 fma  9.999999999999999E-383  0.09999999999999999      0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
763fmax2909 fma  9.999999999999999E-383  0.099999999999999999     0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
764fmax2910 fma  9.999999999999999E-383  0.0999999999999999999    0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
765fmax2911 fma  9.999999999999999E-383  0.09999999999999999999   0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
766
767-- Examples from SQL proposal (Krishna Kulkarni)
768precision:   34
769rounding:    half_up
770maxExponent: 6144
771minExponent: -6143
772fmax2921  fma 130E-2  120E-2  0E+999999  -> 1.5600
773fmax2922  fma 130E-2  12E-1   0E+999999  -> 1.560
774fmax2923  fma 130E-2  1E0     0E+999999  -> 1.30
775
776-- Null tests
777fmax2990 fma  # 10  0E+999999  -> NaN Invalid_operation
778fmax2991 fma 10  #  0E+999999  -> NaN Invalid_operation
779
780-- ADDITION TESTS ------------------------------------------------------
781precision:   9
782rounding:    half_up
783maxExponent: 384
784minexponent: -383
785
786-- [first group are 'quick confidence check']
787fmax3001 fma  1   1       1       ->  2
788fmax3002 fma  1   2       3       ->  5
789fmax3003 fma  1   '5.75'  '3.3'   ->  9.05
790fmax3004 fma  1   '5'     '-3'    ->  2
791fmax3005 fma  1   '-5'    '-3'    ->  -8
792fmax3006 fma  1   '-7'    '2.5'   ->  -4.5
793fmax3007 fma  1   '0.7'   '0.3'   ->  1.0
794fmax3008 fma  1   '1.25'  '1.25'  ->  2.50
795fmax3009 fma  1   '1.23456789'  '1.00000000' -> '2.23456789'
796fmax3010 fma  1   '1.23456789'  '1.00000011' -> '2.23456800'
797
798fmax3011 fma  1   '0.4444444444'  '0.5555555555' -> '1.00000000' Inexact Rounded
799fmax3012 fma  1   '0.4444444440'  '0.5555555555' -> '1.00000000' Inexact Rounded
800fmax3013 fma  1   '0.4444444444'  '0.5555555550' -> '0.999999999' Inexact Rounded
801fmax3014 fma  1   '0.44444444449'    '0' -> '0.444444444' Inexact Rounded
802fmax3015 fma  1   '0.444444444499'   '0' -> '0.444444444' Inexact Rounded
803fmax3016 fma  1   '0.4444444444999'  '0' -> '0.444444444' Inexact Rounded
804fmax3017 fma  1   '0.4444444445000'  '0' -> '0.444444445' Inexact Rounded
805fmax3018 fma  1   '0.4444444445001'  '0' -> '0.444444445' Inexact Rounded
806fmax3019 fma  1   '0.444444444501'   '0' -> '0.444444445' Inexact Rounded
807fmax3020 fma  1   '0.44444444451'    '0' -> '0.444444445' Inexact Rounded
808
809fmax3021 fma  1   0 1 -> 1
810fmax3022 fma  1   1 1 -> 2
811fmax3023 fma  1   2 1 -> 3
812fmax3024 fma  1   3 1 -> 4
813fmax3025 fma  1   4 1 -> 5
814fmax3026 fma  1   5 1 -> 6
815fmax3027 fma  1   6 1 -> 7
816fmax3028 fma  1   7 1 -> 8
817fmax3029 fma  1   8 1 -> 9
818fmax3030 fma  1   9 1 -> 10
819
820-- some carrying effects
821fmax3031 fma  1   '0.9998'  '0.0000' -> '0.9998'
822fmax3032 fma  1   '0.9998'  '0.0001' -> '0.9999'
823fmax3033 fma  1   '0.9998'  '0.0002' -> '1.0000'
824fmax3034 fma  1   '0.9998'  '0.0003' -> '1.0001'
825
826fmax3035 fma  1   '70'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
827fmax3036 fma  1   '700'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
828fmax3037 fma  1   '7000'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
829fmax3038 fma  1   '70000'  '10000e+9' -> '1.00000001E+13' Inexact Rounded
830fmax3039 fma  1   '700000'  '10000e+9' -> '1.00000007E+13' Rounded
831
832-- symmetry:
833fmax3040 fma  1   '10000e+9'  '70' -> '1.00000000E+13' Inexact Rounded
834fmax3041 fma  1   '10000e+9'  '700' -> '1.00000000E+13' Inexact Rounded
835fmax3042 fma  1   '10000e+9'  '7000' -> '1.00000000E+13' Inexact Rounded
836fmax3044 fma  1   '10000e+9'  '70000' -> '1.00000001E+13' Inexact Rounded
837fmax3045 fma  1   '10000e+9'  '700000' -> '1.00000007E+13' Rounded
838
839-- same, higher precision
840precision: 15
841fmax3046 fma  1   '10000e+9'  '7' -> '10000000000007'
842fmax3047 fma  1   '10000e+9'  '70' -> '10000000000070'
843fmax3048 fma  1   '10000e+9'  '700' -> '10000000000700'
844fmax3049 fma  1   '10000e+9'  '7000' -> '10000000007000'
845fmax3050 fma  1   '10000e+9'  '70000' -> '10000000070000'
846fmax3051 fma  1   '10000e+9'  '700000' -> '10000000700000'
847fmax3052 fma  1   '10000e+9'  '7000000' -> '10000007000000'
848
849-- examples from decarith
850fmax3053 fma  1   '12' '7.00' -> '19.00'
851fmax3054 fma  1   '1.3' '-1.07' -> '0.23'
852fmax3055 fma  1   '1.3' '-1.30' -> '0.00'
853fmax3056 fma  1   '1.3' '-2.07' -> '-0.77'
854fmax3057 fma  1   '1E+2' '1E+4' -> '1.01E+4'
855
856-- zero preservation
857precision: 6
858fmax3060 fma  1   '10000e+9'  '70000' -> '1.00000E+13' Inexact Rounded
859fmax3061 fma  1   1 '0.0001' -> '1.0001'
860fmax3062 fma  1   1 '0.00001' -> '1.00001'
861fmax3063 fma  1   1 '0.000001' -> '1.00000' Inexact Rounded
862fmax3064 fma  1   1 '0.0000001' -> '1.00000' Inexact Rounded
863fmax3065 fma  1   1 '0.00000001' -> '1.00000' Inexact Rounded
864
865-- some funny zeros [in case of bad signum]
866fmax3070 fma  1   1  0    -> 1
867fmax3071 fma  1   1 0.    -> 1
868fmax3072 fma  1   1  .0   -> 1.0
869fmax3073 fma  1   1 0.0   -> 1.0
870fmax3074 fma  1   1 0.00  -> 1.00
871fmax3075 fma  1    0  1   -> 1
872fmax3076 fma  1   0.  1   -> 1
873fmax3077 fma  1    .0 1   -> 1.0
874fmax3078 fma  1   0.0 1   -> 1.0
875fmax3079 fma  1   0.00 1  -> 1.00
876
877precision: 9
878
879-- some carries
880fmax3080 fma  1   999999998 1  -> 999999999
881fmax3081 fma  1   999999999 1  -> 1.00000000E+9 Rounded
882fmax3082 fma  1    99999999 1  -> 100000000
883fmax3083 fma  1     9999999 1  -> 10000000
884fmax3084 fma  1      999999 1  -> 1000000
885fmax3085 fma  1       99999 1  -> 100000
886fmax3086 fma  1        9999 1  -> 10000
887fmax3087 fma  1         999 1  -> 1000
888fmax3088 fma  1          99 1  -> 100
889fmax3089 fma  1           9 1  -> 10
890
891
892-- more LHS swaps
893fmax3090 fma  1   '-56267E-10'   0 ->  '-0.0000056267'
894fmax3091 fma  1   '-56267E-6'    0 ->  '-0.056267'
895fmax3092 fma  1   '-56267E-5'    0 ->  '-0.56267'
896fmax3093 fma  1   '-56267E-4'    0 ->  '-5.6267'
897fmax3094 fma  1   '-56267E-3'    0 ->  '-56.267'
898fmax3095 fma  1   '-56267E-2'    0 ->  '-562.67'
899fmax3096 fma  1   '-56267E-1'    0 ->  '-5626.7'
900fmax3097 fma  1   '-56267E-0'    0 ->  '-56267'
901fmax3098 fma  1   '-5E-10'       0 ->  '-5E-10'
902fmax3099 fma  1   '-5E-7'        0 ->  '-5E-7'
903fmax3100 fma  1   '-5E-6'        0 ->  '-0.000005'
904fmax3101 fma  1   '-5E-5'        0 ->  '-0.00005'
905fmax3102 fma  1   '-5E-4'        0 ->  '-0.0005'
906fmax3103 fma  1   '-5E-1'        0 ->  '-0.5'
907fmax3104 fma  1   '-5E0'         0 ->  '-5'
908fmax3105 fma  1   '-5E1'         0 ->  '-50'
909fmax3106 fma  1   '-5E5'         0 ->  '-500000'
910fmax3107 fma  1   '-5E8'         0 ->  '-500000000'
911fmax3108 fma  1   '-5E9'         0 ->  '-5.00000000E+9'   Rounded
912fmax3109 fma  1   '-5E10'        0 ->  '-5.00000000E+10'  Rounded
913fmax3110 fma  1   '-5E11'        0 ->  '-5.00000000E+11'  Rounded
914fmax3111 fma  1   '-5E100'       0 ->  '-5.00000000E+100' Rounded
915
916-- more RHS swaps
917fmax3113 fma  1   0  '-56267E-10' ->  '-0.0000056267'
918fmax3114 fma  1   0  '-56267E-6'  ->  '-0.056267'
919fmax3116 fma  1   0  '-56267E-5'  ->  '-0.56267'
920fmax3117 fma  1   0  '-56267E-4'  ->  '-5.6267'
921fmax3119 fma  1   0  '-56267E-3'  ->  '-56.267'
922fmax3120 fma  1   0  '-56267E-2'  ->  '-562.67'
923fmax3121 fma  1   0  '-56267E-1'  ->  '-5626.7'
924fmax3122 fma  1   0  '-56267E-0'  ->  '-56267'
925fmax3123 fma  1   0  '-5E-10'     ->  '-5E-10'
926fmax3124 fma  1   0  '-5E-7'      ->  '-5E-7'
927fmax3125 fma  1   0  '-5E-6'      ->  '-0.000005'
928fmax3126 fma  1   0  '-5E-5'      ->  '-0.00005'
929fmax3127 fma  1   0  '-5E-4'      ->  '-0.0005'
930fmax3128 fma  1   0  '-5E-1'      ->  '-0.5'
931fmax3129 fma  1   0  '-5E0'       ->  '-5'
932fmax3130 fma  1   0  '-5E1'       ->  '-50'
933fmax3131 fma  1   0  '-5E5'       ->  '-500000'
934fmax3132 fma  1   0  '-5E8'       ->  '-500000000'
935fmax3133 fma  1   0  '-5E9'       ->  '-5.00000000E+9'    Rounded
936fmax3134 fma  1   0  '-5E10'      ->  '-5.00000000E+10'   Rounded
937fmax3135 fma  1   0  '-5E11'      ->  '-5.00000000E+11'   Rounded
938fmax3136 fma  1   0  '-5E100'     ->  '-5.00000000E+100'  Rounded
939
940-- related
941fmax3137 fma  1    1  '0E-12'      ->  '1.00000000'  Rounded
942fmax3138 fma  1   -1  '0E-12'      ->  '-1.00000000' Rounded
943fmax3139 fma  1   '0E-12' 1        ->  '1.00000000'  Rounded
944fmax3140 fma  1   '0E-12' -1       ->  '-1.00000000' Rounded
945fmax3141 fma  1   1E+4    0.0000   ->  '10000.0000'
946fmax3142 fma  1   1E+4    0.00000  ->  '10000.0000'  Rounded
947fmax3143 fma  1   0.000   1E+5     ->  '100000.000'
948fmax3144 fma  1   0.0000  1E+5     ->  '100000.000'  Rounded
949
950-- [some of the next group are really constructor tests]
951fmax3146 fma  1   '00.0'  0       ->  '0.0'
952fmax3147 fma  1   '0.00'  0       ->  '0.00'
953fmax3148 fma  1    0      '0.00'  ->  '0.00'
954fmax3149 fma  1    0      '00.0'  ->  '0.0'
955fmax3150 fma  1   '00.0'  '0.00'  ->  '0.00'
956fmax3151 fma  1   '0.00'  '00.0'  ->  '0.00'
957fmax3152 fma  1   '3'     '.3'    ->  '3.3'
958fmax3153 fma  1   '3.'    '.3'    ->  '3.3'
959fmax3154 fma  1   '3.0'   '.3'    ->  '3.3'
960fmax3155 fma  1   '3.00'  '.3'    ->  '3.30'
961fmax3156 fma  1   '3'     '3'     ->  '6'
962fmax3157 fma  1   '3'     '+3'    ->  '6'
963fmax3158 fma  1   '3'     '-3'    ->  '0'
964fmax3159 fma  1   '0.3'   '-0.3'  ->  '0.0'
965fmax3160 fma  1   '0.03'  '-0.03' ->  '0.00'
966
967-- try borderline precision, with carries, etc.
968precision: 15
969fmax3161 fma  1   '1E+12' '-1'    -> '999999999999'
970fmax3162 fma  1   '1E+12'  '1.11' -> '1000000000001.11'
971fmax3163 fma  1   '1.11'  '1E+12' -> '1000000000001.11'
972fmax3164 fma  1   '-1'    '1E+12' -> '999999999999'
973fmax3165 fma  1   '7E+12' '-1'    -> '6999999999999'
974fmax3166 fma  1   '7E+12'  '1.11' -> '7000000000001.11'
975fmax3167 fma  1   '1.11'  '7E+12' -> '7000000000001.11'
976fmax3168 fma  1   '-1'    '7E+12' -> '6999999999999'
977
978--             123456789012345      123456789012345      1 23456789012345
979fmax3170 fma  1   '0.444444444444444'  '0.555555555555563' -> '1.00000000000001' Inexact Rounded
980fmax3171 fma  1   '0.444444444444444'  '0.555555555555562' -> '1.00000000000001' Inexact Rounded
981fmax3172 fma  1   '0.444444444444444'  '0.555555555555561' -> '1.00000000000001' Inexact Rounded
982fmax3173 fma  1   '0.444444444444444'  '0.555555555555560' -> '1.00000000000000' Inexact Rounded
983fmax3174 fma  1   '0.444444444444444'  '0.555555555555559' -> '1.00000000000000' Inexact Rounded
984fmax3175 fma  1   '0.444444444444444'  '0.555555555555558' -> '1.00000000000000' Inexact Rounded
985fmax3176 fma  1   '0.444444444444444'  '0.555555555555557' -> '1.00000000000000' Inexact Rounded
986fmax3177 fma  1   '0.444444444444444'  '0.555555555555556' -> '1.00000000000000' Rounded
987fmax3178 fma  1   '0.444444444444444'  '0.555555555555555' -> '0.999999999999999'
988fmax3179 fma  1   '0.444444444444444'  '0.555555555555554' -> '0.999999999999998'
989fmax3180 fma  1   '0.444444444444444'  '0.555555555555553' -> '0.999999999999997'
990fmax3181 fma  1   '0.444444444444444'  '0.555555555555552' -> '0.999999999999996'
991fmax3182 fma  1   '0.444444444444444'  '0.555555555555551' -> '0.999999999999995'
992fmax3183 fma  1   '0.444444444444444'  '0.555555555555550' -> '0.999999999999994'
993
994-- and some more, including residue effects and different roundings
995precision: 9
996rounding: half_up
997fmax3200 fma  1   '123456789' 0             -> '123456789'
998fmax3201 fma  1   '123456789' 0.000000001   -> '123456789' Inexact Rounded
999fmax3202 fma  1   '123456789' 0.000001      -> '123456789' Inexact Rounded
1000fmax3203 fma  1   '123456789' 0.1           -> '123456789' Inexact Rounded
1001fmax3204 fma  1   '123456789' 0.4           -> '123456789' Inexact Rounded
1002fmax3205 fma  1   '123456789' 0.49          -> '123456789' Inexact Rounded
1003fmax3206 fma  1   '123456789' 0.499999      -> '123456789' Inexact Rounded
1004fmax3207 fma  1   '123456789' 0.499999999   -> '123456789' Inexact Rounded
1005fmax3208 fma  1   '123456789' 0.5           -> '123456790' Inexact Rounded
1006fmax3209 fma  1   '123456789' 0.500000001   -> '123456790' Inexact Rounded
1007fmax3210 fma  1   '123456789' 0.500001      -> '123456790' Inexact Rounded
1008fmax3211 fma  1   '123456789' 0.51          -> '123456790' Inexact Rounded
1009fmax3212 fma  1   '123456789' 0.6           -> '123456790' Inexact Rounded
1010fmax3213 fma  1   '123456789' 0.9           -> '123456790' Inexact Rounded
1011fmax3214 fma  1   '123456789' 0.99999       -> '123456790' Inexact Rounded
1012fmax3215 fma  1   '123456789' 0.999999999   -> '123456790' Inexact Rounded
1013fmax3216 fma  1   '123456789' 1             -> '123456790'
1014fmax3217 fma  1   '123456789' 1.000000001   -> '123456790' Inexact Rounded
1015fmax3218 fma  1   '123456789' 1.00001       -> '123456790' Inexact Rounded
1016fmax3219 fma  1   '123456789' 1.1           -> '123456790' Inexact Rounded
1017
1018rounding: half_even
1019fmax3220 fma  1   '123456789' 0             -> '123456789'
1020fmax3221 fma  1   '123456789' 0.000000001   -> '123456789' Inexact Rounded
1021fmax3222 fma  1   '123456789' 0.000001      -> '123456789' Inexact Rounded
1022fmax3223 fma  1   '123456789' 0.1           -> '123456789' Inexact Rounded
1023fmax3224 fma  1   '123456789' 0.4           -> '123456789' Inexact Rounded
1024fmax3225 fma  1   '123456789' 0.49          -> '123456789' Inexact Rounded
1025fmax3226 fma  1   '123456789' 0.499999      -> '123456789' Inexact Rounded
1026fmax3227 fma  1   '123456789' 0.499999999   -> '123456789' Inexact Rounded
1027fmax3228 fma  1   '123456789' 0.5           -> '123456790' Inexact Rounded
1028fmax3229 fma  1   '123456789' 0.500000001   -> '123456790' Inexact Rounded
1029fmax3230 fma  1   '123456789' 0.500001      -> '123456790' Inexact Rounded
1030fmax3231 fma  1   '123456789' 0.51          -> '123456790' Inexact Rounded
1031fmax3232 fma  1   '123456789' 0.6           -> '123456790' Inexact Rounded
1032fmax3233 fma  1   '123456789' 0.9           -> '123456790' Inexact Rounded
1033fmax3234 fma  1   '123456789' 0.99999       -> '123456790' Inexact Rounded
1034fmax3235 fma  1   '123456789' 0.999999999   -> '123456790' Inexact Rounded
1035fmax3236 fma  1   '123456789' 1             -> '123456790'
1036fmax3237 fma  1   '123456789' 1.00000001    -> '123456790' Inexact Rounded
1037fmax3238 fma  1   '123456789' 1.00001       -> '123456790' Inexact Rounded
1038fmax3239 fma  1   '123456789' 1.1           -> '123456790' Inexact Rounded
1039-- critical few with even bottom digit...
1040fmax3240 fma  1   '123456788' 0.499999999   -> '123456788' Inexact Rounded
1041fmax3241 fma  1   '123456788' 0.5           -> '123456788' Inexact Rounded
1042fmax3242 fma  1   '123456788' 0.500000001   -> '123456789' Inexact Rounded
1043
1044rounding: down
1045fmax3250 fma  1   '123456789' 0             -> '123456789'
1046fmax3251 fma  1   '123456789' 0.000000001   -> '123456789' Inexact Rounded
1047fmax3252 fma  1   '123456789' 0.000001      -> '123456789' Inexact Rounded
1048fmax3253 fma  1   '123456789' 0.1           -> '123456789' Inexact Rounded
1049fmax3254 fma  1   '123456789' 0.4           -> '123456789' Inexact Rounded
1050fmax3255 fma  1   '123456789' 0.49          -> '123456789' Inexact Rounded
1051fmax3256 fma  1   '123456789' 0.499999      -> '123456789' Inexact Rounded
1052fmax3257 fma  1   '123456789' 0.499999999   -> '123456789' Inexact Rounded
1053fmax3258 fma  1   '123456789' 0.5           -> '123456789' Inexact Rounded
1054fmax3259 fma  1   '123456789' 0.500000001   -> '123456789' Inexact Rounded
1055fmax3260 fma  1   '123456789' 0.500001      -> '123456789' Inexact Rounded
1056fmax3261 fma  1   '123456789' 0.51          -> '123456789' Inexact Rounded
1057fmax3262 fma  1   '123456789' 0.6           -> '123456789' Inexact Rounded
1058fmax3263 fma  1   '123456789' 0.9           -> '123456789' Inexact Rounded
1059fmax3264 fma  1   '123456789' 0.99999       -> '123456789' Inexact Rounded
1060fmax3265 fma  1   '123456789' 0.999999999   -> '123456789' Inexact Rounded
1061fmax3266 fma  1   '123456789' 1             -> '123456790'
1062fmax3267 fma  1   '123456789' 1.00000001    -> '123456790' Inexact Rounded
1063fmax3268 fma  1   '123456789' 1.00001       -> '123456790' Inexact Rounded
1064fmax3269 fma  1   '123456789' 1.1           -> '123456790' Inexact Rounded
1065
1066-- input preparation tests (operands should not be rounded)
1067precision: 3
1068rounding: half_up
1069
1070fmax3270 fma  1   '12345678900000'  9999999999999 ->  '2.23E+13' Inexact Rounded
1071fmax3271 fma  1    '9999999999999' 12345678900000 ->  '2.23E+13' Inexact Rounded
1072
1073fmax3272 fma  1   '12E+3'  '3444'   ->  '1.54E+4' Inexact Rounded
1074fmax3273 fma  1   '12E+3'  '3446'   ->  '1.54E+4' Inexact Rounded
1075fmax3274 fma  1   '12E+3'  '3449.9' ->  '1.54E+4' Inexact Rounded
1076fmax3275 fma  1   '12E+3'  '3450.0' ->  '1.55E+4' Inexact Rounded
1077fmax3276 fma  1   '12E+3'  '3450.1' ->  '1.55E+4' Inexact Rounded
1078fmax3277 fma  1   '12E+3'  '3454'   ->  '1.55E+4' Inexact Rounded
1079fmax3278 fma  1   '12E+3'  '3456'   ->  '1.55E+4' Inexact Rounded
1080
1081fmax3281 fma  1   '3444'   '12E+3'  ->  '1.54E+4' Inexact Rounded
1082fmax3282 fma  1   '3446'   '12E+3'  ->  '1.54E+4' Inexact Rounded
1083fmax3283 fma  1   '3449.9' '12E+3'  ->  '1.54E+4' Inexact Rounded
1084fmax3284 fma  1   '3450.0' '12E+3'  ->  '1.55E+4' Inexact Rounded
1085fmax3285 fma  1   '3450.1' '12E+3'  ->  '1.55E+4' Inexact Rounded
1086fmax3286 fma  1   '3454'   '12E+3'  ->  '1.55E+4' Inexact Rounded
1087fmax3287 fma  1   '3456'   '12E+3'  ->  '1.55E+4' Inexact Rounded
1088
1089rounding: half_down
1090fmax3291 fma  1   '3444'   '12E+3'  ->  '1.54E+4' Inexact Rounded
1091fmax3292 fma  1   '3446'   '12E+3'  ->  '1.54E+4' Inexact Rounded
1092fmax3293 fma  1   '3449.9' '12E+3'  ->  '1.54E+4' Inexact Rounded
1093fmax3294 fma  1   '3450.0' '12E+3'  ->  '1.54E+4' Inexact Rounded
1094fmax3295 fma  1   '3450.1' '12E+3'  ->  '1.55E+4' Inexact Rounded
1095fmax3296 fma  1   '3454'   '12E+3'  ->  '1.55E+4' Inexact Rounded
1096fmax3297 fma  1   '3456'   '12E+3'  ->  '1.55E+4' Inexact Rounded
1097
1098-- 1 in last place tests
1099rounding: half_up
1100fmax3301 fma  1    -1   1      ->   0
1101fmax3302 fma  1     0   1      ->   1
1102fmax3303 fma  1     1   1      ->   2
1103fmax3304 fma  1    12   1      ->  13
1104fmax3305 fma  1    98   1      ->  99
1105fmax3306 fma  1    99   1      -> 100
1106fmax3307 fma  1   100   1      -> 101
1107fmax3308 fma  1   101   1      -> 102
1108fmax3309 fma  1    -1  -1      ->  -2
1109fmax3310 fma  1     0  -1      ->  -1
1110fmax3311 fma  1     1  -1      ->   0
1111fmax3312 fma  1    12  -1      ->  11
1112fmax3313 fma  1    98  -1      ->  97
1113fmax3314 fma  1    99  -1      ->  98
1114fmax3315 fma  1   100  -1      ->  99
1115fmax3316 fma  1   101  -1      -> 100
1116
1117fmax3321 fma  1   -0.01  0.01    ->  0.00
1118fmax3322 fma  1    0.00  0.01    ->  0.01
1119fmax3323 fma  1    0.01  0.01    ->  0.02
1120fmax3324 fma  1    0.12  0.01    ->  0.13
1121fmax3325 fma  1    0.98  0.01    ->  0.99
1122fmax3326 fma  1    0.99  0.01    ->  1.00
1123fmax3327 fma  1    1.00  0.01    ->  1.01
1124fmax3328 fma  1    1.01  0.01    ->  1.02
1125fmax3329 fma  1   -0.01 -0.01    -> -0.02
1126fmax3330 fma  1    0.00 -0.01    -> -0.01
1127fmax3331 fma  1    0.01 -0.01    ->  0.00
1128fmax3332 fma  1    0.12 -0.01    ->  0.11
1129fmax3333 fma  1    0.98 -0.01    ->  0.97
1130fmax3334 fma  1    0.99 -0.01    ->  0.98
1131fmax3335 fma  1    1.00 -0.01    ->  0.99
1132fmax3336 fma  1    1.01 -0.01    ->  1.00
1133
1134-- some more cases where fma  1  ing 0 affects the coefficient
1135precision: 9
1136fmax3340 fma  1   1E+3    0    ->         1000
1137fmax3341 fma  1   1E+8    0    ->    100000000
1138fmax3342 fma  1   1E+9    0    ->   1.00000000E+9   Rounded
1139fmax3343 fma  1   1E+10   0    ->   1.00000000E+10  Rounded
1140-- which simply follow from these cases ...
1141fmax3344 fma  1   1E+3    1    ->         1001
1142fmax3345 fma  1   1E+8    1    ->    100000001
1143fmax3346 fma  1   1E+9    1    ->   1.00000000E+9   Inexact Rounded
1144fmax3347 fma  1   1E+10   1    ->   1.00000000E+10  Inexact Rounded
1145fmax3348 fma  1   1E+3    7    ->         1007
1146fmax3349 fma  1   1E+8    7    ->    100000007
1147fmax3350 fma  1   1E+9    7    ->   1.00000001E+9   Inexact Rounded
1148fmax3351 fma  1   1E+10   7    ->   1.00000000E+10  Inexact Rounded
1149
1150-- tryzeros cases
1151precision:   7
1152rounding:    half_up
1153maxExponent: 92
1154minexponent: -92
1155fmax3361  fma  1   0E+50 10000E+1  -> 1.0000E+5
1156fmax3362  fma  1   10000E+1 0E-50  -> 100000.0  Rounded
1157fmax3363  fma  1   10000E+1 10000E-50  -> 100000.0  Rounded Inexact
1158fmax3364  fma  1   9.999999E+92 -9.999999E+92 -> 0E+86
1159
1160-- a curiosity from JSR 13 testing
1161rounding:    half_down
1162precision:   10
1163fmax3370 fma  1   99999999 81512 -> 100081511
1164precision:      6
1165fmax3371 fma  1   99999999 81512 -> 1.00082E+8 Rounded Inexact
1166rounding:    half_up
1167precision:   10
1168fmax3372 fma  1   99999999 81512 -> 100081511
1169precision:      6
1170fmax3373 fma  1   99999999 81512 -> 1.00082E+8 Rounded Inexact
1171rounding:    half_even
1172precision:   10
1173fmax3374 fma  1   99999999 81512 -> 100081511
1174precision:      6
1175fmax3375 fma  1   99999999 81512 -> 1.00082E+8 Rounded Inexact
1176
1177-- ulp replacement tests
1178precision: 9
1179maxexponent: 999999
1180minexponent: -999999
1181fmax3400 fma  1     1   77e-7       ->  1.0000077
1182fmax3401 fma  1     1   77e-8       ->  1.00000077
1183fmax3402 fma  1     1   77e-9       ->  1.00000008 Inexact Rounded
1184fmax3403 fma  1     1   77e-10      ->  1.00000001 Inexact Rounded
1185fmax3404 fma  1     1   77e-11      ->  1.00000000 Inexact Rounded
1186fmax3405 fma  1     1   77e-12      ->  1.00000000 Inexact Rounded
1187fmax3406 fma  1     1   77e-999     ->  1.00000000 Inexact Rounded
1188fmax3407 fma  1     1   77e-999999  ->  1.00000000 Inexact Rounded
1189
1190fmax3410 fma  1    10   77e-7       ->  10.0000077
1191fmax3411 fma  1    10   77e-8       ->  10.0000008 Inexact Rounded
1192fmax3412 fma  1    10   77e-9       ->  10.0000001 Inexact Rounded
1193fmax3413 fma  1    10   77e-10      ->  10.0000000 Inexact Rounded
1194fmax3414 fma  1    10   77e-11      ->  10.0000000 Inexact Rounded
1195fmax3415 fma  1    10   77e-12      ->  10.0000000 Inexact Rounded
1196fmax3416 fma  1    10   77e-999     ->  10.0000000 Inexact Rounded
1197fmax3417 fma  1    10   77e-999999  ->  10.0000000 Inexact Rounded
1198
1199fmax3420 fma  1    77e-7        1   ->  1.0000077
1200fmax3421 fma  1    77e-8        1   ->  1.00000077
1201fmax3422 fma  1    77e-9        1   ->  1.00000008 Inexact Rounded
1202fmax3423 fma  1    77e-10       1   ->  1.00000001 Inexact Rounded
1203fmax3424 fma  1    77e-11       1   ->  1.00000000 Inexact Rounded
1204fmax3425 fma  1    77e-12       1   ->  1.00000000 Inexact Rounded
1205fmax3426 fma  1    77e-999      1   ->  1.00000000 Inexact Rounded
1206fmax3427 fma  1    77e-999999   1   ->  1.00000000 Inexact Rounded
1207
1208fmax3430 fma  1    77e-7       10   ->  10.0000077
1209fmax3431 fma  1    77e-8       10   ->  10.0000008 Inexact Rounded
1210fmax3432 fma  1    77e-9       10   ->  10.0000001 Inexact Rounded
1211fmax3433 fma  1    77e-10      10   ->  10.0000000 Inexact Rounded
1212fmax3434 fma  1    77e-11      10   ->  10.0000000 Inexact Rounded
1213fmax3435 fma  1    77e-12      10   ->  10.0000000 Inexact Rounded
1214fmax3436 fma  1    77e-999     10   ->  10.0000000 Inexact Rounded
1215fmax3437 fma  1    77e-999999  10   ->  10.0000000 Inexact Rounded
1216
1217-- negative ulps
1218fmax3440 fma  1     1   -77e-7       ->  0.9999923
1219fmax3441 fma  1     1   -77e-8       ->  0.99999923
1220fmax3442 fma  1     1   -77e-9       ->  0.999999923
1221fmax3443 fma  1     1   -77e-10      ->  0.999999992 Inexact Rounded
1222fmax3444 fma  1     1   -77e-11      ->  0.999999999 Inexact Rounded
1223fmax3445 fma  1     1   -77e-12      ->  1.00000000 Inexact Rounded
1224fmax3446 fma  1     1   -77e-999     ->  1.00000000 Inexact Rounded
1225fmax3447 fma  1     1   -77e-999999  ->  1.00000000 Inexact Rounded
1226
1227fmax3450 fma  1    10   -77e-7       ->   9.9999923
1228fmax3451 fma  1    10   -77e-8       ->   9.99999923
1229fmax3452 fma  1    10   -77e-9       ->   9.99999992 Inexact Rounded
1230fmax3453 fma  1    10   -77e-10      ->   9.99999999 Inexact Rounded
1231fmax3454 fma  1    10   -77e-11      ->  10.0000000 Inexact Rounded
1232fmax3455 fma  1    10   -77e-12      ->  10.0000000 Inexact Rounded
1233fmax3456 fma  1    10   -77e-999     ->  10.0000000 Inexact Rounded
1234fmax3457 fma  1    10   -77e-999999  ->  10.0000000 Inexact Rounded
1235
1236fmax3460 fma  1    -77e-7        1   ->  0.9999923
1237fmax3461 fma  1    -77e-8        1   ->  0.99999923
1238fmax3462 fma  1    -77e-9        1   ->  0.999999923
1239fmax3463 fma  1    -77e-10       1   ->  0.999999992 Inexact Rounded
1240fmax3464 fma  1    -77e-11       1   ->  0.999999999 Inexact Rounded
1241fmax3465 fma  1    -77e-12       1   ->  1.00000000 Inexact Rounded
1242fmax3466 fma  1    -77e-999      1   ->  1.00000000 Inexact Rounded
1243fmax3467 fma  1    -77e-999999   1   ->  1.00000000 Inexact Rounded
1244
1245fmax3470 fma  1    -77e-7       10   ->   9.9999923
1246fmax3471 fma  1    -77e-8       10   ->   9.99999923
1247fmax3472 fma  1    -77e-9       10   ->   9.99999992 Inexact Rounded
1248fmax3473 fma  1    -77e-10      10   ->   9.99999999 Inexact Rounded
1249fmax3474 fma  1    -77e-11      10   ->  10.0000000 Inexact Rounded
1250fmax3475 fma  1    -77e-12      10   ->  10.0000000 Inexact Rounded
1251fmax3476 fma  1    -77e-999     10   ->  10.0000000 Inexact Rounded
1252fmax3477 fma  1    -77e-999999  10   ->  10.0000000 Inexact Rounded
1253
1254-- negative ulps
1255fmax3480 fma  1    -1    77e-7       ->  -0.9999923
1256fmax3481 fma  1    -1    77e-8       ->  -0.99999923
1257fmax3482 fma  1    -1    77e-9       ->  -0.999999923
1258fmax3483 fma  1    -1    77e-10      ->  -0.999999992 Inexact Rounded
1259fmax3484 fma  1    -1    77e-11      ->  -0.999999999 Inexact Rounded
1260fmax3485 fma  1    -1    77e-12      ->  -1.00000000 Inexact Rounded
1261fmax3486 fma  1    -1    77e-999     ->  -1.00000000 Inexact Rounded
1262fmax3487 fma  1    -1    77e-999999  ->  -1.00000000 Inexact Rounded
1263
1264fmax3490 fma  1   -10    77e-7       ->   -9.9999923
1265fmax3491 fma  1   -10    77e-8       ->   -9.99999923
1266fmax3492 fma  1   -10    77e-9       ->   -9.99999992 Inexact Rounded
1267fmax3493 fma  1   -10    77e-10      ->   -9.99999999 Inexact Rounded
1268fmax3494 fma  1   -10    77e-11      ->  -10.0000000 Inexact Rounded
1269fmax3495 fma  1   -10    77e-12      ->  -10.0000000 Inexact Rounded
1270fmax3496 fma  1   -10    77e-999     ->  -10.0000000 Inexact Rounded
1271fmax3497 fma  1   -10    77e-999999  ->  -10.0000000 Inexact Rounded
1272
1273fmax3500 fma  1     77e-7       -1   ->  -0.9999923
1274fmax3501 fma  1     77e-8       -1   ->  -0.99999923
1275fmax3502 fma  1     77e-9       -1   ->  -0.999999923
1276fmax3503 fma  1     77e-10      -1   ->  -0.999999992 Inexact Rounded
1277fmax3504 fma  1     77e-11      -1   ->  -0.999999999 Inexact Rounded
1278fmax3505 fma  1     77e-12      -1   ->  -1.00000000 Inexact Rounded
1279fmax3506 fma  1     77e-999     -1   ->  -1.00000000 Inexact Rounded
1280fmax3507 fma  1     77e-999999  -1   ->  -1.00000000 Inexact Rounded
1281
1282fmax3510 fma  1     77e-7       -10  ->   -9.9999923
1283fmax3511 fma  1     77e-8       -10  ->   -9.99999923
1284fmax3512 fma  1     77e-9       -10  ->   -9.99999992 Inexact Rounded
1285fmax3513 fma  1     77e-10      -10  ->   -9.99999999 Inexact Rounded
1286fmax3514 fma  1     77e-11      -10  ->  -10.0000000 Inexact Rounded
1287fmax3515 fma  1     77e-12      -10  ->  -10.0000000 Inexact Rounded
1288fmax3516 fma  1     77e-999     -10  ->  -10.0000000 Inexact Rounded
1289fmax3517 fma  1     77e-999999  -10  ->  -10.0000000 Inexact Rounded
1290
1291
1292-- long operands
1293maxexponent: 999
1294minexponent: -999
1295precision: 9
1296fmax3521 fma  1   12345678000 0 -> 1.23456780E+10 Rounded
1297fmax3522 fma  1   0 12345678000 -> 1.23456780E+10 Rounded
1298fmax3523 fma  1   1234567800  0 -> 1.23456780E+9 Rounded
1299fmax3524 fma  1   0 1234567800  -> 1.23456780E+9 Rounded
1300fmax3525 fma  1   1234567890  0 -> 1.23456789E+9 Rounded
1301fmax3526 fma  1   0 1234567890  -> 1.23456789E+9 Rounded
1302fmax3527 fma  1   1234567891  0 -> 1.23456789E+9 Inexact Rounded
1303fmax3528 fma  1   0 1234567891  -> 1.23456789E+9 Inexact Rounded
1304fmax3529 fma  1   12345678901 0 -> 1.23456789E+10 Inexact Rounded
1305fmax3530 fma  1   0 12345678901 -> 1.23456789E+10 Inexact Rounded
1306fmax3531 fma  1   1234567896  0 -> 1.23456790E+9 Inexact Rounded
1307fmax3532 fma  1   0 1234567896  -> 1.23456790E+9 Inexact Rounded
1308
1309precision: 15
1310-- still checking
1311fmax3541 fma  1   12345678000 0 -> 12345678000
1312fmax3542 fma  1   0 12345678000 -> 12345678000
1313fmax3543 fma  1   1234567800  0 -> 1234567800
1314fmax3544 fma  1   0 1234567800  -> 1234567800
1315fmax3545 fma  1   1234567890  0 -> 1234567890
1316fmax3546 fma  1   0 1234567890  -> 1234567890
1317fmax3547 fma  1   1234567891  0 -> 1234567891
1318fmax3548 fma  1   0 1234567891  -> 1234567891
1319fmax3549 fma  1   12345678901 0 -> 12345678901
1320fmax3550 fma  1   0 12345678901 -> 12345678901
1321fmax3551 fma  1   1234567896  0 -> 1234567896
1322fmax3552 fma  1   0 1234567896  -> 1234567896
1323
1324-- verify a query
1325precision:    16
1326maxExponent: +394
1327minExponent: -393
1328rounding:     down
1329fmax3561 fma  1   1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
1330fmax3562 fma  1        0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
1331-- and using decimal64 bounds...
1332precision:    16
1333maxExponent: +384
1334minExponent: -383
1335rounding:     down
1336fmax3563 fma  1   1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
1337fmax3564 fma  1        0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
1338
1339
1340-- some more residue effects with extreme rounding
1341precision:   9
1342rounding: half_up
1343fmax3601 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded
1344rounding: half_even
1345fmax3602 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded
1346rounding: half_down
1347fmax3603 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded
1348rounding: floor
1349fmax3604 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded
1350rounding: ceiling
1351fmax3605 fma  1   123456789  0.000001 -> 123456790 Inexact Rounded
1352rounding: up
1353fmax3606 fma  1   123456789  0.000001 -> 123456790 Inexact Rounded
1354rounding: down
1355fmax3607 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded
1356
1357rounding: half_up
1358fmax3611 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded
1359rounding: half_even
1360fmax3612 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded
1361rounding: half_down
1362fmax3613 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded
1363rounding: floor
1364fmax3614 fma  1   123456789 -0.000001 -> 123456788 Inexact Rounded
1365rounding: ceiling
1366fmax3615 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded
1367rounding: up
1368fmax3616 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded
1369rounding: down
1370fmax3617 fma  1   123456789 -0.000001 -> 123456788 Inexact Rounded
1371
1372rounding: half_up
1373fmax3621 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded
1374rounding: half_even
1375fmax3622 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded
1376rounding: half_down
1377fmax3623 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded
1378rounding: floor
1379fmax3624 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded
1380rounding: ceiling
1381fmax3625 fma  1   123456789  0.499999 -> 123456790 Inexact Rounded
1382rounding: up
1383fmax3626 fma  1   123456789  0.499999 -> 123456790 Inexact Rounded
1384rounding: down
1385fmax3627 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded
1386
1387rounding: half_up
1388fmax3631 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded
1389rounding: half_even
1390fmax3632 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded
1391rounding: half_down
1392fmax3633 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded
1393rounding: floor
1394fmax3634 fma  1   123456789 -0.499999 -> 123456788 Inexact Rounded
1395rounding: ceiling
1396fmax3635 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded
1397rounding: up
1398fmax3636 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded
1399rounding: down
1400fmax3637 fma  1   123456789 -0.499999 -> 123456788 Inexact Rounded
1401
1402rounding: half_up
1403fmax3641 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded
1404rounding: half_even
1405fmax3642 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded
1406rounding: half_down
1407fmax3643 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded
1408rounding: floor
1409fmax3644 fma  1   123456789  0.500001 -> 123456789 Inexact Rounded
1410rounding: ceiling
1411fmax3645 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded
1412rounding: up
1413fmax3646 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded
1414rounding: down
1415fmax3647 fma  1   123456789  0.500001 -> 123456789 Inexact Rounded
1416
1417rounding: half_up
1418fmax3651 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded
1419rounding: half_even
1420fmax3652 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded
1421rounding: half_down
1422fmax3653 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded
1423rounding: floor
1424fmax3654 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded
1425rounding: ceiling
1426fmax3655 fma  1   123456789 -0.500001 -> 123456789 Inexact Rounded
1427rounding: up
1428fmax3656 fma  1   123456789 -0.500001 -> 123456789 Inexact Rounded
1429rounding: down
1430fmax3657 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded
1431
1432-- long operand triangle
1433rounding: half_up
1434precision:  37
1435fmax3660 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114834538
1436precision:  36
1437fmax3661 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483454  Inexact Rounded
1438precision:  35
1439fmax3662 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148345   Inexact Rounded
1440precision:  34
1441fmax3663 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114835    Inexact Rounded
1442precision:  33
1443fmax3664 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483     Inexact Rounded
1444precision:  32
1445fmax3665 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148      Inexact Rounded
1446precision:  31
1447fmax3666 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337115       Inexact Rounded
1448precision:  30
1449fmax3667 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711        Inexact Rounded
1450precision:  29
1451fmax3668 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371         Inexact Rounded
1452precision:  28
1453fmax3669 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337          Inexact Rounded
1454precision:  27
1455fmax3670 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892234           Inexact Rounded
1456precision:  26
1457fmax3671 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223            Inexact Rounded
1458precision:  25
1459fmax3672 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922             Inexact Rounded
1460precision:  24
1461fmax3673 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892              Inexact Rounded
1462precision:  23
1463fmax3674 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389               Inexact Rounded
1464precision:  22
1465fmax3675 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023639                Inexact Rounded
1466precision:  21
1467fmax3676 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102364                 Inexact Rounded
1468precision:  20
1469fmax3677 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236                  Inexact Rounded
1470precision:  19
1471fmax3678 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211024                   Inexact Rounded
1472precision:  18
1473fmax3679 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102                    Inexact Rounded
1474precision:  17
1475fmax3680 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110                     Inexact Rounded
1476precision:  16
1477fmax3681 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211                      Inexact Rounded
1478precision:  15
1479fmax3682 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221                       Inexact Rounded
1480precision:  14
1481fmax3683 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422                        Inexact Rounded
1482precision:  13
1483fmax3684 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42                         Inexact Rounded
1484precision:  12
1485fmax3685 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4                          Inexact Rounded
1486precision:  11
1487fmax3686 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166                            Inexact Rounded
1488precision:  10
1489fmax3687 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117417E+10                        Inexact Rounded
1490precision:   9
1491fmax3688 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84711742E+10                         Inexact Rounded
1492precision:   8
1493fmax3689 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471174E+10                          Inexact Rounded
1494precision:   7
1495fmax3690 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117E+10                          Inexact Rounded
1496precision:   6
1497fmax3691 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84712E+10                          Inexact Rounded
1498precision:   5
1499fmax3692 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471E+10                          Inexact Rounded
1500precision:   4
1501fmax3693 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847E+10                          Inexact Rounded
1502precision:   3
1503fmax3694 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.85E+10                          Inexact Rounded
1504precision:   2
1505fmax3695 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8E+10                          Inexact Rounded
1506precision:   1
1507fmax3696 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 1E+11                          Inexact Rounded
1508
1509-- more zeros, etc.
1510rounding: half_up
1511precision:   9
1512
1513fmax3701 fma  1   5.00 1.00E-3 -> 5.00100
1514fmax3702 fma  1   00.00 0.000  -> 0.000
1515fmax3703 fma  1   00.00 0E-3   -> 0.000
1516fmax3704 fma  1   0E-3  00.00  -> 0.000
1517
1518fmax3710 fma  1   0E+3  00.00  -> 0.00
1519fmax3711 fma  1   0E+3  00.0   -> 0.0
1520fmax3712 fma  1   0E+3  00.    -> 0
1521fmax3713 fma  1   0E+3  00.E+1 -> 0E+1
1522fmax3714 fma  1   0E+3  00.E+2 -> 0E+2
1523fmax3715 fma  1   0E+3  00.E+3 -> 0E+3
1524fmax3716 fma  1   0E+3  00.E+4 -> 0E+3
1525fmax3717 fma  1   0E+3  00.E+5 -> 0E+3
1526fmax3718 fma  1   0E+3  -00.0   -> 0.0
1527fmax3719 fma  1   0E+3  -00.    -> 0
1528fmax3731 fma  1   0E+3  -00.E+1 -> 0E+1
1529
1530fmax3720 fma  1   00.00  0E+3  -> 0.00
1531fmax3721 fma  1   00.0   0E+3  -> 0.0
1532fmax3722 fma  1   00.    0E+3  -> 0
1533fmax3723 fma  1   00.E+1 0E+3  -> 0E+1
1534fmax3724 fma  1   00.E+2 0E+3  -> 0E+2
1535fmax3725 fma  1   00.E+3 0E+3  -> 0E+3
1536fmax3726 fma  1   00.E+4 0E+3  -> 0E+3
1537fmax3727 fma  1   00.E+5 0E+3  -> 0E+3
1538fmax3728 fma  1   -00.00 0E+3  -> 0.00
1539fmax3729 fma  1   -00.0  0E+3  -> 0.0
1540fmax3730 fma  1   -00.   0E+3  -> 0
1541
1542fmax3732 fma  1    0     0     ->  0
1543fmax3733 fma  1    0    -0     ->  0
1544fmax3734 fma  1   -0     0     ->  0
1545fmax3735 fma  1   -0    -0     -> -0     -- IEEE 854 special case
1546
1547fmax3736 fma  1    1    -1     ->  0
1548fmax3737 fma  1   -1    -1     -> -2
1549fmax3738 fma  1    1     1     ->  2
1550fmax3739 fma  1   -1     1     ->  0
1551
1552fmax3741 fma  1    0    -1     -> -1
1553fmax3742 fma  1   -0    -1     -> -1
1554fmax3743 fma  1    0     1     ->  1
1555fmax3744 fma  1   -0     1     ->  1
1556fmax3745 fma  1   -1     0     -> -1
1557fmax3746 fma  1   -1    -0     -> -1
1558fmax3747 fma  1    1     0     ->  1
1559fmax3748 fma  1    1    -0     ->  1
1560
1561fmax3751 fma  1    0.0  -1     -> -1.0
1562fmax3752 fma  1   -0.0  -1     -> -1.0
1563fmax3753 fma  1    0.0   1     ->  1.0
1564fmax3754 fma  1   -0.0   1     ->  1.0
1565fmax3755 fma  1   -1.0   0     -> -1.0
1566fmax3756 fma  1   -1.0  -0     -> -1.0
1567fmax3757 fma  1    1.0   0     ->  1.0
1568fmax3758 fma  1    1.0  -0     ->  1.0
1569
1570fmax3761 fma  1    0    -1.0   -> -1.0
1571fmax3762 fma  1   -0    -1.0   -> -1.0
1572fmax3763 fma  1    0     1.0   ->  1.0
1573fmax3764 fma  1   -0     1.0   ->  1.0
1574fmax3765 fma  1   -1     0.0   -> -1.0
1575fmax3766 fma  1   -1    -0.0   -> -1.0
1576fmax3767 fma  1    1     0.0   ->  1.0
1577fmax3768 fma  1    1    -0.0   ->  1.0
1578
1579fmax3771 fma  1    0.0  -1.0   -> -1.0
1580fmax3772 fma  1   -0.0  -1.0   -> -1.0
1581fmax3773 fma  1    0.0   1.0   ->  1.0
1582fmax3774 fma  1   -0.0   1.0   ->  1.0
1583fmax3775 fma  1   -1.0   0.0   -> -1.0
1584fmax3776 fma  1   -1.0  -0.0   -> -1.0
1585fmax3777 fma  1    1.0   0.0   ->  1.0
1586fmax3778 fma  1    1.0  -0.0   ->  1.0
1587
1588-- Specials
1589fmax3780 fma  1   -Inf  -Inf   -> -Infinity
1590fmax3781 fma  1   -Inf  -1000  -> -Infinity
1591fmax3782 fma  1   -Inf  -1     -> -Infinity
1592fmax3783 fma  1   -Inf  -0     -> -Infinity
1593fmax3784 fma  1   -Inf   0     -> -Infinity
1594fmax3785 fma  1   -Inf   1     -> -Infinity
1595fmax3786 fma  1   -Inf   1000  -> -Infinity
1596fmax3787 fma  1   -1000 -Inf   -> -Infinity
1597fmax3788 fma  1   -Inf  -Inf   -> -Infinity
1598fmax3789 fma  1   -1    -Inf   -> -Infinity
1599fmax3790 fma  1   -0    -Inf   -> -Infinity
1600fmax3791 fma  1    0    -Inf   -> -Infinity
1601fmax3792 fma  1    1    -Inf   -> -Infinity
1602fmax3793 fma  1    1000 -Inf   -> -Infinity
1603fmax3794 fma  1    Inf  -Inf   ->  NaN  Invalid_operation
1604
1605fmax3800 fma  1    Inf  -Inf   ->  NaN  Invalid_operation
1606fmax3801 fma  1    Inf  -1000  ->  Infinity
1607fmax3802 fma  1    Inf  -1     ->  Infinity
1608fmax3803 fma  1    Inf  -0     ->  Infinity
1609fmax3804 fma  1    Inf   0     ->  Infinity
1610fmax3805 fma  1    Inf   1     ->  Infinity
1611fmax3806 fma  1    Inf   1000  ->  Infinity
1612fmax3807 fma  1    Inf   Inf   ->  Infinity
1613fmax3808 fma  1   -1000  Inf   ->  Infinity
1614fmax3809 fma  1   -Inf   Inf   ->  NaN  Invalid_operation
1615fmax3810 fma  1   -1     Inf   ->  Infinity
1616fmax3811 fma  1   -0     Inf   ->  Infinity
1617fmax3812 fma  1    0     Inf   ->  Infinity
1618fmax3813 fma  1    1     Inf   ->  Infinity
1619fmax3814 fma  1    1000  Inf   ->  Infinity
1620fmax3815 fma  1    Inf   Inf   ->  Infinity
1621
1622fmax3821 fma  1    NaN -Inf    ->  NaN
1623fmax3822 fma  1    NaN -1000   ->  NaN
1624fmax3823 fma  1    NaN -1      ->  NaN
1625fmax3824 fma  1    NaN -0      ->  NaN
1626fmax3825 fma  1    NaN  0      ->  NaN
1627fmax3826 fma  1    NaN  1      ->  NaN
1628fmax3827 fma  1    NaN  1000   ->  NaN
1629fmax3828 fma  1    NaN  Inf    ->  NaN
1630fmax3829 fma  1    NaN  NaN    ->  NaN
1631fmax3830 fma  1   -Inf  NaN    ->  NaN
1632fmax3831 fma  1   -1000 NaN    ->  NaN
1633fmax3832 fma  1   -1    NaN    ->  NaN
1634fmax3833 fma  1   -0    NaN    ->  NaN
1635fmax3834 fma  1    0    NaN    ->  NaN
1636fmax3835 fma  1    1    NaN    ->  NaN
1637fmax3836 fma  1    1000 NaN    ->  NaN
1638fmax3837 fma  1    Inf  NaN    ->  NaN
1639
1640fmax3841 fma  1    sNaN -Inf   ->  NaN  Invalid_operation
1641fmax3842 fma  1    sNaN -1000  ->  NaN  Invalid_operation
1642fmax3843 fma  1    sNaN -1     ->  NaN  Invalid_operation
1643fmax3844 fma  1    sNaN -0     ->  NaN  Invalid_operation
1644fmax3845 fma  1    sNaN  0     ->  NaN  Invalid_operation
1645fmax3846 fma  1    sNaN  1     ->  NaN  Invalid_operation
1646fmax3847 fma  1    sNaN  1000  ->  NaN  Invalid_operation
1647fmax3848 fma  1    sNaN  NaN   ->  NaN  Invalid_operation
1648fmax3849 fma  1    sNaN sNaN   ->  NaN  Invalid_operation
1649fmax3850 fma  1    NaN  sNaN   ->  NaN  Invalid_operation
1650fmax3851 fma  1   -Inf  sNaN   ->  NaN  Invalid_operation
1651fmax3852 fma  1   -1000 sNaN   ->  NaN  Invalid_operation
1652fmax3853 fma  1   -1    sNaN   ->  NaN  Invalid_operation
1653fmax3854 fma  1   -0    sNaN   ->  NaN  Invalid_operation
1654fmax3855 fma  1    0    sNaN   ->  NaN  Invalid_operation
1655fmax3856 fma  1    1    sNaN   ->  NaN  Invalid_operation
1656fmax3857 fma  1    1000 sNaN   ->  NaN  Invalid_operation
1657fmax3858 fma  1    Inf  sNaN   ->  NaN  Invalid_operation
1658fmax3859 fma  1    NaN  sNaN   ->  NaN  Invalid_operation
1659
1660-- propagating NaNs
1661fmax3861 fma  1    NaN1   -Inf    ->  NaN1
1662fmax3862 fma  1   +NaN2   -1000   ->  NaN2
1663fmax3863 fma  1    NaN3    1000   ->  NaN3
1664fmax3864 fma  1    NaN4    Inf    ->  NaN4
1665fmax3865 fma  1    NaN5   +NaN6   ->  NaN5
1666fmax3866 fma  1   -Inf     NaN7   ->  NaN7
1667fmax3867 fma  1   -1000    NaN8   ->  NaN8
1668fmax3868 fma  1    1000    NaN9   ->  NaN9
1669fmax3869 fma  1    Inf    +NaN10  ->  NaN10
1670fmax3871 fma  1    sNaN11  -Inf   ->  NaN11  Invalid_operation
1671fmax3872 fma  1    sNaN12  -1000  ->  NaN12  Invalid_operation
1672fmax3873 fma  1    sNaN13   1000  ->  NaN13  Invalid_operation
1673fmax3874 fma  1    sNaN14   NaN17 ->  NaN14  Invalid_operation
1674fmax3875 fma  1    sNaN15  sNaN18 ->  NaN15  Invalid_operation
1675fmax3876 fma  1    NaN16   sNaN19 ->  NaN19  Invalid_operation
1676fmax3877 fma  1   -Inf    +sNaN20 ->  NaN20  Invalid_operation
1677fmax3878 fma  1   -1000    sNaN21 ->  NaN21  Invalid_operation
1678fmax3879 fma  1    1000    sNaN22 ->  NaN22  Invalid_operation
1679fmax3880 fma  1    Inf     sNaN23 ->  NaN23  Invalid_operation
1680fmax3881 fma  1   +NaN25  +sNaN24 ->  NaN24  Invalid_operation
1681fmax3882 fma  1   -NaN26    NaN28 -> -NaN26
1682fmax3883 fma  1   -sNaN27  sNaN29 -> -NaN27  Invalid_operation
1683fmax3884 fma  1    1000    -NaN30 -> -NaN30
1684fmax3885 fma  1    1000   -sNaN31 -> -NaN31  Invalid_operation
1685
1686-- overflow, underflow and subnormal tests
1687maxexponent: 999999
1688minexponent: -999999
1689precision: 9
1690fmax3890 fma  1   1E+999999     9E+999999   -> Infinity Overflow Inexact Rounded
1691fmax3891 fma  1   9E+999999     1E+999999   -> Infinity Overflow Inexact Rounded
1692fmax3892 fma  1   -1.1E-999999  1E-999999   -> -1E-1000000    Subnormal
1693fmax3893 fma  1   1E-999999    -1.1e-999999 -> -1E-1000000    Subnormal
1694fmax3894 fma  1   -1.0001E-999999  1E-999999   -> -1E-1000003 Subnormal
1695fmax3895 fma  1   1E-999999    -1.0001e-999999 -> -1E-1000003 Subnormal
1696fmax3896 fma  1   -1E+999999   -9E+999999   -> -Infinity Overflow Inexact Rounded
1697fmax3897 fma  1   -9E+999999   -1E+999999   -> -Infinity Overflow Inexact Rounded
1698fmax3898 fma  1   +1.1E-999999 -1E-999999   -> 1E-1000000   Subnormal
1699fmax3899 fma  1   -1E-999999   +1.1e-999999 -> 1E-1000000    Subnormal
1700fmax3900 fma  1   +1.0001E-999999 -1E-999999   -> 1E-1000003 Subnormal
1701fmax3901 fma  1   -1E-999999   +1.0001e-999999 -> 1E-1000003 Subnormal
1702fmax3902 fma  1   -1E+999999   +9E+999999   ->  8E+999999
1703fmax3903 fma  1   -9E+999999   +1E+999999   -> -8E+999999
1704
1705precision: 3
1706fmax3904 fma  1        0 -9.999E+999999   -> -Infinity Inexact Overflow Rounded
1707fmax3905 fma  1          -9.999E+999999 0 -> -Infinity Inexact Overflow Rounded
1708fmax3906 fma  1        0  9.999E+999999   ->  Infinity Inexact Overflow Rounded
1709fmax3907 fma  1           9.999E+999999 0 ->  Infinity Inexact Overflow Rounded
1710
1711precision: 3
1712maxexponent: 999
1713minexponent: -999
1714fmax3910 fma  1    1.00E-999   0    ->   1.00E-999
1715fmax3911 fma  1    0.1E-999    0    ->   1E-1000   Subnormal
1716fmax3912 fma  1    0.10E-999   0    ->   1.0E-1000 Subnormal
1717fmax3913 fma  1    0.100E-999  0    ->   1.0E-1000 Subnormal Rounded
1718fmax3914 fma  1    0.01E-999   0    ->   1E-1001   Subnormal
1719-- next is rounded to Nmin
1720fmax3915 fma  1    0.999E-999  0    ->   1.00E-999 Inexact Rounded Subnormal Underflow
1721fmax3916 fma  1    0.099E-999  0    ->   1.0E-1000 Inexact Rounded Subnormal Underflow
1722fmax3917 fma  1    0.009E-999  0    ->   1E-1001   Inexact Rounded Subnormal Underflow
1723fmax3918 fma  1    0.001E-999  0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
1724fmax3919 fma  1    0.0009E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
1725fmax3920 fma  1    0.0001E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
1726
1727fmax3930 fma  1   -1.00E-999   0    ->  -1.00E-999
1728fmax3931 fma  1   -0.1E-999    0    ->  -1E-1000   Subnormal
1729fmax3932 fma  1   -0.10E-999   0    ->  -1.0E-1000 Subnormal
1730fmax3933 fma  1   -0.100E-999  0    ->  -1.0E-1000 Subnormal Rounded
1731fmax3934 fma  1   -0.01E-999   0    ->  -1E-1001   Subnormal
1732-- next is rounded to Nmin
1733fmax3935 fma  1   -0.999E-999  0    ->  -1.00E-999 Inexact Rounded Subnormal Underflow
1734fmax3936 fma  1   -0.099E-999  0    ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
1735fmax3937 fma  1   -0.009E-999  0    ->  -1E-1001   Inexact Rounded Subnormal Underflow
1736fmax3938 fma  1   -0.001E-999  0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
1737fmax3939 fma  1   -0.0009E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
1738fmax3940 fma  1   -0.0001E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
1739
1740-- some non-zero subnormal fma  1  s
1741fmax3950 fma  1    1.00E-999    0.1E-999  ->   1.10E-999
1742fmax3951 fma  1    0.1E-999     0.1E-999  ->   2E-1000    Subnormal
1743fmax3952 fma  1    0.10E-999    0.1E-999  ->   2.0E-1000  Subnormal
1744fmax3953 fma  1    0.100E-999   0.1E-999  ->   2.0E-1000  Subnormal Rounded
1745fmax3954 fma  1    0.01E-999    0.1E-999  ->   1.1E-1000  Subnormal
1746fmax3955 fma  1    0.999E-999   0.1E-999  ->   1.10E-999  Inexact Rounded
1747fmax3956 fma  1    0.099E-999   0.1E-999  ->   2.0E-1000  Inexact Rounded Subnormal Underflow
1748fmax3957 fma  1    0.009E-999   0.1E-999  ->   1.1E-1000  Inexact Rounded Subnormal Underflow
1749fmax3958 fma  1    0.001E-999   0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
1750fmax3959 fma  1    0.0009E-999  0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
1751fmax3960 fma  1    0.0001E-999  0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
1752-- negatives...
1753fmax3961 fma  1    1.00E-999   -0.1E-999  ->   9.0E-1000  Subnormal
1754fmax3962 fma  1    0.1E-999    -0.1E-999  ->   0E-1000
1755fmax3963 fma  1    0.10E-999   -0.1E-999  ->   0E-1001
1756fmax3964 fma  1    0.100E-999  -0.1E-999  ->   0E-1001    Clamped
1757fmax3965 fma  1    0.01E-999   -0.1E-999  ->   -9E-1001   Subnormal
1758fmax3966 fma  1    0.999E-999  -0.1E-999  ->   9.0E-1000  Inexact Rounded Subnormal Underflow
1759fmax3967 fma  1    0.099E-999  -0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow Clamped
1760fmax3968 fma  1    0.009E-999  -0.1E-999  ->   -9E-1001   Inexact Rounded Subnormal Underflow
1761fmax3969 fma  1    0.001E-999  -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
1762fmax3970 fma  1    0.0009E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
1763fmax3971 fma  1    0.0001E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
1764
1765-- some 'real' numbers
1766maxExponent: 384
1767minExponent: -383
1768precision: 8
1769fmax3566 fma  1   99999061735E-394  0E-394 -> 9.999906E-384 Inexact Rounded Underflow Subnormal
1770precision: 7
1771fmax3567 fma  1   99999061735E-394  0E-394 -> 9.99991E-384 Inexact Rounded Underflow Subnormal
1772precision: 6
1773fmax3568 fma  1   99999061735E-394  0E-394 -> 9.9999E-384 Inexact Rounded Underflow Subnormal
1774
1775-- now the case where we can get underflow but the result is normal
1776-- [note this can't happen if the operands are also bounded, as we
1777-- cannot represent 1E-399, for example]
1778precision:   16
1779rounding:    half_up
1780maxExponent: 384
1781minExponent: -383
1782
1783fmax3571 fma  1         1E-383       0  -> 1E-383
1784fmax3572 fma  1         1E-384       0  -> 1E-384   Subnormal
1785fmax3573 fma  1         1E-383  1E-384  -> 1.1E-383
1786fmax3574 subtract  1E-383  1E-384  ->   9E-384 Subnormal
1787
1788-- Here we explore the boundary of rounding a subnormal to Nmin
1789fmax3575 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
1790fmax3576 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
1791fmax3577 subtract  1E-383  1E-399  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
1792fmax3578 subtract  1E-383  1E-400  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
1793fmax3579 subtract  1E-383  1E-401  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
1794fmax3580 subtract  1E-383  1E-402  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
1795
1796-- check for double-rounded subnormals
1797precision:   5
1798maxexponent: 79
1799minexponent: -79
1800-- Add: lhs and rhs 0
1801fmax31001 fma  1         1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1802fmax31002 fma  1         1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1803fmax31003 fma  1         1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1804fmax31004 fma  1         0 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1805fmax31005 fma  1         0 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1806fmax31006 fma  1         0 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1807
1808-- Add: lhs >> rhs and vice versa
1809fmax31011 fma  1         1.52444E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1810fmax31012 fma  1         1.52445E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1811fmax31013 fma  1         1.52446E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1812fmax31014 fma  1         1E-100 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1813fmax31015 fma  1         1E-100 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1814fmax31016 fma  1         1E-100 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
1815
1816-- Add: lhs + rhs fma  1  ition carried out
1817fmax31021 fma  1         1.52443E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
1818fmax31022 fma  1         1.52444E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
1819fmax31023 fma  1         1.52445E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
1820fmax31024 fma  1         1.00001E-80  1.52443E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
1821fmax31025 fma  1         1.00001E-80  1.52444E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
1822fmax31026 fma  1         1.00001E-80  1.52445E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
1823
1824-- And for round down full and subnormal results
1825precision:    16
1826maxExponent: +384
1827minExponent: -383
1828rounding:     down
1829
1830fmax31100 fma  1   1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact
1831fmax31101 fma  1   1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact
1832fmax31103 fma  1     +1 -1e-383    -> 0.9999999999999999  Rounded Inexact
1833fmax31104 fma  1   1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact
1834fmax31105 fma  1   1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact
1835fmax31106 fma  1   1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact
1836fmax31107 fma  1   1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact
1837fmax31108 fma  1   1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact
1838fmax31109 fma  1   1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact
1839
1840rounding:     ceiling
1841fmax31110 fma  1   -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact
1842fmax31111 fma  1   -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact
1843fmax31113 fma  1      -1 +1e-383   -> -0.9999999999999999  Rounded Inexact
1844fmax31114 fma  1   -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact
1845fmax31115 fma  1   -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact
1846fmax31116 fma  1   -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact
1847fmax31117 fma  1   -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact
1848fmax31118 fma  1   -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact
1849fmax31119 fma  1   -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact
1850
1851rounding:     down
1852precision:    7
1853maxExponent: +96
1854minExponent: -95
1855fmax31130 fma  1     1            -1e-200  -> 0.9999999  Rounded Inexact
1856-- subnormal boundary
1857fmax31131 fma  1     1.000000E-94  -1e-200  ->  9.999999E-95  Rounded Inexact
1858fmax31132 fma  1     1.000001E-95  -1e-200  ->  1.000000E-95  Rounded Inexact
1859fmax31133 fma  1     1.000000E-95  -1e-200  ->  9.99999E-96  Rounded Inexact Subnormal Underflow
1860fmax31134 fma  1     0.999999E-95  -1e-200  ->  9.99998E-96  Rounded Inexact Subnormal Underflow
1861fmax31135 fma  1     0.001000E-95  -1e-200  ->  9.99E-99  Rounded Inexact Subnormal Underflow
1862fmax31136 fma  1     0.000999E-95  -1e-200  ->  9.98E-99  Rounded Inexact Subnormal Underflow
1863fmax31137 fma  1     1.000000E-95  -1e-101  ->  9.99999E-96  Subnormal
1864fmax31138 fma  1        10000E-101 -1e-200  ->  9.999E-98  Subnormal Inexact Rounded Underflow
1865fmax31139 fma  1         1000E-101 -1e-200  ->  9.99E-99   Subnormal Inexact Rounded Underflow
1866fmax31140 fma  1          100E-101 -1e-200  ->  9.9E-100   Subnormal Inexact Rounded Underflow
1867fmax31141 fma  1           10E-101 -1e-200  ->  9E-101     Subnormal Inexact Rounded Underflow
1868fmax31142 fma  1            1E-101 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
1869fmax31143 fma  1            0E-101 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow Clamped
1870fmax31144 fma  1            1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
1871
1872fmax31151 fma  1        10000E-102 -1e-200  ->  9.99E-99  Subnormal Inexact Rounded Underflow
1873fmax31152 fma  1         1000E-102 -1e-200  ->  9.9E-100  Subnormal Inexact Rounded Underflow
1874fmax31153 fma  1          100E-102 -1e-200  ->  9E-101   Subnormal Inexact Rounded Underflow
1875fmax31154 fma  1           10E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
1876fmax31155 fma  1            1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
1877fmax31156 fma  1            0E-102 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow Clamped
1878fmax31157 fma  1            1E-103 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
1879
1880fmax31160 fma  1          100E-105 -1e-101  -> -0E-101 Subnormal Inexact Rounded Underflow Clamped
1881fmax31161 fma  1          100E-105 -1e-201  ->  0E-101 Subnormal Inexact Rounded Underflow Clamped
1882
1883-- tests based on Gunnar Degnbol's edge case
1884precision:   15
1885rounding:    half_up
1886maxExponent: 384
1887minexponent: -383
1888
1889fmax31200 fma  1   1E15  -0.5                 ->  1.00000000000000E+15 Inexact Rounded
1890fmax31201 fma  1   1E15  -0.50                ->  1.00000000000000E+15 Inexact Rounded
1891fmax31210 fma  1   1E15  -0.51                ->  999999999999999      Inexact Rounded
1892fmax31211 fma  1   1E15  -0.501               ->  999999999999999      Inexact Rounded
1893fmax31212 fma  1   1E15  -0.5001              ->  999999999999999      Inexact Rounded
1894fmax31213 fma  1   1E15  -0.50001             ->  999999999999999      Inexact Rounded
1895fmax31214 fma  1   1E15  -0.500001            ->  999999999999999      Inexact Rounded
1896fmax31215 fma  1   1E15  -0.5000001           ->  999999999999999      Inexact Rounded
1897fmax31216 fma  1   1E15  -0.50000001          ->  999999999999999      Inexact Rounded
1898fmax31217 fma  1   1E15  -0.500000001         ->  999999999999999      Inexact Rounded
1899fmax31218 fma  1   1E15  -0.5000000001        ->  999999999999999      Inexact Rounded
1900fmax31219 fma  1   1E15  -0.50000000001       ->  999999999999999      Inexact Rounded
1901fmax31220 fma  1   1E15  -0.500000000001      ->  999999999999999      Inexact Rounded
1902fmax31221 fma  1   1E15  -0.5000000000001     ->  999999999999999      Inexact Rounded
1903fmax31222 fma  1   1E15  -0.50000000000001    ->  999999999999999      Inexact Rounded
1904fmax31223 fma  1   1E15  -0.500000000000001   ->  999999999999999      Inexact Rounded
1905fmax31224 fma  1   1E15  -0.5000000000000001  ->  999999999999999      Inexact Rounded
1906fmax31225 fma  1   1E15  -0.5000000000000000  ->  1.00000000000000E+15 Inexact Rounded
1907fmax31230 fma  1   1E15  -5000000.000000001   ->  999999995000000      Inexact Rounded
1908
1909precision:   16
1910
1911fmax31300 fma  1   1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded
1912fmax31310 fma  1   1E16  -0.51                ->  9999999999999999      Inexact Rounded
1913fmax31311 fma  1   1E16  -0.501               ->  9999999999999999      Inexact Rounded
1914fmax31312 fma  1   1E16  -0.5001              ->  9999999999999999      Inexact Rounded
1915fmax31313 fma  1   1E16  -0.50001             ->  9999999999999999      Inexact Rounded
1916fmax31314 fma  1   1E16  -0.500001            ->  9999999999999999      Inexact Rounded
1917fmax31315 fma  1   1E16  -0.5000001           ->  9999999999999999      Inexact Rounded
1918fmax31316 fma  1   1E16  -0.50000001          ->  9999999999999999      Inexact Rounded
1919fmax31317 fma  1   1E16  -0.500000001         ->  9999999999999999      Inexact Rounded
1920fmax31318 fma  1   1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded
1921fmax31319 fma  1   1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded
1922fmax31320 fma  1   1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded
1923fmax31321 fma  1   1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded
1924fmax31322 fma  1   1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded
1925fmax31323 fma  1   1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded
1926fmax31324 fma  1   1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded
1927fmax31325 fma  1   1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
1928fmax31326 fma  1   1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
1929fmax31327 fma  1   1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
1930fmax31328 fma  1   1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
1931fmax31329 fma  1   1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
1932fmax31330 fma  1   1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
1933fmax31331 fma  1   1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
1934fmax31332 fma  1   1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded
1935fmax31333 fma  1   1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded
1936fmax31334 fma  1   1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded
1937fmax31335 fma  1   1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded
1938fmax31336 fma  1   1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded
1939fmax31337 fma  1   1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded
1940fmax31338 fma  1   1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded
1941fmax31339 fma  1   1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded
1942
1943fmax31340 fma  1   1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded
1944fmax31341 fma  1   1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded
1945
1946fmax31349 fma  1   9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded
1947fmax31350 fma  1   9999999999999999 0.49                ->  9999999999999999      Inexact Rounded
1948fmax31351 fma  1   9999999999999999 0.499               ->  9999999999999999      Inexact Rounded
1949fmax31352 fma  1   9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded
1950fmax31353 fma  1   9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded
1951fmax31354 fma  1   9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded
1952fmax31355 fma  1   9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded
1953fmax31356 fma  1   9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded
1954fmax31357 fma  1   9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded
1955fmax31358 fma  1   9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded
1956fmax31359 fma  1   9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded
1957fmax31360 fma  1   9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded
1958fmax31361 fma  1   9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded
1959fmax31362 fma  1   9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded
1960fmax31363 fma  1   9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded
1961fmax31364 fma  1   9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded
1962fmax31365 fma  1   9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
1963fmax31367 fma  1   9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
1964fmax31368 fma  1   9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
1965fmax31369 fma  1   9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
1966fmax31370 fma  1   9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
1967fmax31371 fma  1   9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
1968fmax31372 fma  1   9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
1969fmax31373 fma  1   9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded
1970fmax31374 fma  1   9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded
1971fmax31375 fma  1   9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded
1972fmax31376 fma  1   9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded
1973fmax31377 fma  1   9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded
1974fmax31378 fma  1   9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded
1975fmax31379 fma  1   9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded
1976fmax31380 fma  1   9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded
1977fmax31381 fma  1   9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded
1978fmax31382 fma  1   9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded
1979fmax31383 fma  1   9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded
1980fmax31384 fma  1   9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded
1981fmax31385 fma  1   9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded
1982fmax31386 fma  1   9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded
1983fmax31387 fma  1   9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded
1984fmax31388 fma  1   9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded
1985fmax31389 fma  1   9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded
1986fmax31390 fma  1   9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded
1987fmax31391 fma  1   9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded
1988fmax31392 fma  1   9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded
1989fmax31393 fma  1   9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded
1990fmax31394 fma  1   9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded
1991fmax31395 fma  1   9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded
1992fmax31396 fma  1   9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded
1993
1994-- More GD edge cases, where difference between the unadjusted
1995-- exponents is larger than the maximum precision and one side is 0
1996precision:   15
1997rounding:    half_up
1998maxExponent: 384
1999minexponent: -383
2000
2001fmax31400 fma  1    0 1.23456789012345     -> 1.23456789012345
2002fmax31401 fma  1    0 1.23456789012345E-1  -> 0.123456789012345
2003fmax31402 fma  1    0 1.23456789012345E-2  -> 0.0123456789012345
2004fmax31403 fma  1    0 1.23456789012345E-3  -> 0.00123456789012345
2005fmax31404 fma  1    0 1.23456789012345E-4  -> 0.000123456789012345
2006fmax31405 fma  1    0 1.23456789012345E-5  -> 0.0000123456789012345
2007fmax31406 fma  1    0 1.23456789012345E-6  -> 0.00000123456789012345
2008fmax31407 fma  1    0 1.23456789012345E-7  -> 1.23456789012345E-7
2009fmax31408 fma  1    0 1.23456789012345E-8  -> 1.23456789012345E-8
2010fmax31409 fma  1    0 1.23456789012345E-9  -> 1.23456789012345E-9
2011fmax31410 fma  1    0 1.23456789012345E-10 -> 1.23456789012345E-10
2012fmax31411 fma  1    0 1.23456789012345E-11 -> 1.23456789012345E-11
2013fmax31412 fma  1    0 1.23456789012345E-12 -> 1.23456789012345E-12
2014fmax31413 fma  1    0 1.23456789012345E-13 -> 1.23456789012345E-13
2015fmax31414 fma  1    0 1.23456789012345E-14 -> 1.23456789012345E-14
2016fmax31415 fma  1    0 1.23456789012345E-15 -> 1.23456789012345E-15
2017fmax31416 fma  1    0 1.23456789012345E-16 -> 1.23456789012345E-16
2018fmax31417 fma  1    0 1.23456789012345E-17 -> 1.23456789012345E-17
2019fmax31418 fma  1    0 1.23456789012345E-18 -> 1.23456789012345E-18
2020fmax31419 fma  1    0 1.23456789012345E-19 -> 1.23456789012345E-19
2021
2022-- same, precision 16..
2023precision:   16
2024fmax31420 fma  1    0 1.123456789012345     -> 1.123456789012345
2025fmax31421 fma  1    0 1.123456789012345E-1  -> 0.1123456789012345
2026fmax31422 fma  1    0 1.123456789012345E-2  -> 0.01123456789012345
2027fmax31423 fma  1    0 1.123456789012345E-3  -> 0.001123456789012345
2028fmax31424 fma  1    0 1.123456789012345E-4  -> 0.0001123456789012345
2029fmax31425 fma  1    0 1.123456789012345E-5  -> 0.00001123456789012345
2030fmax31426 fma  1    0 1.123456789012345E-6  -> 0.000001123456789012345
2031fmax31427 fma  1    0 1.123456789012345E-7  -> 1.123456789012345E-7
2032fmax31428 fma  1    0 1.123456789012345E-8  -> 1.123456789012345E-8
2033fmax31429 fma  1    0 1.123456789012345E-9  -> 1.123456789012345E-9
2034fmax31430 fma  1    0 1.123456789012345E-10 -> 1.123456789012345E-10
2035fmax31431 fma  1    0 1.123456789012345E-11 -> 1.123456789012345E-11
2036fmax31432 fma  1    0 1.123456789012345E-12 -> 1.123456789012345E-12
2037fmax31433 fma  1    0 1.123456789012345E-13 -> 1.123456789012345E-13
2038fmax31434 fma  1    0 1.123456789012345E-14 -> 1.123456789012345E-14
2039fmax31435 fma  1    0 1.123456789012345E-15 -> 1.123456789012345E-15
2040fmax31436 fma  1    0 1.123456789012345E-16 -> 1.123456789012345E-16
2041fmax31437 fma  1    0 1.123456789012345E-17 -> 1.123456789012345E-17
2042fmax31438 fma  1    0 1.123456789012345E-18 -> 1.123456789012345E-18
2043fmax31439 fma  1    0 1.123456789012345E-19 -> 1.123456789012345E-19
2044
2045-- same, reversed 0
2046fmax31440 fma  1   1.123456789012345     0 -> 1.123456789012345
2047fmax31441 fma  1   1.123456789012345E-1  0 -> 0.1123456789012345
2048fmax31442 fma  1   1.123456789012345E-2  0 -> 0.01123456789012345
2049fmax31443 fma  1   1.123456789012345E-3  0 -> 0.001123456789012345
2050fmax31444 fma  1   1.123456789012345E-4  0 -> 0.0001123456789012345
2051fmax31445 fma  1   1.123456789012345E-5  0 -> 0.00001123456789012345
2052fmax31446 fma  1   1.123456789012345E-6  0 -> 0.000001123456789012345
2053fmax31447 fma  1   1.123456789012345E-7  0 -> 1.123456789012345E-7
2054fmax31448 fma  1   1.123456789012345E-8  0 -> 1.123456789012345E-8
2055fmax31449 fma  1   1.123456789012345E-9  0 -> 1.123456789012345E-9
2056fmax31450 fma  1   1.123456789012345E-10 0 -> 1.123456789012345E-10
2057fmax31451 fma  1   1.123456789012345E-11 0 -> 1.123456789012345E-11
2058fmax31452 fma  1   1.123456789012345E-12 0 -> 1.123456789012345E-12
2059fmax31453 fma  1   1.123456789012345E-13 0 -> 1.123456789012345E-13
2060fmax31454 fma  1   1.123456789012345E-14 0 -> 1.123456789012345E-14
2061fmax31455 fma  1   1.123456789012345E-15 0 -> 1.123456789012345E-15
2062fmax31456 fma  1   1.123456789012345E-16 0 -> 1.123456789012345E-16
2063fmax31457 fma  1   1.123456789012345E-17 0 -> 1.123456789012345E-17
2064fmax31458 fma  1   1.123456789012345E-18 0 -> 1.123456789012345E-18
2065fmax31459 fma  1   1.123456789012345E-19 0 -> 1.123456789012345E-19
2066
2067-- same, Es on the 0
2068fmax31460 fma  1   1.123456789012345  0E-0   -> 1.123456789012345
2069fmax31461 fma  1   1.123456789012345  0E-1   -> 1.123456789012345
2070fmax31462 fma  1   1.123456789012345  0E-2   -> 1.123456789012345
2071fmax31463 fma  1   1.123456789012345  0E-3   -> 1.123456789012345
2072fmax31464 fma  1   1.123456789012345  0E-4   -> 1.123456789012345
2073fmax31465 fma  1   1.123456789012345  0E-5   -> 1.123456789012345
2074fmax31466 fma  1   1.123456789012345  0E-6   -> 1.123456789012345
2075fmax31467 fma  1   1.123456789012345  0E-7   -> 1.123456789012345
2076fmax31468 fma  1   1.123456789012345  0E-8   -> 1.123456789012345
2077fmax31469 fma  1   1.123456789012345  0E-9   -> 1.123456789012345
2078fmax31470 fma  1   1.123456789012345  0E-10  -> 1.123456789012345
2079fmax31471 fma  1   1.123456789012345  0E-11  -> 1.123456789012345
2080fmax31472 fma  1   1.123456789012345  0E-12  -> 1.123456789012345
2081fmax31473 fma  1   1.123456789012345  0E-13  -> 1.123456789012345
2082fmax31474 fma  1   1.123456789012345  0E-14  -> 1.123456789012345
2083fmax31475 fma  1   1.123456789012345  0E-15  -> 1.123456789012345
2084-- next four flag Rounded because the 0 extends the result
2085fmax31476 fma  1   1.123456789012345  0E-16  -> 1.123456789012345 Rounded
2086fmax31477 fma  1   1.123456789012345  0E-17  -> 1.123456789012345 Rounded
2087fmax31478 fma  1   1.123456789012345  0E-18  -> 1.123456789012345 Rounded
2088fmax31479 fma  1   1.123456789012345  0E-19  -> 1.123456789012345 Rounded
2089
2090-- sum of two opposite-sign operands is exactly 0 and floor => -0
2091precision:   16
2092maxExponent: 384
2093minexponent: -383
2094
2095rounding:    half_up
2096-- exact zeros from zeros
2097fmax31500 fma  1    0        0E-19  ->  0E-19
2098fmax31501 fma  1   -0        0E-19  ->  0E-19
2099fmax31502 fma  1    0       -0E-19  ->  0E-19
2100fmax31503 fma  1   -0       -0E-19  -> -0E-19
2101fmax31504 fma  1    0E-400   0E-19  ->  0E-398 Clamped
2102fmax31505 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
2103fmax31506 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
2104fmax31507 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
2105-- inexact zeros
2106fmax31511 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2107fmax31512 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2108fmax31513 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2109fmax31514 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2110-- some exact zeros from non-zeros
2111fmax31515 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2112fmax31516 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
2113fmax31517 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
2114fmax31518 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2115
2116rounding:    half_down
2117-- exact zeros from zeros
2118fmax31520 fma  1    0        0E-19  ->  0E-19
2119fmax31521 fma  1   -0        0E-19  ->  0E-19
2120fmax31522 fma  1    0       -0E-19  ->  0E-19
2121fmax31523 fma  1   -0       -0E-19  -> -0E-19
2122fmax31524 fma  1    0E-400   0E-19  ->  0E-398 Clamped
2123fmax31525 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
2124fmax31526 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
2125fmax31527 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
2126-- inexact zeros
2127fmax31531 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2128fmax31532 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2129fmax31533 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2130fmax31534 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2131-- some exact zeros from non-zeros
2132fmax31535 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2133fmax31536 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
2134fmax31537 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
2135fmax31538 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2136
2137rounding:    half_even
2138-- exact zeros from zeros
2139fmax31540 fma  1    0        0E-19  ->  0E-19
2140fmax31541 fma  1   -0        0E-19  ->  0E-19
2141fmax31542 fma  1    0       -0E-19  ->  0E-19
2142fmax31543 fma  1   -0       -0E-19  -> -0E-19
2143fmax31544 fma  1    0E-400   0E-19  ->  0E-398 Clamped
2144fmax31545 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
2145fmax31546 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
2146fmax31547 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
2147-- inexact zeros
2148fmax31551 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2149fmax31552 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2150fmax31553 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2151fmax31554 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2152-- some exact zeros from non-zeros
2153fmax31555 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2154fmax31556 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
2155fmax31557 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
2156fmax31558 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2157
2158rounding:    up
2159-- exact zeros from zeros
2160fmax31560 fma  1    0        0E-19  ->  0E-19
2161fmax31561 fma  1   -0        0E-19  ->  0E-19
2162fmax31562 fma  1    0       -0E-19  ->  0E-19
2163fmax31563 fma  1   -0       -0E-19  -> -0E-19
2164fmax31564 fma  1    0E-400   0E-19  ->  0E-398 Clamped
2165fmax31565 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
2166fmax31566 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
2167fmax31567 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
2168-- inexact zeros
2169fmax31571 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
2170fmax31572 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
2171fmax31573 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
2172fmax31574 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
2173-- some exact zeros from non-zeros
2174fmax31575 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
2175fmax31576 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
2176fmax31577 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
2177fmax31578 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
2178
2179rounding:    down
2180-- exact zeros from zeros
2181fmax31580 fma  1    0        0E-19  ->  0E-19
2182fmax31581 fma  1   -0        0E-19  ->  0E-19
2183fmax31582 fma  1    0       -0E-19  ->  0E-19
2184fmax31583 fma  1   -0       -0E-19  -> -0E-19
2185fmax31584 fma  1    0E-400   0E-19  ->  0E-398 Clamped
2186fmax31585 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
2187fmax31586 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
2188fmax31587 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
2189-- inexact zeros
2190fmax31591 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2191fmax31592 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2192fmax31593 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2193fmax31594 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2194-- some exact zeros from non-zeros
2195fmax31595 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2196fmax31596 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
2197fmax31597 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
2198fmax31598 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2199
2200rounding:    ceiling
2201-- exact zeros from zeros
2202fmax31600 fma  1    0        0E-19  ->  0E-19
2203fmax31601 fma  1   -0        0E-19  ->  0E-19
2204fmax31602 fma  1    0       -0E-19  ->  0E-19
2205fmax31603 fma  1   -0       -0E-19  -> -0E-19
2206fmax31604 fma  1    0E-400   0E-19  ->  0E-398 Clamped
2207fmax31605 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
2208fmax31606 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
2209fmax31607 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
2210-- inexact zeros
2211fmax31611 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
2212fmax31612 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
2213fmax31613 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2214fmax31614 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2215-- some exact zeros from non-zeros
2216fmax31615 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
2217fmax31616 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
2218fmax31617 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
2219fmax31618 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
2220
2221-- and the extra-special ugly case; unusual minuses marked by -- *
2222rounding:    floor
2223-- exact zeros from zeros
2224fmax31620 fma  1    0        0E-19  ->  0E-19
2225fmax31621 fma  1   -0        0E-19  -> -0E-19           -- *
2226fmax31622 fma  1    0       -0E-19  -> -0E-19           -- *
2227fmax31623 fma  1   -0       -0E-19  -> -0E-19
2228fmax31624 fma  1    0E-400   0E-19  ->  0E-398 Clamped
2229fmax31625 fma  1   -0E-400   0E-19  -> -0E-398 Clamped  -- *
2230fmax31626 fma  1    0E-400  -0E-19  -> -0E-398 Clamped  -- *
2231fmax31627 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
2232-- inexact zeros
2233fmax31631 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2234fmax31632 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2235fmax31633 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
2236fmax31634 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
2237-- some exact zeros from non-zeros
2238fmax31635 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
2239fmax31636 fma  1   -1E-401   1E-401 -> -0E-398 Clamped  -- *
2240fmax31637 fma  1    1E-401  -1E-401 -> -0E-398 Clamped  -- *
2241fmax31638 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
2242
2243-- BigDecimal problem testcases 2006.01.23
2244precision:   16
2245maxExponent: 384
2246minexponent: -383
2247
2248rounding:  down
2249precision: 7
2250fmax31651 fma  1    10001E+2  -2E+1 -> 1.00008E+6
2251precision: 6
2252fmax31652 fma  1    10001E+2  -2E+1 -> 1.00008E+6
2253precision: 5
2254fmax31653 fma  1    10001E+2  -2E+1 -> 1.0000E+6   Inexact Rounded
2255precision: 4
2256fmax31654 fma  1    10001E+2  -2E+1 -> 1.000E+6    Inexact Rounded
2257precision: 3
2258fmax31655 fma  1    10001E+2  -2E+1 -> 1.00E+6     Inexact Rounded
2259precision: 2
2260fmax31656 fma  1    10001E+2  -2E+1 -> 1.0E+6      Inexact Rounded
2261precision: 1
2262fmax31657 fma  1    10001E+2  -2E+1 -> 1E+6        Inexact Rounded
2263
2264rounding:  half_even
2265precision: 7
2266fmax31661 fma  1    10001E+2  -2E+1 -> 1.00008E+6
2267precision: 6
2268fmax31662 fma  1    10001E+2  -2E+1 -> 1.00008E+6
2269precision: 5
2270fmax31663 fma  1    10001E+2  -2E+1 -> 1.0001E+6   Inexact Rounded
2271precision: 4
2272fmax31664 fma  1    10001E+2  -2E+1 -> 1.000E+6    Inexact Rounded
2273precision: 3
2274fmax31665 fma  1    10001E+2  -2E+1 -> 1.00E+6     Inexact Rounded
2275precision: 2
2276fmax31666 fma  1    10001E+2  -2E+1 -> 1.0E+6      Inexact Rounded
2277precision: 1
2278fmax31667 fma  1    10001E+2  -2E+1 -> 1E+6        Inexact Rounded
2279
2280rounding:  up
2281precision: 7
2282fmax31671 fma  1    10001E+2  -2E+1 -> 1.00008E+6
2283precision: 6
2284fmax31672 fma  1    10001E+2  -2E+1 -> 1.00008E+6
2285precision: 5
2286fmax31673 fma  1    10001E+2  -2E+1 -> 1.0001E+6   Inexact Rounded
2287precision: 4
2288fmax31674 fma  1    10001E+2  -2E+1 -> 1.001E+6    Inexact Rounded
2289precision: 3
2290fmax31675 fma  1    10001E+2  -2E+1 -> 1.01E+6     Inexact Rounded
2291precision: 2
2292fmax31676 fma  1    10001E+2  -2E+1 -> 1.1E+6      Inexact Rounded
2293precision: 1
2294fmax31677 fma  1    10001E+2  -2E+1 -> 2E+6        Inexact Rounded
2295
2296precision:   34
2297rounding:    half_up
2298maxExponent: 6144
2299minExponent: -6143
2300-- Examples from SQL proposal (Krishna Kulkarni)
2301fmax31701  fma  1   130E-2    120E-2    -> 2.50
2302fmax31702  fma  1   130E-2    12E-1     -> 2.50
2303fmax31703  fma  1   130E-2    1E0       -> 2.30
2304fmax31704  fma  1   1E2       1E4       -> 1.01E+4
2305fmax31705  subtract 130E-2  120E-2 -> 0.10
2306fmax31706  subtract 130E-2  12E-1  -> 0.10
2307fmax31707  subtract 130E-2  1E0    -> 0.30
2308fmax31708  subtract 1E2     1E4    -> -9.9E+3
2309
2310------------------------------------------------------------------------
2311-- Same as above, using decimal64 default parameters                  --
2312------------------------------------------------------------------------
2313precision:   16
2314rounding:    half_even
2315maxExponent: 384
2316minexponent: -383
2317
2318-- [first group are 'quick confidence check']
2319fmax36001 fma  1   1       1       ->  2
2320fmax36002 fma  1   2       3       ->  5
2321fmax36003 fma  1   '5.75'  '3.3'   ->  9.05
2322fmax36004 fma  1   '5'     '-3'    ->  2
2323fmax36005 fma  1   '-5'    '-3'    ->  -8
2324fmax36006 fma  1   '-7'    '2.5'   ->  -4.5
2325fmax36007 fma  1   '0.7'   '0.3'   ->  1.0
2326fmax36008 fma  1   '1.25'  '1.25'  ->  2.50
2327fmax36009 fma  1   '1.23456789'  '1.00000000' -> '2.23456789'
2328fmax36010 fma  1   '1.23456789'  '1.00000011' -> '2.23456800'
2329
2330fmax36011 fma  1   '0.44444444444444444'  '0.55555555555555555' -> '1.000000000000000' Inexact Rounded
2331fmax36012 fma  1   '0.44444444444444440'  '0.55555555555555555' -> '1.000000000000000' Inexact Rounded
2332fmax36013 fma  1   '0.44444444444444444'  '0.55555555555555550' -> '0.9999999999999999' Inexact Rounded
2333fmax36014 fma  1   '0.444444444444444449'    '0' -> '0.4444444444444444' Inexact Rounded
2334fmax36015 fma  1   '0.4444444444444444499'   '0' -> '0.4444444444444444' Inexact Rounded
2335fmax36016 fma  1   '0.44444444444444444999'  '0' -> '0.4444444444444444' Inexact Rounded
2336fmax36017 fma  1   '0.44444444444444445000'  '0' -> '0.4444444444444444' Inexact Rounded
2337fmax36018 fma  1   '0.44444444444444445001'  '0' -> '0.4444444444444445' Inexact Rounded
2338fmax36019 fma  1   '0.4444444444444444501'   '0' -> '0.4444444444444445' Inexact Rounded
2339fmax36020 fma  1   '0.444444444444444451'    '0' -> '0.4444444444444445' Inexact Rounded
2340
2341fmax36021 fma  1   0 1 -> 1
2342fmax36022 fma  1   1 1 -> 2
2343fmax36023 fma  1   2 1 -> 3
2344fmax36024 fma  1   3 1 -> 4
2345fmax36025 fma  1   4 1 -> 5
2346fmax36026 fma  1   5 1 -> 6
2347fmax36027 fma  1   6 1 -> 7
2348fmax36028 fma  1   7 1 -> 8
2349fmax36029 fma  1   8 1 -> 9
2350fmax36030 fma  1   9 1 -> 10
2351
2352-- some carrying effects
2353fmax36031 fma  1   '0.9998'  '0.0000' -> '0.9998'
2354fmax36032 fma  1   '0.9998'  '0.0001' -> '0.9999'
2355fmax36033 fma  1   '0.9998'  '0.0002' -> '1.0000'
2356fmax36034 fma  1   '0.9998'  '0.0003' -> '1.0001'
2357
2358fmax36035 fma  1   '70'      '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
2359fmax36036 fma  1   '700'     '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
2360fmax36037 fma  1   '7000'    '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
2361fmax36038 fma  1   '70000'   '10000e+16' -> '1.000000000000001E+20' Inexact Rounded
2362fmax36039 fma  1   '700000'  '10000e+16' -> '1.000000000000007E+20' Rounded
2363
2364-- symmetry:
2365fmax36040 fma  1   '10000e+16'  '70' -> '1.000000000000000E+20' Inexact Rounded
2366fmax36041 fma  1   '10000e+16'  '700' -> '1.000000000000000E+20' Inexact Rounded
2367fmax36042 fma  1   '10000e+16'  '7000' -> '1.000000000000000E+20' Inexact Rounded
2368fmax36044 fma  1   '10000e+16'  '70000' -> '1.000000000000001E+20' Inexact Rounded
2369fmax36045 fma  1   '10000e+16'  '700000' -> '1.000000000000007E+20' Rounded
2370
2371fmax36046 fma  1   '10000e+9'  '7' -> '10000000000007'
2372fmax36047 fma  1   '10000e+9'  '70' -> '10000000000070'
2373fmax36048 fma  1   '10000e+9'  '700' -> '10000000000700'
2374fmax36049 fma  1   '10000e+9'  '7000' -> '10000000007000'
2375fmax36050 fma  1   '10000e+9'  '70000' -> '10000000070000'
2376fmax36051 fma  1   '10000e+9'  '700000' -> '10000000700000'
2377
2378-- examples from decarith
2379fmax36053 fma  1   '12' '7.00' -> '19.00'
2380fmax36054 fma  1   '1.3' '-1.07' -> '0.23'
2381fmax36055 fma  1   '1.3' '-1.30' -> '0.00'
2382fmax36056 fma  1   '1.3' '-2.07' -> '-0.77'
2383fmax36057 fma  1   '1E+2' '1E+4' -> '1.01E+4'
2384
2385-- from above
2386fmax36061 fma  1   1 '0.1' -> '1.1'
2387fmax36062 fma  1   1 '0.01' -> '1.01'
2388fmax36063 fma  1   1 '0.001' -> '1.001'
2389fmax36064 fma  1   1 '0.0001' -> '1.0001'
2390fmax36065 fma  1   1 '0.00001' -> '1.00001'
2391fmax36066 fma  1   1 '0.000001' -> '1.000001'
2392fmax36067 fma  1   1 '0.0000001' -> '1.0000001'
2393fmax36068 fma  1   1 '0.00000001' -> '1.00000001'
2394
2395-- some funny zeros [in case of bad signum]
2396fmax36070 fma  1   1  0    -> 1
2397fmax36071 fma  1   1 0.    -> 1
2398fmax36072 fma  1   1  .0   -> 1.0
2399fmax36073 fma  1   1 0.0   -> 1.0
2400fmax36074 fma  1   1 0.00  -> 1.00
2401fmax36075 fma  1    0  1   -> 1
2402fmax36076 fma  1   0.  1   -> 1
2403fmax36077 fma  1    .0 1   -> 1.0
2404fmax36078 fma  1   0.0 1   -> 1.0
2405fmax36079 fma  1   0.00 1  -> 1.00
2406
2407-- some carries
2408fmax36080 fma  1   9999999999999998 1  -> 9999999999999999
2409fmax36081 fma  1   9999999999999999 1  -> 1.000000000000000E+16 Rounded
2410fmax36082 fma  1    999999999999999 1  -> 1000000000000000
2411fmax36083 fma  1      9999999999999 1  -> 10000000000000
2412fmax36084 fma  1        99999999999 1  -> 100000000000
2413fmax36085 fma  1          999999999 1  -> 1000000000
2414fmax36086 fma  1            9999999 1  -> 10000000
2415fmax36087 fma  1              99999 1  -> 100000
2416fmax36088 fma  1                999 1  -> 1000
2417fmax36089 fma  1                  9 1  -> 10
2418
2419
2420-- more LHS swaps
2421fmax36090 fma  1   '-56267E-10'   0 ->  '-0.0000056267'
2422fmax36091 fma  1   '-56267E-6'    0 ->  '-0.056267'
2423fmax36092 fma  1   '-56267E-5'    0 ->  '-0.56267'
2424fmax36093 fma  1   '-56267E-4'    0 ->  '-5.6267'
2425fmax36094 fma  1   '-56267E-3'    0 ->  '-56.267'
2426fmax36095 fma  1   '-56267E-2'    0 ->  '-562.67'
2427fmax36096 fma  1   '-56267E-1'    0 ->  '-5626.7'
2428fmax36097 fma  1   '-56267E-0'    0 ->  '-56267'
2429fmax36098 fma  1   '-5E-10'       0 ->  '-5E-10'
2430fmax36099 fma  1   '-5E-7'        0 ->  '-5E-7'
2431fmax36100 fma  1   '-5E-6'        0 ->  '-0.000005'
2432fmax36101 fma  1   '-5E-5'        0 ->  '-0.00005'
2433fmax36102 fma  1   '-5E-4'        0 ->  '-0.0005'
2434fmax36103 fma  1   '-5E-1'        0 ->  '-0.5'
2435fmax36104 fma  1   '-5E0'         0 ->  '-5'
2436fmax36105 fma  1   '-5E1'         0 ->  '-50'
2437fmax36106 fma  1   '-5E5'         0 ->  '-500000'
2438fmax36107 fma  1   '-5E15'        0 ->  '-5000000000000000'
2439fmax36108 fma  1   '-5E16'        0 ->  '-5.000000000000000E+16'   Rounded
2440fmax36109 fma  1   '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded
2441fmax36110 fma  1   '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded
2442fmax36111 fma  1   '-5E100'       0 ->  '-5.000000000000000E+100' Rounded
2443
2444-- more RHS swaps
2445fmax36113 fma  1   0  '-56267E-10' ->  '-0.0000056267'
2446fmax36114 fma  1   0  '-56267E-6'  ->  '-0.056267'
2447fmax36116 fma  1   0  '-56267E-5'  ->  '-0.56267'
2448fmax36117 fma  1   0  '-56267E-4'  ->  '-5.6267'
2449fmax36119 fma  1   0  '-56267E-3'  ->  '-56.267'
2450fmax36120 fma  1   0  '-56267E-2'  ->  '-562.67'
2451fmax36121 fma  1   0  '-56267E-1'  ->  '-5626.7'
2452fmax36122 fma  1   0  '-56267E-0'  ->  '-56267'
2453fmax36123 fma  1   0  '-5E-10'     ->  '-5E-10'
2454fmax36124 fma  1   0  '-5E-7'      ->  '-5E-7'
2455fmax36125 fma  1   0  '-5E-6'      ->  '-0.000005'
2456fmax36126 fma  1   0  '-5E-5'      ->  '-0.00005'
2457fmax36127 fma  1   0  '-5E-4'      ->  '-0.0005'
2458fmax36128 fma  1   0  '-5E-1'      ->  '-0.5'
2459fmax36129 fma  1   0  '-5E0'       ->  '-5'
2460fmax36130 fma  1   0  '-5E1'       ->  '-50'
2461fmax36131 fma  1   0  '-5E5'       ->  '-500000'
2462fmax36132 fma  1   0  '-5E15'      ->  '-5000000000000000'
2463fmax36133 fma  1   0  '-5E16'      ->  '-5.000000000000000E+16'   Rounded
2464fmax36134 fma  1   0  '-5E17'      ->  '-5.000000000000000E+17'   Rounded
2465fmax36135 fma  1   0  '-5E18'      ->  '-5.000000000000000E+18'   Rounded
2466fmax36136 fma  1   0  '-5E100'     ->  '-5.000000000000000E+100'  Rounded
2467
2468-- related
2469fmax36137 fma  1    1  '0E-19'      ->  '1.000000000000000'  Rounded
2470fmax36138 fma  1   -1  '0E-19'      ->  '-1.000000000000000' Rounded
2471fmax36139 fma  1   '0E-19' 1        ->  '1.000000000000000'  Rounded
2472fmax36140 fma  1   '0E-19' -1       ->  '-1.000000000000000' Rounded
2473fmax36141 fma  1   1E+11   0.0000   ->  '100000000000.0000'
2474fmax36142 fma  1   1E+11   0.00000  ->  '100000000000.0000'  Rounded
2475fmax36143 fma  1   0.000   1E+12    ->  '1000000000000.000'
2476fmax36144 fma  1   0.0000  1E+12    ->  '1000000000000.000'  Rounded
2477
2478-- [some of the next group are really constructor tests]
2479fmax36146 fma  1   '00.0'  0       ->  '0.0'
2480fmax36147 fma  1   '0.00'  0       ->  '0.00'
2481fmax36148 fma  1    0      '0.00'  ->  '0.00'
2482fmax36149 fma  1    0      '00.0'  ->  '0.0'
2483fmax36150 fma  1   '00.0'  '0.00'  ->  '0.00'
2484fmax36151 fma  1   '0.00'  '00.0'  ->  '0.00'
2485fmax36152 fma  1   '3'     '.3'    ->  '3.3'
2486fmax36153 fma  1   '3.'    '.3'    ->  '3.3'
2487fmax36154 fma  1   '3.0'   '.3'    ->  '3.3'
2488fmax36155 fma  1   '3.00'  '.3'    ->  '3.30'
2489fmax36156 fma  1   '3'     '3'     ->  '6'
2490fmax36157 fma  1   '3'     '+3'    ->  '6'
2491fmax36158 fma  1   '3'     '-3'    ->  '0'
2492fmax36159 fma  1   '0.3'   '-0.3'  ->  '0.0'
2493fmax36160 fma  1   '0.03'  '-0.03' ->  '0.00'
2494
2495-- try borderline precision, with carries, etc.
2496fmax36161 fma  1   '1E+13' '-1'    -> '9999999999999'
2497fmax36162 fma  1   '1E+13'  '1.11' -> '10000000000001.11'
2498fmax36163 fma  1   '1.11'  '1E+13' -> '10000000000001.11'
2499fmax36164 fma  1   '-1'    '1E+13' -> '9999999999999'
2500fmax36165 fma  1   '7E+13' '-1'    -> '69999999999999'
2501fmax36166 fma  1   '7E+13'  '1.11' -> '70000000000001.11'
2502fmax36167 fma  1   '1.11'  '7E+13' -> '70000000000001.11'
2503fmax36168 fma  1   '-1'    '7E+13' -> '69999999999999'
2504
2505--                    1234567890123456      1234567890123456      1 234567890123456
2506fmax36170 fma  1   '0.4444444444444444'  '0.5555555555555563' -> '1.000000000000001' Inexact Rounded
2507fmax36171 fma  1   '0.4444444444444444'  '0.5555555555555562' -> '1.000000000000001' Inexact Rounded
2508fmax36172 fma  1   '0.4444444444444444'  '0.5555555555555561' -> '1.000000000000000' Inexact Rounded
2509fmax36173 fma  1   '0.4444444444444444'  '0.5555555555555560' -> '1.000000000000000' Inexact Rounded
2510fmax36174 fma  1   '0.4444444444444444'  '0.5555555555555559' -> '1.000000000000000' Inexact Rounded
2511fmax36175 fma  1   '0.4444444444444444'  '0.5555555555555558' -> '1.000000000000000' Inexact Rounded
2512fmax36176 fma  1   '0.4444444444444444'  '0.5555555555555557' -> '1.000000000000000' Inexact Rounded
2513fmax36177 fma  1   '0.4444444444444444'  '0.5555555555555556' -> '1.000000000000000' Rounded
2514fmax36178 fma  1   '0.4444444444444444'  '0.5555555555555555' -> '0.9999999999999999'
2515fmax36179 fma  1   '0.4444444444444444'  '0.5555555555555554' -> '0.9999999999999998'
2516fmax36180 fma  1   '0.4444444444444444'  '0.5555555555555553' -> '0.9999999999999997'
2517fmax36181 fma  1   '0.4444444444444444'  '0.5555555555555552' -> '0.9999999999999996'
2518fmax36182 fma  1   '0.4444444444444444'  '0.5555555555555551' -> '0.9999999999999995'
2519fmax36183 fma  1   '0.4444444444444444'  '0.5555555555555550' -> '0.9999999999999994'
2520
2521-- and some more, including residue effects and different roundings
2522rounding: half_up
2523fmax36200 fma  1   '6543210123456789' 0             -> '6543210123456789'
2524fmax36201 fma  1   '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
2525fmax36202 fma  1   '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
2526fmax36203 fma  1   '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
2527fmax36204 fma  1   '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
2528fmax36205 fma  1   '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
2529fmax36206 fma  1   '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
2530fmax36207 fma  1   '6543210123456789' 0.499999   -> '6543210123456789' Inexact Rounded
2531fmax36208 fma  1   '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
2532fmax36209 fma  1   '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
2533fmax36210 fma  1   '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
2534fmax36211 fma  1   '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
2535fmax36212 fma  1   '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
2536fmax36213 fma  1   '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
2537fmax36214 fma  1   '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
2538fmax36215 fma  1   '6543210123456789' 0.999999   -> '6543210123456790' Inexact Rounded
2539fmax36216 fma  1   '6543210123456789' 1             -> '6543210123456790'
2540fmax36217 fma  1   '6543210123456789' 1.000000001   -> '6543210123456790' Inexact Rounded
2541fmax36218 fma  1   '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
2542fmax36219 fma  1   '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
2543
2544rounding: half_even
2545fmax36220 fma  1   '6543210123456789' 0             -> '6543210123456789'
2546fmax36221 fma  1   '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
2547fmax36222 fma  1   '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
2548fmax36223 fma  1   '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
2549fmax36224 fma  1   '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
2550fmax36225 fma  1   '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
2551fmax36226 fma  1   '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
2552fmax36227 fma  1   '6543210123456789' 0.499999   -> '6543210123456789' Inexact Rounded
2553fmax36228 fma  1   '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
2554fmax36229 fma  1   '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
2555fmax36230 fma  1   '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
2556fmax36231 fma  1   '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
2557fmax36232 fma  1   '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
2558fmax36233 fma  1   '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
2559fmax36234 fma  1   '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
2560fmax36235 fma  1   '6543210123456789' 0.999999   -> '6543210123456790' Inexact Rounded
2561fmax36236 fma  1   '6543210123456789' 1             -> '6543210123456790'
2562fmax36237 fma  1   '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
2563fmax36238 fma  1   '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
2564fmax36239 fma  1   '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
2565-- critical few with even bottom digit...
2566fmax36240 fma  1   '6543210123456788' 0.499999   -> '6543210123456788' Inexact Rounded
2567fmax36241 fma  1   '6543210123456788' 0.5           -> '6543210123456788' Inexact Rounded
2568fmax36242 fma  1   '6543210123456788' 0.500000001   -> '6543210123456789' Inexact Rounded
2569
2570rounding: down
2571fmax36250 fma  1   '6543210123456789' 0             -> '6543210123456789'
2572fmax36251 fma  1   '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
2573fmax36252 fma  1   '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
2574fmax36253 fma  1   '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
2575fmax36254 fma  1   '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
2576fmax36255 fma  1   '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
2577fmax36256 fma  1   '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
2578fmax36257 fma  1   '6543210123456789' 0.499999   -> '6543210123456789' Inexact Rounded
2579fmax36258 fma  1   '6543210123456789' 0.5           -> '6543210123456789' Inexact Rounded
2580fmax36259 fma  1   '6543210123456789' 0.500000001   -> '6543210123456789' Inexact Rounded
2581fmax36260 fma  1   '6543210123456789' 0.500001      -> '6543210123456789' Inexact Rounded
2582fmax36261 fma  1   '6543210123456789' 0.51          -> '6543210123456789' Inexact Rounded
2583fmax36262 fma  1   '6543210123456789' 0.6           -> '6543210123456789' Inexact Rounded
2584fmax36263 fma  1   '6543210123456789' 0.9           -> '6543210123456789' Inexact Rounded
2585fmax36264 fma  1   '6543210123456789' 0.99999       -> '6543210123456789' Inexact Rounded
2586fmax36265 fma  1   '6543210123456789' 0.999999   -> '6543210123456789' Inexact Rounded
2587fmax36266 fma  1   '6543210123456789' 1             -> '6543210123456790'
2588fmax36267 fma  1   '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
2589fmax36268 fma  1   '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
2590fmax36269 fma  1   '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
2591
2592-- 1 in last place tests
2593rounding: half_even
2594fmax36301 fma  1    -1   1      ->   0
2595fmax36302 fma  1     0   1      ->   1
2596fmax36303 fma  1     1   1      ->   2
2597fmax36304 fma  1    12   1      ->  13
2598fmax36305 fma  1    98   1      ->  99
2599fmax36306 fma  1    99   1      -> 100
2600fmax36307 fma  1   100   1      -> 101
2601fmax36308 fma  1   101   1      -> 102
2602fmax36309 fma  1    -1  -1      ->  -2
2603fmax36310 fma  1     0  -1      ->  -1
2604fmax36311 fma  1     1  -1      ->   0
2605fmax36312 fma  1    12  -1      ->  11
2606fmax36313 fma  1    98  -1      ->  97
2607fmax36314 fma  1    99  -1      ->  98
2608fmax36315 fma  1   100  -1      ->  99
2609fmax36316 fma  1   101  -1      -> 100
2610
2611fmax36321 fma  1   -0.01  0.01    ->  0.00
2612fmax36322 fma  1    0.00  0.01    ->  0.01
2613fmax36323 fma  1    0.01  0.01    ->  0.02
2614fmax36324 fma  1    0.12  0.01    ->  0.13
2615fmax36325 fma  1    0.98  0.01    ->  0.99
2616fmax36326 fma  1    0.99  0.01    ->  1.00
2617fmax36327 fma  1    1.00  0.01    ->  1.01
2618fmax36328 fma  1    1.01  0.01    ->  1.02
2619fmax36329 fma  1   -0.01 -0.01    -> -0.02
2620fmax36330 fma  1    0.00 -0.01    -> -0.01
2621fmax36331 fma  1    0.01 -0.01    ->  0.00
2622fmax36332 fma  1    0.12 -0.01    ->  0.11
2623fmax36333 fma  1    0.98 -0.01    ->  0.97
2624fmax36334 fma  1    0.99 -0.01    ->  0.98
2625fmax36335 fma  1    1.00 -0.01    ->  0.99
2626fmax36336 fma  1    1.01 -0.01    ->  1.00
2627
2628-- some more cases where fma  1  ing 0 affects the coefficient
2629fmax36340 fma  1   1E+3    0    ->         1000
2630fmax36341 fma  1   1E+15   0    ->    1000000000000000
2631fmax36342 fma  1   1E+16   0    ->   1.000000000000000E+16  Rounded
2632fmax36343 fma  1   1E+17   0    ->   1.000000000000000E+17  Rounded
2633-- which simply follow from these cases ...
2634fmax36344 fma  1   1E+3    1    ->         1001
2635fmax36345 fma  1   1E+15   1    ->    1000000000000001
2636fmax36346 fma  1   1E+16   1    ->   1.000000000000000E+16  Inexact Rounded
2637fmax36347 fma  1   1E+17   1    ->   1.000000000000000E+17  Inexact Rounded
2638fmax36348 fma  1   1E+3    7    ->         1007
2639fmax36349 fma  1   1E+15   7    ->    1000000000000007
2640fmax36350 fma  1   1E+16   7    ->   1.000000000000001E+16  Inexact Rounded
2641fmax36351 fma  1   1E+17   7    ->   1.000000000000000E+17  Inexact Rounded
2642
2643-- tryzeros cases
2644fmax36361  fma  1   0E+50 10000E+1  -> 1.0000E+5
2645fmax36362  fma  1   10000E+1 0E-50  -> 100000.0000000000  Rounded
2646fmax36363  fma  1   10000E+1 10000E-50  -> 100000.0000000000  Rounded Inexact
2647fmax36364  fma  1   12.34    0e-398  -> 12.34000000000000  Rounded
2648
2649-- ulp replacement tests
2650fmax36400 fma  1     1   77e-14      ->  1.00000000000077
2651fmax36401 fma  1     1   77e-15      ->  1.000000000000077
2652fmax36402 fma  1     1   77e-16      ->  1.000000000000008 Inexact Rounded
2653fmax36403 fma  1     1   77e-17      ->  1.000000000000001 Inexact Rounded
2654fmax36404 fma  1     1   77e-18      ->  1.000000000000000 Inexact Rounded
2655fmax36405 fma  1     1   77e-19      ->  1.000000000000000 Inexact Rounded
2656fmax36406 fma  1     1   77e-99      ->  1.000000000000000 Inexact Rounded
2657
2658fmax36410 fma  1    10   77e-14      ->  10.00000000000077
2659fmax36411 fma  1    10   77e-15      ->  10.00000000000008 Inexact Rounded
2660fmax36412 fma  1    10   77e-16      ->  10.00000000000001 Inexact Rounded
2661fmax36413 fma  1    10   77e-17      ->  10.00000000000000 Inexact Rounded
2662fmax36414 fma  1    10   77e-18      ->  10.00000000000000 Inexact Rounded
2663fmax36415 fma  1    10   77e-19      ->  10.00000000000000 Inexact Rounded
2664fmax36416 fma  1    10   77e-99      ->  10.00000000000000 Inexact Rounded
2665
2666fmax36420 fma  1    77e-14       1   ->  1.00000000000077
2667fmax36421 fma  1    77e-15       1   ->  1.000000000000077
2668fmax36422 fma  1    77e-16       1   ->  1.000000000000008 Inexact Rounded
2669fmax36423 fma  1    77e-17       1   ->  1.000000000000001 Inexact Rounded
2670fmax36424 fma  1    77e-18       1   ->  1.000000000000000 Inexact Rounded
2671fmax36425 fma  1    77e-19       1   ->  1.000000000000000 Inexact Rounded
2672fmax36426 fma  1    77e-99       1   ->  1.000000000000000 Inexact Rounded
2673
2674fmax36430 fma  1    77e-14      10   ->  10.00000000000077
2675fmax36431 fma  1    77e-15      10   ->  10.00000000000008 Inexact Rounded
2676fmax36432 fma  1    77e-16      10   ->  10.00000000000001 Inexact Rounded
2677fmax36433 fma  1    77e-17      10   ->  10.00000000000000 Inexact Rounded
2678fmax36434 fma  1    77e-18      10   ->  10.00000000000000 Inexact Rounded
2679fmax36435 fma  1    77e-19      10   ->  10.00000000000000 Inexact Rounded
2680fmax36436 fma  1    77e-99      10   ->  10.00000000000000 Inexact Rounded
2681
2682-- negative ulps
2683fmax36440 fma  1     1   -77e-14      ->  0.99999999999923
2684fmax36441 fma  1     1   -77e-15      ->  0.999999999999923
2685fmax36442 fma  1     1   -77e-16      ->  0.9999999999999923
2686fmax36443 fma  1     1   -77e-17      ->  0.9999999999999992 Inexact Rounded
2687fmax36444 fma  1     1   -77e-18      ->  0.9999999999999999 Inexact Rounded
2688fmax36445 fma  1     1   -77e-19      ->  1.000000000000000 Inexact Rounded
2689fmax36446 fma  1     1   -77e-99      ->  1.000000000000000 Inexact Rounded
2690
2691fmax36450 fma  1    10   -77e-14      ->   9.99999999999923
2692fmax36451 fma  1    10   -77e-15      ->   9.999999999999923
2693fmax36452 fma  1    10   -77e-16      ->   9.999999999999992 Inexact Rounded
2694fmax36453 fma  1    10   -77e-17      ->   9.999999999999999 Inexact Rounded
2695fmax36454 fma  1    10   -77e-18      ->  10.00000000000000 Inexact Rounded
2696fmax36455 fma  1    10   -77e-19      ->  10.00000000000000 Inexact Rounded
2697fmax36456 fma  1    10   -77e-99      ->  10.00000000000000 Inexact Rounded
2698
2699fmax36460 fma  1    -77e-14       1   ->  0.99999999999923
2700fmax36461 fma  1    -77e-15       1   ->  0.999999999999923
2701fmax36462 fma  1    -77e-16       1   ->  0.9999999999999923
2702fmax36463 fma  1    -77e-17       1   ->  0.9999999999999992 Inexact Rounded
2703fmax36464 fma  1    -77e-18       1   ->  0.9999999999999999 Inexact Rounded
2704fmax36465 fma  1    -77e-19       1   ->  1.000000000000000 Inexact Rounded
2705fmax36466 fma  1    -77e-99       1   ->  1.000000000000000 Inexact Rounded
2706
2707fmax36470 fma  1    -77e-14      10   ->   9.99999999999923
2708fmax36471 fma  1    -77e-15      10   ->   9.999999999999923
2709fmax36472 fma  1    -77e-16      10   ->   9.999999999999992 Inexact Rounded
2710fmax36473 fma  1    -77e-17      10   ->   9.999999999999999 Inexact Rounded
2711fmax36474 fma  1    -77e-18      10   ->  10.00000000000000 Inexact Rounded
2712fmax36475 fma  1    -77e-19      10   ->  10.00000000000000 Inexact Rounded
2713fmax36476 fma  1    -77e-99      10   ->  10.00000000000000 Inexact Rounded
2714
2715-- negative ulps
2716fmax36480 fma  1    -1    77e-14      ->  -0.99999999999923
2717fmax36481 fma  1    -1    77e-15      ->  -0.999999999999923
2718fmax36482 fma  1    -1    77e-16      ->  -0.9999999999999923
2719fmax36483 fma  1    -1    77e-17      ->  -0.9999999999999992 Inexact Rounded
2720fmax36484 fma  1    -1    77e-18      ->  -0.9999999999999999 Inexact Rounded
2721fmax36485 fma  1    -1    77e-19      ->  -1.000000000000000 Inexact Rounded
2722fmax36486 fma  1    -1    77e-99      ->  -1.000000000000000 Inexact Rounded
2723
2724fmax36490 fma  1   -10    77e-14      ->   -9.99999999999923
2725fmax36491 fma  1   -10    77e-15      ->   -9.999999999999923
2726fmax36492 fma  1   -10    77e-16      ->   -9.999999999999992 Inexact Rounded
2727fmax36493 fma  1   -10    77e-17      ->   -9.999999999999999 Inexact Rounded
2728fmax36494 fma  1   -10    77e-18      ->  -10.00000000000000 Inexact Rounded
2729fmax36495 fma  1   -10    77e-19      ->  -10.00000000000000 Inexact Rounded
2730fmax36496 fma  1   -10    77e-99      ->  -10.00000000000000 Inexact Rounded
2731
2732fmax36500 fma  1     77e-14      -1   ->  -0.99999999999923
2733fmax36501 fma  1     77e-15      -1   ->  -0.999999999999923
2734fmax36502 fma  1     77e-16      -1   ->  -0.9999999999999923
2735fmax36503 fma  1     77e-17      -1   ->  -0.9999999999999992 Inexact Rounded
2736fmax36504 fma  1     77e-18      -1   ->  -0.9999999999999999 Inexact Rounded
2737fmax36505 fma  1     77e-19      -1   ->  -1.000000000000000 Inexact Rounded
2738fmax36506 fma  1     77e-99      -1   ->  -1.000000000000000 Inexact Rounded
2739
2740fmax36510 fma  1     77e-14      -10  ->   -9.99999999999923
2741fmax36511 fma  1     77e-15      -10  ->   -9.999999999999923
2742fmax36512 fma  1     77e-16      -10  ->   -9.999999999999992 Inexact Rounded
2743fmax36513 fma  1     77e-17      -10  ->   -9.999999999999999 Inexact Rounded
2744fmax36514 fma  1     77e-18      -10  ->  -10.00000000000000 Inexact Rounded
2745fmax36515 fma  1     77e-19      -10  ->  -10.00000000000000 Inexact Rounded
2746fmax36516 fma  1     77e-99      -10  ->  -10.00000000000000 Inexact Rounded
2747
2748
2749-- long operands
2750fmax36521 fma  1   101234562345678000 0 -> 1.012345623456780E+17 Rounded
2751fmax36522 fma  1   0 101234562345678000 -> 1.012345623456780E+17 Rounded
2752fmax36523 fma  1   10123456234567800  0 -> 1.012345623456780E+16 Rounded
2753fmax36524 fma  1   0 10123456234567800  -> 1.012345623456780E+16 Rounded
2754fmax36525 fma  1   10123456234567890  0 -> 1.012345623456789E+16 Rounded
2755fmax36526 fma  1   0 10123456234567890  -> 1.012345623456789E+16 Rounded
2756fmax36527 fma  1   10123456234567891  0 -> 1.012345623456789E+16 Inexact Rounded
2757fmax36528 fma  1   0 10123456234567891  -> 1.012345623456789E+16 Inexact Rounded
2758fmax36529 fma  1   101234562345678901 0 -> 1.012345623456789E+17 Inexact Rounded
2759fmax36530 fma  1   0 101234562345678901 -> 1.012345623456789E+17 Inexact Rounded
2760fmax36531 fma  1   10123456234567896  0 -> 1.012345623456790E+16 Inexact Rounded
2761fmax36532 fma  1   0 10123456234567896  -> 1.012345623456790E+16 Inexact Rounded
2762
2763-- verify a query
2764rounding:     down
2765fmax36561 fma  1   1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
2766fmax36562 fma  1        0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
2767-- and using decimal64 bounds...
2768rounding:     down
2769fmax36563 fma  1   1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
2770fmax36564 fma  1        0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
2771
2772-- more zeros, etc.
2773rounding: half_even
2774
2775fmax36701 fma  1   5.00 1.00E-3 -> 5.00100
2776fmax36702 fma  1   00.00 0.000  -> 0.000
2777fmax36703 fma  1   00.00 0E-3   -> 0.000
2778fmax36704 fma  1   0E-3  00.00  -> 0.000
2779
2780fmax36710 fma  1   0E+3  00.00  -> 0.00
2781fmax36711 fma  1   0E+3  00.0   -> 0.0
2782fmax36712 fma  1   0E+3  00.    -> 0
2783fmax36713 fma  1   0E+3  00.E+1 -> 0E+1
2784fmax36714 fma  1   0E+3  00.E+2 -> 0E+2
2785fmax36715 fma  1   0E+3  00.E+3 -> 0E+3
2786fmax36716 fma  1   0E+3  00.E+4 -> 0E+3
2787fmax36717 fma  1   0E+3  00.E+5 -> 0E+3
2788fmax36718 fma  1   0E+3  -00.0   -> 0.0
2789fmax36719 fma  1   0E+3  -00.    -> 0
2790fmax36731 fma  1   0E+3  -00.E+1 -> 0E+1
2791
2792fmax36720 fma  1   00.00  0E+3  -> 0.00
2793fmax36721 fma  1   00.0   0E+3  -> 0.0
2794fmax36722 fma  1   00.    0E+3  -> 0
2795fmax36723 fma  1   00.E+1 0E+3  -> 0E+1
2796fmax36724 fma  1   00.E+2 0E+3  -> 0E+2
2797fmax36725 fma  1   00.E+3 0E+3  -> 0E+3
2798fmax36726 fma  1   00.E+4 0E+3  -> 0E+3
2799fmax36727 fma  1   00.E+5 0E+3  -> 0E+3
2800fmax36728 fma  1   -00.00 0E+3  -> 0.00
2801fmax36729 fma  1   -00.0  0E+3  -> 0.0
2802fmax36730 fma  1   -00.   0E+3  -> 0
2803
2804fmax36732 fma  1    0     0     ->  0
2805fmax36733 fma  1    0    -0     ->  0
2806fmax36734 fma  1   -0     0     ->  0
2807fmax36735 fma  1   -0    -0     -> -0     -- IEEE 854 special case
2808
2809fmax36736 fma  1    1    -1     ->  0
2810fmax36737 fma  1   -1    -1     -> -2
2811fmax36738 fma  1    1     1     ->  2
2812fmax36739 fma  1   -1     1     ->  0
2813
2814fmax36741 fma  1    0    -1     -> -1
2815fmax36742 fma  1   -0    -1     -> -1
2816fmax36743 fma  1    0     1     ->  1
2817fmax36744 fma  1   -0     1     ->  1
2818fmax36745 fma  1   -1     0     -> -1
2819fmax36746 fma  1   -1    -0     -> -1
2820fmax36747 fma  1    1     0     ->  1
2821fmax36748 fma  1    1    -0     ->  1
2822
2823fmax36751 fma  1    0.0  -1     -> -1.0
2824fmax36752 fma  1   -0.0  -1     -> -1.0
2825fmax36753 fma  1    0.0   1     ->  1.0
2826fmax36754 fma  1   -0.0   1     ->  1.0
2827fmax36755 fma  1   -1.0   0     -> -1.0
2828fmax36756 fma  1   -1.0  -0     -> -1.0
2829fmax36757 fma  1    1.0   0     ->  1.0
2830fmax36758 fma  1    1.0  -0     ->  1.0
2831
2832fmax36761 fma  1    0    -1.0   -> -1.0
2833fmax36762 fma  1   -0    -1.0   -> -1.0
2834fmax36763 fma  1    0     1.0   ->  1.0
2835fmax36764 fma  1   -0     1.0   ->  1.0
2836fmax36765 fma  1   -1     0.0   -> -1.0
2837fmax36766 fma  1   -1    -0.0   -> -1.0
2838fmax36767 fma  1    1     0.0   ->  1.0
2839fmax36768 fma  1    1    -0.0   ->  1.0
2840
2841fmax36771 fma  1    0.0  -1.0   -> -1.0
2842fmax36772 fma  1   -0.0  -1.0   -> -1.0
2843fmax36773 fma  1    0.0   1.0   ->  1.0
2844fmax36774 fma  1   -0.0   1.0   ->  1.0
2845fmax36775 fma  1   -1.0   0.0   -> -1.0
2846fmax36776 fma  1   -1.0  -0.0   -> -1.0
2847fmax36777 fma  1    1.0   0.0   ->  1.0
2848fmax36778 fma  1    1.0  -0.0   ->  1.0
2849
2850-- Specials
2851fmax36780 fma  1   -Inf  -Inf   -> -Infinity
2852fmax36781 fma  1   -Inf  -1000  -> -Infinity
2853fmax36782 fma  1   -Inf  -1     -> -Infinity
2854fmax36783 fma  1   -Inf  -0     -> -Infinity
2855fmax36784 fma  1   -Inf   0     -> -Infinity
2856fmax36785 fma  1   -Inf   1     -> -Infinity
2857fmax36786 fma  1   -Inf   1000  -> -Infinity
2858fmax36787 fma  1   -1000 -Inf   -> -Infinity
2859fmax36788 fma  1   -Inf  -Inf   -> -Infinity
2860fmax36789 fma  1   -1    -Inf   -> -Infinity
2861fmax36790 fma  1   -0    -Inf   -> -Infinity
2862fmax36791 fma  1    0    -Inf   -> -Infinity
2863fmax36792 fma  1    1    -Inf   -> -Infinity
2864fmax36793 fma  1    1000 -Inf   -> -Infinity
2865fmax36794 fma  1    Inf  -Inf   ->  NaN  Invalid_operation
2866
2867fmax36800 fma  1    Inf  -Inf   ->  NaN  Invalid_operation
2868fmax36801 fma  1    Inf  -1000  ->  Infinity
2869fmax36802 fma  1    Inf  -1     ->  Infinity
2870fmax36803 fma  1    Inf  -0     ->  Infinity
2871fmax36804 fma  1    Inf   0     ->  Infinity
2872fmax36805 fma  1    Inf   1     ->  Infinity
2873fmax36806 fma  1    Inf   1000  ->  Infinity
2874fmax36807 fma  1    Inf   Inf   ->  Infinity
2875fmax36808 fma  1   -1000  Inf   ->  Infinity
2876fmax36809 fma  1   -Inf   Inf   ->  NaN  Invalid_operation
2877fmax36810 fma  1   -1     Inf   ->  Infinity
2878fmax36811 fma  1   -0     Inf   ->  Infinity
2879fmax36812 fma  1    0     Inf   ->  Infinity
2880fmax36813 fma  1    1     Inf   ->  Infinity
2881fmax36814 fma  1    1000  Inf   ->  Infinity
2882fmax36815 fma  1    Inf   Inf   ->  Infinity
2883
2884fmax36821 fma  1    NaN -Inf    ->  NaN
2885fmax36822 fma  1    NaN -1000   ->  NaN
2886fmax36823 fma  1    NaN -1      ->  NaN
2887fmax36824 fma  1    NaN -0      ->  NaN
2888fmax36825 fma  1    NaN  0      ->  NaN
2889fmax36826 fma  1    NaN  1      ->  NaN
2890fmax36827 fma  1    NaN  1000   ->  NaN
2891fmax36828 fma  1    NaN  Inf    ->  NaN
2892fmax36829 fma  1    NaN  NaN    ->  NaN
2893fmax36830 fma  1   -Inf  NaN    ->  NaN
2894fmax36831 fma  1   -1000 NaN    ->  NaN
2895fmax36832 fma  1   -1    NaN    ->  NaN
2896fmax36833 fma  1   -0    NaN    ->  NaN
2897fmax36834 fma  1    0    NaN    ->  NaN
2898fmax36835 fma  1    1    NaN    ->  NaN
2899fmax36836 fma  1    1000 NaN    ->  NaN
2900fmax36837 fma  1    Inf  NaN    ->  NaN
2901
2902fmax36841 fma  1    sNaN -Inf   ->  NaN  Invalid_operation
2903fmax36842 fma  1    sNaN -1000  ->  NaN  Invalid_operation
2904fmax36843 fma  1    sNaN -1     ->  NaN  Invalid_operation
2905fmax36844 fma  1    sNaN -0     ->  NaN  Invalid_operation
2906fmax36845 fma  1    sNaN  0     ->  NaN  Invalid_operation
2907fmax36846 fma  1    sNaN  1     ->  NaN  Invalid_operation
2908fmax36847 fma  1    sNaN  1000  ->  NaN  Invalid_operation
2909fmax36848 fma  1    sNaN  NaN   ->  NaN  Invalid_operation
2910fmax36849 fma  1    sNaN sNaN   ->  NaN  Invalid_operation
2911fmax36850 fma  1    NaN  sNaN   ->  NaN  Invalid_operation
2912fmax36851 fma  1   -Inf  sNaN   ->  NaN  Invalid_operation
2913fmax36852 fma  1   -1000 sNaN   ->  NaN  Invalid_operation
2914fmax36853 fma  1   -1    sNaN   ->  NaN  Invalid_operation
2915fmax36854 fma  1   -0    sNaN   ->  NaN  Invalid_operation
2916fmax36855 fma  1    0    sNaN   ->  NaN  Invalid_operation
2917fmax36856 fma  1    1    sNaN   ->  NaN  Invalid_operation
2918fmax36857 fma  1    1000 sNaN   ->  NaN  Invalid_operation
2919fmax36858 fma  1    Inf  sNaN   ->  NaN  Invalid_operation
2920fmax36859 fma  1    NaN  sNaN   ->  NaN  Invalid_operation
2921
2922-- propagating NaNs
2923fmax36861 fma  1    NaN1   -Inf    ->  NaN1
2924fmax36862 fma  1   +NaN2   -1000   ->  NaN2
2925fmax36863 fma  1    NaN3    1000   ->  NaN3
2926fmax36864 fma  1    NaN4    Inf    ->  NaN4
2927fmax36865 fma  1    NaN5   +NaN6   ->  NaN5
2928fmax36866 fma  1   -Inf     NaN7   ->  NaN7
2929fmax36867 fma  1   -1000    NaN8   ->  NaN8
2930fmax36868 fma  1    1000    NaN9   ->  NaN9
2931fmax36869 fma  1    Inf    +NaN10  ->  NaN10
2932fmax36871 fma  1    sNaN11  -Inf   ->  NaN11  Invalid_operation
2933fmax36872 fma  1    sNaN12  -1000  ->  NaN12  Invalid_operation
2934fmax36873 fma  1    sNaN13   1000  ->  NaN13  Invalid_operation
2935fmax36874 fma  1    sNaN14   NaN17 ->  NaN14  Invalid_operation
2936fmax36875 fma  1    sNaN15  sNaN18 ->  NaN15  Invalid_operation
2937fmax36876 fma  1    NaN16   sNaN19 ->  NaN19  Invalid_operation
2938fmax36877 fma  1   -Inf    +sNaN20 ->  NaN20  Invalid_operation
2939fmax36878 fma  1   -1000    sNaN21 ->  NaN21  Invalid_operation
2940fmax36879 fma  1    1000    sNaN22 ->  NaN22  Invalid_operation
2941fmax36880 fma  1    Inf     sNaN23 ->  NaN23  Invalid_operation
2942fmax36881 fma  1   +NaN25  +sNaN24 ->  NaN24  Invalid_operation
2943fmax36882 fma  1   -NaN26    NaN28 -> -NaN26
2944fmax36883 fma  1   -sNaN27  sNaN29 -> -NaN27  Invalid_operation
2945fmax36884 fma  1    1000    -NaN30 -> -NaN30
2946fmax36885 fma  1    1000   -sNaN31 -> -NaN31  Invalid_operation
2947
2948-- now the case where we can get underflow but the result is normal
2949-- [note this can't happen if the operands are also bounded, as we
2950-- cannot represent 1E-399, for example]
2951
2952fmax36571 fma  1         1E-383       0  -> 1E-383
2953fmax36572 fma  1         1E-384       0  -> 1E-384   Subnormal
2954fmax36573 fma  1         1E-383  1E-384  -> 1.1E-383
2955fmax36574 subtract  1E-383  1E-384  ->   9E-384 Subnormal
2956
2957-- Here we explore the boundary of rounding a subnormal to Nmin
2958fmax36575 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
2959fmax36576 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
2960fmax36577 subtract  1E-383  1E-399  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
2961fmax36578 subtract  1E-383  1E-400  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
2962fmax36579 subtract  1E-383  1E-401  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
2963fmax36580 subtract  1E-383  1E-402  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
2964
2965-- check overflow edge case
2966--               1234567890123456
2967fmax36972 apply        9.999999999999999E+384         -> 9.999999999999999E+384
2968fmax36973 fma  1       9.999999999999999E+384  1      -> 9.999999999999999E+384 Inexact Rounded
2969fmax36974 fma  1        9999999999999999E+369  1      -> 9.999999999999999E+384 Inexact Rounded
2970fmax36975 fma  1        9999999999999999E+369  1E+369  -> Infinity Overflow Inexact Rounded
2971fmax36976 fma  1        9999999999999999E+369  9E+368  -> Infinity Overflow Inexact Rounded
2972fmax36977 fma  1        9999999999999999E+369  8E+368  -> Infinity Overflow Inexact Rounded
2973fmax36978 fma  1        9999999999999999E+369  7E+368  -> Infinity Overflow Inexact Rounded
2974fmax36979 fma  1        9999999999999999E+369  6E+368  -> Infinity Overflow Inexact Rounded
2975fmax36980 fma  1        9999999999999999E+369  5E+368  -> Infinity Overflow Inexact Rounded
2976fmax36981 fma  1        9999999999999999E+369  4E+368  -> 9.999999999999999E+384 Inexact Rounded
2977fmax36982 fma  1        9999999999999999E+369  3E+368  -> 9.999999999999999E+384 Inexact Rounded
2978fmax36983 fma  1        9999999999999999E+369  2E+368  -> 9.999999999999999E+384 Inexact Rounded
2979fmax36984 fma  1        9999999999999999E+369  1E+368  -> 9.999999999999999E+384 Inexact Rounded
2980
2981fmax36985 apply       -9.999999999999999E+384         -> -9.999999999999999E+384
2982fmax36986 fma  1      -9.999999999999999E+384 -1      -> -9.999999999999999E+384 Inexact Rounded
2983fmax36987 fma  1       -9999999999999999E+369 -1      -> -9.999999999999999E+384 Inexact Rounded
2984fmax36988 fma  1       -9999999999999999E+369 -1E+369  -> -Infinity Overflow Inexact Rounded
2985fmax36989 fma  1       -9999999999999999E+369 -9E+368  -> -Infinity Overflow Inexact Rounded
2986fmax36990 fma  1       -9999999999999999E+369 -8E+368  -> -Infinity Overflow Inexact Rounded
2987fmax36991 fma  1       -9999999999999999E+369 -7E+368  -> -Infinity Overflow Inexact Rounded
2988fmax36992 fma  1       -9999999999999999E+369 -6E+368  -> -Infinity Overflow Inexact Rounded
2989fmax36993 fma  1       -9999999999999999E+369 -5E+368  -> -Infinity Overflow Inexact Rounded
2990fmax36994 fma  1       -9999999999999999E+369 -4E+368  -> -9.999999999999999E+384 Inexact Rounded
2991fmax36995 fma  1       -9999999999999999E+369 -3E+368  -> -9.999999999999999E+384 Inexact Rounded
2992fmax36996 fma  1       -9999999999999999E+369 -2E+368  -> -9.999999999999999E+384 Inexact Rounded
2993fmax36997 fma  1       -9999999999999999E+369 -1E+368  -> -9.999999999999999E+384 Inexact Rounded
2994
2995-- And for round down full and subnormal results
2996rounding:     down
2997fmax361100 fma  1   1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact
2998fmax361101 fma  1   1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact
2999fmax361103 fma  1     +1 -1e-383    -> 0.9999999999999999  Rounded Inexact
3000fmax361104 fma  1   1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact
3001fmax361105 fma  1   1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact
3002fmax361106 fma  1   1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact
3003fmax361107 fma  1   1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact
3004fmax361108 fma  1   1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact
3005fmax361109 fma  1   1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact
3006
3007rounding:     ceiling
3008fmax361110 fma  1   -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact
3009fmax361111 fma  1   -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact
3010fmax361113 fma  1      -1 +1e-383   -> -0.9999999999999999  Rounded Inexact
3011fmax361114 fma  1   -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact
3012fmax361115 fma  1   -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact
3013fmax361116 fma  1   -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact
3014fmax361117 fma  1   -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact
3015fmax361118 fma  1   -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact
3016fmax361119 fma  1   -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact
3017
3018-- tests based on Gunnar Degnbol's edge case
3019rounding:     half_even
3020
3021fmax361300 fma  1   1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded
3022fmax361310 fma  1   1E16  -0.51                ->  9999999999999999      Inexact Rounded
3023fmax361311 fma  1   1E16  -0.501               ->  9999999999999999      Inexact Rounded
3024fmax361312 fma  1   1E16  -0.5001              ->  9999999999999999      Inexact Rounded
3025fmax361313 fma  1   1E16  -0.50001             ->  9999999999999999      Inexact Rounded
3026fmax361314 fma  1   1E16  -0.500001            ->  9999999999999999      Inexact Rounded
3027fmax361315 fma  1   1E16  -0.5000001           ->  9999999999999999      Inexact Rounded
3028fmax361316 fma  1   1E16  -0.50000001          ->  9999999999999999      Inexact Rounded
3029fmax361317 fma  1   1E16  -0.500000001         ->  9999999999999999      Inexact Rounded
3030fmax361318 fma  1   1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded
3031fmax361319 fma  1   1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded
3032fmax361320 fma  1   1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded
3033fmax361321 fma  1   1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded
3034fmax361322 fma  1   1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded
3035fmax361323 fma  1   1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded
3036fmax361324 fma  1   1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded
3037fmax361325 fma  1   1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
3038fmax361326 fma  1   1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
3039fmax361327 fma  1   1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
3040fmax361328 fma  1   1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
3041fmax361329 fma  1   1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
3042fmax361330 fma  1   1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
3043fmax361331 fma  1   1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
3044fmax361332 fma  1   1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded
3045fmax361333 fma  1   1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded
3046fmax361334 fma  1   1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded
3047fmax361335 fma  1   1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded
3048fmax361336 fma  1   1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded
3049fmax361337 fma  1   1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded
3050fmax361338 fma  1   1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded
3051fmax361339 fma  1   1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded
3052
3053fmax361340 fma  1   1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded
3054fmax361341 fma  1   1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded
3055
3056fmax361349 fma  1   9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded
3057fmax361350 fma  1   9999999999999999 0.49                ->  9999999999999999      Inexact Rounded
3058fmax361351 fma  1   9999999999999999 0.499               ->  9999999999999999      Inexact Rounded
3059fmax361352 fma  1   9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded
3060fmax361353 fma  1   9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded
3061fmax361354 fma  1   9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded
3062fmax361355 fma  1   9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded
3063fmax361356 fma  1   9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded
3064fmax361357 fma  1   9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded
3065fmax361358 fma  1   9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded
3066fmax361359 fma  1   9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded
3067fmax361360 fma  1   9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded
3068fmax361361 fma  1   9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded
3069fmax361362 fma  1   9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded
3070fmax361363 fma  1   9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded
3071fmax361364 fma  1   9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded
3072fmax361365 fma  1   9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
3073fmax361367 fma  1   9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
3074fmax361368 fma  1   9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
3075fmax361369 fma  1   9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
3076fmax361370 fma  1   9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
3077fmax361371 fma  1   9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
3078fmax361372 fma  1   9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
3079fmax361373 fma  1   9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded
3080fmax361374 fma  1   9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded
3081fmax361375 fma  1   9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded
3082fmax361376 fma  1   9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded
3083fmax361377 fma  1   9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded
3084fmax361378 fma  1   9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded
3085fmax361379 fma  1   9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded
3086fmax361380 fma  1   9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded
3087fmax361381 fma  1   9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded
3088fmax361382 fma  1   9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded
3089fmax361383 fma  1   9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded
3090fmax361384 fma  1   9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded
3091fmax361385 fma  1   9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded
3092fmax361386 fma  1   9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded
3093fmax361387 fma  1   9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded
3094fmax361388 fma  1   9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded
3095fmax361389 fma  1   9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded
3096fmax361390 fma  1   9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded
3097fmax361391 fma  1   9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded
3098fmax361392 fma  1   9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded
3099fmax361393 fma  1   9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded
3100fmax361394 fma  1   9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded
3101fmax361395 fma  1   9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded
3102fmax361396 fma  1   9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded
3103
3104-- More GD edge cases, where difference between the unadjusted
3105-- exponents is larger than the maximum precision and one side is 0
3106fmax361420 fma  1    0 1.123456789012345     -> 1.123456789012345
3107fmax361421 fma  1    0 1.123456789012345E-1  -> 0.1123456789012345
3108fmax361422 fma  1    0 1.123456789012345E-2  -> 0.01123456789012345
3109fmax361423 fma  1    0 1.123456789012345E-3  -> 0.001123456789012345
3110fmax361424 fma  1    0 1.123456789012345E-4  -> 0.0001123456789012345
3111fmax361425 fma  1    0 1.123456789012345E-5  -> 0.00001123456789012345
3112fmax361426 fma  1    0 1.123456789012345E-6  -> 0.000001123456789012345
3113fmax361427 fma  1    0 1.123456789012345E-7  -> 1.123456789012345E-7
3114fmax361428 fma  1    0 1.123456789012345E-8  -> 1.123456789012345E-8
3115fmax361429 fma  1    0 1.123456789012345E-9  -> 1.123456789012345E-9
3116fmax361430 fma  1    0 1.123456789012345E-10 -> 1.123456789012345E-10
3117fmax361431 fma  1    0 1.123456789012345E-11 -> 1.123456789012345E-11
3118fmax361432 fma  1    0 1.123456789012345E-12 -> 1.123456789012345E-12
3119fmax361433 fma  1    0 1.123456789012345E-13 -> 1.123456789012345E-13
3120fmax361434 fma  1    0 1.123456789012345E-14 -> 1.123456789012345E-14
3121fmax361435 fma  1    0 1.123456789012345E-15 -> 1.123456789012345E-15
3122fmax361436 fma  1    0 1.123456789012345E-16 -> 1.123456789012345E-16
3123fmax361437 fma  1    0 1.123456789012345E-17 -> 1.123456789012345E-17
3124fmax361438 fma  1    0 1.123456789012345E-18 -> 1.123456789012345E-18
3125fmax361439 fma  1    0 1.123456789012345E-19 -> 1.123456789012345E-19
3126
3127-- same, reversed 0
3128fmax361440 fma  1   1.123456789012345     0 -> 1.123456789012345
3129fmax361441 fma  1   1.123456789012345E-1  0 -> 0.1123456789012345
3130fmax361442 fma  1   1.123456789012345E-2  0 -> 0.01123456789012345
3131fmax361443 fma  1   1.123456789012345E-3  0 -> 0.001123456789012345
3132fmax361444 fma  1   1.123456789012345E-4  0 -> 0.0001123456789012345
3133fmax361445 fma  1   1.123456789012345E-5  0 -> 0.00001123456789012345
3134fmax361446 fma  1   1.123456789012345E-6  0 -> 0.000001123456789012345
3135fmax361447 fma  1   1.123456789012345E-7  0 -> 1.123456789012345E-7
3136fmax361448 fma  1   1.123456789012345E-8  0 -> 1.123456789012345E-8
3137fmax361449 fma  1   1.123456789012345E-9  0 -> 1.123456789012345E-9
3138fmax361450 fma  1   1.123456789012345E-10 0 -> 1.123456789012345E-10
3139fmax361451 fma  1   1.123456789012345E-11 0 -> 1.123456789012345E-11
3140fmax361452 fma  1   1.123456789012345E-12 0 -> 1.123456789012345E-12
3141fmax361453 fma  1   1.123456789012345E-13 0 -> 1.123456789012345E-13
3142fmax361454 fma  1   1.123456789012345E-14 0 -> 1.123456789012345E-14
3143fmax361455 fma  1   1.123456789012345E-15 0 -> 1.123456789012345E-15
3144fmax361456 fma  1   1.123456789012345E-16 0 -> 1.123456789012345E-16
3145fmax361457 fma  1   1.123456789012345E-17 0 -> 1.123456789012345E-17
3146fmax361458 fma  1   1.123456789012345E-18 0 -> 1.123456789012345E-18
3147fmax361459 fma  1   1.123456789012345E-19 0 -> 1.123456789012345E-19
3148
3149-- same, Es on the 0
3150fmax361460 fma  1   1.123456789012345  0E-0   -> 1.123456789012345
3151fmax361461 fma  1   1.123456789012345  0E-1   -> 1.123456789012345
3152fmax361462 fma  1   1.123456789012345  0E-2   -> 1.123456789012345
3153fmax361463 fma  1   1.123456789012345  0E-3   -> 1.123456789012345
3154fmax361464 fma  1   1.123456789012345  0E-4   -> 1.123456789012345
3155fmax361465 fma  1   1.123456789012345  0E-5   -> 1.123456789012345
3156fmax361466 fma  1   1.123456789012345  0E-6   -> 1.123456789012345
3157fmax361467 fma  1   1.123456789012345  0E-7   -> 1.123456789012345
3158fmax361468 fma  1   1.123456789012345  0E-8   -> 1.123456789012345
3159fmax361469 fma  1   1.123456789012345  0E-9   -> 1.123456789012345
3160fmax361470 fma  1   1.123456789012345  0E-10  -> 1.123456789012345
3161fmax361471 fma  1   1.123456789012345  0E-11  -> 1.123456789012345
3162fmax361472 fma  1   1.123456789012345  0E-12  -> 1.123456789012345
3163fmax361473 fma  1   1.123456789012345  0E-13  -> 1.123456789012345
3164fmax361474 fma  1   1.123456789012345  0E-14  -> 1.123456789012345
3165fmax361475 fma  1   1.123456789012345  0E-15  -> 1.123456789012345
3166-- next four flag Rounded because the 0 extends the result
3167fmax361476 fma  1   1.123456789012345  0E-16  -> 1.123456789012345 Rounded
3168fmax361477 fma  1   1.123456789012345  0E-17  -> 1.123456789012345 Rounded
3169fmax361478 fma  1   1.123456789012345  0E-18  -> 1.123456789012345 Rounded
3170fmax361479 fma  1   1.123456789012345  0E-19  -> 1.123456789012345 Rounded
3171
3172-- sum of two opposite-sign operands is exactly 0 and floor => -0
3173rounding:    half_up
3174-- exact zeros from zeros
3175fmax361500 fma  1    0        0E-19  ->  0E-19
3176fmax361501 fma  1   -0        0E-19  ->  0E-19
3177fmax361502 fma  1    0       -0E-19  ->  0E-19
3178fmax361503 fma  1   -0       -0E-19  -> -0E-19
3179fmax361504 fma  1    0E-400   0E-19  ->  0E-398 Clamped
3180fmax361505 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
3181fmax361506 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
3182fmax361507 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
3183-- inexact zeros
3184fmax361511 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3185fmax361512 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3186fmax361513 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3187fmax361514 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3188-- some exact zeros from non-zeros
3189fmax361515 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3190fmax361516 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
3191fmax361517 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
3192fmax361518 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3193
3194rounding:    half_down
3195-- exact zeros from zeros
3196fmax361520 fma  1    0        0E-19  ->  0E-19
3197fmax361521 fma  1   -0        0E-19  ->  0E-19
3198fmax361522 fma  1    0       -0E-19  ->  0E-19
3199fmax361523 fma  1   -0       -0E-19  -> -0E-19
3200fmax361524 fma  1    0E-400   0E-19  ->  0E-398 Clamped
3201fmax361525 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
3202fmax361526 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
3203fmax361527 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
3204-- inexact zeros
3205fmax361531 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3206fmax361532 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3207fmax361533 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3208fmax361534 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3209-- some exact zeros from non-zeros
3210fmax361535 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3211fmax361536 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
3212fmax361537 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
3213fmax361538 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3214
3215rounding:    half_even
3216-- exact zeros from zeros
3217fmax361540 fma  1    0        0E-19  ->  0E-19
3218fmax361541 fma  1   -0        0E-19  ->  0E-19
3219fmax361542 fma  1    0       -0E-19  ->  0E-19
3220fmax361543 fma  1   -0       -0E-19  -> -0E-19
3221fmax361544 fma  1    0E-400   0E-19  ->  0E-398 Clamped
3222fmax361545 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
3223fmax361546 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
3224fmax361547 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
3225-- inexact zeros
3226fmax361551 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3227fmax361552 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3228fmax361553 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3229fmax361554 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3230-- some exact zeros from non-zeros
3231fmax361555 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3232fmax361556 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
3233fmax361557 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
3234fmax361558 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3235
3236rounding:    up
3237-- exact zeros from zeros
3238fmax361560 fma  1    0        0E-19  ->  0E-19
3239fmax361561 fma  1   -0        0E-19  ->  0E-19
3240fmax361562 fma  1    0       -0E-19  ->  0E-19
3241fmax361563 fma  1   -0       -0E-19  -> -0E-19
3242fmax361564 fma  1    0E-400   0E-19  ->  0E-398 Clamped
3243fmax361565 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
3244fmax361566 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
3245fmax361567 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
3246-- inexact zeros
3247fmax361571 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
3248fmax361572 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
3249fmax361573 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
3250fmax361574 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
3251-- some exact zeros from non-zeros
3252fmax361575 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
3253fmax361576 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
3254fmax361577 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
3255fmax361578 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
3256
3257rounding:    down
3258-- exact zeros from zeros
3259fmax361580 fma  1    0        0E-19  ->  0E-19
3260fmax361581 fma  1   -0        0E-19  ->  0E-19
3261fmax361582 fma  1    0       -0E-19  ->  0E-19
3262fmax361583 fma  1   -0       -0E-19  -> -0E-19
3263fmax361584 fma  1    0E-400   0E-19  ->  0E-398 Clamped
3264fmax361585 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
3265fmax361586 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
3266fmax361587 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
3267-- inexact zeros
3268fmax361591 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3269fmax361592 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3270fmax361593 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3271fmax361594 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3272-- some exact zeros from non-zeros
3273fmax361595 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3274fmax361596 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
3275fmax361597 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
3276fmax361598 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3277
3278rounding:    ceiling
3279-- exact zeros from zeros
3280fmax361600 fma  1    0        0E-19  ->  0E-19
3281fmax361601 fma  1   -0        0E-19  ->  0E-19
3282fmax361602 fma  1    0       -0E-19  ->  0E-19
3283fmax361603 fma  1   -0       -0E-19  -> -0E-19
3284fmax361604 fma  1    0E-400   0E-19  ->  0E-398 Clamped
3285fmax361605 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
3286fmax361606 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
3287fmax361607 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
3288-- inexact zeros
3289fmax361611 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
3290fmax361612 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
3291fmax361613 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3292fmax361614 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3293-- some exact zeros from non-zeros
3294fmax361615 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
3295fmax361616 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
3296fmax361617 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
3297fmax361618 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
3298
3299-- and the extra-special ugly case; unusual minuses marked by -- *
3300rounding:    floor
3301-- exact zeros from zeros
3302fmax361620 fma  1    0        0E-19  ->  0E-19
3303fmax361621 fma  1   -0        0E-19  -> -0E-19           -- *
3304fmax361622 fma  1    0       -0E-19  -> -0E-19           -- *
3305fmax361623 fma  1   -0       -0E-19  -> -0E-19
3306fmax361624 fma  1    0E-400   0E-19  ->  0E-398 Clamped
3307fmax361625 fma  1   -0E-400   0E-19  -> -0E-398 Clamped  -- *
3308fmax361626 fma  1    0E-400  -0E-19  -> -0E-398 Clamped  -- *
3309fmax361627 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
3310-- inexact zeros
3311fmax361631 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3312fmax361632 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3313fmax361633 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
3314fmax361634 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
3315-- some exact zeros from non-zeros
3316fmax361635 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
3317fmax361636 fma  1   -1E-401   1E-401 -> -0E-398 Clamped  -- *
3318fmax361637 fma  1    1E-401  -1E-401 -> -0E-398 Clamped  -- *
3319fmax361638 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
3320
3321-- Examples from SQL proposal (Krishna Kulkarni)
3322fmax361701 fma  1   130E-2    120E-2    -> 2.50
3323fmax361702 fma  1   130E-2    12E-1     -> 2.50
3324fmax361703 fma  1   130E-2    1E0       -> 2.30
3325fmax361704 fma  1   1E2       1E4       -> 1.01E+4
3326fmax361705 subtract 130E-2  120E-2 -> 0.10
3327fmax361706 subtract 130E-2  12E-1  -> 0.10
3328fmax361707 subtract 130E-2  1E0    -> 0.30
3329fmax361708 subtract 1E2     1E4    -> -9.9E+3
3330
3331-- Gappy coefficients; check residue handling even with full coefficient gap
3332rounding: half_even
3333
3334fmax362001 fma  1   1234567890123456 1      -> 1234567890123457
3335fmax362002 fma  1   1234567890123456 0.6    -> 1234567890123457  Inexact Rounded
3336fmax362003 fma  1   1234567890123456 0.06   -> 1234567890123456  Inexact Rounded
3337fmax362004 fma  1   1234567890123456 6E-3   -> 1234567890123456  Inexact Rounded
3338fmax362005 fma  1   1234567890123456 6E-4   -> 1234567890123456  Inexact Rounded
3339fmax362006 fma  1   1234567890123456 6E-5   -> 1234567890123456  Inexact Rounded
3340fmax362007 fma  1   1234567890123456 6E-6   -> 1234567890123456  Inexact Rounded
3341fmax362008 fma  1   1234567890123456 6E-7   -> 1234567890123456  Inexact Rounded
3342fmax362009 fma  1   1234567890123456 6E-8   -> 1234567890123456  Inexact Rounded
3343fmax362010 fma  1   1234567890123456 6E-9   -> 1234567890123456  Inexact Rounded
3344fmax362011 fma  1   1234567890123456 6E-10  -> 1234567890123456  Inexact Rounded
3345fmax362012 fma  1   1234567890123456 6E-11  -> 1234567890123456  Inexact Rounded
3346fmax362013 fma  1   1234567890123456 6E-12  -> 1234567890123456  Inexact Rounded
3347fmax362014 fma  1   1234567890123456 6E-13  -> 1234567890123456  Inexact Rounded
3348fmax362015 fma  1   1234567890123456 6E-14  -> 1234567890123456  Inexact Rounded
3349fmax362016 fma  1   1234567890123456 6E-15  -> 1234567890123456  Inexact Rounded
3350fmax362017 fma  1   1234567890123456 6E-16  -> 1234567890123456  Inexact Rounded
3351fmax362018 fma  1   1234567890123456 6E-17  -> 1234567890123456  Inexact Rounded
3352fmax362019 fma  1   1234567890123456 6E-18  -> 1234567890123456  Inexact Rounded
3353fmax362020 fma  1   1234567890123456 6E-19  -> 1234567890123456  Inexact Rounded
3354fmax362021 fma  1   1234567890123456 6E-20  -> 1234567890123456  Inexact Rounded
3355
3356-- widening second argument at gap
3357fmax362030 fma  1   12345678 1                       -> 12345679
3358fmax362031 fma  1   12345678 0.1                     -> 12345678.1
3359fmax362032 fma  1   12345678 0.12                    -> 12345678.12
3360fmax362033 fma  1   12345678 0.123                   -> 12345678.123
3361fmax362034 fma  1   12345678 0.1234                  -> 12345678.1234
3362fmax362035 fma  1   12345678 0.12345                 -> 12345678.12345
3363fmax362036 fma  1   12345678 0.123456                -> 12345678.123456
3364fmax362037 fma  1   12345678 0.1234567               -> 12345678.1234567
3365fmax362038 fma  1   12345678 0.12345678              -> 12345678.12345678
3366fmax362039 fma  1   12345678 0.123456789             -> 12345678.12345679 Inexact Rounded
3367fmax362040 fma  1   12345678 0.123456785             -> 12345678.12345678 Inexact Rounded
3368fmax362041 fma  1   12345678 0.1234567850            -> 12345678.12345678 Inexact Rounded
3369fmax362042 fma  1   12345678 0.1234567851            -> 12345678.12345679 Inexact Rounded
3370fmax362043 fma  1   12345678 0.12345678501           -> 12345678.12345679 Inexact Rounded
3371fmax362044 fma  1   12345678 0.123456785001          -> 12345678.12345679 Inexact Rounded
3372fmax362045 fma  1   12345678 0.1234567850001         -> 12345678.12345679 Inexact Rounded
3373fmax362046 fma  1   12345678 0.12345678500001        -> 12345678.12345679 Inexact Rounded
3374fmax362047 fma  1   12345678 0.123456785000001       -> 12345678.12345679 Inexact Rounded
3375fmax362048 fma  1   12345678 0.1234567850000001      -> 12345678.12345679 Inexact Rounded
3376fmax362049 fma  1   12345678 0.1234567850000000      -> 12345678.12345678 Inexact Rounded
3377--                               90123456
3378rounding: half_even
3379fmax362050 fma  1   12345678 0.0234567750000000      -> 12345678.02345678 Inexact Rounded
3380fmax362051 fma  1   12345678 0.0034567750000000      -> 12345678.00345678 Inexact Rounded
3381fmax362052 fma  1   12345678 0.0004567750000000      -> 12345678.00045678 Inexact Rounded
3382fmax362053 fma  1   12345678 0.0000567750000000      -> 12345678.00005678 Inexact Rounded
3383fmax362054 fma  1   12345678 0.0000067750000000      -> 12345678.00000678 Inexact Rounded
3384fmax362055 fma  1   12345678 0.0000007750000000      -> 12345678.00000078 Inexact Rounded
3385fmax362056 fma  1   12345678 0.0000000750000000      -> 12345678.00000008 Inexact Rounded
3386fmax362057 fma  1   12345678 0.0000000050000000      -> 12345678.00000000 Inexact Rounded
3387fmax362060 fma  1   12345678 0.0234567750000001      -> 12345678.02345678 Inexact Rounded
3388fmax362061 fma  1   12345678 0.0034567750000001      -> 12345678.00345678 Inexact Rounded
3389fmax362062 fma  1   12345678 0.0004567750000001      -> 12345678.00045678 Inexact Rounded
3390fmax362063 fma  1   12345678 0.0000567750000001      -> 12345678.00005678 Inexact Rounded
3391fmax362064 fma  1   12345678 0.0000067750000001      -> 12345678.00000678 Inexact Rounded
3392fmax362065 fma  1   12345678 0.0000007750000001      -> 12345678.00000078 Inexact Rounded
3393fmax362066 fma  1   12345678 0.0000000750000001      -> 12345678.00000008 Inexact Rounded
3394fmax362067 fma  1   12345678 0.0000000050000001      -> 12345678.00000001 Inexact Rounded
3395-- far-out residues (full coefficient gap is 16+15 digits)
3396rounding: up
3397fmax362070 fma  1   12345678 1E-8                    -> 12345678.00000001
3398fmax362071 fma  1   12345678 1E-9                    -> 12345678.00000001 Inexact Rounded
3399fmax362072 fma  1   12345678 1E-10                   -> 12345678.00000001 Inexact Rounded
3400fmax362073 fma  1   12345678 1E-11                   -> 12345678.00000001 Inexact Rounded
3401fmax362074 fma  1   12345678 1E-12                   -> 12345678.00000001 Inexact Rounded
3402fmax362075 fma  1   12345678 1E-13                   -> 12345678.00000001 Inexact Rounded
3403fmax362076 fma  1   12345678 1E-14                   -> 12345678.00000001 Inexact Rounded
3404fmax362077 fma  1   12345678 1E-15                   -> 12345678.00000001 Inexact Rounded
3405fmax362078 fma  1   12345678 1E-16                   -> 12345678.00000001 Inexact Rounded
3406fmax362079 fma  1   12345678 1E-17                   -> 12345678.00000001 Inexact Rounded
3407fmax362080 fma  1   12345678 1E-18                   -> 12345678.00000001 Inexact Rounded
3408fmax362081 fma  1   12345678 1E-19                   -> 12345678.00000001 Inexact Rounded
3409fmax362082 fma  1   12345678 1E-20                   -> 12345678.00000001 Inexact Rounded
3410fmax362083 fma  1   12345678 1E-25                   -> 12345678.00000001 Inexact Rounded
3411fmax362084 fma  1   12345678 1E-30                   -> 12345678.00000001 Inexact Rounded
3412fmax362085 fma  1   12345678 1E-31                   -> 12345678.00000001 Inexact Rounded
3413fmax362086 fma  1   12345678 1E-32                   -> 12345678.00000001 Inexact Rounded
3414fmax362087 fma  1   12345678 1E-33                   -> 12345678.00000001 Inexact Rounded
3415fmax362088 fma  1   12345678 1E-34                   -> 12345678.00000001 Inexact Rounded
3416fmax362089 fma  1   12345678 1E-35                   -> 12345678.00000001 Inexact Rounded
3417
3418-- payload decapitate x3
3419precision: 5
3420fmax363000 fma  1 1  sNaN1234567890     ->  NaN67890  Invalid_operation
3421fmax363001 fma    1 -sNaN1234512345 1   -> -NaN12345  Invalid_operation
3422fmax363002 fma       sNaN1234554321 1 1 ->  NaN54321  Invalid_operation
3423
3424-- Null tests
3425fmax39990 fma  1   10  # -> NaN Invalid_operation
3426fmax39991 fma  1    # 10 -> NaN Invalid_operation
3427