数学関数

数学関数の動作は次のとおりです。

  • いずれかの入力パラメータが NULL の場合、NULL を返します。
  • いずれかの引数が NaN の場合、NaN を返します。

ABS

ABS(X)

説明

絶対値を計算します。引数が整数で、出力値を同じ型で表せない場合、エラーを返します(これは、正の表記が含まれていない最大の負の入力値に対してのみ発生します)。

X ABS(X)
25 25
-25 25
+inf +inf
-inf +inf

戻りデータの型

入力INT64NUMERICFLOAT64
出力INT64NUMERICFLOAT64

SIGN

SIGN(X)

説明

負、ゼロ、正の引数に対してそれぞれ -10+1 を返します。浮動小数点引数では正と負のゼロは区別されません。

X SIGN(X)
25 +1
0 0
-25 -1
NaN NaN

戻りデータの型

入力INT64NUMERICFLOAT64
出力INT64NUMERICFLOAT64

IS_INF

IS_INF(X)

説明

値が正または負の無限大の場合に TRUE を返します。

NUMERICINF にすることはできないため、NUMERIC 入力に対して FALSE を返します。

X IS_INF(X)
+inf TRUE
-inf TRUE
25 FALSE

IS_NAN

IS_NAN(X)

説明

値が NaN 値である場合、TRUE を返します。

NUMERICNaN にすることはできないため、NUMERIC 入力に対して FALSE を返します。

X IS_NAN(X)
NaN TRUE
25 FALSE

IEEE_DIVIDE

IEEE_DIVIDE(X, Y)

説明

X を Y で除算します。この関数が失敗することはありません。FLOAT64 を返します。除算演算子(/)とは異なり、この関数はゼロまたはオーバーフローによる除算エラーを生成しません。

X Y IEEE_DIVIDE(X, Y)
20.0 4.0 5.0
0.0 25.0 0.0
25.0 0.0 +inf
-25.0 0.0 -inf
0.0 0.0 NaN
0.0 NaN NaN
NaN 0.0 NaN
+inf +inf NaN
-inf -inf NaN

SQRT

SQRT(X)

説明

X の平方根を計算します。X が 0 未満の場合にエラーを生成します。

X SQRT(X)
25.0 5.0
+inf +inf
X < 0 エラー

戻りデータの型

NUMERIC は、入力として直接サポートされていません。まず、明示的に NUMERICFLOAT64 にキャストする必要があります。出力は FLOAT64 になります。

POW

POW(X, Y)

説明

X を Y 乗した値を返します。結果がアンダーフローし、表現できない場合、値 0 を返します。

X Y POW(X, Y)
2.0 3.0 8.0
1.0 NaN を含む任意の値 1.0
NaN を含む任意の値 0 1.0
-1.0 +inf 1.0
-1.0 -inf 1.0
ABS(X) < 1 -inf +inf
ABS(X) > 1 -inf 0.0
ABS(X) < 1 +inf 0.0
ABS(X) > 1 +inf +inf
-inf Y < 0 0.0
-inf Y > 0 Y が奇数の場合は -inf、それ以外は +inf
+inf Y < 0 0
+inf Y > 0 +inf
有限値 < 0 非整数 エラー
0 有限値 < 0 エラー

戻りデータの型

戻りデータの型は、次の表にある引数の型によって決まります。

入力INT64NUMERICFLOAT64
INT64FLOAT64NUMERICFLOAT64
NUMERICNUMERICNUMERICFLOAT64
FLOAT64FLOAT64FLOAT64FLOAT64

POWER

POWER(X, Y)

説明

POW(X, Y) と同等です。

EXP

EXP(X)

説明

e の X 乗を計算します(自然指数関数)。結果がアンダーフローする場合、ゼロを返します。結果がオーバーフローする場合は、エラーを生成します。

X EXP(X)
0.0 1.0
+inf +inf
-inf 0.0

戻りデータの型

NUMERIC は、入力として直接サポートされていません。まず、明示的に NUMERIC 入力を FLOAT64 にキャストする必要があります。出力は FLOAT64 になります。

LN

LN(X)

説明

X の自然対数を計算します。X が 0 以下の場合、エラーを生成します。

X LN(X)
1.0 0.0
+inf +inf
X < 0 エラー

戻りデータの型

NUMERIC は、入力として直接サポートされていません。まず、明示的に NUMERIC 入力を FLOAT64 にキャストする必要があります。出力は FLOAT64 になります。

LOG

LOG(X [, Y])

説明

X のみが存在する場合、LOGLN と同義です。Y も存在する場合、LOG は Y を底とする X の対数を計算します。

X Y LOG(X, Y)
100.0 10.0 2.0
-inf 任意値 NaN
任意値 +inf NaN
+inf 0.0 < Y < 1.0 -inf
+inf Y > 1.0 +inf
X <= 0 任意値 エラー
任意値 Y <= 0 エラー
任意値 1.0 エラー

戻りデータの型

NUMERIC は、入力として直接サポートされていません。まず、明示的に NUMERIC 入力を FLOAT64 にキャストする必要があります。出力は FLOAT64 になります。

LOG10

LOG10(X)

説明

LOG と似ていますが、10 を底とする対数を計算します。

X LOG10(X)
100.0 2.0
-inf NaN
+inf NaN
X <= 0 エラー

戻りデータの型

NUMERIC は、入力として直接サポートされていません。まず、明示的に NUMERIC 入力を FLOAT64 にキャストする必要があります。出力は FLOAT64 になります。

GREATEST

GREATEST(X1,...,XN)

説明

< 比較によって X1,...,XN の間の最大値を返します。 X1,...,XN のいずれかが NULL の場合、戻り値は NULL です。

X1,...,XN GREATEST(X1,...,XN)
3,5,1 5

戻りデータの型

入力値のデータ型。

LEAST

LEAST(X1,...,XN)

説明

> 比較によって X1,...,XN の間の最小値を返します。 X1,...,XN のいずれかが NULL の場合、戻り値は NULL です。

X1,...,XN LEAST(X1,...,XN)
3,5,1 1

戻りデータの型

入力値のデータ型。

DIV

DIV(X, Y)

説明

Y による X の整数除算の結果を返します。ゼロ除算はエラーを返します。-1 による除算はオーバーフローする可能性があります。両方の入力が NUMERIC で、結果がオーバーフローする場合、numeric overflow エラーが返されます。

X Y DIV(X, Y)
20 4 5
0 20 0
20 0 エラー

戻りデータの型

戻りデータの型は、次の表にある引数の型によって決まります。

入力INT64NUMERIC
INT64INT64NUMERIC
NUMERICNUMERICNUMERIC

SAFE_DIVIDE

SAFE_DIVIDE(X, Y)

説明

除算演算子(X / Y)と同じですが、0 で割った場合など、エラーがあると NULL を返します。

XYSAFE_DIVIDE(X, Y)
2045
0200
200NULL

戻りデータの型

入力INT64NUMERICFLOAT64
INT64FLOAT64NUMERICFLOAT64
NUMERICNUMERICNUMERICFLOAT64
FLOAT64FLOAT64FLOAT64FLOAT64

SAFE_MULTIPLY

SAFE_MULTIPLY(X, Y)

説明

乗算演算子(*)と同じですが、オーバーフローが発生すると NULL を返します。

XYSAFE_MULTIPLY(X, Y)
20480

戻りデータの型

入力INT64NUMERICFLOAT64
INT64INT64NUMERICFLOAT64
NUMERICNUMERICNUMERICFLOAT64
FLOAT64FLOAT64FLOAT64FLOAT64

SAFE_NEGATE

SAFE_NEGATE(X)

説明

単項マイナス演算子(-)と同じですが、オーバーフローが発生すると NULL を返します。

XSAFE_NEGATE(X)
+1-1
-1+1
00

戻りデータの型

入力INT64NUMERICFLOAT64
出力INT64NUMERICFLOAT64

SAFE_ADD

SAFE_ADD(X, Y)

説明

加算演算子(+)と同じですが、オーバーフローが発生すると NULL を返します。

XYSAFE_ADD(X, Y)
549

戻りデータの型

入力INT64NUMERICFLOAT64
INT64INT64NUMERICFLOAT64
NUMERICNUMERICNUMERICFLOAT64
FLOAT64FLOAT64FLOAT64FLOAT64

SAFE_SUBTRACT

SAFE_SUBTRACT(X, Y)

説明

X から Y を減算した結果を返します。減算演算子(-)と同じですが、オーバーフローが発生すると NULL を返します。

XYSAFE_SUBTRACT(X, Y)
541

戻りデータの型

入力INT64NUMERICFLOAT64
INT64INT64NUMERICFLOAT64
NUMERICNUMERICNUMERICFLOAT64
FLOAT64FLOAT64FLOAT64FLOAT64

MOD

MOD(X, Y)

説明

モジュロ関数: Y による X の除算の剰余を返します。返される値は X と同じ符号を持ちます。Y が 0 の場合、エラーが発生します。

X Y MOD(X, Y)
25 12 1
25 0 エラー

戻りデータの型

戻りデータの型は、次の表にある引数の型によって決まります。

入力INT64NUMERIC
INT64INT64NUMERIC
NUMERICNUMERICNUMERIC

ROUND

ROUND(X [, N])

説明

X のみが存在する場合、ROUND は X を最も近い整数に丸めます。N が存在する場合、ROUND は小数点以下の N 小数位に X を丸めます。N が負の場合、ROUND は小数点の左側の桁を丸めます。中間の値の場合は、ゼロから遠ざかるように丸めます。オーバーフローが発生した場合は、エラーが発生します。

X ROUND(X)
2.0 2.0
2.3 2.0
2.8 3.0
2.5 3.0
-2.3 -2.0
-2.8 -3.0
-2.5 -3.0
0 0
+inf +inf
-inf -inf
NaN NaN

戻りデータの型

入力INT64NUMERICFLOAT64
出力FLOAT64NUMERICFLOAT64

TRUNC

TRUNC(X [, N])

説明

X のみが存在する場合、TRUNC は絶対値が X 以下で最も近い整数に X を丸めます。N も存在する場合、TRUNC の動作は ROUND(X, N) と似ていますが、常にゼロに近づくように丸め、オーバーフローすることはありません。

X TRUNC(X)
2.0 2.0
2.3 2.0
2.8 2.0
2.5 2.0
-2.3 -2.0
-2.8 -2.0
-2.5 -2.0
0 0
+inf +inf
-inf -inf
NaN NaN

戻りデータの型

入力INT64NUMERICFLOAT64
出力FLOAT64NUMERICFLOAT64

CEIL

CEIL(X)

説明

X 以上で最小の整数値を返します。

X CEIL(X)
2.0 2.0
2.3 3.0
2.8 3.0
2.5 3.0
-2.3 -2.0
-2.8 -2.0
-2.5 -2.0
0 0
+inf +inf
-inf -inf
NaN NaN

戻りデータの型

入力INT64NUMERICFLOAT64
出力FLOAT64NUMERICFLOAT64

CEILING

CEILING(X)

説明

CEIL(X) と同義

FLOOR

FLOOR(X)

説明

X 以下で最大の整数値を返します。

X FLOOR(X)
2.0 2.0
2.3 2.0
2.8 2.0
2.5 2.0
-2.3 -3.0
-2.8 -3.0
-2.5 -3.0
0 0
+inf +inf
-inf -inf
NaN NaN

戻りデータの型

入力INT64NUMERICFLOAT64
出力FLOAT64NUMERICFLOAT64

COS

COS(X)

説明

X のコサインを計算します。X は RADIANS で指定されます。失敗することはありません。

X COS(X)
+inf NaN
-inf NaN
NaN NaN

COSH

COSH(X)

説明

X の双曲線コサインを計算します。X は RADIANS で指定されます。オーバーフローが発生した場合は、エラーが発生します。

X が NUMERIC の場合、出力は FLOAT64 になります。

X COSH(X)
+inf +inf
-inf +inf
NaN NaN

ACOS

ACOS(X)

説明

X の逆コサインの主値を計算します。戻り値は [0,π] の範囲内です。X が [-1, 1] の範囲外の値である場合、エラーになります。

X が NUMERIC の場合、出力は FLOAT64 になります。

X ACOS(X)
+inf NaN
-inf NaN
NaN NaN
X < -1 エラー
X > 1 エラー

ACOSH

ACOSH(X)

説明

X の逆双曲線コサインを計算します。X が 1 未満の値の場合、エラーになります。

X が NUMERIC の場合、出力は FLOAT64 になります。

X ACOSH(X)
+inf +inf
-inf NaN
NaN NaN
X < 1 エラー

SIN

SIN(X)

説明

X のサインを計算します。X は RADIANS で指定されます。失敗することはありません。

X SIN(X)
+inf NaN
-inf NaN
NaN NaN

SINH

SINH(X)

説明

X の双曲線サインを計算します。X は RADIANS で指定されます。オーバーフローが発生した場合は、エラーが発生します。

X が NUMERIC の場合、出力は FLOAT64 になります。

X SINH(X)
+inf +inf
-inf -inf
NaN NaN

ASIN

ASIN(X)

説明

X の逆サインの主値を計算します。戻り値は [-π/2,π/2] の範囲内です。X が [-1, 1] の範囲外である場合、エラーになります。

X が NUMERIC の場合、出力は FLOAT64 になります。

X ASIN(X)
+inf NaN
-inf NaN
NaN NaN
X < -1 エラー
X > 1 エラー

ASINH

ASINH(X)

説明

X の逆双曲線正サインを計算します。失敗することはありません。

X が NUMERIC の場合、出力は FLOAT64 になります。

X ASINH(X)
+inf +inf
-inf -inf
NaN NaN

TAN

TAN(X)

説明

X のタンジェントを計算します。X は RADIANS で指定されます。オーバーフローが発生した場合は、エラーが発生します。

X Tan(X)
+inf NaN
-inf NaN
NaN NaN

TANH

TANH(X)

説明

X の双曲線タンジェントを計算します。X は RADIANS で指定されます。失敗することはありません。

X が NUMERIC の場合、出力は FLOAT64 になります。

X TANH(X)
+inf 1.0
-inf -1.0
NaN NaN

ATAN

ATAN(X)

説明

X の逆タンジェントの主値を計算します。戻り値は [-π/2,π/2] の範囲内です。失敗することはありません。

X が NUMERIC の場合、出力は FLOAT64 になります。

X ATAN(X)
+inf π/2
-inf -π/2
NaN NaN

ATANH

ATANH(X)

説明

X の逆双曲線タンジェントを計算します。X が [-1, 1] 未満の範囲外である場合、エラーになります。

X が NUMERIC の場合、出力は FLOAT64 になります。

X ATANH(X)
+inf NaN
-inf NaN
NaN NaN
X < -1 エラー
X > 1 エラー

ATAN2

ATAN2(X, Y)

説明

象限を判断するために 2 つの引数の符号を用いて、X/Y の逆タンジェントの主値を計算します。戻り値は [-π,π] の範囲内です。

Y が NUMERIC の場合、出力は FLOAT64 になります。

X Y ATAN2(X, Y)
NaN 任意値 NaN
任意値 NaN NaN
0.0 0.0 0.0
正の有限値 -inf π
負の有限値 -inf
有限値 +inf 0.0
+inf 有限値 π/2
-inf 有限値 -π/2
+inf -inf ¾π
-inf -inf -¾π
+inf +inf π/4
-inf +inf -π/4