7 Şubat 2018 Çarşamba

multiprecision mpz_int Sınıfı

Giriş
Bu sınıf backend olarak gmp'yi kullanır. cpp_int ile kardeştir. gmp kütüphanesi ile linklemek gerekir. Şöyle yaparız
g++ -std=c++11 -O2 -Wall -Wextra -pedantic main.cpp -o demo -lgmp
Constructor
Şöyle yaparız. Parametre olarak verilen mpz_t verisinin kopyasını alır.
mpz_t number = ...;
mp::mpz_int bigint (number);
Dolayısıyla şöyle yapabiliriz.
typedef boost::multiprecision::mpz_int BigInt;

BigInt createNumber(const unsigned char* in, size_t length)
{
  mpz_t number;
  mpz_init2(number, length);
  mpz_import(number, 1, 1, length, 1, 0, in);
  BigInt bigint (number);
  mpz_clear(number);
  return bigint;
}
Diğer
GNU Multiprecision bir C kütüphanesi. C++ olarak kullanmak istersek
<gmpxx.h>
ve
mpz_class
olarak kullanırız.

mpz_init metodu
Şöyle yaparız.
mpz_t number;
mpz_init (number);
mpz_add metodu
Toplama için kullanılır. Şöyle yaparız.
mpz_add(A,B,C); // A = B + C
mpz_mul metodu
Çarpma için kullanılır. Şöyle yaparız.
mpz_mul_si(A, B, 2); //A = B * 2;
mpz_set metodu
Bir değişkeni bir başka değişkene atamak için kullanılır. Şöyle yaparız.
mpz_t temp = ...
mpz_set(number,temp);

Hiç yorum yok:

Yorum Gönder