Fortran kullanma acos() ve asin() ile atan() vb. Gibi birçok çağrı yapan bazı rutinlerim vardır. Belirli bir yordamda argüman hesaplaması bazen illiegal olur (ör. Tek hassas değişkenler kullanılırken acos (1.0000001)). Çifte hassasiyet kullanarak bu gider, ancak hızı yaklaşık% 50 - 70 arasındadır. gerçi bunu yapmanın yavaş yöntemi olarakfortran acos işlev argüman sağlamlığı
arg3= arg1/arg2
if (angle > 1) then
arg3= 1
else if (angle < -1) then
arg3= -1
end if
angle= acos(arg3)
görünüyor: Aklıma diğer tek yolu argüman sınırlamaktır. Daha hızlı bir yolu var mı? Yani angle
ön limiti, sadece bu durumda değerleri -1 ve 1 arasında alır;
Düzenleme: bağımsız değişkenler ve sonuçların gerçek olması (karmaşık olmayan) olması gerekir.
abs (arg)> 1 için değil, ancak karmaşıktır. Ama sonuçumun gerçek olması gerekiyor. –
üzgünüm beyin zararı –
'min' ve' max' intrinsics 'if' durumundan daha hızlı olabilir. Aynı problemi çift hassasiyette bile riske atıyorsunuz, muhtemelen daha az olasıdır. –