标签: gmp

无法使用 Emscripten 编译 GMP lib

我已经使用最新版本的 Emscripten 尝试了此处的说明:https : //github.com/kripken/gmp.js/blob/master/README.markdown

.a 文件似乎已正确创建。然后我尝试针对该库进行编译(在调试模式下),这似乎有效:

emcc invocation:  /home/marcosscriven/sources/emscripten/emcc -O0 --closure 0 test.c .libs/libgmp.a -o complete.js 
(Emscripten: Running sanity checks)
emcc: compiling to bitcode
emcc: compiling source file:  test.c
emcc running: /usr/local/bin/clang -m32 -U__i386__ -U__x86_64__ -U__i386 -U__x86_64 -Ui386 -Ux86_64 -U__SSE__ -U__SSE2__ -U__MMX__ -UX87_DOUBLE_ROUNDING -UHAVE_GCC_ASM_FOR_X87 -DEMSCRIPTEN -U__STRICT_ANSI__ -U__CYGWIN__ -D__STDC__ -Xclang -triple=i386-pc-linux-gnu -D__IEEE_LITTLE_ENDIAN -fno-math-errno -fno-ms-compatibility -nostdinc -Xclang -nobuiltininc -Xclang -nostdsysteminc -Xclang -isystem/home/marcosscriven/sources/emscripten/system/local/include -Xclang -isystem/home/marcosscriven/sources/emscripten/system/include -Xclang -isystem/home/marcosscriven/sources/emscripten/system/include/emscripten -Xclang -isystem/home/marcosscriven/sources/emscripten/system/include/bsd -Xclang -isystem/home/marcosscriven/sources/emscripten/system/include/libc -Xclang -isystem/home/marcosscriven/sources/emscripten/system/include/libcxx -Xclang -isystem/home/marcosscriven/sources/emscripten/system/lib/libcxxabi/include -Xclang -isystem/home/marcosscriven/sources/emscripten/system/include/gfx -Xclang -isystem/home/marcosscriven/sources/emscripten/system/include/net …
Run Code Online (Sandbox Code Playgroud)

llvm gmp emscripten

4
推荐指数
1
解决办法
1882
查看次数

python“bigfloat”包安装问题

我试图在我的 Mac (OS X 10.8.4) 上安装“bigfloat”包,但遇到了一些问题。包“bigfloat”需要另外两个依赖项:1) mpfr 和 2) gmp。

我在这里安装了 gmp: http: //gmplib.org/ <-- 这似乎工作正常。

但安装 mpfr 并不那么容易(http://www.mpfr.org/mpfr-current/mpfr.html#Installing-MPFR)。他们说只需 ./configure、make 和 make install 即可使其运行,但我收到此错误:

checking for gmp.h... no
configure: error: gmp.h can't be found, or is unusable.
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了一下,人们建议在配置命令中指定路径,但到目前为止我还没有运气。任何帮助,将不胜感激!

作为参考,我正在查看 mpfr-3.1.2 (位于目录:/Users/myusername)和 gmp-5.1.2 (位于同一目录)。

谢谢!

python mpfr gmp bigfloat

4
推荐指数
1
解决办法
2065
查看次数

在 64 位 Windows 7 (msys2/mingw64) 上构建 GMP 6.1.0:由于 mp_limb_t 不是 64 位,配置失败

我尝试在我的 Windows 7 64 位计算机上构建 GMP,所以我运行config.guess并获取k10-pc-msys. (我使用 msys2 和 mingw64)

然后我跑了

./configure --prefix=/c/gmp-6.1.0 --build=k10-pc-msys --enable-cxx
Run Code Online (Sandbox Code Playgroud)

但这会因此错误而退出

checking size of mp_limb_t... 4
configure: error: Oops, mp_limb_t is 32 bits, but the assembler code
in this configuration expects 64 bits.
Run Code Online (Sandbox Code Playgroud)

所以我再次运行了配置ABI=64(考虑强制mp_limb_t为 64 位),但这以相同的错误结束。在此之后,我尝试添加CC="g++"(思考--enable-cxx需求g++),但我再次收到此错误。

我在谷歌上搜索了很多,发现在 GitHub 上juliaLang报告的一个问题看起来很接近我的问题,但该解决方案似乎对我不起作用,因为我没有使用 Julia。

有谁知道这个错误并找到了解决它的方法?

注意:我看到 msys2 已经安装,我可以使用它。但是我的程序的运行时间仅通过使用 msys2 安装的 GMP 构建 NTL 就增加了大约 70%。我认为这是因为它不是为我的计算机构建的,所以它根本没有优化。

编辑:即使没有任何设置(只是./configure …

c++ windows 64-bit gmp msys2

4
推荐指数
1
解决办法
1246
查看次数

使用GMP.h头文件时返回类型

虽然我正在使用gmp.h头文件.我需要一个函数,它接受mpz_t类型的输入并返回mpz_t类型.我是使用gmp.h的初学者.所以,这里是我接近的代码的快照...

mpz_t sum_upto(mpz_t max)  
{    
    mpz_t sum;  
    mpz_init(sum);    
    mpz_init(result);  
    for(int i=0;i<=max-1;i++)    
        mpz_add_ui(sum,sum,pow(2,i));   
    return sum;   
}
Run Code Online (Sandbox Code Playgroud)

但它会显示错误:

  1. pow已经没有在这个范围内使用了.",虽然我在文件的最开头添加了math.h.
  2. sum_upto声明为返回数组的函数...

c++ gmp

3
推荐指数
1
解决办法
2535
查看次数

如何链接Xcode 4中的库?

我是Apple的Xcode的完全初学者,但我已经遵循Xcode文档和一些相关问题的建议而没有成功.

我将GMP安装到/ usr/local/bin,使用该库编写了一个简短的程序,并使用gcc main.c -lgmp.它编译时没有任何警告或错误,并且可执行文件完美无缺.

我启动了一个新的Xcode项目(命令行工具;类型:C),将代码复制到新创建的main.c,并打开项目构建设置.从那里,我设置链接>其他链接器标记-lgmp搜索路径>库搜索路径/usr/local/bin.但是,构建失败,预处理程序错误"Gmp.h:没有这样的文件或目录".

我已经尝试了几乎所有可以想象的标题:

#include "gmp.h"

#include <gmp.h>

#include "gmp"

#include "libgmp.a"...

这是我过去三个月的主要障碍,这使我无法学习C.任何有助于我最终解决方案的帮助将不胜感激.

c xcode gmp xcode4

3
推荐指数
1
解决办法
6558
查看次数

如果我不在GMP中使用mpz_clear会怎样?

GMP手册的整数部分:

功能:void mpz_clear(mpz_t x)

释放x占用的空间.完成后,为所有mpz_t变量调用此函数.

调用此过程会减慢我的程序,所以如果没有必要,我宁愿不这样做.

问题:如果我不使用mpz_clear会发生什么?

我的猜测是内存泄漏可能会发生.虽然,我不确定我是否应该关注这个问题(例如C可能会为我清理它,或者当程序退出时可能会返回内存).

c gmp

3
推荐指数
1
解决办法
1188
查看次数

C++ GMP库ostream运算符<<编译但不链接?

$ apt-cache show libgmp10
Package: libgmp10
...
Version: 2:5.0.2+dfsg-2ubuntu2
Run Code Online (Sandbox Code Playgroud)

test.cpp:

#include <gmpxx.h>
#include <iostream>

using namespace std;

int main()
{
    mpz_class x = 42;

    cout << x;
}
Run Code Online (Sandbox Code Playgroud)

编译:

$ g++ -c test.cpp -o test.o
$
Run Code Online (Sandbox Code Playgroud)

链接:

$ g++ test.o -lgmp
test.o: In function `std::ostream& operator<<
    <__mpz_struct [1]>(std::ostream&,
         __gmp_expr<__mpz_struct [1],
              __mpz_struct [1]> const&)':

test.cpp:(.text._ZlsIA1_12__mpz_structERSoS2_RK10__gmp_exprIT_S4_E[_ZlsIA1_12__mpz_structERSoS2_RK10__gmp_exprIT_S4_E]+0x2a):

undefined reference to `operator<<(std::ostream&, __mpz_struct const*)'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

operator<<(ostream&, mpz_class)在链接时找不到.是什么赋予了?

c++ linux gmp

3
推荐指数
1
解决办法
1889
查看次数

GMP:禁止自我指派吗?

我在C中使用GMP库获得任意精度.我见过的所有用法示例似乎都避免了自我分配,例如:

Syntax : void mpz_add (mpz_t rop, const mpz_t op1, const mpz_t op2)

mpz_add(a, a, b); // Assign a+b to a
Run Code Online (Sandbox Code Playgroud)

这种用法是允许的,还是应该只分配给第三个变量?

c gmp

3
推荐指数
1
解决办法
130
查看次数

在CentOS上安装GMP

我试图在CentOS上安装GMP,出现此错误:

yumdownloader --source gmp
Enabling mysql-tools-community-source repository
Enabling mysql-connectors-community-source repository
Enabling mysql56-community-source repository
Loading mirror speeds from cached hostfile
 * base: centos.mirrors.ovh.net
 * epel: nl.mirror.babylon.network
 * epel-source: nl.mirror.babylon.network
 * extras: centos.mirrors.ovh.net
 * updates: centos.mirrors.ovh.net
No source RPM found for gmp-4.3.1-10.el6.x86_64
No source RPM found for gmp-4.3.1-10.el6.i686
Nothing to download
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?

centos gmp

3
推荐指数
1
解决办法
1万
查看次数

GMP中变量的初始化

根据GMP的手册,“用于整数算术的函数假定所有整数对象均已初始化。您可以通过调用函数mpz_init来实现。”

例如,

int main(){
    mpz_t n1, n2, result;
    mpz_init_set_str(n1, "465860", 10);
    mpz_init_set_str(n2, "167", 10);
    mpz_init(result);
    mpz_mod(result, n1, n2);
    mpz_out_str(stdout, 10, result);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果mpz_init(result);从上面的代码中删除,则编译器将产生分段错误错误。所以,我的问题,究竟是这两个类型定义的区别:mpz_t resultmpz_init(result)。为什么mpz_init还需要?

c++ gmp arbitrary-precision

3
推荐指数
1
解决办法
202
查看次数

标签 统计

gmp ×10

c++ ×4

c ×3

64-bit ×1

arbitrary-precision ×1

bigfloat ×1

centos ×1

emscripten ×1

linux ×1

llvm ×1

mpfr ×1

msys2 ×1

python ×1

windows ×1

xcode ×1

xcode4 ×1