[
https://issues.apache.org/jira/browse/NUMBERS-163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17362900#comment-17362900
]
Matt Juntunen commented on NUMBERS-163:
---------------------------------------
I've made a PR with the changes I was picturing here:
[https://github.com/apache/commons-numbers/pull/95]. Please let me know what
you think.
bq. Isn't there a possible loss (depending on the order of accumulation)?
Yes, but the static methods have the exact same issue. The dot2s add sum2s
algorithms that we are using are designed to reduce this loss as much as
possible. The accumulator classes simply unroll the algorithms and give the
caller control over when and how the inputs are added.
As far as making {{LinearCombination}} itself implement {{DoubleSupplier}}, I
do not see the utility. What would one do with an instance of
{{LinearCombination}} besides get the {{double}} value from it? In that case,
why even have an instance at all?
> Summation and LinearCombination Accumulators
> --------------------------------------------
>
> Key: NUMBERS-163
> URL: https://issues.apache.org/jira/browse/NUMBERS-163
> Project: Commons Numbers
> Issue Type: New Feature
> Reporter: Matt Juntunen
> Priority: Major
> Time Spent: 20m
> Remaining Estimate: 0h
>
> It would be useful to have simple accumulator classes in {{Summation}} and
> {{LinearCombination}} to perform extended precision operations on arbitrary
> collections of values without requiring conversion to {{double[]}}. Ex:
> {code:java}
> Summation.Accumulator sum= Summation.accumulator(1d);
> sum.add(x)
> .add(y)
> .add(z)
> .add(w);
> double sumResult = sum.get();
> LinearCombination.Accumulator comb = LinearCombination.accumulator(1d);
> comb.add(x, scale)
> .add(y, scale)
> .add(z, scale)
> .add(w, scale);
> double combResult = comb.get();
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)