开源算法库GMP的安装与调试
来源:互联网 发布:windows dns 日志 编辑:程序博客网 时间:2024/06/05 13:33
GMP简介:
GMP是一个任意精度的开源算术库,可用于符号整数,有理数,浮点数计算。算数库对于有没有实际的限制,唯一的限制是计算机的内存。 GMP具有丰富的函数集并且函数都有通用的接口。
GMP的安装:
环境:Ubuntu 11.10
Terminal中运行:
sudo apt-get install libgmp3-dev
gmp的调试:
新建.c文件,输入一下代码。
#include<gmp.h>
#include<stdio.h>
void main()
{
mpz_t s,n;
int i;
mpz_init(s);//init s,the value is 0
mpz_init(n);
for(i=1;i<1111111111;i++)
{
mpz_add_ui(n,n,1);//set n to n+1
mpz_addmul(s,n,n);//add n*n to s
}
gmp_printf("the sum is %Zd\n",s);
mpz_clear(s);
}
Termial 中编译:
gcc test.c -o test -lgmp
Termial中运行:
./test
算了大概3分钟,得到结果:
the sum is 457247370073159579654778235
函数封装:
封装的目的是给出通用的接口,下面实现的就是大数的乘法。
#include<gmp.h>
#include<stdio.h>
char* BigMul(char* m,char* n);
void main()
{
char* p=NULL;
char *a="12345678";
char *b="23456789";
p=BigMul(a,b);
printf("the result is %s./n",p);
}
char* BigMul(char* m,char* n)
{
int i,j;
char* pt=NULL;
mpz_t s,p,q;
mpz_init(s);
i=mpz_init_set_str(p,m,10);//get number from m
j=mpz_init_set_str(q,n,10);
//printf("i,j:%d,%d\n",i,j);
gmp_printf("%Zd\n%Zd\n",p,q);
mpz_addmul(s,p,q);//calculate result
//gmp_printf("the result is %Zd\n",s);
pt=mpz_get_str(pt,10,s);//get string from s
//printf("%s\n",pt);
mpz_clear(s);
return pt;
}
通过两个字符串变量将乘数传进去,再传回结果指针。
算得结果:
the result is 289589963907942.
下一步是在sipesc力学平台上做成插件。
- 开源算法库GMP的安装与调试
- 开源算法库GMP的安装与调试
- 一个开源的高精度运算库——gmp
- 测试gmp库安装是否成功的例子
- GMP大数库实现RSA算法
- pollard's rho算法(使用GMP库)
- GMP和NTL库安装教程
- 安装MPFR和GMP
- 安装GMP 和 MPFR
- centos 手动安装gmp
- 安装MPFR和GMP
- php gmp扩展安装
- C语言实现的RSA算法程序(使用GMP)
- pollard's p-1算法实现(使用GMP库)
- ubuntu10.4下安装和使用GMP高精度数学库
- ubuntu10.4下安装和使用GMP高精度数学库
- 大整数运算库gmp安装及使用
- 编译GMP大数库
- 网页右侧的漂浮广告代码,随滚动条滚动
- 每天必做的3件事
- 源码管理工具(SCM)之备忘
- Linux动态库的创建与使用
- cocos2d-x之滚动背景
- 开源算法库GMP的安装与调试
- vnc 搭建和使用
- Through the Interface——.NET 和 AutoCAD
- Cacti 移植,从Cacti到CactiEZ
- 二分匹配模版
- Eclipse and Android SDK issue “aapt.exe has stopped”
- IT战略规划之流程再造 —2013年中科院计算所培训中心系列公益讲座
- ViewPager的分页加载功能,即哪一页第一次被选中,这个页面才开始加载当前页面的内容
- HDU2063 二分匹配基础题目