Floating point 单精度三角函数的正确舍入

Floating point 单精度三角函数的正确舍入,floating-point,rounding,numerical-methods,ieee-754,Floating Point,Rounding,Numerical Methods,Ieee 754,我想要一个正确的四舍五入(四舍五入到最接近的偶数)单精度三角函数(0.5 ulp误差)。 我可以使用CORDIC算法或多项式近似方法来获得更高精度的结果,比如说双精度 从双倍到浮动的结果是否正确到最近?(例如,如果使用GCC编译器在C中实现。) 我是否需要实施自己的舍入方法才能正确舍入?如果是这样,我可以少用一些位吗?例如,如果我使用CORDIC,35位(大约)是否足够(32位+3位用于舍入) 在某种程度上类似于(2)。更高精度的结果必须精确到多少?(例如,1e-15的绝对误差是否足够?) 这取

我想要一个正确的四舍五入(四舍五入到最接近的偶数)单精度三角函数(0.5 ulp误差)。 我可以使用CORDIC算法或多项式近似方法来获得更高精度的结果,比如说双精度

  • 从双倍到浮动的结果是否正确到最近?(例如,如果使用GCC编译器在C中实现。)

  • 我是否需要实施自己的舍入方法才能正确舍入?如果是这样,我可以少用一些位吗?例如,如果我使用CORDIC,35位(大约)是否足够(32位+3位用于舍入)

  • 在某种程度上类似于(2)。更高精度的结果必须精确到多少?(例如,1e-15的绝对误差是否足够?)


  • 这取决于函数,找到答案并不容易。曾经有一个CRLibm项目,现在已经不存在了,它涉及到对各种函数回答这个问题,我相信他们在基本三角函数方面取得了一些成功。他们的旧网站没有响应,但您可以通过搜索“CRLibm”找到他们的一些学术出版物和其他信息。此外,我认为有一个项目仍在继续以同样的方式工作,但我现在不知道它的名称。不过,我认为CRLibm主要关注的是双精度(IEEE-754基本64位二进制浮点)。对于单一精度,答案可能更容易获得。(顺便说一句,“CRLibm”代表“正确的四舍五入Libm”,目标是提供正确的四舍五入数学例程,其中包含已知的执行时间界限,以及良好的平均执行时间。)看看Vincent Lefèvre的工作,了解其中的一些概念,例如:@EricPostpischil根据:CRlibm开发人员的工作已经转移到MetaLibm项目。1.0beta5之后将不会发布CRlibm。有人知道单精度的状态吗?如果CRlibm在追求双精度的过程中为单精度例程生成数据,我不会感到惊讶。