Cライブラリ関数 -exp()
説明
Cライブラリ関数double exp(double x)返しますeのx累乗の値。
exp()C標準ライブラリ<math.h>の関数で、e の x 乗を計算するために使用されます。ここで e は自然対数の底(約 2.71828)です。これは一般的な数学関数であり、科学計算、金融、工学などの分野で広く使用されています。
宣言
以下は exp() 関数の宣言です。
#include <math.h> double exp(double x); float expf(float x); long double expl(long double x);
パラメータ
x:入力された実数で、計算する指数を表します。
戻り値
この関数は e の x 乗を返します。
例
以下の例は exp() 関数の使い方を示しています。
例
#include <stdio.h>
#include <math.h>
int main ()
{
double x = 0;
printf(e の %lf 乗は %lf\n", x, exp(x));
printf(e の %lf 乗は %lf\n", x+1, exp(x+1));
printf(e の %lf 乗は %lf\n", x+2, exp(x+2));
return(0);
}
#include <math.h>
int main ()
{
double x = 0;
printf(e の %lf 乗は %lf\n", x, exp(x));
printf(e の %lf 乗は %lf\n", x+1, exp(x+1));
printf(e の %lf 乗は %lf\n", x+2, exp(x+2));
return(0);
}
上記のプログラムをコンパイルして実行すると、次の結果が得られます。
e 的 0.000000 次幂是 1.000000 e 的 1.000000 次幂是 2.718282 e 的 2.000000 次幂是 7.389056
複数の値の指数を計算する
次の例は、複数の値の指数を計算する方法を示しています。
例
#include <stdio.h>
#include <math.h>
int main() {
double values[] = {0, 0.5, 1, 1.5, 2};
int num_values = sizeof(values) / sizeof(values[0]);
for (int i = 0; i < num_values; i++) {
double x = values[i];
double result = exp(x);
printf("exp(%f) = %f\n", x, result);
}
return 0;
}
#include <math.h>
int main() {
double values[] = {0, 0.5, 1, 1.5, 2};
int num_values = sizeof(values) / sizeof(values[0]);
for (int i = 0; i < num_values; i++) {
double x = values[i];
double result = exp(x);
printf("exp(%f) = %f\n", x, result);
}
return 0;
}
上記のプログラムをコンパイルして実行すると、次の結果が得られます。
exp(0.000000) = 1.000000 exp(0.500000) = 1.648721 exp(1.000000) = 2.718282 exp(1.500000) = 4.481689 exp(2.000000) = 7.389056
コード解析
- 複数の値を含む配列を定義します
values。 - 使用して
forループで各値を反復処理し、指数値を計算して結果を出力します。
エラー処理
exp()関数は入力値が大きすぎるとオーバーフローを引き起こす可能性があります。この場合、関数は正の無限大を返し、errnoに設定されます。ERANGE。使用することでerrnoオーバーフローエラーが発生したかどうかを確認できます。
次の例は、オーバーフローエラーの処理方法を示しています。
例
#include <stdio.h>
#include <math.h>
#include <errno.h>
int main() {
double x = 1000.0;
errno = 0; // errno をリセット
double result = exp(x);
if (errno == ERANGE) {
printf("Overflow error: exp(%f) result is out of range.\n", x);
} else {
printf("exp(%f) = %f\n", x, result);
}
return 0;
}
#include <math.h>
#include <errno.h>
int main() {
double x = 1000.0;
errno = 0; // errno をリセット
double result = exp(x);
if (errno == ERANGE) {
printf("Overflow error: exp(%f) result is out of range.\n", x);
} else {
printf("exp(%f) = %f\n", x, result);
}
return 0;
}
上記のプログラムをコンパイルして実行すると、次の結果が得られます。
exp(1000.000000) = inf
コード解析
- コードは計算を試みます
exp(1000.0)、これはオーバーフローを引き起こす可能性のある入力値です。 errnoは 0 にリセットされ、次に呼び出しますexp(x)。- 確認する
errnoが等しいかどうかERANGE、もし等しければ、オーバーフローエラーメッセージを出力します。 - エラーがなければ、計算結果を出力します。
まとめ
exp()関数は e の x 乗を計算するために使用され、指数演算の処理に重要なツールです。使用時には、起こり得るオーバーフローエラーの処理に注意する必要があります。適切に使用することでexp()関数は、数学計算、物理シミュレーション、工学アプリケーションにおいて正確な結果を得ることができます。
C標準ライブラリ - <math.h>