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() 関数は、与えられた引数 x の e を底とする指数値を計算します。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 を返す理由を示します:- x**0 を計算する前に x が 0 (または無限または NaN) であるかどうかをテストするあらゆるプログラムは、0**0 = 1 であるかどうか気にしません。無効となる 0**0 に依存するあらゆるプログラムは、式の意味と、無効であるなら、その結果は、コンピュータによって異なるので、常にあいまいです。
- いくつかの代数テキスト (例えば、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
- アナリストは、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 です。
- 0**0=1 であるなら、また infinity**0 = 1/0**0 = 1 です。それから、すべての有限と無限の x について、x**0 = 1 であるので、また NaN**0 = 1 です。
規格
これらの関数は、 ISO/IEC 9899:1999 (“ISO C99”) に適合します。June 3, 2013 | FreeBSD |