如何使用当前版本,
使用正确版本的依赖项,而不是使用包管理器(如yum,rpm,apt,dpkg),而不是使用共享库,逐个安装GCC(GNU编译器集合)?
典型的开发人员可能希望以典型的方式安装GCC,使用您的包管理器(yum,rpm,apt,dpkg,port,brew等)或按照此处的说明进行操作(http://gcc.gnu.org/wiki/ InstallingGCC).
我的问题是如何一块一块地安装GCC,没有共享库.
GCC取决于:
我在C或C++中寻找一个好的任意精度数学库.你能给我一些意见/建议吗?
主要要求:
这是我到目前为止发现的:
我所知道的:
我从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) 似乎有很多人遇到过类似的问题,然而,经过多次搜索,我找不到适用于我的特定架构的解决方案.我正在尝试安装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) 我想安装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.所以,我可能有些不对劲.
有线索吗?:-) 谢谢!
在本文中,给出了使用二进制分裂的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) 希望这只是一个非常简单的问题.好的,这就是我所做的:我想在我的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++中,这看起来像这样(在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) 我正在寻找一种用PHP 生成一个大随机数的方法,例如:
mt_rand($lower, $upper);
Run Code Online (Sandbox Code Playgroud)
我看到的距离越近gmp_random()但它不允许我指定下边界和上边界只有每个肢体的位数(我不知道它是什么).
编辑:Axsuuls答案似乎非常接近我想要的,非常类似于gmp_random,但在一个场景中似乎只有一个缺陷.
假设我不想在两者之间得到一个随机数:
和:
因此,如果函数名为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) 有没有一种简单的方法来确定GMP整数的位数?我知道你可以通过日志来确定它,但我想知道库中是否有一些我缺少的东西.我在手册中找到的唯一一件事是:
_mp_size肢数,或表示负整数时的负数.零由_mp_size设置为零表示,在这种情况下_mp_d数据未使用.
但我的印象与我正在寻找的完全不同.
即
124839 = 6位数.