Sum()
reductions: a scalar out, nothing marshalled --------------------- Summed with NEUMAIER COMPENSATION. A naive total loses the low bits of every addend once it grows large relative to them -- add 1e16 and then a thousand 1.0s and the naive answer is still 1e16. This carries the lost part along.
Exemples de base (1)
an = [ number("1e16") ]
for i = 1 to 1000
an + 1
next
oList = new stzListOfNumbers(an)
oData = new stzDataSet(an)
oBuf = StzNumBufferQ(an)
nTrue = number("1e16") + 1000
# stzListOfNumbers
? oList.Sum()
# stzDataSet
? oData.Sum()
# stzNumBuffer
? oBuf.Sum()
# list and dataset agree
? oList.Sum() = oData.Sum()
# dataset and buffer agree
? oData.Sum() = oBuf.Sum()
# list and dataset agree
? oList.Mean() = oData.Mean()
# dataset and buffer agree
? oData.Mean() = oBuf.Mean()
oBuf.Free()10000000000001000.00 10000000000001000.00 10000000000001000.00 1 1 1 1
exécuté le 2026-10-02 04:23 dans la bibliothèque au commit 0e72e2e2c ; tiré de numeric_summation_narrated.ring(s'ouvre dans un nouvel onglet)
Les extensions de cette méthode
Chaque extension, et si elle existe pour cette méthode ; une extension qui existe se compose avec les autres (FindSTCS).
Chaque exemple est un fichier de test de la bibliothèque, exécuté dans la bibliothèque pour cette page ; seuls ceux dont la sortie a tenu toutes les promesses écrites par leur fichier sont montrés. Les explications, les titres et le code sont ceux de la bibliothèque, en anglais.
Voir aussi
- La classe stzNumBuffer
- La référence du domaine : Numérique et optimisation
- Les autres méthodes de ces exemples : stzDataSet.Mean · stzDataSet.Sum · stzListOfNumbers.Mean · stzListOfNumbers.Sum · stzNumBuffer.Free

