大家好!
有必要对Sin和Cos进行快速计算。 计算的基础是泰勒级数的展开。 我在3D系统(OpenGL和我开发的图形库)中使用它。 不幸的是,不可能减少Double的“理想”数目,但这可以通过良好的加速度来抵消。 该代码在Delphi XE6中的汇编器中编写。 由SSE2使用。
不适合科学计算,但完全可以用于游戏中。
准确度足以覆盖使用数量Single的长度
与矩阵相乘。
总结:
- 达到的精度是:10.e-13
- 与CPU的最大差异为0.000000000000045。
- 与CPU相比,速度提高了4.75倍。
- 与Math.Sin和Math.Cos相比,速度提高了2.6倍。
为了进行测试,我使用了Intel Core-i7 6950X Extreme 3.0 GHz处理器。
Delphi源代码嵌入在汇编程序注释中。
源代码:
扰流板方向var gSinTab: array of Double; gSinAddr: UInt64; const AbsMask64: UInt64 = ($7FFFFFFFFFFFFFFF); PI90: Double = (PI / 2.0); FSinTab: array[0..7] of Double = (1.0 / 6.0,
这里的工作例子欢迎提出建设性的建议和意见。