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

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

説明

Cライブラリ関数double pow(double x, double y)返すxのy乗、つまり xy。

pow()は C標準ライブラリ<math.h>の中の関数で、数値の累乗を計算します。具体的には、最初の引数の2番目の引数乗を返します。すなわち、x^y。

宣言

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

#include <math.h>

double pow(double x, double y);
float powf(float x, float y);
long double powl(long double x, long double y);

パラメータ

  • x基数(底)、浮動小数点数。
  • y指数、浮動小数点数。

戻り値

  • 返すxのy乗、すなわちx^y。
  • 計算で数学的エラーが発生した場合、例えば負の数の非整数乗などでは、NaN を返し、設定しますerrno。

エラー処理

  • もしxが負で、yが整数でない場合、結果は NaN となり、errnoに設定されますEDOM。
  • 結果が大きすぎてオーバーフローした場合、返すHUGE_VAL,errnoに設定されますERANGE。
  • 結果が小さすぎてアンダーフローした場合、返す0.0,errnoに設定されますERANGE。

例

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

例

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

int main ()
{
   printf("値 8.0 ^ 3 = %lf\n", pow(8.0, 3));

   printf("値 3.05 ^ 1.98 = %lf", pow(3.05, 1.98));
   
   return(0);
}

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

值 8.0 ^ 3 = 512.000000
值 3.05 ^ 1.98 = 9.097324

複数の累乗計算を処理する

次の例では、複数の基数と指数の累乗計算を処理する方法を示します:

例

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

int main() {
    double bases[] = {2.0, -2.0, 0.0, 2.0};
    double exponents[] = {3.0, 3.0, 0.0, -2.0};
    int num_values = sizeof(bases) / sizeof(bases[0]);

    for (int i = 0; i < num_values; i++) {
        double x = bases[i];
        double y = exponents[i];
        errno = 0;  // errno をリセット
        double result = pow(x, y);

        if (errno == EDOM) {
            printf("Domain error: pow(%f, %f) is not defined\n", x, y);
        } else if (errno == ERANGE) {
            if (result == HUGE_VAL || result == -HUGE_VAL) {
                printf("Range error: pow(%f, %f) results in overflow\n", x, y);
            } else {
                printf("Range error: pow(%f, %f) results in underflow\n", x, y);
            }
        } else {
            printf("pow(%f, %f) = %f\n", x, y, result);
        }
    }

    return 0;
}

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

pow(2.000000, 3.000000) = 8.000000
pow(-2.000000, 3.000000) = -8.000000
pow(0.000000, 0.000000) = 1.000000
pow(2.000000, -2.000000) = 0.250000

コード解説

  • 2つの配列を定義しますbasesとexponentsそれぞれ複数の基数と指数を含みます。
  • を使用forループで各基数と指数のペアを反復処理し、呼び出しますpow(x, y)累乗計算を行います。
  • リセットerrnoを 0 にして、可能性のあるエラーを確認します。
  • 各計算の結果またはエラーメッセージを出力します。

使用シナリオ

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

  • 科学式の累乗演算の計算。
  • 累乗方程式を含む数学的問題の解決。
  • 金融における複利の計算。
  • 工学におけるさまざまな物理計算。

まとめ

pow()関数は浮動小数点数の累乗を計算するために使用され、累乗演算を処理するための重要なツールです。適切に使用することで、pow()科学計算、工学アプリケーション、金融分析での累乗演算を実現し、可能性のあるエラーを適切に処理することができます。

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

その他の拡張