名前空間
変種
操作

fdim, fdimf, fdiml

From cppreference.com
< c‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
(C99)
(C99)
fdim
(C99)
(C99)(C99)(C99)(C23)
最大/最小演算
(C99)
(C99)
指数関数
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
べき乗関数
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
三角関数と双曲線関数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最も近い整数浮動小数点数
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮動小数点操作
(C99)(C99)
(C99)(C23)
(C99)
縮小演算
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子および量子指数
Decimal再エンコーディング関数
総順序およびペイロード関数
分類
(C99)
(C99)
(C99)
(C23)
誤差関数とガンマ関数
(C99)
(C99)
(C99)
(C99)
マクロ定数
特殊な浮動小数点値
(C99)(C23)
引数と戻り値
エラーハンドリング
高速演算インジケータ
 
ヘッダー <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)

[編集] 関連項目

整数値の絶対値を計算する (|x|)
(関数) [編集]
(C99)(C99)(C99)
2つの浮動小数点値のうち大きい方を決定する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)