fdim, fdimf, fdiml
From cppreference.com
| ヘッダー <math.h> で定義 |
||
| float fdimf( float x, float y ); |
(1) | (C99以降) |
| double fdim( double x, double y ); |
(2) | (C99以降) |
| long double fdiml( long double x, long double y ); |
(3) | (C99以降) |
| ヘッダー <tgmath.h> で定義 |
||
| #define fdim( x, y ) |
(4) | (C99以降) |
1-3) x と y の正の差を返します。つまり、x>y の場合は x-y を返し、それ以外の場合(x≤y の場合)は +0 を返します。
4) 型汎用マクロ: いずれかの引数が long double 型の場合、
fdiml が呼び出されます。そうでない場合、いずれかの引数が整数型または double 型の場合、fdim が呼び出されます。それ以外の場合は、fdimf が呼び出されます。目次 |
[編集] パラメータ
| x, y | - | floating-point value |
[編集] 戻り値
成功した場合、x と y の正の差を返します。
オーバーフローによる範囲エラーが発生した場合、+HUGE_VAL、+HUGE_VALF、または +HUGE_VALL が返されます。
アンダーフローによる範囲エラーが発生した場合、(丸め後の)正しい値を返します。
[編集] エラー処理
エラーは、Template:rllpt で指定されたとおりに報告されます。
実装がIEEE浮動小数点算術 (IEC 60559) をサポートしている場合、
- いずれかの引数が NaN の場合、NaN が返されます。
[編集] 注記
NaN の処理要件を除き、fmax(x-y, 0) と同等です。
[編集] 例
このコードを実行
#include <errno.h> #include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { printf("fdim(4, 1) = %f, fdim(1, 4)=%f\n", fdim(4,1), fdim(1,4)); printf("fdim(4,-1) = %f, fdim(1,-4)=%f\n", fdim(4,-1), fdim(1,-4)); //error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("fdim(1e308, -1e308) = %f\n", fdim(1e308, -1e308)); if (errno == ERANGE) perror(" errno == ERANGE"); if (fetestexcept(FE_OVERFLOW)) puts(" FE_OVERFLOW raised"); }
実行結果の例
fdim(4, 1) = 3.000000, fdim(1, 4)=0.000000
fdim(4,-1) = 5.000000, fdim(1,-4)=5.000000
fdim(1e308, -1e308) = inf
errno == ERANGE: Numerical result out of range
FE_OVERFLOW raised[編集] 参考文献
- C23標準 (ISO/IEC 9899:2024)
- 7.12.12.1 The fdim functions (p: TBD)
- 7.25 Type-generic math <tgmath.h> (p: TBD)
- F.10.9.1 The fdim functions (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.12.12.1 The fdim functions (p: 187-188)
- 7.25 型総称数学関数 <tgmath.h> (p: 272-273)
- F.10.9.1 The fdim functions (p: 386)
- C11標準 (ISO/IEC 9899:2011)
- 7.12.12.1 The fdim functions (p: 257)
- 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
- F.10.9.1 The fdim functions (p: 530)
- C99標準 (ISO/IEC 9899:1999)
- 7.12.12.1 The fdim functions (p: 238)
- 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
- F.9.9.1 The fdim functions (p: 466)
[編集] 関連項目
| (C99) |
整数値の絶対値を計算する (|x|) (関数) |
| (C99)(C99)(C99) |
2つの浮動小数点値のうち大きい方を決定する (関数) |
| C++ ドキュメント for fdim
| |