C++ STLのilogb()関数とは?使い方と具体例を徹底解説
この記事では、C++ STLに用意されているilogb()関数の仕組み、構文、そして実際のコード例について詳しく解説します。
ilogb()関数とは?
ilogb()関数は、C++ STLに標準で組み込まれている数学関数の一つで、<cmath>ヘッダーファイル内で定義されています。「ilogb」は「integer binary logarithm(整数二進対数)」を意味し、その名のとおり対数値の整数部分を求めるために使用されます。
この関数は、FLT_RADIX(通常は2)を対数の底として、|x|の対数のうち整数部分にあたる値を返します。つまり、浮動小数点数xを表現するのに必要な指数部を取得するイメージです。
構文
int ilogb(double x);
パラメータ
この関数は以下の引数を受け取ります。
x − 対数を求めたい対象となる値です。
戻り値
この関数は、FLT_RADIXを底とした|x|の対数の整数部分を返します。また、引数の値によっては例外(エラー状態)が発生することもあります。
引数の値ごとの挙動は次のとおりです。
NaN(非数)の場合 − 関数は
FP_LOGBNANを返します。無限大の場合 − 関数は
INT_MAXを返します。0 の場合 − 関数は
FP_LOGB0を返します。
入力例
ilogb(2);
出力例
1
サンプルコード①:基本的な使い方
#include <cfloat>
#include <cmath>
#include <iostream>
using namespace std;
int main(){
int output, var = 2;
output = ilogb(var);
cout << "The value of ilogb(" << var << ") is: " << output << endl;
return 0;
}出力
上記のコードを実行すると、次のような結果が出力されます。
The value of ilogb(2) is: 1
FLT_RADIXが2であるため、ilogb(2)は「log₂(2) = 1」となり、結果として1が返されます。
サンプルコード②:小数値を渡した場合
#include <cfloat>
#include <cmath>
#include <iostream>
using namespace std;
int main(){
int output;
double var = 10.23;
output = ilogb(var);
cout << "The value of ilogb(" << var << ") is: " << output << endl;
return 0;
}出力
上記のコードを実行すると、次のような結果が出力されます。
The value of ilogb(10.23) is: 3
この場合、「log₂(10.23) ≒ 3.35」なので、その整数部分である3が返されます。
まとめ
ilogb()関数は、浮動小数点数に対してFLT_RADIXを底とする対数の整数部分を求める便利な関数です。通常の値だけでなく、NaN・無限大・0といった特殊な値に対しても定義された戻り値を持つため、数値計算プログラムでのエラーハンドリングにも役立ちます。
-
C++ STLのcosh()関数とは?双曲線余弦の求め方をサンプルコード付きで解説
cosh()関数とは? C++のSTLに組み込まれているcosh()関数は、ラジアン単位で与えられた角度の双曲線余弦(ハイパボリック・コサイン)を計算して返す関数です。使用するには、<cmath>ヘッダーをインクルードする必要があります。 双曲線余弦は、数学的に次の式で定義されます。 cosh(x) = (e^x + e^(-x)) / 2 構文 cosh()関数の構文は以下の通りです。 cosh(var) 構文から分かるように、cosh()関数はfloat型、double型、long double型のいずれかの引数varを受け取ります。そして、その双曲線余弦を返します。なお、引
-
C++ STLのsinh()関数の使い方を徹底解説
sinh()関数とはsinh()関数は、ラジアンで指定された値の双曲線正弦(ハイパボリックサイン)を返す関数です。C++のSTL(標準テンプレートライブラリ)に組み込まれており、<cmath>ヘッダをインクルードすることで利用できます。双曲線正弦は、以下の数式で定義されます。sinh(x) = (e^x − e^−x) / 2sinh()関数の構文sinh()関数の構文は以下のとおりです。sinh(var)構文からわかるように、sinh()関数はfloat型、double型、long double型のいずれかのパラメータvarを受け取ります。戻り値は、varの双曲線正弦です。sin