名前空間
変種
操作

std::fmin, std::fminf, std::fminl

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
ヘッダー <cmath> で定義
(1)
float       fmin ( float x, float y );

double      fmin ( double x, double y );

long double fmin ( long double x, long double y );
(C++23まで)
constexpr /*浮動小数点数型*/

            fmin ( /*浮動小数点型*/ x,

                   /*浮動小数点型*/ y );
(C++23から)
float       fminf( float x, float y );
(2) (C++11以降)
(C++23 以降 constexpr)
long double fminl( long double x, long double y );
(3) (C++11以降)
(C++23 以降 constexpr)
ヘッダー <simd> で定義
template< class V0, class V1 >

constexpr /*math-common-simd-t*/<V0, V1>

            fmin ( const V0& v_x, const V1& v_y );
(S) (C++26以降)
ヘッダー <cmath> で定義
template< class Integer >
double      fmin ( Integer x, Integer y );
(A) (C++23 以降 constexpr)
1-3) 2つの浮動小数点引数のうち小さい方を返します。NaNは欠損データとして扱われます(NaNと数値値の間では、数値値が選択されます)。ライブラリは、パラメータの型として、すべての cv 修飾されていない浮動小数点型に対する std::fmin のオーバーロードを提供します。(since C++23)
S) SIMD オーバーロードは、v_xv_y に対して要素ごとの std::fmin を実行します。
(定義についてはmath-common-simd-tを参照のこと)
(C++26以降)
A) すべての整数型に対する追加のオーバーロードが提供されます。これらは double として扱われます。
(C++11以降)

目次

[edit] パラメータ

x, y - 浮動小数点または整数値

[edit] 戻り値

成功した場合、2つの浮動小数点値のうち小さい方を返します。返される値は正確であり、丸めモードには依存しません。

[edit] エラー処理

この関数は、math_errhandling で指定されたエラー条件のいずれにも影響されません。

実装がIEEE浮動小数点算術 (IEC 60559) をサポートしている場合、

  • 2つの引数のうち1つがNaNの場合、もう一方の引数の値が返されます。
  • 両方の引数がNaNである場合にのみ、NaNが返されます。

[edit] 注意

この関数は、ゼロの符号に敏感である必要はありませんが、一部の実装では、一方の引数が +0 でもう一方が -0 の場合、-0 が返されることが追加で強制されます。

追加のオーバーロードは (A) とまったく同じように提供される必要はない。それらは、最初の引数 num1 と2番目の引数 num2 に対して以下を保証するのに十分である必要がある。

  • num1 または num2 の型が long double の場合、std::fmin(num1, num2)std::fmin(static_cast<long double>(num1),
              static_cast<long double>(num2))
    と同じ効果を持ちます。
  • それ以外の場合、num1 および/または num2 の型が double または整数型の場合、std::fmin(num1, num2)std::fmin(static_cast<double>(num1),
              static_cast<double>(num2))
    と同じ効果を持ちます。
  • それ以外の場合、num1 または num2 の型が float の場合、std::fmin(num1, num2)std::fmin(static_cast<float>(num1),
              static_cast<float>(num2))
    と同じ効果を持ちます。
(C++23まで)

num1num2 が算術型の場合、std::fmin(num1, num2)std::fmin(static_cast</*共通浮動小数点型*/>(num1),
          static_cast</*共通浮動小数点型*/>(num2))
と同じ効果を持ちます。ここで、/*共通浮動小数点型*/ は、num1num2 の型の間で、浮動小数点変換ランクが最も高く、浮動小数点変換サブランクも最も高い浮動小数点型です。整数型の引数は、double と同じ浮動小数点変換ランクを持つと見なされます。

そのような最高のランクとサブランクセを持つ浮動小数点型が存在しない場合、オーバーロード解決は提供されたオーバーロードから使用可能な候補を導出しません。

(C++23から)

[edit]

#include <cmath>
#include <iostream>
 
int main()
{
    std::cout << "fmin(2,1)    = " << std::fmin(2, 1) << '\n'
              << "fmin(-Inf,0) = " << std::fmin(-INFINITY, 0) << '\n'
              << "fmin(NaN,-1) = " << std::fmin(NAN, -1) << '\n';
}

実行結果の例

fmin(2,1)    = 1
fmin(-Inf,0) = -inf
fmin(NaN,-1) = -1

[edit] 関連項目

(C++11)
最初の浮動小数点数引数が2番目より小さいかチェックする
(関数) [編集]
(C++11)(C++11)(C++11)
2つの浮動小数点数値のうち大きい方
(関数) [編集]
与えられた値のうち小さい方を返す
(関数テンプレート) [編集]
範囲内で最小の要素を返す
(関数テンプレート) [編集]
(C++11)
2つの要素の小さい方と大きい方を返す
(関数テンプレート) [編集]
範囲内で最小の要素と最大の要素を返す
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)