EXP (SQL)
数値の指数値 (自然対数の逆関数) を返すスカラ数値関数です。
構文
{fn EXP(expression)}
概要
EXP は指数関数 en であり、e は定数 2.718281828 です。そのため、e の値を返すために、{fn EXP(1)} と指定できます。EXP は自然対数関数 LOG の逆関数です。
EXP は、有効桁数が 36 で小数桁数が 18 の値を返します。NULL 値を渡すと EXP は NULL を返します。
EXP は ({ } 括弧構文と共に) ODBC スカラ関数としてのみ使用できます。
引数
expression
対数の指数値。数値式です。
EXP は、NUMERIC または DOUBLE データ型のいずれかを返します。EXP は、expression がデータ型 DOUBLE の場合には DOUBLE を返し、それ以外の場合には NUMERIC を返します。
例
以下の例は、定数 e を返します。
SELECT {fn EXP(1)} AS e_constant
これは、2.718281828... を返します。
以下の埋め込み SQL の例は、整数 0 から 10 までの指数値を返します。
SET a=0
WHILE a<11 {
&sql(SELECT {fn EXP(:a)} INTO :b)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE
QUIT }
ELSE {
WRITE !,"Exponential of ",a," = ",b
SET a=a+1 }
}
以下の例は、EXP が LOG の逆関数であることを示しています。
SELECT {fn EXP(7)} AS Exp,
{fn LOG(7)} AS Log,
{fn EXP({fn LOG(7)})} AS ExpOfLog
3 番目の関数呼び出しで、入力された数値と計算された返り値との間に小さな差異があることに注意してください。以下の例は、この計算上の誤差を処理する方法を示します。
以下の埋め込み SQL の例は、整数 1 から 10 までに対する LOG 関数と EXP 関数の関係を示します。
SET a=1
WHILE a<11 {
&sql(SELECT {fn LOG(:a)} INTO :b)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE
QUIT }
ELSE {
WRITE !,"Logarithm of ",a," = ",b }
&sql(SELECT ROUND({fn EXP(:b)},12) INTO :c)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"Exponential of log ",b," = ",c
SET a=a+1 }
}
ここでは、システムの計算制限によって生じる非常に小さな差異を修正する ROUND 関数が必要なことに注意してください。上記の例では、この目的で ROUND がとりあえず小数点以下 12 桁に設定されています。