为什么C在<math.h>中定义M_2_SQRTPI常数?

时间:2018-10-13 19:49:28

标签: c math

<math.h>中,常量M_2_SQRTPI用值2/sqrt(pi)定义。

我从未见过此表达式在公式中使用过,因此我搜索了M_2_SQRTPI的用法,但我只能找到有关该常量的文档,而没有找到它的实际用法。

使用的常数在哪里?在<math.h>中定义为数学常数的原因是什么?

2 个答案:

答案 0 :(得分:1)

它用于不同的科学计算中(例如,我已经在金融中看到过它)。

为什么要将其作为常量?因为sqrt(M_PI)将不会具有与预先计算的值相同的精度(因此PI会使用更高的精度)。而且有很大的不同,我已经看到了不使用它的危害。

答案 1 :(得分:1)

该常量与error function相关。

不过,我不知道为什么在标准库 POSIX中将其作为常量提供。通过在x86-64系统上使用GCC,并通过在每个符合IEEE 754的系统上进行扩展,计算2.0 / sqrt(M_PI)会产生与M_2_SQRTPI完全相同的双精度值。 >

Try it online!

即使有轻微的错误,也很少有人需要常量自己定义。