Halo semuanya!
Ada kebutuhan untuk menulis perhitungan cepat Sin dan Cos. Dasar perhitungannya adalah ekspansi dalam seri Taylor. Saya menggunakannya dalam sistem 3D (OpenGL dan perpustakaan grafik pengembangan saya). Sayangnya, tidak mungkin untuk mengurangi jumlah "ideal" untuk Double, tetapi ini diimbangi dengan akselerasi yang baik. Kode ini ditulis dalam assembler di Delphi XE6. Digunakan oleh SSE2.
Tidak cocok untuk komputasi ilmiah, tetapi sepenuhnya untuk digunakan dalam game.
Akurasinya cukup untuk menutupi panjang jumlah Single, yang digunakan
untuk perkalian dengan matriks.
Singkatnya:
- Akurasi yang diperoleh adalah: 10.e-13
- Perbedaan maksimum dengan CPU adalah 0,000000000000045.
- Kecepatan meningkat dibandingkan dengan CPU sebesar 4,75 kali.
- Kecepatannya meningkat dibandingkan dengan Math.Sin dan Math.Cos sebesar 2,6 kali.
Untuk pengujian saya menggunakan prosesor Intel Core-i7 6950X Extreme 3.0 GHz.
Kode sumber delphi tertanam dalam komentar assembler.
Kode Sumber:
Judul spoilervar 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,
Contoh pekerjaan di siniSaran dan komentar konstruktif dipersilakan.