Hmmm. Is that algorithm doable concurrently without needing a 128-bit CAS?
On Mon, Jan 7, 2013 at 11:07 AM, Joe Darcy <joe.da...@oracle.com> wrote: > Hello, > > I had a question about how the double accumulation logic was intended to > be used. I've taken a quick look at the code and it uses straightforward > "sum = sum + nextValue" code to compute the double sum. Summing doubles > values with code numerical accuracy is surprisingly tricky and if the > DoubleAccumulator code is meant for wide use, I'd recommend using instead > some form of compensated summation: > > > http://en.wikipedia.org/wiki/**Kahan_summation_algorithm<http://en.wikipedia.org/wiki/Kahan_summation_algorithm> > > Thanks, > > -Joe > > > On 1/5/2013 10:10 AM, Chris Hegarty wrote: > >> As part of JEP 155 we are proposing to add the following public classes >> to support Scalable Updatable Variables, DoubleAccumulator, DoubleAdder, >> LongAccumulator and LongAdder. >> >> These have been written by Doug Lea, with assistance from members of the >> former JCP JSR-166 Expert Group. >> >> Webrev and javadoc are at: >> >> http://cr.openjdk.java.net/~**chegar/8005311/ver.00/<http://cr.openjdk.java.net/~chegar/8005311/ver.00/> >> >> Since Doug is the author, I am taking a reviewer/sponsor role. >> >> Here are my initial comments. >> - There are various places in DoubleAccmulator where there are broken >> links to #sum ( I think it is just a cut'n'paste error ). These >> should be #get. >> - Accumulators >> {@link #get} may read somewhat better as {@link #get current value} ?? >> - Accumulators >> Does the 'identity' value need further explanation? >> >> Note: There is one minor change to the implementation. Currently in the >> jdk8 repo j.u.f.DoubleBinaryOperator defines operateAsDouble. This method >> has been renamed to applyAsDouble in the lambda/lambda repo. When these >> changes are sync'ed from lambda/lambda this can be reverted. A similar >> comment has been added to the code. >> >> -Chris. >> > > -- Louis Wasserman