标签: gmp

如何使用GMP,MPFR,MPC,ELF逐个安装GCC,无需共享库?

如何使用当前版本,
使用正确版本的依赖项,而不是使用包管理器(如yum,rpm,apt,dpkg),而不是使用共享库,逐个安装GCC(GNU编译器集合)?

典型的开发人员可能希望以典型的方式安装GCC,使用您的包管理器(yum,rpm,apt,dpkg,port,brew等)或按照此处的说明进行操作(http://gcc.gnu.org/wiki/ InstallingGCC).

我的问题是如何一块一块地安装GCC,没有共享库.

  • 我想要一个完全独立的GCC,可以在不使用任何共享库的情况下在我的系统中移动,而无需创建任何共享库.
  • 这就是GCC所说的"困难之路",不建议普通用户使用.

GCC取决于:

  • GMP:GNU多精度算术库
  • MPFR:GNU多精度浮点舍入库
  • MPC:GNU多精度C库
  • ELF:可执行和可链接格式库
  • PPL:Parma Polyhedra库(可选,用于内存优化)

gcc elf mpfr gmp mpc

111
推荐指数
5
解决办法
10万
查看次数

最好的跨平台(便携式)任意精度数学库

我在C或C++中寻找一个好的任意精度数学库.你能给我一些意见/建议吗?

主要要求:

  1. 必须处理任意大整数(我的主要兴趣是整数).如果你不知道这个词是什么意思大,意味着像100000这样的东西!(阶乘为100000).
  2. 在库初始化/对象创建期间,不必指定精度.精度应该受系统可用资源的限制.
  3. 应该利用平台的全部功能,并且应该本地处理"小"数字.这意味着在64位平台上,计算2 ^ 33 + 2 ^ 32应该使用可用的64位CPU指令.库不应该像在同一平台上使用2 ^ 66 + 2 ^ 65那样计算它.
  4. 必须处理加法(+),减法( - ),乘法(*),整数除法(/),余数(%),幂(**),增量(++),减量( - ),gcd() ,factorial()和其他常见的整数算术计算有效.能够处理不产生整数结果的sqrt()(平方根),log()(对数)等函数是一个优点.处理符号计算的能力甚至更好.

这是我到目前为止发现的:

  1. JavaBigIntegerBigDecimal类:到目前为止我一直在使用它们.我已经阅读了源代码,但我不了解下面的数学.它可能基于我从未学过的理论/算法.
  2. 内置的整数类型或bc/Python/Ruby/Haskell/Lisp/Erlang/OCaml/PHP /其他一些语言的核心库:我曾经使用过其中的一些,但我不知道他们使用的是哪个库,或者他们正在使用哪种实现方式.

我所知道的:

  1. 使用char作为十进制数字,使用char*作为十进制字符串,并使用for循环对数字进行计算.
  2. 使用int(或long intlong long)作为基本"单元"并将其数组作为任意长整数,并使用for循环对元素进行计算.
  3. 使用整数类型将十进制数字(或几位数)存储为BCD(二进制编码的十进制).
  4. Booth的乘法算法 …

c c++ biginteger gmp bigdecimal

77
推荐指数
5
解决办法
2万
查看次数

建立GCC需要GMP 4.2 +,MP​​FR 2.3.1+和MPC 0.8.0+

我从http://www.netgull.com/gcc/releases/gcc-4.5.0/下载了GCC 4.5,但是当我尝试设置/构建时,我收到以下错误:

Linux:>~/shared_scripts/bin/gcc/gcc-4.5.0 1040> /x/home/prakash_satya/shared_scripts/bin/gcc/gcc-4.5.0/configure CC="gcc -m64" --prefix=/x/home/prakash_satya/shared_scripts/bin/gcc/gcc-4.5.0 --with-gmp-lib=/usr/lib64 --with-mpfr-lib=/usr/lib64 --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking for gawk... gawk
checking for gcc... gcc -m64
checking for C compiler default output file name... a.out
checking whether …
Run Code Online (Sandbox Code Playgroud)

gcc mpfr gmp mpc

61
推荐指数
4
解决办法
8万
查看次数

Pycrypto安装致命错误:找不到gmp.h文件

似乎有很多人遇到过类似的问题,然而,经过多次搜索,我找不到适用于我的特定架构的解决方案.我正在尝试安装Pycrypto(作为Fabric的子公司)无济于事.

我正在通过Homebrew运行Mac 10.8.2,python 2.7.3,以及使用pip或easy_install运行XCode 4.6(我已经尝试过两者).据我所知,问题可能与我的XCode版本有关,也可能是因为我的库.已安装XCode的命令行工具,我已尝试放入setenv ARCHFLAGS "-arch i386 -arch x86_64"我的.cshrc文件.我也试过了ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer /Developer.至于图书馆,我尝试通过它们进行链接ln -s /usr/local/lib/libgmp.dylib /usr/lib/libgmp.dylib- 但这也没有用.

无论我尝试什么角度,错误总是相同的(见下文).任何和所有的帮助将不胜感激.

/usr/local/share/python% pip install pycrypto
Downloading/unpacking pycrypto
  Running setup.py egg_info for package pycrypto

Installing collected packages: pycrypto
  Running setup.py install for pycrypto
    building 'Crypto.PublicKey._fastmath' extension
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -pipe -mmacosx-version-min=10.8 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -Wno-unused-value -Wno-empty-body -Qunused-arguments -fwrapv -Wall -Wstrict-prototypes -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/ -I/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/_fastmath.c -o build/temp.macosx-10.8-intel-2.7/src/_fastmath.o
src/_fastmath.c:36:11: fatal error: 'gmp.h' …
Run Code Online (Sandbox Code Playgroud)

python gmp pycrypto osx-mountain-lion

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

在R中,使用Ubuntu,尝试根据GMP C lib安装lib,它不会找到GMP,但是我安装了GMP

我想安装R的Rmpfr库,所以我输入R:

install.packages("Rmpfr")
Run Code Online (Sandbox Code Playgroud)

这个包需要安装GMP C库,在Ubuntu中可以安装在终端上打字

sudo apt-get install libgmp-dev
Run Code Online (Sandbox Code Playgroud)

因此,在我尝试在R中安装Rmpfr库之后,我收到一条包含的错误消息

configure: error: GNU MP not found, or not 4.1.4 or up, see http://gmplib.org
Run Code Online (Sandbox Code Playgroud)

问题是,我已经安装了GNU MP,其版本是5.1.2.所以,我可能有些不对劲.

有线索吗?:-) 谢谢!

linux ubuntu r gmp

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

Chudnovsky二元分裂和分解

本文中,给出了使用二进制分裂的Chudnovsky pi公式的快速递归公式.在python中:

C = 640320
C3_OVER_24 = C**3 // 24
def bs(a, b):
    if b - a == 1:
        if a == 0:
            Pab = Qab = 1
        else:
            Pab = (6*a-5)*(2*a-1)*(6*a-1)
            Qab = a*a*a*C3_OVER_24
        Tab = Pab * (13591409 + 545140134*a) # a(a) * p(a)
        if a & 1:
            Tab = -Tab
    else:
        m = (a + b) // 2
        Pam, Qam, Tam = bs(a, m)
        Pmb, Qmb, Tmb = bs(m, b)

        Pab = Pam * Pmb …
Run Code Online (Sandbox Code Playgroud)

c recursion pi gmp factoring

22
推荐指数
2
解决办法
703
查看次数

配置gmp时出错

希望这只是一个非常简单的问题.好的,这就是我所做的:我想在我的Linux Ubuntu 11.10下安装gmp.我的系统上有g ++和gcc.所以我从gmp官方网站(gmp 5.0.2)下载了最新版本,提取它然后,因为我需要c ++ gmp接口,我只需运行:

./configure --enable-cxx
Run Code Online (Sandbox Code Playgroud)

但它会继续工作一段时间然后打印出来:

checking for suitable m4... configure: error: No usable m4 in $PATH or /usr/5bin (see config.log for reasons).
Run Code Online (Sandbox Code Playgroud)

我做错什么了吗?非常感谢你!

马特奥

c c++ makefile g++ gmp

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

优化x64汇编程序MUL循环

我正在编写需要快速乘以大数的数学代码.它分解为整数数组与单个整数的乘法.在C++中,这看起来像这样(在unsigned上):

void muladd(unsigned* r, const unsigned* a, unsigned len, unsigned b) {
   unsigned __int64 of = 0;  // overflow
   unsigned i = 0;  // loop variable
   while (i < len) {
      of += (unsigned __int64)a[i] * b + r[i];
      r[i] = (unsigned)of;
      of >>= 32;
      ++i;
   }
   r[i] = (unsigned)of;  // save overflow
}
Run Code Online (Sandbox Code Playgroud)

我手动展开了这个循环,将其转换为64位并处理.asm编译器输出以进一步优化它.主.asm循环现在看起来像这样:

mov   rax, rdi                             ; rdi = b
mul   QWORD PTR [rbx+r10*8-64]             ; rdx:rax = a[i] * b; r10 = i
mov   rsi, QWORD PTR [r14+r10*8-64] …
Run Code Online (Sandbox Code Playgroud)

optimization assembly x86-64 multiplication gmp

21
推荐指数
1
解决办法
2318
查看次数

在PHP中,如何生成一个大的伪随机数?

我正在寻找一种用PHP 生成一个随机数的方法,例如:

mt_rand($lower, $upper);
Run Code Online (Sandbox Code Playgroud)

我看到的距离越近gmp_random()但它不允许我指定下边界和上边界只有每个肢体的位数(我不知道它是什么).

编辑:Axsuuls答案似乎非常接近我想要的,非常类似于gmp_random,但在一个场景中似乎只有一个缺陷.

假设我不想在两者之间得到一个随机数:

  • 1225468798745475454898787465154

和:

  • 1225468798745475454898787465200

因此,如果函数名为BigRandomNumber():

BigRandomNumber($length = 31);
Run Code Online (Sandbox Code Playgroud)

这很容易返回超出指定边界的9999999999999999999999999999999.

如何使用最小/最大边界而不是长度值?

BigRandomNumber('1225468798745475454898787465154', '1225468798745475454898787465200');
Run Code Online (Sandbox Code Playgroud)

这应该返回1225468798745475454898787465 [154 .. 200]之间的随机数.

作为参考,我相信解决方案可能必须使用此问题中提供功能.

编辑:上面的帖子被删除了,这里是:

function compare($number1, $operator, $number2) {
  $x = bccomp($number1, $number2);

  switch($operator) {
    case '<':
      return -1===$x;
    case '>':
      return 1===$x;
    case '=':
    case '==':
    case '===':
      return 0===$x;
    case '!=':
    case '!==':
    case '<>':
      return 0!==$x;
  }
}
Run Code Online (Sandbox Code Playgroud)

php random gmp bcmath

15
推荐指数
2
解决办法
7183
查看次数

GMP整数的位数

有没有一种简单的方法来确定GMP整数的位数?我知道你可以通过日志来确定它,但我想知道库中是否有一些我缺少的东西.我在手册中找到的唯一一件事是:

_mp_size肢数,或表示负整数时的负数.零由_mp_size设置为零表示,在这种情况下_mp_d数据未使用.

但我的印象与我正在寻找的完全不同.

124839 = 6位数.

c++ integer biginteger gmp

15
推荐指数
1
解决办法
4201
查看次数