GMP

Written by    11:01 June 12, 2014 

前天看见同学分享的一个微软面试题:求 y = sin(e^5120) 的值

然后就在网上搜了一下, 就找到了GMP这个玩意儿,

GNU多重精度运算库(英语:GNU Multiple Precision Arithmetic Library,简称GMP或gmpal)是一个开源的任意精度运算库,支持正负数的整数、有理数、浮点数。它没有任何任何精度限制,只受限于可用内存。GMP有很多函数,它们都有一个规则的接口。它是C语言写成的,但用为其他很多语言做包装,包括Ada,C++,C#,OCaml,Perl,PHP和python。 GMP主要运用于密码程序和搜索,和计算机代数系统。 GMP的目标是成为最快的大数运算库, GMP是GNU项目的一部分,它在GNU宽通用公共许可证下发表。 GMP在许多计算机辅助代数系统中用于整数运算,如Mathematica和Maple。 GMP需要使用GNU(GCC编译器套装)编译。

–维基百科

简而言之, 其实就是一个头文件, 直接看代码比较实在:

首先是安装, 可以去官网下载源码make install, 在Ubuntu下直接:

即可安装GMP函数库。

接下来看一个指数函数计算的的实例

gcc编译:

遗憾的是gmp里面的指数函数形参只能为整形或者长整型, 这样一来就无法计算自然对数了, 所以说那个题目最终还是只能用数学方法求解。

参考:

how to install gpm in Ubuntu

Rasing Powers(Example code)

Exponentiation Functions in GMP

Category : study

Tags :