在 Qt 程序中使用 MPIR

来源:互联网 发布:商家联盟管理系统源码 编辑:程序博客网 时间:2024/06/06 23:48

上篇博客介绍了如何编译 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_win32INCLUDEPATH += $$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();}
原创粉丝点击