您的位置:首页 > 编程语言 > Qt开发

在 Qt 程序中使用 MPIR

2017-10-22 14:51 746 查看
上篇博客介绍了如何编译 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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mpir