目次
はじめに
C++で科学技術計算やデータ分析を行う際、指数関数や対数関数は不可欠なツールです。標準ライブラリの <cmath>
(C言語では <math.h>
) ヘッダーには、これらの数学関数が用意されており、簡単に利用することができます。
この記事では、<cmath>
で提供される主要な指数・対数関数について、その使い方を解説します。
exp
,exp2
: 指数関数(eのべき乗、2のべき乗)log
,log2
,log10
: 対数関数(自然対数、2を底とする対数、常用対数)
指数・対数関数を使ったサンプルコード
完成コード
#include <iostream>
#include <cmath> // 数学関数ライブラリ
using namespace std;
int main() {
// --- 1. 自然対数の底eのべき乗 (exp) と 自然対数 (log) ---
cout << "--- exp / log ---" << endl;
double val = 2.0;
double exp_val = exp(val); // e^2 を計算
cout << "exp(" << val << ") = " << exp_val << endl;
double log_val = log(exp_val); // log(e^2) を計算
cout << "log(" << exp_val << ") = " << log_val << endl;
// --- 2. 2のべき乗 (exp2) と 2を底とする対数 (log2) ---
cout << "\n--- exp2 / log2 ---" << endl;
cout << "2の10乗 (exp2): " << exp2(10.0) << endl; // -> 1024
cout << "log2(1024): " << log2(1024.0) << endl; // -> 10
// --- 3. 10を底とする対数(常用対数) (log10) ---
cout << "\n--- log10 ---" << endl;
cout << "log10(1000): " << log10(1000.0) << endl; // -> 3
return 0;
}
コードの解説
1. 指数関数
exp(x)
: 自然対数の底e(ネイピア数、約2.718)を**x
乗**した値 (ex) を返します。exp2(x)
: 2を**x
乗**した値 (2x) を返します。
2. 対数関数
対数関数は、指数関数とは逆の演算です。
log(x)
:x
の自然対数 (log_ex または lnx) を返します。これは、「eを何乗すればxになるか」という値です。log2(x)
:x
の、2を底とする対数 (log_2x) を返します。「2を何乗すればxになるか」という値です。log10(x)
:x
の、10を底とする対数(常用対数) (log_10x) を返します。「10を何乗すればxになるか」という値で、桁数を求める際などによく使われます。
まとめ
今回は、C++の<cmath>
ライブラリを使って、基本的な指数関数と対数関数を計算する方法を解説しました。これらの関数は、浮動小数点数型 (double
, float
, long double
) の引数を受け取り、double
型の結果を返します。
- 指数:
exp(x)
(ex),exp2(x)
(2x) - 対数:
log(x)
(log_ex),log2(x)
(log_2x),log10(x)
(log_10x)
これらの標準関数を使うことで、複雑な数学的計算を、安全かつ簡潔にコードに組み込むことができます。