過去の研究で使ったことのある exflib - extend precision floating-point arithmetic library を試してみる。 exflib を MATLABで使えるようにしよう、という話があって、とても期待している。 (以前使ったときのメモが http://nalab.mind.meiji.ac.jp/~mk/labo/text/on-multiprecision/node8.htmlにある。インストールの仕方とかは更新しておかないと…)
exflib-x64-bin-20161003.tar.bz2 を入手した (2016/11/11)。
試しにテスト・プログラムをコンパイルしてみる。 Xcode の g++ は、正体が LLVM だから、 GCC の g++ を使うようにするのが注意点。 最近の自分の Mac は、MacPorts で入れた g++-mp-6 があるので、 それを使うように Makefile を書き換えて実行する。
tar xjf exflib-x64-bin-20161003.tar.bz2 exflib-x64-bin-20161003 cd sample-cxx(Makefile を開いて、 CXX に g++-mp-6 とセット) make |
ドキュメントとして、doc に c++.pdf (12ページ), fortran.pdf (16ページ) がある。
とりあえず /usr/local/{include,lib} にインストールすることにした。
sudo cp -p exflib-x86_64-intelmac/libexfloat.a /usr/local/lib sudo cp -p exflib-x86_64-intelmac/*.h /usr/local/include |
, ( ) で定まる数列の第 項を表示する。
kadai4.cpp |
/* * kadai4.cpp * g++ -I/usr/local/include kadai4.cpp -lexfloat */ #define PRECISION 100 #include <iostream> #include "exfloat.h" using namespace std; int main(void) { int i; exfloat a; a = 1; for (i = 2; i <= 100; i++) a = 3 * a + 2; cout << setprecision(PRECISION) << a << endl; return 0; } |
g++-mp-6 -I/usr/local/include kadai4.cpp -lexfloat |
何故か、表示がおかしいことがあったけれど、、やり直したら上手く行った。 どうしたんだろう?
桂田 祐史