Joe / Dmitry,

On Apr 12, 2016, at 5:21 PM, joe darcy <joe.da...@oracle.com> wrote:

> Please review the changes for
> 
>    JDK-4851642: Add fused mac to Java math library
>    http://cr.openjdk.java.net/~darcy/4851642.0/
> 
> Fused mac (multiply-accumulate) is a ternary floating-point operation which 
> accepts three inputs, a, b, c, and computes
> 
>    a * b + c
> 
> with a single rounding error rather than the usual two rounding errors (a 
> first for the multiply, a second one for the add).

A couple of points of curiosity. Firstly, is this not “fused multiply-add” 
rather than “fused multiply-accumulate?” Secondly, why the choice of name 
“fusedMac()” instead of the common “fma()” or the longer but perhaps clearer 
“fusedMultiplyAdd()?”

A picayune javadoc point: in the unordered lists <ul></ul> should “</li>” be 
used to close the list items?

On Apr 13, 2016, at 5:41 AM, Dmitry Nadezhin <dmitry.nadez...@gmail.com> wrote:

I concur with Dmitry’s points. With respect to the second one,

> 2) Lines Math:1508-1525 could be simpler:
> ====
>    double result = a * b + c;
>    return Double.isNaN(result) && Double.isFinite(a) && Double.isFinite(b)
> ? c : result;
> ====

not trusting this to my own visual inspection, I wrote nested loops to run a, 
b, and c over

        double[] values = new double[] {
            -0.0, 0.0, +0.0, -42.0, 42.0,
            -Double.MAX_VALUE, Double.MAX_VALUE,
            Double.NaN, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY
        };

and there is no difference between the webrev and Dmitry’s suggestion above for 
the cases where

        !Double.isFinite(a) || !Double.isFinite(b) || !Double.isFinite(c) == 
true

Brian

Reply via email to