It might be nice to submit a patch to OpenBLAS to make their dot functions use pairwise summation; this is almost as accurate as KBN summation but with negligible performance penalty (for a large base case), so it should be possible to put together an attractive pull request.
For Base, currently sum_kbn requires an AbstractArray; for use-cases like this it would be nice to support a variant of the form sum_kbn(function, iterator), so you could do
sum_kbn(pair -> conj(pair[1])*pair[2], zip(a, b))
in order to compute the kbn dot product of a and b.
On Monday, 2 February 2015 16:59:19 UTC, Steven G. Johnson wrote:It might be nice to submit a patch to OpenBLAS to make their dot functions use pairwise summation; this is almost as accurate as KBN summation but with negligible performance penalty (for a large base case), so it should be possible to put together an attractive pull request.intersting - but wouldn't performance suffer, or does nobody care about Level1-BLAS performance? (this is really outside my domain)
For my own applications, I really need something much better than pairwise summation, which has ~\eps \sum |x[i]| error, so I will try this, but I'm afraid your syntax goes over my head. I suppose, this would require to first rewrite sum_kbn?