SPARC64X および SPARC64X+ は、10 進浮動小数点のデータ型および演算をサポートします。データフォーマットは、IEEE 754-2008 に定義されている 64 ビット DPD に準拠します。コンパイラは、データを処理するための型およびさまざまな関数を提供します。
10 進浮動小数点数を表すために、_Decimal64 組み込み型が dpd_conf.h 内で宣言されます。次の例に示す型を使用する前に、ヘッダーファイルをインクルードする必要があります。
#include <dpd_conf.h> int main(void) { _Decimal64 dd; ... return 0; }
_Decimal64 型
型修飾子 const または volatile、あるいはその両方で変更できます。
ストレージクラス指定子 auto、static、register、extern、および typedef あるいはこれらのいずれかで指定できます。
集合 array、struct、および union あるいはこれらのいずれかの要素とすることができます。
_Decimal64 型変数
関数の仮パラメータとなることができます。
関数呼び出しの実引数となることができます。
関数の戻り値となることができます。
代入演算子「=」の左辺または右辺となることができます。
アドレス演算子「&」のオペランドとなることができます。
sizeof 演算子のオペランドとなることができます。
typeof 演算子のオペランドとなることができます。
組み込み関数は、算術、比較、型の変換などのほかの操作に対して提供されます。
_Decimal64 用のリテラル構文はサポートされていません。型変換用の組み込み関数を代わりに使用できます。
_Decimal64 型のデータのメモリー境界整列は、64 ビットのバイナリ浮動小数点数と同じです。
-xarch=[sparcace|sparcaceplus] および -m64 が指定された場合、__DEC_FP_INTR マクロは 1 に定義されます。このマクロは、コンパイラが 10 進浮動小数点組み込み関数をサポートするかどうかを判別する場合に役立ちます。
dpd_conf.h がインクルードされたとき、IEEE 754-2008 で必要な DEC_EVAL_METHOD マクロは 1 に定義されます。
コンパイラは ISO/IEC TR 24732 に記載されている機能を完全にサポートするわけではないため、__STDC_DEC_FP__ マクロは定義されません。
IEEE 754-2008 で必要な #pragma FLOAT_CONST_DECIMAL_64 はサポートされません。
以下の一覧に示す組み込み関数は、dpd_conf.h で宣言されます。これらは _Decimal64 型の変数を操作する場合に便利です。
この関数は、addr によってアドレス指定されるメモリーに src を保管します。addr は 8 バイト境界に整列されている必要があり、そうでない場合は -xmemalign 設定に関係なく動作は未定義になります。
この関数は、addr によってアドレス指定されるメモリーから _Decimal64 型の値をロードし、これを返します。addr は 8 バイト境界に整列されている必要があり、そうでない場合は -xmemalign 設定に関係なく動作は未定義になります。
この関数は、src1 と src2 を加算して結果を返します。IEEE 754-2008 規格に従って、浮動小数点例外がスローされます。
この関数は、src1 から src2 を減算して結果を返します。IEEE 754-2008 規格に従って、浮動小数点例外がスローされます。
この関数は、src1 と src2 を乗算して結果を返します。IEEE 754-2008 規格に従って、浮動小数点例外がスローされます。
この関数は、src1 を src2 で除算して結果を返します。IEEE 754-2008 規格に従って、浮動小数点例外がスローされます。
この関数は、src の絶対値を計算して結果を返します。src から NaN のシグナルが生成される場合でも、浮動小数点例外はスローされません。
この関数は、src の符号を逆にして結果を返します。src から NaN のシグナルが生成される場合でも、浮動小数点例外はスローされません。
この関数は、src1 が src2 に等しいときは非 0 を返し、そうでない場合は 0 を返します。NaN、Inf、および負の符号が付いたゼロの処理は、IEEE 754-2008 に準拠します。
この関数は、src1 が src2 に等しくないときは非 0 を返し、そうでない場合は 0 を返します。NaN、Inf、および負の符号が付いたゼロの処理は、IEEE 754-2008 に準拠します。
この関数は、src1 が src2 より大きいときは非 0 を返し、そうでない場合は 0 を返します。NaN、Inf、および負の符号が付いたゼロの処理は、IEEE 754-2008 に準拠します。
この関数は、src1 が src2 より大きいか等しいときは非 0 を返し、そうでない場合は 0 を返します。NaN、Inf、および負の符号が付いたゼロの処理は、IEEE 754-2008 に準拠します。
この関数は、src1 が src2 より小さいときは非 0 を返し、そうでない場合は 0 を返します。NaN、Inf、および負の符号が付いたゼロの処理は、IEEE 754-2008 に準拠します。
この関数は、src1 が src2 より小さいか等しいときは非 0 を返し、そうでない場合は 0 を返します。NaN、Inf、および負の符号が付いたゼロの処理は、IEEE 754-2008 に準拠します。
この関数は、src 内の 64 ビット符号付き整数値を 10 進浮動小数点値に変換して結果を返します。
この関数は、src 内の 64 ビット符号なし整数値を 10 進浮動小数点値に変換して結果を返します。
この関数は、src 内の 2 進浮動小数点値を 10 進浮動小数点値に変換して結果を返します。
この関数は、src 内の 10 進浮動小数点値を 64 ビット符号付き整数値に変換して結果を返します。
この関数は、src 内の 10 進浮動小数点値を 64 ビット符号なし整数値に変換して結果を返します。
この関数は、src 内の 10 進浮動小数点値を 2 進浮動小数点値に変換して結果を返します。
この関数は、_Decimal64 の現在の丸めモードを取得します。この値は、次のように dpd_conf.h 内で定義されます。
最近接偶数に丸めます
ゼロの方向に丸めます
正の無限の方向に丸めます
負の無限の方向に丸めます
絶対値で四捨五入して最近接値へ丸めます
_Decimal64 の丸めモードの初期値は __DPD_ROUND_NEAREST です。-fround オプションは、_Decimal64 の丸めモードを変更しないことに注意してください。
この関数は、_Decimal64 の丸めモードを r に設定します。r は上記に示されているものである必要があります。成功時は 0、失敗時は非 0 を返します。