(色々楽しいものが多い。欲しいと考えるものが用意されている感じで、 この調子で頑張ってほしいものだ。)
多倍長浮動小数点演算ライブラリ MPFR を、 C++ 言語のプログラムから呼び出せるようにした、 という意味で「ラッパー」と呼んでいるのだろう。
#include <kv/mpfr.hpp>
これで kv::mpfr<仮数部ビット数> という型が使えるようになる。
2進200桁で自然対数の底を計算してみる。
mytest-kvmpfr.cc |
/* * mytest-kvmpfr.cc * g++ -I/usr/local/include -I/opt/local/include -L/opt/local/lib mytest-kvmpfr.cc -lmpfr */ #include <iostream> #include <kv/mpfr.hpp> int main(void) { int n; kv::mpfr<200> t, s, news; std::precision(61); s = t = 1; for (n = 1; n <= 100; n++) { t /= n; news = s + t; if (s == news) break; s = news; std::cout << s << std::endl; } std::cout << " 1234567890123456789012345678901234567890123456789012345678901234567890" << std::endl; std::cout << "2.718281828459045235360287471352662497757247093699959574966967627724077" << std::endl; return 0; } |
ついでに言うと
std::cout.precision(61);
std::cout << std::setprecision(61) << s << std::endl;
同じことをするプログラムを C で書くとどうなるか、 http://nalab.mind.meiji.ac.jp/~mk/labo/text/on-multiprecision/node15.htmlを見ると良い。 ラップして C++ で使うことは幸せだと良く分かる。
(脱線: こうして使う MPFR と exflib を使い比べてみたい。 ふと疑問に感じたのだけど、kv は Fortran から使えるのかな?)
桂田 祐史