C99における浮動小数点演算の計算精度(その2)

C99では,FLT_EVAL_METHODの値で float型 や double型の計算精度を制御できるようになっている.では FLT_EVAL_METHOD の初期値はどうなっているのか? Linux環境で調べてみた.

結論: デフォルトでは FLT_EVAL_METHOD は 2.つまり float でも double でも 64bit で計算している.

/usr/include/bits/mathdef.h あたりを見ると

  • デフォルトでは FLT_EVAL_METHOD は 2
  • gcc に -mfpmath=sse をつけると FLT_EVAL_METHOD は 0

ということらしい.

また,c99 とは関係ないが,intel compiler (icc) では,コンパイラオプション

  • -pc32
  • -pc53
  • -pc80

で,浮動小数点演算の計算精度を指定できるようになっている.