C++ STLのstd::exp2()関数の使い方と使用例
本記事では、C++ STLに用意されているstd::exp2()関数について、その仕組み、構文、そして具体的な使用例をわかりやすく解説します。
std::exp2()とは
std::exp2()は、C++標準ライブラリに組み込まれた数学関数の一つで、<cmath>ヘッダー(または<ctgmath>ヘッダー)で定義されています。この関数は、引数として与えられた数値を指数とする「底が2の指数関数(二進指数関数)」、すなわち 2n を計算するために使用されます。
戻り値の型は、引数の型に対応して double、float、long double のいずれかとなります。
構文
double exp2(double n); float exp2(float n); long double exp2(long double n);
パラメータ
この関数は、次のパラメータを受け取ります。
- n − 指数となる値です。
戻り値
底が2の指数値、つまり 2n の計算結果を返します。なお、結果がデータ型で表現できる範囲を超えるとオーバーフロー、極端に小さくなるとアンダーフローが発生する点に注意してください。
使用例
例1:小数を渡した場合
入力:
exp2(3.14);
出力:
8.81524
2の3.14乗(約8.815)が返されていることがわかります。
例2:負の値を渡した場合
#include <cmath>
#include <iostream>
using namespace std;
int main(){
double var = -2.34;
double hold = exp2(var);
cout << "Value of exp2(" << var << ") is: " << hold << endl;
return 0;
}
出力:
Value of exp2(-2.34) is: 0.19751
負の指数を指定した場合は、1を2で繰り返し割った値、つまり 1 / 2n が求まります。
例3:整数を渡した場合
#include <cmath>
#include <iostream>
using namespace std;
int main(){
int var = 10;
int hold = exp2(var);
cout << "Value of exp2(" << var << ") is: " << hold << endl;
return 0;
}
出力:
Value of exp2(10) is: 1024
整数値を渡した場合も同様に2の累乗が計算され、この例では 210 = 1024 が出力されます。
例4:結果が大きすぎる場合(オーバーフロー)
#include <cmath>
#include <iostream>
using namespace std;
int main(){
double var = 10000;
double hold = exp2(var);
cout << "Value of exp2(" << var << ") is: " << hold << endl;
return 0;
}
出力:
Value of exp2(10000) is: inf
計算結果がdouble型で表現できる最大値を超えるとオーバーフローが発生し、無限大(inf)が返されます。大きな値を扱う際には、この挙動を考慮して適切なエラー処理を行うことが重要です。
まとめ
std::exp2()関数を使用することで、底が2の指数計算を簡単かつ効率的に行うことができます。2のべき乗が必要なアルゴリズムやビット操作に関連する処理などで活用してみてください。
-
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