0

ライブラリを使用せずに、リストにある浮動小数点数を追加するメソッドを Python で作成するにはどうすればよいですか? 先生は私たちにこのコードを教えてくれましたが、私はそれを理解できませんでした。他の誰かが私に別の例を教えてくれますか?

def msum(iterable):
    "Full precision summation using multiple floats for intermediate values"
    partials = []               # sorted, non-overlapping partial sums
    for x in iterable:
        i = 0
        for y in partials:
            if abs(x) < abs(y):
                x, y = y, x
            hi = x + y
            lo = y - (hi - x)
            if lo:
                partials[i] = lo
                i += 1
            x = hi
        partials[i:] = [x]
    return sum(partials, 0.0)
4

1 に答える 1

1

Python での Kahan アルゴリズムのバージョンは次のようになります。

def msum(input):
    sum = 0.0
    c = 0.0
    for x in input:
        y = x - c
        t = sum + y
        c = (t - sum) - y
        sum = t

    return sum

そして、「他のライブラリを使用せずに」とはどういう意味ですか? もちろん、あなたはただ持つことができます

def msum(input):
    return sum(input)
于 2012-09-17T05:37:03.713 に答える