c++ gmpxx.h原型
时间: 2023-08-11 17:15:14 浏览: 366
gmpxx.h 是 GNU Multiple Precision Arithmetic Library(GMP) C++ 绑定库的头文件,它提供了一组 C++ 类和函数,用于在 C++ 中方便地使用 GMP 库。下面是 gmpxx.h 的一些重要的类和函数原型:
1. `mpz_class`:表示 GMP 中的整数类型。
```c++
class mpz_class {
public:
// 构造函数
mpz_class();
mpz_class(const mpz_t);
mpz_class(const mp_limb_t);
mpz_class(const signed long int);
mpz_class(const unsigned long int);
mpz_class(const char*, int base = 0);
mpz_class(const std::string&, int base = 0);
// 运算符重载
mpz_class& operator+=(const mpz_class&);
mpz_class& operator-=(const mpz_class&);
mpz_class& operator*=(const mpz_class&);
mpz_class& operator/=(const mpz_class&);
mpz_class& operator%=(const mpz_class&);
mpz_class& operator&=(const mpz_class&);
mpz_class& operator|=(const mpz_class&);
mpz_class& operator^=(const mpz_class&);
mpz_class& operator<<=(mp_bitcnt_t);
mpz_class& operator>>=(mp_bitcnt_t);
mpz_class operator+() const;
mpz_class operator-() const;
mpz_class operator~() const;
// 成员函数
void swap(mpz_class&);
std::string get_str(int base = 10) const;
int compare(const mpz_class&) const;
size_t size() const;
bool fits_slong_p() const;
bool fits_ulong_p() const;
signed long int get_si() const;
unsigned long int get_ui() const;
void set_si(signed long int);
void set_ui(unsigned long int);
void set_str(const char*, int base = 0);
// 静态成员函数
static void swap(mpz_class&, mpz_class&);
static mpz_class get_si(signed long int);
static mpz_class get_ui(unsigned long int);
};
```
2. `mpq_class`:表示 GMP 中的有理数类型。
```c++
class mpq_class {
public:
// 构造函数
mpq_class();
mpq_class(const mpq_t);
mpq_class(const mpz_class&);
mpq_class(const mpz_class&, const mpz_class&);
mpq_class(const mp_limb_t);
mpq_class(const signed long int);
mpq_class(const unsigned long int);
mpq_class(const char*, int base = 0);
mpq_class(const std::string&, int base = 0);
// 运算符重载
mpq_class& operator+=(const mpq_class&);
mpq_class& operator-=(const mpq_class&);
mpq_class& operator*=(const mpq_class&);
mpq_class& operator/=(const mpq_class&);
mpq_class operator+() const;
mpq_class operator-() const;
// 成员函数
void swap(mpq_class&);
std::string get_str(int base = 10) const;
int compare(const mpq_class&) const;
size_t size() const;
bool fits_slong_p() const;
bool fits_ulong_p() const;
signed long int get_si() const;
unsigned long int get_ui() const;
void set_si(signed long int);
void set_ui(unsigned long int);
void set_str(const char*, int base = 0);
void canonicalize();
// 静态成员函数
static void swap(mpq_class&, mpq_class&);
static mpq_class get_si(signed long int);
static mpq_class get_ui(unsigned long int);
};
```
3. `mpf_class`:表示 GMP 中的浮点数类型。
```c++
class mpf_class {
public:
// 构造函数
mpf_class();
mpf_class(const mpf_t);
mpf_class(const double);
mpf_class(const char*, int base = 0);
mpf_class(const std::string&, int base = 0);
mpf_class(const mpz_class&);
mpf_class(const mpq_class&);
// 运算符重载
mpf_class& operator+=(const mpf_class&);
mpf_class& operator-=(const mpf_class&);
mpf_class& operator*=(const mpf_class&);
mpf_class& operator/=(const mpf_class&);
mpf_class operator+() const;
mpf_class operator-() const;
// 成员函数
void swap(mpf_class&);
std::string get_str(mp_exp_t, int base = 10) const;
int compare(const mpf_class&) const;
size_t size() const;
bool fits_slong_p() const;
bool fits_ulong_p() const;
signed long int get_si() const;
unsigned long int get_ui() const;
void set_si(signed long int);
void set_ui(unsigned long int);
void set_str(const char*, int base = 0);
void set_prec(size_t);
size_t get_prec() const;
void set_exp(mp_exp_t);
mp_exp_t get_exp() const;
void swap(mpf_class&, mpf_class&);
static mpf_class get_si(signed long int);
static mpf_class get_ui(unsigned long int);
};
```
4. `mpf_t`:表示 GMP 中的浮点数类型。
```c++
typedef __mpf_struct mpf_t[1];
```
5. `mpq_t`:表示 GMP 中的有理数类型。
```c++
typedef __mpq_struct mpq_t[1];
```
6. `mpz_t`:表示 GMP 中的整数类型。
```c++
typedef __mpz_struct mpz_t[1];
```
7. `mpz_ui_pow_ui`:计算给定底数和指数的幂。
```c++
void mpz_ui_pow_ui(mpz_t r, unsigned long int b, unsigned long int e);
```
8. `mpf_set_default_prec`:设置默认的浮点数精度。
```c++
void mpf_set_default_prec(mp_bitcnt_t prec);
```
阅读全文