[cfp-interest 4003] Rounding error in fma(r, s, t) - Not for inclusion in our Meetings

Damian McGuckin damianm at esi.com.au
Tue Sep 8 16:50:03 PDT 2026


Thought I would tap into collective intelligence.

Give a computation with p = precision (24 for float, 53 for double)

 	u = fma(r, s, t)

where
 	0.5 <= r <= 1 or strictly [0.5, 0.617..., 0.731..., 1]

and
 	2**(1-p) < s < 1 (I can limit the upper bound to 0.25)
and
 	2**(-p-2) < |t| < 2**(-p-1)

why does

 	fma(r, s, u) - t

seem to yield the rounding error even when |t| > |r * s|

If you look at the requirements under which Kahan's Fast Two Sum works, 
that formula will work for

 	|t| <= |r * s|

But it seems to work for my data when that inequality does not hold and I 
am looking for a way to prove it (I have tested even 32-bit floating point 
value in the range is 's' and it seems to but that doesn't prove it for 
all possible double values).

Not urgent - Thanks - Damian


More information about the cfp-interest mailing list