Everything

 

-tfu 【V3.01.00以降】


コンパイル・オプション / 最適化オプション

[指定形式]

-tfu=intrinsic[,mathlib]

[詳細説明]

-

-tfu=intrinsicを指定した場合は、次の三角関数演算器を利用する組み込み関数を使用できるようになります。

 

-

__sincosf

-

__atan2hypotf

-

__init_tfu(初期化用)

-

__sincosfx【V3.05.00以降】

-

__sinfx【V3.05.00以降】

-

__cosfx【V3.05.00以降】

-

__atan2fx【V3.05.00以降】

-

__hypotfx【V3.05.00以降】

-

__atan2hypotfx【V3.05.00以降】

 

これらの組み込み関数の詳細は4.2.6 組み込み関数を参照してください。

 

-

-tfu=intrinsic,mathlibを指定した場合は組み込み関数に加えてさらに、数学ライブラリ関数の呼び出しも、三角関数演算器を利用するコードに置き換えます。置き換えの対象となる数学ライブラリ関数は次のとおりです。

 

-

sinf / sin*1 / sinl*1

-

cosf / cos*1 / cosl*1

-

atan2f / atan2*1 / atan2l*1

-

hypotf / hypot*1 / hypotl*1

-

asinf *2 / asin *1*2 / asinl *1*2 【V3.02.00 以降】

-

acosf *2 / acos *1*2 / acosl *1*2 【V3.02.00 以降】

-

atanf / atan *1 / atanl *1 【V3.02.00 以降】

-

tanf / tan *1 / tanl *1 【V3.02.00 以降】

 

*1) -dbl_size=4を指定した場合。

*2) -isa=rxv2|rxv3 かつ -fpuの場合。

 

-

【V3.05.00以降】同時に-tfu_version=v2を指定した場合、#pragma interruptに指定する割り込み仕様tfuおよびno_tfuを使用できるようになります。

[備考]

-

【V3.05.00未満】三角関数演算器を利用した演算処理は、リエントラントではありません。

-

【V3.05.00以降】三角関数演算器を利用した演算処理は、-tfu_version=v1を指定した場合はリエントラントではありません。-tfu_version=v2を指定した場合、デフォルトはリエントラントです。ただし、次のいずれかに該当する場合はリエントラントではありません。

-

-nosave_tfuを指定した場合。詳細は「2.5.1 コンパイル・オプション」の-nosave_tfuの説明を参照してください。

-

三角関数演算器を使用するいずれかの割り込み関数で、#pragma interruptに割り込み仕様no_tfuを指定した場合。詳細は「4.2.3 #pragma指令」の#pragma interruptの項目を参照してください。

-

-tfu=intrinsic,mathlib指定による数学ライブラリ関数の置き換えは関数呼び出しコード自体を置き換えるものであり、ライブラリ内のコードは変わりません。ポインタを使った間接呼び出しがされた場合はライブラリ関数が呼び出されるため、三角関数演算器を利用することができません。

-

数学ライブラリ関数の呼び出しが三角関数演算器を利用したコードに置き換わった場合、変数errnoの内容は変更されません。

-

三角関数演算器を利用した場合と利用しない場合では、演算精度が異なります。

-

TFUv1を使用している場合、三角関数演算器を利用する前にスタートアッププログラム等で組み込み関数__init_tfu()を用いて演算器を初期化してください。初期化を行わなかった場合の動作は保証しません。

-

TFUv2を使用している場合、演算器の初期化は不要です。組み込み関数__init_tfuを呼び出すとエラーになります。

-

三角関数演算器を搭載していないデバイスでは本オプションは指定しないでください。