Skip to content

Latest commit

 

History

History
92 lines (71 loc) · 2.81 KB

File metadata and controls

92 lines (71 loc) · 2.81 KB

fmaximum_num

  • cmath[meta header]
  • std[meta namespace]
  • function[meta id-type]
  • cpp26[meta cpp]
namespace std {
  constexpr floating-point-type
    fmaximum_num(floating-point-type x,
                 floating-point-type y); // (1) C++26

  constexpr Promoted
    fmaximum_num(Arithmetic1 x,
                 Arithmetic2 y);         // (2) C++26
}
  • Promoted[italic]
  • Arithmetic1[italic]
  • Arithmetic2[italic]

概要

浮動小数点数型の最大値を求める。

  • (1) : 浮動小数点数型に対するオーバーロード
  • (2) : 算術型に対するオーバーロード (大きい精度にキャストして計算される。整数はdoubleで計算される)

同じ目的のほかの関数との比較は以下。

関数名 -0.0 と +0.0 の比較 NaN を含む場合の挙動 備考
fmax 未規定 NaN でない方を返す
fmaximum +0.0 を返す NaN を返す エラー伝播を優先
fmaximum_num +0.0 を返す NaN でない方を返す 数値を優先

戻り値

引数の最大値を返す。

備考

  • 戻り値は正確で、現在の丸めモードに依存しない。
  • 処理系が IEC 60559 に準拠している場合(std::numeric_limits<T>::is_iec559() != false)、以下の規定が追加される。
    • 引数の1つが NaN の場合 NaN でない方を返す。
    • 引数が2つとも NaN の場合 NaN を返す。
  • -0.0+0.0の比較では、+0.0を返す。
  • IEEE 754 の maximumNum に対応する。

#include <print>
#include <cmath>

int main() {
  std::println("fmaximum_num( 0.0, -1.0) = {:+}", std::fmaximum_num(0.0, -1.0));
  std::println("fmaximum_num(-0.0, +0.0) = {:+}", std::fmaximum_num(-0.0, +0.0));
  std::println("fmaximum_num( 0.0, +1.0) = {:+}", std::fmaximum_num(0.0, +1.0));
  std::println("fmaximum_num( 0.0, nan)  = {:+}", std::fmaximum_num(0.0, std::nan("")));
  std::println("fmaximum_num( nan, nan)  = {:+}", std::fmaximum_num(std::nan(""), std::nan("")));
}
  • std::fmaximum_num[color ff0000]
  • std::nan[link nanf.md]

出力例

fmaximum_num( 0.0, -1.0) = +0
fmaximum_num(-0.0, +0.0) = +0
fmaximum_num( 0.0, +1.0) = +1
fmaximum_num( 0.0, nan)  = +0
fmaximum_num( nan, nan)  = +nan

バージョン

言語

  • C++26

処理系

  • Clang: 21.0 [mark noimpl]
  • GCC: 15 [mark noimpl]
  • Visual C++: 2022 Update 14 [mark noimpl]

関連項目

参照