名前空間
変種
操作

std::fmax, std::fmaxf, std::fmaxl

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

double      fmax ( double x, double y );

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

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

                   /*浮動小数点型*/ y );
(C++23から)
float       fmaxf( float x, float y );
(2) (C++11以降)
(C++23 以降 constexpr)
long double fmaxl( 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>

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

目次

[編集] Parameters

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

[編集] Return value

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

[編集] Error handling

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

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

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

[編集] Notes

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

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

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

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

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

(C++23から)

[編集] Example

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

出力

fmax(2,1)    = 2
fmax(-Inf,0) = 0
fmax(NaN,-1) = -1

[編集] See also

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