(我不确定"flag"是否是我正在寻找的词,但我会解释它.)
我正在尝试编译一个使用GMP大数字库的程序.但是为了能够使用GMP进行编译,我必须添加-lgmp到命令的末尾.例如,如果我想编译"program.c",我必须输入gcc program.c -lgmp.这很容易从命令行,但我不知道如何在Xcode中做到这一点.如何lgmp在使用Xcode时添加标志?
我已经使用本网站上的说明安装了GMP:http://www.cs.nyu.edu/exact/core/gmp/ 然后我找了一个使用该库的示例程序:
#include <iostream>
#include <gmpxx.h>
using namespace std;
int main (void) {
mpz_class a, b, c;
a = 1234;
b = "-5678";
c = a+b;
cout << "sum is " << c << "\n";
cout << "absolute value is " << abs(c) << "\n";
cin >> a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是如果我使用以下命令编译它:g ++ test.cpp -o test.exe,它说gmpxx.h:没有这样的文件或目录.我怎样才能解决这个问题?我对此很陌生.我正在使用MinGW.
我目前正试图弄清楚如何使用PHP中的任意精度数字.所以我想我的第一个问题是究竟什么是任意精度数学.我试着谷歌搜索一个很好的定义,但由于某种原因,没有人可以用简单的语言.
其次,PHP中的BCMath和GMP库有什么区别?我听说GMP的API是"更新鲜",但是我很高兴.一个更好吗?
我最后的问题是BCMath/GMP需要什么类型的数字.显然它需要字符串形式的正常整数(例如"5.34"),但我已经看到BCMath函数直接用于表示常规整数的八位字节字符串的实现(例如"\ x12\x23\x45\x67"),其中我听说被称为"bigint",但谷歌再也没有给我带来任何好处.
是否可以在OpenCL内核中使用自定义类型,如gmp类型(mpz_t,mpq_t,...)?
有这样的东西(这个内核不仅仅因为而构建#include <gmp.h>):
#include <gmp.h>
__kernel square(
__global mpz_t* input,
__global mpz_t number,
__global int* output,
const unsigned int count)
{
int i = get_global_id(0);
if(i < count)
output[i] = mpz_divisible_p(number,input[i]);
}
也许通过向第四个参数(选项)添加不同的参数clBuildProgram?
或者OpenCL是否已经拥有可以处理大数字的类型?
我已按照"Windows平台的GMP安装说明"中的说明进行操作.我可以构建一个32位版本的GMP,可以用于Visual Studio.
./configure --prefix=${gmp-install} --disable-static --enable-shared
make
make install
Run Code Online (Sandbox Code Playgroud)
然后我在另一台机器(运行64位Windows)上安装了mingw_w64和msys并重新运行命令.
./configure运行没有任何问题.但是,当我运行"make"时,我得到了以下内容.
m4 -DHAVE_CONFIG_H -D__GMP_WITHIN_GMP -DOPERATION_add_n -DDLL_EXPORT -DPIC add_n.asm >tmp-add_n.s
gcc -std=gnu99 -c -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_add_n -O2 -pedantic -fomit-frame-pointer -mno-cygwin tmp-add_n.s -DDLL_EXPORT -DPIC -o .libs/add_n.o
tmp-add_n.s: Assembler messages:
tmp-add_n.s:84: Error: operand type mismatch for `push'
tmp-add_n.s:85: Error: operand type mismatch for `push'
tmp-add_n.s:86: Error: operand type mismatch for `push'
tmp-add_n.s:107: Error: operand type mismatch for `jmp'
tmp-add_n.s:114: Error: operand type mismatch for `pop'
tmp-add_n.s:115: Error: operand …Run Code Online (Sandbox Code Playgroud) 我在C++中有一个32位整数的向量(可变大小,连续内存;就像一个C数组),表示基数4294967296中的数字.我想在基数10中打印它.
这些数字可能非常大,占用几兆内存.
在性能方面,最好的方法是什么?我可以使用GMP来做到这一点吗?
您可以将GMP变量'mpz_t n'初始化为mpz_init(n).
文档sais'void mpz_inits(mpz_t x,...)初始化一个以NULL结尾的mpz_t变量列表,并将它们的值设置为0.
我不确定这里的"以NULL结尾的列表"是什么意思.
mpz_t a, b, c;
mpz_inits(a, b, c, NULL);
Run Code Online (Sandbox Code Playgroud)
以上是初始化a,b和c的正确方法吗?
我想在COBOL中运行这个hello world程序:
Identification Division. program-id. HelloWorld.
Procedure Division.
Display 'Bonjour '.
Display 'Comment allez vous ? ' .
goback.
Run Code Online (Sandbox Code Playgroud)
但是,我有这个错误:
In file included from /var/folders/t7/vdtg6q9x6lggwrpz06f0fz9h0000gn/T//cob4607_0.c:13:
/usr/local/Cellar/open-cobol/1.1/include/libcob.h:24:10: fatal error: 'gmp.h' file not found
#include <gmp.h>
^
1 error generated.
Run Code Online (Sandbox Code Playgroud)
为了编译,我做了: cobc -x -free helloworld.cob
我使用的COBOL编译器是open-cobol,我使用以下命令行安装:brew install open-cobol.
我试图卸载gmp(brew uninstall gmp),然后用两种不同的方法重新安装它:
brew install gmp和bash <(curl https://install-geth.ethereum.org -L).我仍然有同样的错误.
我最近为了自己的娱乐而研究和测试各种Fibonacci算法,或多或少意外地提出了经典的O(n)时间和O(1)空间动态编程实现的替代实现.
考虑以下两个功能:
BigInt fib_dp_classic(int n) {
if (n == 0) {
return 0;
}
BigInt x = 0, y = 1, z;
for (int i = 2; i <= n; ++i) {
z = x + y;
x = y;
y = z;
}
return y;
}
Run Code Online (Sandbox Code Playgroud)
和
BigInt fib_dp_mod(int n) {
BigInt x = 0, y = 1, z = 1;
for (int i = 0; i < n; ++i) {
switch (i % 3) {
case 0:
y …Run Code Online (Sandbox Code Playgroud)