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
}
概要
浮動小数点数型の最大値を求める。
同じ目的のほかの関数との比較は以下。
| 関数名 | -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("")));
}
出力例
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 ❌
- GCC: 15 ❌
- Visual C++: 2022 Update 14 ❌