みなさんこんにちは!
SinとCosの簡単な計算を書く必要がありました。 計算の基礎は、テイラー級数の展開でした。 3Dシステム(OpenGLと私の開発のグラフィックライブラリ)で使用します。 残念ながら、Doubleの「理想的な」数を減らすことはできませんが、これは優れた加速によって相殺されます。 コードは、Delphi XE6のアセンブラーで記述されています。 SSE2によって使用されます。
科学計算には適していませんが、ゲームでの使用には完全に適しています。
精度は、使用されるシングルの数の長さをカバーするのに十分です
行列による乗算用。
要約すると:
- 達成された精度: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,
ここでの作業例建設的な提案やコメントを歓迎します。