10 進浮動小数点組み込み関数
10 進浮動小数点組み込み関数は、各 DFP ハードウェア命令に 提供されます。 XL C/C++ 開発者は、適切なパラメーターで関数を 呼び出すことで、10 進浮動小数点組み込み関数とマクロ、または 名前付き定数を使用できます。 10 進浮動小数点組み込み関数の使用には、 ヘッダー・ファイルをインクルードする必要はありません。 それらは、DFP が有効になると自動的にコンパイラーによって定義されます。
すべての 10 進浮動小数点組み込み関数が、最低でも ARCH(7) の ハードウェア・レベルを必要とします。
表 1 で注記しているとおり、単精度のサポートは制限されています。
プロトタイプおよび注 | 説明 |
---|---|
|
これらの関数は、パラメーターの絶対値を返します。 |
|
これらの関数は、第 1 パラメーターの絶対値に 第 2 パラメーターの符号を付けて返します。 |
|
これらの関数は、指定された精度の静止 NaN または シグナリング NaN を、正の符号付きでペイロードはゼロで作成します。 |
関数 __d64_integral と __d128_integral では、inexact 例外が 許可されます。 命令 M4 ビット 21 は 0 に設定されます。 関数 __d64_integral_no_inexact と __d128_integral_no_inexact は、inexact 例外があってもそれを抑止します。 命令 M4 ビット 21 は 1 に設定されます。 これらすべての関数が、命令 M4 ビット 20 を 0 に設定にします。入力がシグナリング NaN の場合は、静止 NaN に変換されます。 |
これらの関数は、10 進浮動小数点値を 10 進浮動小数点形式の 整数値に丸めます。小数点以下の桁は 破棄されます。 現在の丸めモードが使用されます。 |
round_mode パラメーターは、コンパイル時、定数式で
なければなりません。 次のいずれかを使用できます。
|
これらの関数は、第 1 パラメーターの演算値を、 第 2 パラメーターに合うよう指数を調整して返します。 そこでは、現在の丸めモードを 一時的に無効にして、指定した丸めモードを使用することができます。 |
|
これらの関数は、2 つのパラメーターの指数を 比較します。 指数が同じ場合、関数は「真」を返します。 |
これらの関数は、通常、関係を表す <0、==0、または >0 を返します。 いずれかの値が NaN の場合は、"-2" (順序なし) を返します。 |
これらの関数は、2 つの 10 進浮動小数点値を 比較します。 標準的な等価または関係演算子を使用する比較と異なり、 これらの関数では、いずれかのオペランドが静止 NaN またはシグナリング NaN である場合、 無効演算例外も発生します。 |
キャストは常にゼロに向かって丸めを行いますが、 関数 __d64_to_long_long ( ) および __d128_to_long_long ( ) は、 現在の 10 進の丸めモードを使用します。 関数 __d64_to_long_long_rounding ( ) と __d128_to_long_long_rounding ( ) では、現在の丸めモードを 一時的に無効にして、指定した丸めモードを使用することができます。 round_mode パラメーターは、コンパイル時、定数式で
なければなりません。 次のいずれかを使用できます。
|
これらの関数は、10 進浮動小数点値を、丸めモード・オプションを 使用して 64 ビットの符号付き 2 進整数に変換します。 |
unsigned long __dfp_get_round_mode (void); 注: FPC レジスターの丸めマクロをサポートする定義を参照してください。
|
この関数は、z/Architecture® FPC レジスターから、現在の 10 進丸めモードを 取得します。 |
void __dfp_set_round_mode (unsigned long round_mode); 関数内で丸めモードを変更する場合は、関数から戻る前に
元のモードを復元する必要があります。
注: FPC レジスターの丸めマクロをサポートする定義を参照してください。
|
この関数は、指定された 10 進丸めモードを z/Architecture FPC レジスターに 設定して、そのモードを現行モードにします。 |
プロトタイプおよび注 | 説明 |
---|---|
|
これらの関数は、パラメーターが正または負の無限大でなく、 かつ NaN でもない場合に「真」を返します。 |
|
これらの関数は、パラメーターが正または負の無限大の場合に 「真」を返します。 |
|
これらの関数は、パラメーターがサブノーマル、無限大、または NaN でなく、 正常範囲内である場合に「真」を返します。 |
|
これらの関数は、パラメーターが正または負のシグナリング NaN の場合に 「真」を返します。 |
|
これらの命令は、パラメーターが負 (負のゼロ、負の無限大、負の NaN を含む) である場合に 「真」を返します。 |
|
これらの関数は、パラメーターがサブノーマルの場合に 「真」を返します。 |
|
これらの関数は、パラメーターが正または負のゼロの場合に 「真」を返します。 |
プロトタイプおよび注 | 説明 |
---|---|
|
これらの関数は、パラメーターの負の絶対値を返します。 |
注: GPR から値を転送する関数も参照してください。
|
これらの関数は、FPR または FPR のペアの値を、GPR、GPR のペア、 または 4 つの GPR に転送します。 |
注: 値を GPR に転送する関数も参照してください。
|
これらの関数は、GPR、GPR のペア、または 4 つの GPR の値を、FPR または FPR のペアに 転送します。 |
round_mode パラメーターは、コンパイル時、定数式で
なければなりません。 次のいずれかを使用できます。
入力値がシグナリング NaN の場合に、
|
これらの関数は、丸めの制御と、キャストでは使用できない無効例外の制御を使用して、 より狭い形式に値を変換します。 |
__d64_to_signed_BCD は、15 桁の 10 進数字とそれに続く 10 進符号を 64 ビットの結果に 作成します。 __d128_to_signed_BCD は、31 桁の 10 進数字と それに続く 10 進符号を 128 ビットの結果に作成します。 負の値には、符号 0xD が設定されます。 CorF が偽の場合、正の値には、 符号 0xC が設定されます。 CorF が真の場合、正の値には、 符号 0xF が設定されます。 |
これらの関数は、パラメーターの下位の桁を 符号付きパック形式に変換します。 |
符号の 0xA、0xC、0xE、および 0xF は、 正の符号と見なされ、0xB と 0xD は、負と見なされます。 __signed_BCD_to_d64 は、15 桁の 10 進数字とそれに続く 10 進符号を 64 ビットの入力に変換します。 __signed_BCD_to_d128 は、31 桁の 10 進数字と それに続く 10 進符号を 128 ビットの入力に変換します。 |
これらの関数は、符号付きパック 10 進を 10 進浮動小数点に 変換します。 |
__unsigned_BCD_to_d64 は、符号を持たない 16 桁の 10 進数字を 64 ビットの入力に変換します。 __unsigned_BCD_to_d128 は、符号を持たない 32 桁の 10 進数字を 128 ビットの入力に変換します。 |
これらの関数は、パラメーターの下位の桁を 符号なしパック形式に変換します。 |
round_mode パラメーターは、コンパイル時、定数式で
なければなりません。 次のいずれかを使用できます。
|
これらの関数は、値を丸めて桁数を減らします。
そこでは、現在の丸めモードを一時的に無効にできます。 正しい丸めを行うには、入力値の計算に以下を使用する必要があります。 ROUND_TO_PREPARE_FOR |
注 :
|
これらの関数は、第 1 パラメーターの数字と符号に、 第 2 パラメーターのバイアス指数を付けて、無限大、静止 NaN、または シグナリング NaN の特殊値と一緒に返します。 |
注: 右側に係数シフトされた
パラメーターを返す関数も参照してください。
|
これらの関数は、左側に係数シフトされた パラメーターを返します。 符号と指数は変更されません。 シフト・カウントの範囲は 0 から 63 です。それ以外の場合、結果は未定義です。 |
注: 左側に係数シフトされた
パラメーターを返す関数も参照してください。
|
これらの関数は、右側に係数シフトされた パラメーターを返します。 符号と指数は変更されません。 シフト・カウントの範囲は 0 から 63 です。それ以外の場合、結果は未定義です。 |
これらの関数の機能は以下のとおりです。
|
これらの関数は、パラメーターの指数と符号を検査して、 パラメーターが、定義済みデータ・クラス内またはデータ・クラスのセットに あるかどうかを判定します。 |
これらの関数の機能は以下のとおりです。
|
これらの関数は、パラメーターの指数、符号、および最初の桁を検査して、 パラメーターが、定義済みデータ・グループ内またはデータ・グループのセットに あるかどうかを判定します。 |
注 :
|
これらの関数は、パラメーターの指数を 整数で返します。 |
正の値には、CorF が偽の場合は、符号 0xC が設定されます。 真の場合には 0xF が設定されます。 負の値には、符号 0xD が設定されます。 __d64_to_unsigned_BCD は、符号を持たない 16 桁の 10 進数字を 64 ビットの結果に作成します。 __d128_to_unsigned_BCD は、符号を持たない 32 桁の 10 進数字を 128 ビットの結果に作成します。
注: それより左側の桁は、すべて無視されます。 無視された桁にアクセスするには、
適切な __d#_shift_right 関数を使用してください。
|
これらの関数は、パラメーターの下位の桁を 符号なしパック形式に変換します。 |
両方の指数が有限の場合、これらの関数は、指数間の関係を表す "<0"、"==0" または ">0" を返します。 両方の指数が無限の場合は、"0" を返します。 片方の指数が無限で、もう一方が有限の場合は、"-2" (順序なし) を返します。 |
これらの関数は、指数を相互に比較します。 |
|
これらの関数は、通常、入力値の有効数字の数を返します。
例外:
|
注: FPC レジスターの丸めマクロをサポートする定義を参照してください。
|
この関数は、浮動小数点制御 (FCP) レジスターを変更するため、 例外を出す場合があります。 |
プロトタイプおよび注 | 説明 |
---|---|
source は、有効なゾーン・フォーマットのデータが入っているメモリー位置を指します。 length は、マシン・インストラクションにエンコードされるソース・フィールドの長さを指定します。length の値の範囲には、__cdzt の場合は 「0-15」、__cxzt の場合は 「0-33」を指定できます。length の値がリテラルでない場合、EX 命令が生成され、ターゲット CDZT または CXZT 命令が実行されます。 mask の値は、マシン・インストラクションにエンコードされる M3 の値を提供します。mask の値はリテラルとして指定する必要があります。 戻り値は、変換された 10 進浮動小数点値です。 |
これらの関数は、ゾーン・タイプを 10 進浮動小数点タイプに変換します。 |
source には、変換される 10 進浮動小数点が含まれています。 result は、ゾーン・フォーマットの変換済みデータを受け取るメモリー位置を指します。 length は、変換する 10 進浮動小数点値の右端の桁の数を指定します。length の値は、マシン・インストラクションにエンコードされる結果フィールドの長さをバイト単位で指定します。length の値の範囲には、__czdt の場合は「0-15」、__czxt の場合は「0-33」を指定できます。length の値がリテラルでない場合、EX 命令が生成され、ターゲット CZDT または CZXT 命令が実行されます。 mask の値は、マシン・インストラクションにエンコードされる M3 の値を提供します。mask の値はリテラルとして指定する必要があります。 戻り値は、命令で設定される条件コードです。 |
これらの関数は、10 進浮動小数点タイプをゾーン・タイプに変換します。 |