c++ gmpxx.h原型

时间: 2023-08-11 15:15:14 浏览: 102
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); ```

相关推荐

最新推荐

recommend-type

C++头文件time.h详解

详细讲解C++ time.h头文件里面的变量定义,函数用法,注意事项,附有相关样例代码,看完之后基本可以清楚time.h的使用.
recommend-type

C++ cin.getline及getline()用法详解

主要介绍了C++ cin.getline用法及C++ getline()的两种用法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

使用c++编写和使用.so动态链接库

 声明文件mylib.h   #ifndef __MY_LIB_H__ #define __MY_LIB_H__ void foobar(int i); #endif /* __MY_LIB_H__ */  实现文件mylib.c   #include #include...
recommend-type

LBM方柱绕流C++.docx

采用格子Boltzmann方法(LBM)对流体力学经典问题方柱绕流进行分析计算,得出的数据可用后处理软件进行处理。本代码仅供学习之用,对于新手较为友好,如有问题,请指正。欢迎大家在评论区发言
recommend-type

详解C++ cin.getline函数

cin 虽然可以使用 cin 和 &gt;&gt; 运算符来输入字符串,但它可能会导致一些需要注意的问题。 当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。