浮動小数点組み込み関数

プロトタイプ 説明
double __exp(double); 指数の値を戻します。
double __fabs(double); 倍精度浮動小数点の絶対値を戻します。
float __fabss(float); 単精度浮動小数点の絶対値を戻します。
double __fcfid (double); Floating Convert from Integer Doubleword

64 ビット符号付き固定小数点オペランドを、倍精度浮動小数点に変換します。

double __fctid (double); Floating Convert to Integer Doubleword

FPSCRRN (浮動小数点状況および制御レジスターの浮動小数点丸め制御フィールド) によって指定された丸めモードを使用して、浮動小数点オペランドを 64 ビットの符号付き固定小数点整数に変換します。

double __fctidz (double); Floating Convert to Integer Doubleword with Rounding towards Zero

丸めモード「ゼロ方向への丸め」を使用して、浮動小数点オペランドを 64 ビットの符号付き固定小数点整数に変換します。

double __fctiw (double); Floating Convert to Integer Word

FPSCRRN (浮動小数点状況および制御レジスターの浮動小数点丸め制御フィールド) によって指定された丸めモードを使用して、浮動小数点オペランドを 32 ビットの符号付き固定小数点整数に変換します。

double __fctiwz (double); Floating Convert to Integer Word with Rounding towards Zero

丸めモード「ゼロの方向への丸め」を使用して、浮動小数点オペランドを 32 ビットの符号付き固定小数点整数に変換します。

double __fmadd (double, double, double); Floating Point Multiply-Add
float __fmadds (float, float, float); Floating Point Multiply-Add Short
double __fmsub(double, double, double); Floating Point Multiply-Subtract
float __fmsubs (float, float, float); Floating Point Multiply-Subtract
double __fmul (double, double); Floating Point Multiply
float __fmuls (float, float); Floating Point Multiply
double __fnabs(double); Floating Point Negative Absolute
float __fnabss(float); Floating Point Negative Absolute
double __fnmadd(double, double, double); Floating Point Negative Multiply-Add
float __fnmadds (float, float, float); Floating Point Negative Multiply-Add
double __fnmsub(double, double, double); Floating Point Negative Multiply-Subtract
__fnmsubs (a, x, y) = [- (a * x - y)]
float __fnmsubs (float, float, float); Floating Point Negative Multiply-Subtract
float __fre (double); Floating Point Reciprocal
__fre (x) = [(概算) 1.0/x]

POWER5 プロセッサーに対してターゲット・アーキテクチャーが指定されている (-qarchpwr5 または pwr5x に設定されている) 場合にのみサポートされます。

float __fres (float); Floating Point Reciprocal
__fres (x) = [(概算) 1.0/x]
double __frim (double); 「負の無限大方向への丸め」モードを使用して倍精度の引数を整数に丸め、倍精度として値を戻します。

POWER5+ プロセッサーに対してターゲット・アーキテクチャーが指定されている (-qarchpwr5x に設定されている) 場合にのみサポートされます。

double __frin (double); 「最近似値への丸め」モードを使用して倍精度の引数を整数に丸め、倍精度として値を戻します。

POWER5+ プロセッサーに対してターゲット・アーキテクチャーが指定されている (-qarchpwr5x に設定されている) 場合にのみサポートされます。

double __frip (double); 「正の無限大方向への丸め」モードを使用して倍精度の引数を整数に丸め、倍精度として値を戻します。

POWER5+ プロセッサーに対してターゲット・アーキテクチャーが指定されている (-qarchpwr5x に設定されている) 場合にのみサポートされます。

double __friz (double); 「ゼロ方向への丸め」モードを使用して倍精度の引数を整数に丸め、倍精度として値を戻します。

POWER5+ プロセッサーに対してターゲット・アーキテクチャーが指定されている (-qarchpwr5x に設定されている) 場合にのみサポートされます。

double __frsqrte (double); Floating Point Reciprocal Square Root
__frsqrte (x) = [(概算) 1.0/sqrt(x)]
float __frsqrtes (float); Floating Point Reciprocal Square Root
__frsqrtes (x) = [(概算) 1.0/sqrt(x)]。

POWER5 プロセッサーに対してターゲット・アーキテクチャーが指定されている (-qarchpwr5 または pwr5x に設定されている) 場合にのみサポートされます。

double __fsel (double, double, double); Floating Point Select
if (a >= 0.0) then __fsel (a, x, y) = x;
else __fsel (a, x, y) = y
float __fsels (float, float, float); Floating point select
if (a >= 0.0) then __fsels (a, x, y) = x;
else __fsels (a, x, y) = y
double __fsqrt (double); Floating Point Square Root
__fsqrt (x) = x の平方根
float __fsqrts (float); Floating Point Square Root
__fsqrts (x) = x の平方根
signed long __labs (signed long); 長整数の絶対値を計算します。
void __mtfsb0(unsigned int bt); Move to Floating Point Status/Control Register (FPSCR) Bit 0

FPSCR のビット bt を 0 に設定します。bt は定数であり、0<=bt<=31 でなければなりません。

void __mtfsb1(unsigned int bt); Moves to FPSCR Bit 1

FPSCR のビット bt を 1 に設定します。bt は定数であり、0<=bt<=31 でなければなりません。

void __mtfsf(unsigned int flm, unsigned int frb); Move to FPSCR Fields

frb の内容を、flm によって指定されたフィールド・マスクの制御下の FPSCR に配置します。 フィールド・マスク flm は、影響を受ける FPSCR の 4 ビットのフィールドを識別します。flm は定数の 8 ビットのマスクでなければなりません。

void __mtfsfi(unsigned int bf, unsigned int u); Move to FPSCR Field Immediate

u の値を bf によって指定された FPSCR フィールドに配置します。bfu は定数で、0<=bf<=7 および 0<= u<=15 でなければなりません。

double __pow(double, double); 1 番目の引数を 2 番目の引数に累乗した値を計算します。
double __readflm(); FPSCR を読み取ります。
double __setflm(double); FPSCR を設定します。
double __setrnd(int); 丸めモードを設定します。

引数の許容値は以下の通りです。

  • 0 -- ゼロ方向への丸め
  • 1 -- 最近似値への丸め
  • 2 -- 正の無限大方向への丸め
  • 3 -- 負の無限大方向への丸め
void __stfiw( const int* addr, double value); Store Floating Point as Integer Word

value の下位 32 ビットの内容を、変換せずに、addr によってアドレッシングされたストレージ内のワードに保管します。

double __swdiv_nochk(double, double); double 型の浮動小数点の除算。範囲検査なし。 この関数は、ループ内で除算が繰り返し行われ、引数が許可範囲内の状態の場合、通常の除算演算子または __swdiv 組み込み関数よりもよいパフォーマンスを提供することができます。

引数の制限事項: 無限大に等しい分子は許可されません。無限大に等しい、ゼロ、または正規化されない分母は許可されません。分子と分母の商は正または負の無限大と等しくならない場合があります。

-qstrict が有効な場合、その結果は IEEE の除算とビット単位で等しくなります。このシナリオで正しい操作が行われるためには、引数が次の追加の制限事項を満たしている必要があります。分子は 2 ^ (-970) より大で無限大より小の絶対値を持っていなければなりません。分母は 2 ^ (-1022) より大で 2 ^ 1021 より小の絶対値を持っていなければなりません。分子と分母の商は、2 ^ (-1021) より大で 2 ^ 1023 より小の絶対値を持っていなければなりません。

double __swdiv(double, double); double 型の浮動小数点の除算。引数の制限はありません。
float __swdivs_nochk(float, float); float 型の浮動小数点の除算。範囲検査なし。 引数の制限事項: 無限大に等しい分子は許可されません。無限大に等しい、ゼロ、または正規化されない分母は許可されません。分子と分母の商は正または負の無限大と等しくならない場合があります。
float __swdivs(float, float); double 型の浮動小数点の除算。引数の制限はありません。