我想同时计算一个值的正弦和余弦(例如创建一个旋转矩阵)。当然,我可以像 a = cos(x); b = sin(x);
一样逐个计算它们,但是我想知道在需要这两个值时是否有更快的方法。
编辑: 总结一下迄今为止的答案:
Vlad 说,有一个 asm 命令 FSINCOS
计算它们两个(几乎与单独调用 FSIN
的时间相同)
正如 [俄语]所注意到的,这种优化有时已经由编译器完成(在使用优化标志时)。
Caf 指出,函数 sincos
和 sincosf
可能是可用的,只要包括 math.h
就可以直接调用
Tanascius 使用查找表的方法是有争议的。(但是在我的电脑上和基准测试场景中,它运行速度是 sincos
的3倍,对于32位浮点数的精度几乎相同。)
Joel Goodwin 链接到一个非常有趣的方法,这是一个非常快速的近似技术,精度非常高(对我来说,这甚至比查表还要快)