Primitive streams (original) (raw)

Joe Darcy joe.darcy at oracle.com
Mon Dec 31 10:23:49 PST 2012


On 12/29/2012 10:00 AM, Remi Forax wrote:

On 12/28/2012 06:55 PM, Brian Goetz wrote:

[snip]

3. Numerics. Adding up doubles is not as simple as reducing with Double::sum (unless you don't care about accuracy.) Having methods for numeric sums gives us a place to put such intelligence; general reduce does not. I'm always afraid when someone try to put "intelligence" in a program. We never have the same.

Just adding up floating-point numbers is a subtle and interesting topic of study. For example, there is a whole chapter on this matter in Nicholas Higham's "Accuracy and Stability of Numerical Algorithms."

While Java is distinguished by its predictable floating-point semantics, just adding my a sequence of double numbers as "a + b" without any further processing or state can yield very poor numerical results. Therefore, I think it is more prudent if we could say something like "this summation of double numbers must have an error bound less than x" where x is in part a function of the number of input values. This is analogous to the quality of implementation requirements found in the java.lang.Math class which allow for alternative implementations of sin, cos, etc.

-Joe



More information about the lambda-libs-spec-experts mailing list