Giriş
C için Şu satır dahil edilir.
std::abs yazısına taşıdım.
acos metodu
Şöyle yaparız.
exp2
2 üssü x hesaplamasını yapar.
std::log10 metodu yazısına taşıdım.
M_PI Sabiti
Pi sayısıdır. Bu sabit sanırım C++ standardında tanımlı değil ancak bir çok kütüphane sunuyor.
Eğer Kendimiz Tanımlama İstersek
Örnek
Şöyle yaparız.
Şöyle yaparız.
Monte Carlo kullanarak hesaplanabilir.
Örnek
Şöyle yaparız.
sqrt - kare kök (square root)
Üç tane farklı imza var.
C için Şu satır dahil edilir.
#include <math.h>
abs - mutlak değer (absolute value)std::abs yazısına taşıdım.
acos metodu
Şöyle yaparız.
const double pi = std::acos(-1);
exp
e üssü x hesaplamasını yapar. e Euler sayısıdır. Bu metod exp (a) yerine pow (e,a) şeklinde de yazılabilir ancak muhtemelen daha yavaş çalışır.exp2
2 üssü x hesaplamasını yapar.
fma (floating multiply and add)
Bu fonksisyon tam nerede kullanılıyor bilmiyorum ancak fma (x,y,z) = ((x*y)+z) anlamına geliyor.
std::fmod (bölme sonucunda kalanı bulma)
std::fmod yazısına taşıdım
frexp (fraction ve exponent'a ayırma)
Bu fonksiyon ile verilen sayıyı significand ve exponent olarak ayırmak mümkün. Metodun döndürdüğü significand/mantissa ya 0 veya [0.5 - 1.0) aralığında oluyor.
Burada bir şekil var bu görülebiliyor. Exponent'in 2 nin üssü şeklinde verildiğini unutmamak lazım.
Yani şekilde exponent olarak 5 verilse bile aslında 2 ^ 5 yani 32 olarak düşünmek lazım.
0.965625 * 32 = 30.9
Bu yöntemden farklı olarak eğer ondalık sayıyı tam sayı ve küsurat olarak ayırmak istersek aşağıdakine benzer bir kodu da kullanabiliriz.
log metodu
İki tane log metodu var.std::log (5.5); // Gives natural log with base e
std::log10 (5.5); // Gives common log with base 10
log10 metodustd::log10 metodu yazısına taşıdım.
M_PI Sabiti
Pi sayısıdır. Bu sabit sanırım C++ standardında tanımlı değil ancak bir çok kütüphane sunuyor.
Eğer Kendimiz Tanımlama İstersek
Örnek
Şöyle yaparız.
constexpr double pi = 3.14159265358979323846;
ÖrnekŞöyle yaparız.
const double pi = std::acos(-1);
ÖrnekMonte Carlo kullanarak hesaplanabilir.
Örnek
Şöyle yaparız.
double area(Circle radius) {
return M_PI * radius * radius;
}
modff
modff metodu yazısına taşıdım
Üç tane farklı imza var.
double sqrt(double _X);
float sqrt(float _X);
long double sqrt(long double _X);
Bu metod yerine kendimiz kodlamak istersek Newton-Raphson yöntemi kullanılabilir.std::remainder
std::remainder yazısına taşıdım
Şöyle yaparız.
sin (angle * M_PI/180);
tgamma metodu
1'den büyük sayılar için factorial ile aynıdır. Şöyle yaparız.
for (int i = 1 ; i != 10 ; i++) {
printf("%lld %f\n", factorial(i), tgamma(i+1));
}
Çıktı olarak şunu alırız.1 1.000000
2 2.000000
6 6.000000
24 24.000000
120 120.000000
720 720.000000
5040 5040.000000
40320 40320.000000
362880 362880.000000
Hiç yorum yok:
Yorum Gönder