鳳鳴は祖父の俳号

日記 メモ そんなの

gawk4.1.1 -Mオプションでbignumが扱える

環境:MacOSX 10.9(Mavericks) + homebrew

gawkでは-Mオプションで多倍長演算をサポートしている、ということで実験。
GNU AWKでCSVファイルを楽々あつかう組込変数FPATと、関数のインダイレクト呼び出し (2/2):CodeZine(コードジン)

確認用コード:
gawk 'BEGIN{print 5527939700884757+8944394323791464}'
→14472334024676220 ※最後の桁が"1"でない
gawk -M 'BEGIN{print 5527939700884757+8944394323791464}'
→14472334024676221 ※正解

さて、homebrewでインストールしたgawkでは-Mオプションをつけても答えが合わなかった。MPFRを無視してビルドしてある模様。
brew uninstall gawk ; brew unstall gawk でも同様。

The GNU MPFR Library

私のシステムにはmpfrが入っている。
$ brew list mpfr
/usr/local/Cellar/mpfr/3.1.2-p10/include/ (2 files)
/usr/local/Cellar/mpfr/3.1.2-p10/lib/libmpfr.4.dylib
/usr/local/Cellar/mpfr/3.1.2-p10/lib/ (2 other files)
/usr/local/Cellar/mpfr/3.1.2-p10/share/doc/ (12 files)
/usr/local/Cellar/mpfr/3.1.2-p10/share/info/mpfr.info

この状態でgawk4.1.1のソースを持ってきて./configure ; make してできたgawkは-Mオプションが効いた。

以前ハマったのはこれ。awkはdoubleの範囲内で演算する。
http://d.hatena.ne.jp/houmei/20111016/1318717569