我读到numpy uses pairwise summation是其计算总和的默认算法(也由numpy github存储库中的pull request之一确认)
因此,对于以下代码段和一般代码段:
data = np.ones((1000,1000))
sum = np.sum(data)
print(sum)
成对求和的运行时复杂度是多少?由于它遵循类似于divide and conquer
的贪婪方法,因此它必须在log
范围内,但是我不确定确切的方程式。
答案 0 :(得分:2)
按对求和与单纯求和的次数完全相同。
但是,如果要累加浮点数,那么天真的求和运算最终会在末尾将小数加到大数上。这将导致末端附近的数字遭受更大的舍入误差。
因此,首选成对求和。