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 でも同様。
私のシステムには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