Oracle SQL 関数 : COS,SIN,TAN : 三角関数

 numberRet := COS( nRad );	/* 余弦関数 */
 numberRet := SIN( nRad );	/* 正弦関数 */
 numberRet := TAN( nRad );	/* 正接関数 */

 COS,SIN,TAN関数はラジアンで表された角度[nRad]の余弦、正弦、正接値を戻します。
  numberRet : 引数がBINARY_FLOATの場合、このファンクションはBINARY_DOUBLEを戻します。
              それ以外の場合、引数と同じ数値データ型を戻します。

以下に COS,SIN,TAN 関数の例を示します。

SQL> SELECT
  2   SIN(0)                 AS "SIN(0)"
  3  ,SIN(3.14159265359 / 2) AS "SIN(PI / 2)"
  4  ,SIN(3.14159265359)     AS "SIN(PI)"
  5  ,COS(0)                 AS "COS(0)"
  6  ,COS(3.14159265359 / 2) AS "COS(PI / 2)"
  7  ,COS(3.14159265359)     AS "COS(PI)"
  8  ,TAN(0)                 AS "TAN(0)"
  9  ,TAN(3.14159265359 / 4) AS "TAN(PI / 4)"
 10  FROM DUAL;

    SIN(0) SIN(PI / 2)    SIN(PI)     COS(0) COS(PI / 2)    COS(PI)     TAN(0) TAN(PI / 4)
---------- ----------- ---------- ---------- ----------- ---------- ---------- -----------
         0           1 -2.068E-13          1  -1.034E-13         -1          0           1

ラジアンで表された角度は「π」の倍数で表現され、Oracleには「π」を取得する関数が無いので、 近似値として「3.14159265359」を用いています。
SIN(PI)」および「COS(PI / 2)」は数学的には「0」なのですが、内部的に近似計算なので「E-13」の値となりました。 これぐらいであれば、ほぼ「0」と考えてもいいと思います。

今までの経験では Oracle を使ったシステムで三角関数を使ったことが在りませんでした。
(数学的な計算が必要な場合には使うことが在るかもしれませんが、通常のシステムでは先ず使う機会がないのでは)

それでは、次は三角関数の逆関数について記します。

Oracle SQL 関数 : ACOS,ASIN,ATAN : 逆三角関数

 numberRet := ACOS( n );	/* 逆余弦関数 */
 numberRet := ASIN( n );	/* 逆正弦関数 */
 numberRet := ATAN( n );	/* 逆正接関数 */

 ACOS,ASIN,ATAN関数は引数[n]の(-1 ~ 1)の範囲に対応するラジアンで表された角度(0 ~ n)を戻します。
  numberRet : 引数がBINARY_FLOATの場合、このファンクションはBINARY_DOUBLEを戻します。
              それ以外の場合、引数と同じ数値データ型を戻します。

以下に ACOS,ASIN,ATAN 関数の例を示します。

SQL> SELECT
  2   ASIN(-1/SQRT(2)) / 3.14159265359 AS "ASIN : -45°"
  3  ,ASIN( 0)         / 3.14159265359 AS "ASIN : 0°"
  4  ,ASIN( 1/SQRT(2)) / 3.14159265359 AS "ASIN : 45°"
  5  ,ACOS(-1)         / 3.14159265359 AS "ACOS : -45°"
  6  ,ACOS( 0)         / 3.14159265359 AS "ACOS : 0°"
  7  ,ACOS(-1)         / 3.14159265359 AS "ACOS : 45°"
  8  ,ATAN( 0)         / 3.14159265359 AS "ATAN : 0°"
  9  ,ATAN( 1)         / 3.14159265359 AS "ATAN : 45°"
 10  FROM DUAL;

ASIN : -45° ASIN : 0° ASIN : 45° ACOS : -45° ACOS : 0° ACOS : 45° ATAN : 0° ATAN : 45°
------------ ---------- ----------- ------------ ---------- ----------- ---------- -----------
        -.25          0         .25            1         .5           1          0         .25

ACOS,ASIN,ATAN関数で「-45°」「0°」「45°」となる値を引数に設定し、結果を見ています。
それぞれの関数の戻り値を「π = 3.14159265359」で割っていますので、ASIN(-1/SQRT(2))は 「-π/4」であることが分かります。