提高机器精度是否会自动提高系列扩展的条件?

Mic*_*ott 1 c floating-point precision series expansion

我想知道在C中将机器精度从浮点数增加到两倍会自动提高串联扩展中的项,例如三角函数吗?

这和我关于堆栈溢出的其他问题与调查各向异性介质中波动方程的数值不稳定性有关.

Eri*_*hil 5

通常,影响执行正弦,对数等的例程的准确性的因素是您调用的例程的版本.一个好的数学库有单精度正弦(C sinf函数),双精度正弦(C sin)和长双正弦(C sinl)的独立程序.在C语言中,你通常显式调用这些版本中,通过编写调用sinf,sinsinl.C还提供<tgmath.h>,导致源代码sin(x)扩展到特定版本,具体取决于类型x.在C++中,函数调用也将根据变量的类型进行解析.

在一个好的数学库中,sinf例程将使用更快的算法,其精度适合于精度float,同时sin将使用适合精度的较慢算法double.数学库的质量各不相同,因为编写这些例程是一项复杂的任务.

不使用系列扩展.(特别是,由于误差分布差并且需要太多的项来收敛,因此不使用泰勒级数.)相反,使用精心准备的近似多项式.通常使用某种形式的极小极大多项式.更精确类型的例程可能使用具有更多项的多项式,但它也可能以其他方式改变,例如将域划分为更多区间或使用某种形式的扩展精度.这些都不是自动的; 例程由软件开发人员手动准备.