2012-07-24 288 views
3

我一直在寻找,我无法找到函数如何计算或使用它的PI部分。 对于我的项目,我使用的定义常量的PI精度为34位小数。然而,这比正常的math.h定义的常数要小得多,因为它是16位小数。CUDA sincospi函数精度

我的问题是PI是多么精确的sincospi用来计算它的答案?它只是使用math.h中的PI常量吗?

+0

小数点后16位不是偶然,那是IEEE 64位浮点表示的限制。还有更多的小数位就是噪音。 – talonmies 2012-07-24 08:10:36

+2

sincospi()的最大ulp误差与sincos()的最大ulp误差相同:结果与正确舍入的参考值相差最多1 ulp,或者换句话说,结果偏离小于1.5 ulps无限精确的数学结果。平均而言,90%以上的结果正确舍入。所有数学函数的最大观察误差记录在CUDA C编程指南的附录中。 sincospi(x)的准确度优于sincos(M_PI * x)的准确度。 – njuffa 2012-07-24 08:54:01

+0

@njuffa您的评论听起来像是一个高质量的答案;) – pQB 2012-07-24 10:28:41

回答

3

sincospi()的最大ulp误差与sincos()的最大ulp误差相同:结果与正确舍入的参考值相差最多1 ulp,或者换句话说,结果偏差小于1.5 ulps来自无限精确的数学结果。平均而言,90%以上的结果正确舍入。所有CUDA数学函数的最大观察误差记录在CUDA C编程指南的附录中。 sincospi(x)的准确度优于sincos(M_PI * x)所达到的准确度,因为后者由于函数参数的乘法而导致附加的舍入误差。