符号に関するお役立ち
正負を取り出すのは標準ライブラリで簡単にできるので、正なのか0なのか負なのかを取り出し、符号の反転などに使いやすい形にで使える関数を取り扱います。
参考
std::copysign(絶対値と符号を指定して小数を作成する)
std::signbit(符号が負かどうかを判定する)
今回扱ったもの
code:sign_rsign.cpp
/// @brief 「符号/0」を「絶対値1の値/0」で取り出します。
/// @param x
/// @return x > 0:1, x < 0:-1, x == 0:0
constexpr double sign(double x) noexcept {
return (x > 0) - (x < 0);
}
/// @brief 「符号/0」を「絶対値1の値/0」で取り出し、符号は反転します。
/// @param x
/// @return x > 0:-1, x < 0:1, x == 0:0
constexpr double rsign(double x) noexcept {
return (x < 0) - (x > 0);
}