Bir değerin hem sinüsünü hem de eş sinüsünü birlikte hesaplamak istiyorum (örneğin bir rotasyon matrisi oluşturmak için). Tabii ki onları birbiri ardına ayrı ayrı hesaplayabilirim a = cos(x); b = sin(x);
, ancak her iki değere de ihtiyaç duymanın daha hızlı bir yolu olup olmadığını merak ediyorum.
Düzenleme: Şimdiye kadarki cevapları özetlemek için:
Vlad ,
FSINCOS
ikisini de hesaplayanasm komutuolduğunu söyledi (neredeyseFSIN
tek başınabir çağrı ile aynı zamanda)Gibi Chi fark bu optimizasyon bazen zaten (optimizasyon bayrakları kullanılırken) derleyici tarafından yapılır.
caf , çalıştığını
sincos
vesincosf
muhtemelen mevcut olduğunu ve sadece dahil edilerek doğrudan çağrılabileceğini belirtti.math.h
Bir taramalı tablo kullanmanın tanascius yaklaşımı tartışmalı olarak tartışılmaktadır. (Bununla birlikte, bilgisayarımda ve bir kıyaslama senaryosunda
sincos
, 32-bit kayan noktalar için neredeyse aynı doğruluklaolduğundan 3 kat daha hızlı çalışır.)Joel Goodwin , oldukça hızlı bir yaklaşım tekniğinin ilginç bir yaklaşımını oldukça iyi bir doğrulukla ilişkilendirdi (benim için bu, tablo aramasından daha hızlı)