首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C中三角函数的单精度变元约简

C中三角函数的单精度变元约简
EN

Stack Overflow用户
提问于 2020-09-25 05:52:01
回答 2查看 768关注 0票数 5

用C语言实现了用单精度(32位浮点)计算三角函数(sin,cos,arctan)的一些逼近,它们的精度可达到+/- 2 ulp。

我的目标设备不支持任何<cmath><math.h>方法。它不提供FMA,但提供MAC ALU。ALU和LU以32位格式计算。

我的arctan近似实际上是N.juffa的逼近的一个修改版本,它在整个范围内近似于arctan。正弦和余弦函数在-pi,pi范围内的精度可达2 ulp。

我现在的目标是为正弦和余弦提供更大的输入范围(尽可能大,理想情况下是FLT_MIN、FLT_MAX),这将导致我进行参数约简。

我目前正在阅读不同的论文,比如一个大论点的RGUMENT缩减: K.C.Ng的好到最后一位或关于这个一种新的参数约简算法的文章,但是我无法从它得到一个实现。

此外,我还想提到两个涉及相关问题的堆栈溢出问题:有一个基于我链接的第一篇论文的基于matlab和c++的方法。它实际上是使用matlab,c数方法,它将输入限制在0,20.000。评论中已经提到了另一个问题。这是一种在C中实现sin和cos的方法,使用各种对我来说不可用的c库。由于这两个职位已经有几年的历史,可能会有一些新的发现。

在这种情况下使用的算法似乎是将2/pi的个数精确地存储到所需的位数,以便能够精确地计算模块计算,同时避免取消。我的设备不提供大的DMEM,这意味着不可能有数百位的大型查找表。这个过程实际上是在参考的第70页上描述的,顺便说一句,它提供了许多关于浮点数学的有用信息。

因此,我的问题是:是否有另一种有效的方法来减少正弦和余弦的参数,以获得单一精度,避免大的LUTs?上面提到的论文实际上侧重于双精度和使用1000位数,这不适合我的使用。

实际上,我还没有在C中找到任何实现,也没有针对单个精确计算的实现,我将非常感谢您提供任何提示/links /examples.

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64058564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档