Giriş
Şu satırı dahil ederiz.
Tanımlama - backend type
Şu satırı dahil ederiz.
#include <boost/multiprecision/gmp.hpp>
List of arbitrary-precision arithmetic software sayfasına bakılabilir. Bu sınıf aslında direkt kullanılmaz. Genellikle bir typedef ile kullanılır. cpp_int sınıfına bakılabilir.
Tanımlama - backend type
Şöyle yaparız. Altta GNU MP BigNum kütüphanesini kullanır.
Açıklama şöyle
Precision olarak 100 verdiysek noktadan sonra 100 rakam verebiliriz. Şöyle yaparız.
Şöyle yaparız.
typedef mp::number<mp::gmp_float<4>> float_type;
Şöyle yaparız.const int precision = 100;
typedef mp::number<mp::cpp_dec_float<100> > float_type;
Tanımlama - backend type + expression templateAçıklama şöyle
You can have all the tail-call implementation details as you expect it by opting out of the lazy-evaluation template expressions (boost::multiprecision::et_off as described in the links), but be sure to check that the reduced code-size and perceived TCO optimization actually leads to increased performance.Şöyle yaparız.
using big_int = bmp::number<bmp::cpp_int::backend_type, bmp::et_off>;
Constructor - stringPrecision olarak 100 verdiysek noktadan sonra 100 rakam verebiliriz. Şöyle yaparız.
float_type pi(
"3.1415926535"
"8979323846"
"2643383279"
"5028841971"
"6939937510"
"5820974944"
"5923078164"
"0628620899"
"8628034825"
"3421170679"
);
Copy ConstructorŞöyle yaparız.
float_type x2 = x (...);
convert_to metodu
double'a çevirmek için şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
float_type v = ...;
double value = v.convert_to<double>();
std:string'e çevirmek için şöyle yaparız.std::string str = v.convert_to<std::string
>();
mpz_int'e çevirmek için şöyle yaparız.typedef mp::mpz_int mpint;
typedef mp::number<mp::gmp_float<4> > mpfloat;
mpfloat p = ...;
std::cout << p.template convert_to<mpint>() << std::endl;
operator * metoduŞöyle yaparız.
x = (x * x);
operator = metodu
Şöyle yaparız.
float_type x = 0.0;
operator << metodu - BitshiftŞöyle yaparız.
uint128_t number = 100;
uint32_t ten = 10;
auto leftShift = number << ten;
Bu metod sağ tarafa sadece integral sayıları alır. Şu kod derlehttps://stackoverflow.com/questions/45529016/bitwise-operation-using-c-boost-librarynmez.cpp_int ten = 10
cout << (number<<c) << endl;
operator || metoduŞöyle yaparız.
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
int128_t int64left = CreateRandomInt64ViaBoost()
int128_t int64right = CreateRandomInt64ViaBoost()
int128_t randomInt = int64left << 64 | int64right;
Hiç yorum yok:
Yorum Gönder