8.86 --fpmode=model

浮動小数点標準適合性を指定します。これは、コンパイラがどの浮動小数点最適化を実行できるのかを制御する以外に、ライブラリ選択にも影響を及ぼします。

構文

--fpmode= model
model には以下のいずれかを指定できます。
ieee_full
IEEE 標準規格で保証されているすべての機能、演算、および表現を、単精度および倍精度で使用できます。演算モードは、実行時に動的に選択できます。
このオプションでは以下のシンボルが定義されます。
__FP_IEEE
__FP_FENV_EXCEPTIONS
__FP_FENV_ROUNDING
__FP_INEXACT_EXCEPTION
ieee_fixed
最も近い値に丸め、不正確な例外の発生を報告しない IEEE 標準。
このオプションでは以下のシンボルが定義されます。
__FP_IEEE
__FP_FENV_EXCEPTIONS
ieee_no_fenv
最も近い値に丸め、例外を発生させない IEEE 標準。このモードはステートレスであり、Java の浮動小数点算術モデルと互換性があります。
このオプションではシンボル __FP_IEEE が定義されます。
none
どのような種類の浮動小数点型もソースコードには使用できないことを示す --fpu=none--fpmode=none の代わりに 使用できます。
std
0 にフラッシュされる非正規化数があり、最も近い値に丸め、例外の発生を報告しない IEEE 有限値。標準 C および C++ との互換性があります。これがデフォルトです。
通常の有限値は、IEEE 標準規格によって予測されます。ただし、以下のような例外もあります。
  • IEEE モデルによって定義されているすべての状況で NaN と無限値が生成されるとは限りません。また、それらが生成される場合、異なる符号が使用される可能性があります。
  • 0 の符号は IEEE モデルによって予測される符号と異なる可能性があります。
  • 算術演算で --fpmode=std を付けて NaN を使用すると、定義されていない動作が生じます。
fast
強力な浮動小数点の最適化を実行します。大幅なパフォーマンス向上と引き換えに、精度がやや落ちる可能性があります。このオプションではシンボル __FP_FAST が定義されます。
このオプションを選択すると、ISO C または C++ 標準に対して完全には準拠しない動作となります。ただし、数値的に頑健な浮動小数点プログラムは正しく動作します。
以下のような多くの変換が実行される場合があります。
  • すべての浮動小数点引数を単精度数値として正確に表現でき、その結果が即座に単精度数値に変換される場合、倍精度数学関数は単精度数学関数に変換される可能性があります。
    この変換は、選択したライブラリに単精度数学関数が含まれている場合(選択したライブラリが armccaeabi_glibc である場合)にのみ実行されます。
    以下に例を示します。
    float f(float a)
    {
        return sqrt(a);
    }
    
    上記のコードが以下のコードに変換されます。
    float f(float a)
    {
        return sqrtf(a);
    }
    
  • 倍精度から単精度に変換された浮動小数点式は、必要に応じて単精度で評価されます。たとえば、 float y = ( float )(x + 1.0) float y = ( float )x + 1.0f として評価されます。
  • 浮動小数点定数による除算は、逆数を使用した乗算に置き換えられます。たとえば、x / 3.0x * (1.0 / 3.0) として評価されます。
  • 数学関数が呼び出された後、errno の値が ISO C または C++ 標準に準拠するとは限りません。このため、コンパイラは sqrt() または sqrtf() を呼び出す代わりに、VFP 平方根命令をインライン展開できます。
--fpmode=fast で NaN を使用すると、未定義のコードが生成されてしまう場合があります。

VFP を有効にするために、初期化コードが必要となる場合があります。

デフォルト

デフォルトは、--fpmode=std です。
関連する概念
5.45 浮動小数点演算のハードウェアによる処理に関する制限
関連する参考文書
8.88 --fpu=name コンパイラオプション
関連情報
『ARM Application Note 133 - Using VFP with RVDS』
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.