From f2a7a57cf55004a02106a9649b9cda1607a21965 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Fri, 10 Nov 2023 10:52:06 +0300 Subject: [PATCH 1/4] gh-111933: fix broken link to A.Neumaier article --- Python/bltinmodule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index c373585c0986ce..0cdcae9e65b067 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -2611,7 +2611,7 @@ builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start) } if (PyFloat_CheckExact(item)) { // Improved Kahan–Babuška algorithm by Arnold Neumaier - // https://www.mat.univie.ac.at/~neum/scan/01.pdf + // https://web.archive.org/web/20220804051351/https://www.mat.univie.ac.at/~neum/scan/01.pdf double x = PyFloat_AS_DOUBLE(item); double t = f_result + x; if (fabs(f_result) >= fabs(x)) { From 652be900d9041210d018bf3ed28d8f15535924f6 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Sat, 11 Nov 2023 05:29:10 +0300 Subject: [PATCH 2/4] Update Python/bltinmodule.c Co-authored-by: Jelle Zijlstra --- Python/bltinmodule.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 0cdcae9e65b067..7ec091c745232a 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -2611,6 +2611,8 @@ builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start) } if (PyFloat_CheckExact(item)) { // Improved Kahan–Babuška algorithm by Arnold Neumaier + // Neumaier, A. (1974), Rundungsfehleranalyse einiger Verfahren zur Summation endlicher Summen. + // Z. angew. Math. Mech., 54: 39-51. https://doi.org/10.1002/zamm.19740540106 // https://web.archive.org/web/20220804051351/https://www.mat.univie.ac.at/~neum/scan/01.pdf double x = PyFloat_AS_DOUBLE(item); double t = f_result + x; From ed85ed99bf696dd0cdbb15d86dcf114eeffd1788 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Sat, 11 Nov 2023 05:35:31 +0300 Subject: [PATCH 3/4] Minor reformatting & replace archive.org with a link to prof Neumaier homepage --- Python/bltinmodule.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 7ec091c745232a..649b1f09674d1b 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -2611,9 +2611,10 @@ builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start) } if (PyFloat_CheckExact(item)) { // Improved Kahan–Babuška algorithm by Arnold Neumaier - // Neumaier, A. (1974), Rundungsfehleranalyse einiger Verfahren zur Summation endlicher Summen. - // Z. angew. Math. Mech., 54: 39-51. https://doi.org/10.1002/zamm.19740540106 - // https://web.archive.org/web/20220804051351/https://www.mat.univie.ac.at/~neum/scan/01.pdf + // Neumaier, A. (1974), Rundungsfehleranalyse einiger Verfahren + // zur Summation endlicher Summen. Z. angew. Math. Mech., + // 54: 39-51. https://doi.org/10.1002/zamm.19740540106 + // Scanned text: https://arnold-neumaier.at/scan/01.pdf double x = PyFloat_AS_DOUBLE(item); double t = f_result + x; if (fabs(f_result) >= fabs(x)) { From 09ebdf7c49da3b93e0dc79557ec3cb753643a77b Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sat, 11 Nov 2023 17:45:02 -0600 Subject: [PATCH 4/4] Switch to wikipedia link. Co-authored-by: Sergey B Kirpichev --- Python/bltinmodule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 649b1f09674d1b..a1ecdcbbc5b51f 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -2614,7 +2614,7 @@ builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start) // Neumaier, A. (1974), Rundungsfehleranalyse einiger Verfahren // zur Summation endlicher Summen. Z. angew. Math. Mech., // 54: 39-51. https://doi.org/10.1002/zamm.19740540106 - // Scanned text: https://arnold-neumaier.at/scan/01.pdf + // https://en.wikipedia.org/wiki/Kahan_summation_algorithm#Further_enhancements double x = PyFloat_AS_DOUBLE(item); double t = f_result + x; if (fabs(f_result) >= fabs(x)) {