在 Qt 程序中使用 MPIR

上篇博客介绍了如何编译 MPIR,这篇讲讲如何在程序中使用。我主要是用 C++ Qt 开发程序,所以这里只讲如何在Qt 程序中应用 MPIR。

我这里以mpir_gc 编译版为例,首先建立一个目录:dll_mpir_gc_vc14_win32
然后把需要的文件都拷贝到这个目录中,包括:

  • mpir.h
  • mpirxx.h
  • mpir_gc_vc14_win32.dll
  • mpir_gc_vc14_win32.exp
  • mpir_gc_vc14_win32.ilk
  • mpir_gc_vc14_win32.lib
  • mpir_gc_vc14_win32.pdb

之后新建一个文本文件,名字叫 : mpir_gc_vc14_win32.pri

里面加入这么几行:

win32: LIBS += -L$$PWD/ -lmpir_gc_vc14_win32
INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/

之后在我们的项目的 pro 文件中加入这么一行就可以了:

include (./dll_mpir_gc_vc14_win32/mpir_gc_vc14_win32.pri)

下面是个测试代码,如何可以正常编译运行就说明一切都设置成功了。

#include <QCoreApplication>
#include <stdio.h>
#include <iostream>
#include <mpir.h>
#include <mpirxx.h>

using std::cout;
using std::endl;
void mpz_test()  //计算 100 的阶乘
{
    mpz_t integ, long_i;
    mpz_init (integ);
    mpz_init (long_i);
    mpz_set_sx(integ, 1);
    for(int i = 2; i<= 100; i++)
    {
        mpz_set_sx(long_i, i);
        mpz_mul(integ, integ, long_i);
    }
    mpz_out_str(stdout, 10, integ);
}

void mpzxx_test() //计算 100 的阶乘
{
    mpz_class sum(1);
    for(int i = 2; i<= 100; i++)
    {
        sum *= i;
    }
    cout << sum << endl;
}

void mpf_test()// 计算 E 到 100 位有效数字
{
    mpf_set_default_prec(500);
    mpf_t sum;
    mpf_init (sum);
    mpf_set_d(sum, 2.0);

    mpf_t long_i;
    mpf_init(long_i);

    mpf_t fact_1;
    mpf_init(fact_1);
    mpf_set_d(fact_1, 1);

    for(int i = 2; i < 100; i ++)
    {
        mpf_set_d(long_i, i);
        mpf_div(fact_1, fact_1, long_i);
        mpf_add(sum, sum, fact_1);
    }
    mpf_out_str (stdout, 10, 100, sum);
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    mpzxx_test();
    mpz_test();
    putchar('\n');
    mpf_test();
    return a.exec();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值