Namespaces
Variants

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

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
ヘッダー <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 /*floating-point-type*/

fmax ( /*floating-point-type*/ x,

/*floating-point-type*/ 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_x v_y に対して要素ごとの std::fmax を実行します。
(定義については math-common-simd-t を参照)
(C++26以降)
A) すべての整数型に対して追加のオーバーロードが提供されており、これらは double として扱われます。
(C++11以降)

目次

パラメータ

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

戻り値

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

エラーハンドリング

この関数は、 math_errhandling で指定されているいかなるエラー条件の対象にもなりません。

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

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

注記

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

追加のオーバーロードは (A) と完全に同一である必要はありません。それらは、第一引数 num1 と第二引数 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まで)

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

最も高いランクとサブランクを持つ浮動小数点型が存在しない場合、 オーバーロード解決 は提供されたオーバーロードから使用可能な候補を生成しない。

(C++23以降)

#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

関連項目

(C++11)
第1浮動小数点引数が第2引数より大きいかどうかをチェックする
(関数)
(C++11) (C++11) (C++11)
2つの浮動小数点値のうち小さい方
(関数)
与えられた値のうち大きい方を返す
(関数テンプレート)
範囲内の最大要素を返す
(関数テンプレート)
(C++11)
2つの要素のうち小さい方と大きい方を返す
(関数テンプレート)
範囲内の最小要素と最大要素を返す
(関数テンプレート)