Cライブラリ関数 -log()

C 标准库 - <math.h>C標準ライブラリ - <math.h>

説明

Cライブラリ関数double log(double x)返すxの自然対数(底が e の対数)。

log()は C 標準ライブラリ<math.h>内の関数で、浮動小数点数の自然対数(底を e とする)を計算するために使われる。これは一般的な数学関数であり、科学計算、金融、工学などの分野で広く利用されている。

宣言

以下は log() 関数の宣言です。

#include <math.h>

double log(double x);
float logf(float x);
long double logl(long double x);

パラメータ

  • x:入力される浮動小数点数。正の数(0より大きい)でなければなりません。

戻り値

  • 返すxの自然対数。もしxが負の数またはゼロの場合、数学ドメインエラーまたは範囲エラーが発生します。

エラー処理

  • もしxが負の数の場合、log()関数は NaN を返し、設定しますerrnoためにEDOM。
  • もしxがゼロの場合、log()関数は-HUGE_VAL(負の無限大)を返し、設定しますerrnoためにERANGE。

例

以下の例は log() 関数の使い方を示しています。

例

#include <stdio.h>
#include <math.h>

int main ()
{
   double x, ret;
   x = 2.7;

   /* log(2.7) を計算 */
   ret = log(x);
   printf("log(%lf) = %lf", x, ret);
   
   return(0);
}

上記のプログラムをコンパイルして実行すると、次の結果が得られます:

log(2.700000) = 0.993252

複数の値の対数を扱う

以下の例は、複数の値の対数を処理する方法を示しています:

例

#include <stdio.h>
#include <math.h>
#include <errno.h>

int main() {
    double values[] = {1.0, 2.718281828, 10.0, -1.0, 0.0};
    int num_values = sizeof(values) / sizeof(values[0]);

    for (int i = 0; i < num_values; i++) {
        double x = values[i];
        errno = 0;  // errno をリセット
        double result = log(x);

        if (errno == EDOM) {
            printf("Domain error: log(%f) is not defined\n", x);
        } else if (errno == ERANGE) {
            printf("Range error: log(%f) results in an overflow or underflow\n", x);
        } else {
            printf("log(%f) = %f\n", x, result);
        }
    }

    return 0;
}

コード解析

  • 複数の浮動小数点数を含む配列を定義しますvalues。
  • を使用してforループで各値を反復処理し、呼び出し、log(x)計算を行います。
  • リセットしてerrno0 にし、可能性のあるエラーを確認します。
  • 各値の対数の計算結果、またはエラーメッセージを出力します。

上記のプログラムをコンパイルして実行すると、次の結果が得られます:

log(1.000000) = 0.000000
log(2.718282) = 1.000000
log(10.000000) = 2.302585
log(-1.000000) = nan
log(0.000000) = -inf

使用シーン

log()この関数は多くのアプリケーションで幅広く使用されており、以下に限定されません:

  • 指数関数的な増加または減衰の計算。
  • 確率と統計における対数確率の処理。
  • 対数方程式を含む数学的問題の解決。
  • 金融における対数収益率の計算。

まとめ

log()この関数は浮動小数点数の自然対数を計算するために使われ、対数演算を処理するための重要なツールです。適切に使用することで、log()科学計算、金融、工学アプリケーションで対数演算を実装でき、起こり得るエラー状態を適切に処理できます。

C 标准库 - <math.h>C標準ライブラリ - <math.h>

その他の拡張