使用atan C

时间:2019-06-17 09:16:52

标签: c math precision

我正面临tan / atan方法在C中的数值精度问题。我想我在这里想念什么,但我不知道是什么。

我在下面附加了我所引用的代码,该代码尝试根据一系列数字(abm6)是应用于这些角度的三角函数(如代码注释所示),然后我反转这些角度以重建m7m8m6并将它们与原始数字进行比较,因为我正在使用m7数字,所以我希望它们与第14位或第15位数字匹配。但是,从输出中可以看到,对于m8情况,有些数值差异无法解释。有谁对正在发生的事情有见识?

double

您可以从以下键盘执行此链接中的代码:http://codepad.org/lzMMcgnb

atan

1 个答案:

答案 0 :(得分:4)

根据经验,作为标准C库实现附带的三角函数中的任何错误(在第8个重要版本开始)都应视为正常。 (以我的经验,sincos的实现比tan的实现更好,这也适用于反函数。)

C标准和IEEE754浮点规范(C浮点采用的通用方案)都不需要这些功能与其使用的数据类型一样精确(参见sqrt或算术运算符{ IEEE754需要使用{1}},+-*返回最佳结果。而且很多实现方式都要求执行速度而不是准确性。

如果需要更高的精度,则需要将这些功能切换为保证更好结果的功能。