fabs を使ってみる (C++)
C++
Published: 2020-03-22

確認環境

$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

調査

test.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << fabs(12.3) << endl;
    cout << fabs(-12.3) << endl;
    cout << abs(12.3) << endl;
    cout << abs(-12.3) << endl;
}

出力結果

12.3
12.3
12.3
12.3

fabs

戻り値は正確で、現在の丸め方式には依存しない。

abs

任意の整数型に対するオーバーロードが C++11 で追加されたが、ある種の問題を引き起こすことから、今後削除される可能性がある。Validity and return type of std::abs(0u) is unclear 参照。

abs を使っても同じ結果を取得できましたが、とあるので、fabs を使った方が良さそうです。

参考