目次
はじめに
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)
これらの標準関数を使うことで、複雑な数学的計算を、安全かつ簡潔にコードに組み込むことができます。
