1 番目と 2 番目の値の間の正の値の差を求めます。
構文
double fdim(
double x,
double y
);
float fdim(
float x,
float y
); //C++ only
long double fdim(
long double x,
long double y
); //C++ only
float fdimf(
float x,
float y
);
long double fdiml(
long double x,
long double y
);
#define fdim(X) // Requires C11 or higher
パラメーター
x
最初の値。
y
2 番目の値。
戻り値
x
と y
の間の正の値の差を返します。
戻り値 | シナリオ |
---|---|
x-y |
if x >y |
0 | x < = y の場合 |
それ以外の場合は、次のエラーのいずれかを返すことがあります。
問題点 | Return |
---|---|
オーバーフロー範囲エラー | +HUGE_VAL、+HUGE_VALF、または +HUGE_VALL |
アンダーフロー範囲エラー | 丸めた後の正確な値 |
x または y は NaN |
NaN |
エラーは、_matherr
で指定されたとおりに報告されます。
解説
C++ ではオーバーロードが可能であるため、fdim
型および float
型を受け取って返す long double
のオーバーロードを呼び出すことができます。 C プログラムでは、<tgmath.h> マクロを使用してこの関数を呼び出す場合を除き、fdim
では常に double
を受け取って返します。
<tgmath.h>fdim()
マクロを使用する場合は、引数の型によって、この関数のどのバージョンが選択されるかが決定されます。 詳細については、「ジェネリック型数値演算」を参照してください。
NaN の処理を除くと、この関数は fmax(x - y, 0)
と同じです。
要件
機能 | C ヘッダー | C++ ヘッダー |
---|---|---|
<math.h> | <cmath> | |
fdim マクロ |
<tgmath.h> |
互換性の詳細については、「 Compatibility」を参照してください。