MPFR - ソースビルドでインストール (on Linux Mint)!
Updated:
こんにちは。
C や C++ で多倍長浮動小数点演算を行いたく MPFR ライブラリをソースビルドでインストールしてみました。
0. 前提条件
- Linux Mint 17.1(64bit) での作業を想定しているが、 Unix 系 OS なら同様。
1. MPFR とは
- The GNU Multiple Precision Floating-Point Reliably の略
- 多倍長浮動小数点を高精度で扱うためのライブラリ
- GNU プロジェクトの一部
2. アーカイブの取得&展開
最新の “tar.gz” ファイルをダウンロード後に展開。(tar.xz”, “tar.bz2”, “zip” でもよい)
$ wget http://www.mpfr.org/mpfr-current/mpfr-3.1.2.tar.gz
$ tar zxvf mpfr-3.1.2.tar.gz
3. ビルド&インストール
$ cd mpfr-3.1.2
$ ./configure
$ make
$ make check
$ sudo make install
/usr/local/lib にインストールされる。
4. 動作確認用 C ソースコードの作成
動作確認用の C ソースコードを作成する。
(以下は、参考サイトの Sample コードで、\(1+\frac{1}{1!}+\frac{1}{2!}+\cdots+\frac{1}{100!}\) を 200 bit の精度で計算するもの)
File: text_mpfr.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*************************************************************
* MPFR(The GNU Multi Presicion Floating-Point Reliably Library) Test by C.
************************************************************/
#include <stdio.h>
#include <gmp.h>
#include <mpfr.h>
int main (void)
{
unsigned int i;
mpfr_t s, t, u;
mpfr_init2 (t, 200);
mpfr_set_d (t, 1.0, MPFR_RNDD);
mpfr_init2 (s, 200);
mpfr_set_d (s, 1.0, MPFR_RNDD);
mpfr_init2 (u, 200);
for (i = 1; i <= 100; i++) {
mpfr_mul_ui (t, t, i, MPFR_RNDU);
mpfr_set_d (u, 1.0, MPFR_RNDD);
mpfr_div (u, u, t, MPFR_RNDD);
mpfr_add (s, s, u, MPFR_RNDD);
}
printf ("Sum is ");
mpfr_out_str (stdout, 10, 0, s, MPFR_RNDD);
putchar ('\n');
mpfr_clear (s);
mpfr_clear (t);
mpfr_clear (u);
return 0;
}
5. C ソースコードのコンパイル
-Wall
は警告も出力するオプション、-O2
は最適化のオプション、-lmpfr
, -lgmp
は MPFR, GMP ライブラリを読み込むオプション。
$ gcc -Wall -O2 -o test_mpfr_c test_mpfr.c -lmpfr -lgmp
6. 動作確認
$ ./test_mpfr_c
Sum is 2.7182818284590452353602874713526624977572470936999595749669131
参考サイト
以上。
Comments