使用大整数进行高精度计算

仍然以求 ln(10)的值为例。为了算出 ln(10)的100小数,把所有数字放大10的100次方倍计算。


int main()
{
        big scaled_1(100000000);

        scaled_1 = scaled_1 * scaled_1 * scaled_1 * 10;
        scaled_1 *= scaled_1;
        scaled_1 *= scaled_1;

        big e;
        big p;
        big res;

        big sum = scaled_1;
        sum+= scaled_1;

        big m= scaled_1;
        m/=2;
        sum+= m;

        for( int i=3; i<=72; i++){
                if (m>=i) {
                        m = m/i;
                        sum+=m;
                }
        }
        e = sum;
        e.tostring(disp,512);
        printf("e=\n%s\n", disp);

        big scaled_10 = scaled_1 *10;

        big x = scaled_10;
        res = 0;
        while (x >e ) {
                x = x *scaled_1 /e;
                res += scaled_1;
        }

        p = scaled_1 /2;
        while (p >0 ){
                x *= x;
                x /= scaled_1;
                if ( x > e) {
                        x = x *scaled_1 /e;
                        res += p;
                }
                p/= 2;
        }
        res.tostring(disp,512);
        printf("ln(10)=\n%s\n", disp);
        return 0;
}
 

big是自定义的大整数数据类型。算得结果是,

e=
2,7182,8182,8459,0452,3536,0287,4713,5266,2497,7572,4709,3699,9595,7496,6967,627
7,2407,6630,3535,4759,4571,3821,7852,5166,4238
ln(10)=
2,3025,8509,2994,0456,8401,7991,4546,8436,4207,6011,0148,8628,7729,7603,3327,900
9,6757,2609,6773,5248,0235,9972,0508,9598,2966

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HugeCalc 是一款高精度算法库(同时支持 MBCS + UNICODE 版),适合于大规模科学计算,尤其适用于数论、密码学等领域研究,其核心算法耗费作者十余年的心血。具有占用资源少、效率高、使用便捷、易二次开发、可移植性强、可扩展性好等特点。关键文件 HugeCalc.dll 虽然很小,却提供了公共函数接口 709 个(标准C++接口 473 个;标准C接口 236 个),且其计算速度完全可与大型专业数学工具软件媲美! 现已提供了如下功能: ⊙ 高精度快速加法 ⊙ 高精度快速减法 ⊙ 高精度快速乘法 ⊙ 高精度快速除法 ⊙ 高精度快速同余 ⊙ 高精度快速位运算 ⊙ 高精度快速乘方 ⊙ 高精度快速开方 ⊙ 超大整数快速取对数 ⊙ 高精度快速排列 ⊙ 高精度快速组合 ⊙ 高精度快速阶乘、双阶乘、素数阶乘 ⊙ 高精度快速计算 Fibonacci、Lucas 数列 ⊙ 高精度快速乘积取模 ⊙ 高精度快速数论倒数取模运算 ⊙ 高精度快速乘方取模(支持负指数) ⊙ 高精度快速最大公约数(支持群组运算) ⊙ 高精度快速计算扩展最大公约数 ⊙ 高精度快速最小公倍数(支持群组运算) ⊙ 高精度快速“等幂和”(支持群组运算) ⊙ 高精度快速任意进制转换 ⊙ 超大整数素性快速检测 ⊙ 生成随机超大(素)整数、快速生成最邻近素数 ⊙ 自由指定有效位运算 ⊙ 强大而灵活的输出 ⊙ 高精度计时器(有暂停、累计、复位等功能) 为了与广大网友分享 HugeCalc 带来的便捷,该版公开了 HugeCalc.dll 的所有接口文件(同时支持 MBCS + UNICODE 版),大家可以更自由地进行高精度计算或自开发,而无须再依赖于 Mathematica 等大型软件。 V6.x 新增了各种标准导入接口,可方便各种编程语言进行二次开发,如 C++、C、VB、Delphi 等。 V7.x 可自动侦测用户 CPU 的型号,并据此自动调整算法及相应参数,使在兼顾老式机器的前提下,可充分发挥现代及未来 CPU 的功效(如采用 SSE2 指令集、多核并行等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值