在此代码审查答案中:
https://codereview.stackexchange.com/a/59405/11633
我发现了以下内容(前面的嵌套引用!):
让我引用精彩的书《C++ 中的数字食谱》(但也适用)
我们假设您知道的足够多,永远不会以这种方式评估多项式:
p=c[0]+c[1]*x+c[2]*x*x+c[3]*x*x*x+c[4]*x*x*x*x;
或者(更糟!),
p=c[0]+c[1]*x+c[2]*pow(x,2.0)+c[3]*pow(x,3.0)+c[4]*pow(x,4.0);
(计算机)革命来了,所有犯有此类犯罪行为的人都将被即决处决,他们的程序不会被处决!
(您可以在分析索引中的“双关语,特别糟糕”条目下找到您所在版本的页面。我喜欢这本书。)
不这样做的原因有两个:准确性和性能。计算多项式的正确方法是这样的:
-t * (0.319381530 + t * (-0.356563782 + t * (1.781477937 + t * (-1.821255978 + 1.330274429 * t))))
我可以看到以任何不鼓励的方式实现它的严重性能损失,但没有准确性损失。对准确性有何不利影响?
我找到了这本书,但在引用位周围的任何地方都没有这些信息。