【C++】指数関数 (exp) と対数関数 (log) を計算する方法

目次

はじめに

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)

これらの標準関数を使うことで、複雑な数学的計算を、安全かつ簡潔にコードに組み込むことができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次