以下の定数 PI * PI + IP を計算するだけなのだが、普通に double 型の変数を用いても、せいぜい精度は14桁程度である。そこで任意精度数値演算ライブラリ GMP や 4倍、8倍精度数値演算ライブラリ qd を使ってみる。
ライブラリ GMP
http://gmplib.org/
ライブラリ qd
http://www.cs.berkeley.edu/~yozo/
#define PI 3.141592653589793238462643383279502884197169399375105820
#define IP 5.028841971693993751058203141592653589793238462643383279
GMP は 384bit なので 115 桁ぐらいの精度があると思うが、それと比較しても quad-double が 62桁、double-double が 31桁にも達する。最近は様々な分野の計算において明らかに倍精度では力不足で多倍長計算の需要が大きく増していると聞く。
14.89844637278335236989269414146880472510693786988417389928759183851738069265823364104030973932230874 GMP 384 bits
14.89844637278335236989269414146880472510693786988417389928759183615980625508986427460118496058031891 quad-double
14.89844637278335236989269414146884461134619362540311100073577867640428618045689290738664567470550537 double-double
14.89844637278335236989269414146889391515276993864095 long double
14.89844637278335071073342987801879644393920898437500 double
14.89844703674316406250000000000000000000000000000000 float
ライブラリ GMP
http://gmplib.org/
ライブラリ qd
http://www.cs.berkeley.edu/~yozo/
#define PI 3.141592653589793238462643383279502884197169399375105820
#define IP 5.028841971693993751058203141592653589793238462643383279
GMP は 384bit なので 115 桁ぐらいの精度があると思うが、それと比較しても quad-double が 62桁、double-double が 31桁にも達する。最近は様々な分野の計算において明らかに倍精度では力不足で多倍長計算の需要が大きく増していると聞く。
14.89844637278335236989269414146880472510693786988417389928759183851738069265823364104030973932230874 GMP 384 bits
14.89844637278335236989269414146880472510693786988417389928759183615980625508986427460118496058031891 quad-double
14.89844637278335236989269414146884461134619362540311100073577867640428618045689290738664567470550537 double-double
14.89844637278335236989269414146889391515276993864095 long double
14.89844637278335071073342987801879644393920898437500 double
14.89844703674316406250000000000000000000000000000000 float