21 Ocak 2018 Pazar

multiprecision Free Style Metodlar

Giriş
Şu satırı dahil ederiz.
namespace mp = boost::multiprecision;
exp metodu
Şöyle yaparız.
double da = -1500.0; double db = -1501.0;

mp::float128 a(da), b(db);
mp::float128 res = mp::exp(a) / (mp::exp(a) + mp::exp(b));
lexical_cast metodu
Şöyle yaparız.
mp::float_type x = 0.0;
std::string str = boost::lexical_cast <std::string> (x);
numeric_limits
Şöyle yaparız.
typedef number<cpp_dec_float<100>> higher_prec;

const higher_prec eps_div= 
  std::numeric_limits<number<cpp_dec_float<28>> >::epsilon();
sqrt metodu
Şöyle yaparız.
mp::cpp_int x (1); 
cout << mp::sqrt (x) << endl;
operator > metodu
Örnek ver.

operator < metodu
Örnek ver

operator << metodu - float_type
Şöyle yaparız. Tüm uzunluğu 100 olacak şekilde yazar. 3 + nokta + 99 karakter gibi.
mp::float_type x = 0.0;
std::cout.precision (100);
std::cout << x << std::endl;
operator >> metodu - float_type
Şöyle yaparız.
mp::float_type x;
std::cin >> x;
pow metodu - power
Birinci parametre multiprecision tipindendir. Örneğin cpp_int. İkinci parametre ise int tipindendir. İkinci parametre multiprecision tipinden olamaz.
Örnek - cpp_int
Şöyle yaparız.
namespace mp = boost::multiprecision;
mp::cpp_int x = mp::pow(mp::cpp_int(2), 1024);
Örnek
Şöyle yaparız.
cpp_int p = 2;
cout<<mp::pow(p, 1024)<<endl;
Örnek - float_type
Şöyle yaparız
mp::float_type p = boost::multiprecision::pow(
  mp::float_type(5), mp::float_type(64));
powm metodu - power and modulus
(a ^p) % m olarak çalışır. power'ını aldıktan sonra modulus işlemine sokar. Şöyle yaparız.
const T a = ...; const T p = ...; const T c = ...;
T r = powm(a, p, c);
trunc metodu
Şöyle yaparız.
mp::float_type x = 0.0;
mp::float_type x2 (mp::trunc (mp::x));

Hiç yorum yok:

Yorum Gönder