gpt4 book ai didi

c - 提高机器精度会自动提高级数展开的条件吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:35 24 4
gpt4 key购买 nike

我想知道在 C 中将机器精度从 float 增加到 double 是否会自动提高级数扩展中的项,例如三角函数 ?

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

最佳答案

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

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

不使用系列扩展。 (特别是,由于误差分布不佳且需要太多项才能收敛,因此不使用泰勒级数。)而是使用精心准备的近似多项式。经常使用某种形式的极小极大多项式。更精确类型的例程可能会使用具有更多项的多项式,但它也可能以其他方式发生变化,例如将域划分为更多间隔或使用某种形式的扩展精度。这些都不是自动的;例程由软件工程师手动准备。

关于c - 提高机器精度会自动提高级数展开的条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com