Hacker News 上爬到的,是一篇 2019 的文章:「When Double Precision Is Not Enough (adambaskerville.github.io)」,原文在「T>T: When Double Precision is Not Enough」。
作者是拿矩陣 (matrix) 的運算當例子,遇到了 double precision 造成的計算誤差問題:
There is no error with the program; this discrepancy is caused by a loss of numerical accuracy in the eigenvalue calculation due to the limitation of hardware double precision (16-digit).
解法是用 mpmath 增加精度,算是一種暴力解,到要注意計算會慢很多:
Note that this library is incredibly slow for large matrices, so is best avoided for most applications.
另外在 Hacker News 的討論串裡面看到個有趣的東西:「Herbie: Automatically Improving Floating Point Accuracy」這個專案,你把公式丟進去,Herbie 會試著提供等價公式來維持精度,像是 這種東西。
半自動化幫你改善...