EN JA
EXP(3)
EXP(3) FreeBSD Library Functions Manual EXP(3)

名称

exp, expf, expl, exp2, exp2f, exp2l, expm1, expm1f, expm1l, pow, powf指数、累乗関数

ライブラリ

Math Library (libm, -lm)

書式

#include < math.h>

double
exp( double x);

float
expf( float x);

long double
expl( long double x);

double
exp2( double x);

float
exp2f( float x);

long double
exp2l( long double x);

double
expm1( double x);

float
expm1f( float x);

long double
expm1l( long double x);

double
pow( double x, double y);

float
powf( float x, float y);

解説

exp(), expf() と expl() 関数は、与えられた引数 xe を底とする指数値を計算します。

exp2(), exp2f() と exp2l() 関数は、与えられた引数 x の 2 を底とする指数を計算します。

expm1(), expm1f() と expm1l() 関数は、極めて小さな引数 x のためでさえ、正確に値 exp(x)-1 を計算します。

pow() と powf() 関数は、 x の値の指数 y を計算します。

誤差 (丸めなどのために)

exp( 0), expm1( 0), exp2( integer) と pow( integer, integer) の値は、それらが表現可能であれば正確に提供されます。そうでなければ、これらの関数における誤差は、一般的に 1 ulp 以下です。

戻り値

これらの関数は、誤差が生じないか、引数が範囲外でないなら、適切な計算結果を返します。関数 pow( x, y) と powf( x, y) は、 x < 0 で y が整数でないなら、無効の例外を上げて、NaN を返します。

関数 pow( x, 0) は、x = 0 を含んですべての x に対して x**0 = 1、infinity と NaN を返します。 pow の以前の実装は、いくつかの場合、またはこれらのすべての場合に、未定義となる定義された x**0 があります。ここに、常に x**0 = 1 を返す理由を示します:
  1. x**0 を計算する前に x が 0 (または無限または NaN) であるかどうかをテストするあらゆるプログラムは、0**0 = 1 であるかどうか気にしません。無効となる 0**0 に依存するあらゆるプログラムは、式の意味と、無効であるなら、その結果は、コンピュータによって異なるので、常にあいまいです。
  2. いくつかの代数テキスト (例えば、Sigler の) は、 x = 0 を含めて、すべての x に対して x**0 = 1 を定義します。これは、無効なものとして a[0]∗0**0 を拒絶するのではなく、x = 0 で次の多項式の値として a[0] を受け付ける規約と互換性があります。

    p(x) = a[0]∗x**0 + a[1]∗x**1 + a[2]∗x**2 +...+ a[n]∗x**n
  3. アナリストは、x と y が独立して接近するように x**y が、何でも接近することができるか、または何も接近することができないにもかかわらず、0**0 = 1 を受け付けます。常に 0**0=1 を設定するための理由は、これです:

    x(z) と y(z) が z=0 の近くの z で分析的な (べき級数で拡張可能) 任意の 関数であるなら、そして、x(0) = y(0) = 0 であるなら、 z → 0 として x(z)**y(z) → 1 です。
  4. 0**0=1 であるなら、また infinity**0 = 1/0**0 = 1 です。それから、すべての有限と無限の x について、x**0 = 1 であるので、また NaN**0 = 1 です。

関連項目

fenv(3), ldexp(3), log(3), math(3)

規格

これらの関数は、 ISO/IEC 9899:1999 (“ISO C99”) に適合します。
June 3, 2013 FreeBSD