nexttowardd32()、nexttowardd64()、nexttowardd128() - 次の表現可能な値の計算

標準

標準/拡張機能 C/C++ 依存項目
C/C++ DFP 両方 z/OS® V1.8

形式

#define __STDC_WANT_DEC_FP__
#include <math.h>

_Decimal32  nexttowardd32(_Decimal32 x, _Decimal128 y); 
_Decimal64  nexttowardd64(_Decimal64 x, _Decimal128 y); 
_Decimal128 nexttowardd128(_Decimal128 x, _Decimal128 y);
_Decimal32  nexttoward(_Decimal32 x, _Decimal128 y); /*C++ only*/
_Decimal64  nexttoward(_Decimal64 x, _Decimal128 y); /*C++ only*/
_Decimal128 nexttoward(_Decimal128 x, _Decimal128 y);/*C++ only*/

機能説明

nexttoward() ファミリーの関数は、y の方向で x の後にくる、次の表現可能な 10 進数浮動小数点値を計算します。
注 :
  1. IEEE 10 進数浮動小数点を使用するためには、ハードウェアに 10 進数浮動小数点機能 がインストールされている必要があります。
  2. これらの関数は、IEEE 10 進数浮動小数点形式で機能します。詳細は 「IEEE 10 進数浮動小数点」を参照してください。

戻り値

正常に実行された場合は、y の方向で x の後にくる、次に表現可能な値が指定の形式で戻されます。

条件 結果
xy に等しい y (x 型の) が戻されます。
xy より小さい x の後、次に表現可能な値が戻されます。
xy より大きい x より小さい、表現可能な最大の 10 進数浮動小数点数が戻されます。
x は有限で、該当する関数値はオーバーフロー 範囲エラーが発生し、 ±HUGE_VAL_D32、 ±HUGE_VAL_D64、 または ±HUGE_VAL_D128 (x と同じ符号が付く) が nexttowardd32()、 nexttowardd64() または nexttowardd128() からそれぞれ戻されます。
xy と等しくなく、該当するサブルーチン値は非正規、0、またはアンダーフロー 範囲エラーが発生し、該当する関数値 (表現可能な場合) または 0.0 が戻されます。
x または y は NaN NaN が戻されます。

⁄* CELEBN08

   This example illustrates the nexttowardd32() function.

*⁄

#define __STDC_WANT_DEC_FP__
#include <math.h>
#include <stdio.h>


static void try_nt(_Decimal32 x, _Decimal128 y)
{
  _Decimal32 r = nexttowardd32(x, y);
  printf("nexttowardd32(%12.12HG, %12.12DDG) = % 12.12HG¥n", x, y, r);
  return;
}


int main(void)
{
  try_nt( 2.000000DF    ,  2.00000001DL    );
  try_nt(-2.000000DF    , -2.00000001DL    );
  try_nt( 2.000000DF    ,  2.00000000DL    );
  try_nt( 2.000000DF    ,  1.99999999DL    );
  try_nt(-2.000000DF    , -1.99999999DL    );
  try_nt( 9.999999E+96DF,  9.99999999E+96DL);
  try_nt( 1.000000E-95DF,  0.99999999E-95DL);

  return 0;
}

関連情報