将C++程序转换为使用 GMP
Converting a C++ program to use GMP
我的程序中的所有变量都使用以下数据类型
typedef long long ll;
我安装了GMP并尝试这样做:
typedef mpz_class ll;
我试过了
typedef mpz_t ll;
但它不会编译,通常会出现大量"无效运算符"错误。有没有更简单的方法来翻译东西?
示例错误:
ll a = sqrt(static_cast<double>(n/2));
来自类型 __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, long int, __gmp_binary_divides> >' to type
Double 的无效static_cast
另一个:
count-=myArr[m];
与"myArr[m]"中的"运算符[]"不匹配
它也不会让我做
mpz_t count;
count = (x*x-1);
其中 x 是长长
首先,mpz_t没有任何运算符重载,因为它是一个 C 结构,而不是一个C++类。接下来,mpz_class的行为有点像整数,因为它有一些基本的运算符重载。但是,它绝对不能作为其他类型整数值的直接替代品。您必须通过程序并通过将当前代码替换为将处理mpz_class值的下一个代码来修复所有错误。没有简单的方法可以做到这一点:您必须咬紧牙关并学习如何有效地使用GMP。
或者,您可以尝试使用 CLN 或其他库之类的东西,这些库试图更接近于大数字插入式替换C++。据我所知,没有一个库可以完全或甚至非常好地做到这一点。
相关文章:
- 使用 GMP 的 while 循环出现问题
- 有没有一个 c++ gmp 库函数与 python gmpy2 库 divm(..) 函数相同?
- 使用 MinGW 在 Windows 上安装 GMP 时出错
- 为什么gmp会在这里与"invalid next size"重新定位一起崩溃?
- MSYS2 MinGW64 在 Windows 上构建 GMP/MPFR 作为静态库,并将它们链接到使用 CL 编译的
- 尝试运行 gmp 时未找到 MPIR.dll
- GMP-将64位整数存储在mpz_t/mpz_class中,并返回64位整数
- 使用Rcpp返回GMP类
- C++ - 带有 % 运算符的 GMP 库错误
- 如何导入使用自制软件安装的 GMP?
- 为什么提升日志中断会提升 GMP 多精度?
- 使用 GMP/ARB 矩阵减少 OpenMP
- 使用GMP在C 中编译代码
- 如何使用 GMP 创建浮点数组?
- gmp 的 libgmp.so 有哪些依赖关系?我不断收到未定义的引用
- 如何使用整数初始化 GMP mpz_t
- 如何使用 std::cout 和 mini-gmp mpz-t.
- 使用GMP安装NTL
- GMP 中变量的初始化
- 如何使用Visual Studio为windows编译GMP