forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commite954a72
committed
Improve the accuracy of floating point statistical aggregates.
When computing statistical aggregates like variance, the commonschoolbook algorithm which computes the sum of the squares of thevalues and subtracts the square of the mean can lead to a large lossof precision when using floating point arithmetic, because thedifference between the two terms is often very small relative to theterms themselves.To avoid this, re-work these aggregates to use the Youngs-Crameralgorithm, which is a proven, numerically stable algorithm thatdirectly aggregates the sum of the squares of the differences of thevalues from the mean in a single pass over the data.While at it, improve the test coverage to test the aggregate combinefunctions used during parallel aggregation.Per report and suggested algorithm from Erich Schubert.Patch by me, reviewed by Madeleine Thompson.Discussion:https://postgr.es/m/153313051300.1397.9594490737341194671@wrigleys.postgresql.org1 parent38921d1 commite954a72
File tree
3 files changed
+639
-262
lines changed- src
- backend/utils/adt
- test/regress
- expected
- sql
3 files changed
+639
-262
lines changed0 commit comments
Comments
(0)