正弦関数

sinxの値を求めます。引数に90°を加えることで、cosxも求められます。

 

イベント命令の記述例と、相互変換モジュールを用いて貼り付けるためのコードを併記しています。実際に入力する際は、相互変換モジュールを用いてスイッチ・変数番号を任意の番号に書き換えて変換すると効率的です。

概要

テイラー展開を用いた正弦関数の計算です。角度[°]を『V[0001]:角度』に入れて実行すると、正弦関数の値の100倍が『V[0002]:結果』に返ります。角度は負の数も含め、任意の数を指定できます。例えばsin45°を求めるには、角度に45を入れて実行すれば、結果に71が返ります(真値は0.707……)。

イベント命令

相互変換モジュール用コード イベント命令記述例
#include "rpgfunc.as"

/* スイッチ・変数番号を入力 */
v1 = 1  // 変数1:角度
v2 = 2  // 変数2:結果
v3 = 3  // 変数3:一時
v4 = 4  // 変数4:符号

/* 以下、イベント命令の構文 */
varsel v4 : var 0, 0, 1, 0
co 1, v1, 0, 0, 4
        varsel v1 : var 3, 0, -1, 0
        varsel v4 : var 3, 0, -1, 0
coend
co 1, v1, 0, 360, 3
        varsel v1 : var 5, 0, 360, 0
coend
co 1, v1, 0, 270, 3
        varsel v1 : var 2, 0, 360, 0
        varsel v1 : var 3, 0, -1, 0
        varsel v4 : var 3, 0, -1, 0
coelse
        co 1, v1, 0, 180, 3
                varsel v1 : var 2, 0, 180, 0
                varsel v4 : var 3, 0, -1, 0
        coelse
                co 1, v1, 0, 90, 3
                        varsel v1 : var 2, 0, 180, 0
                        varsel v1 : var 3, 0, -1, 0
                coend
        coend
coend
varsel v3 : var 0, 1, v1, 0
varsel v3 : var 3, 1, v1, 0
varsel v3 : var 3, 0, 64, 0
varsel v3 : var 4, 0, 2025, 0
varsel v2 : var 0, 1, v3, 0
varsel v2 : var 3, 0, -20, 0
varsel v2 : var 1, 0, 12000, 0
varsel v3 : var 3, 1, v3, 0
varsel v3 : var 4, 0, 100, 0
varsel v2 : var 1, 1, v3, 0
varsel v2 : var 3, 1, v1, 0
varsel v2 : var 4, 0, 6750, 0
varsel v2 : var 3, 1, v4, 0
send
使用変数
  • 『V[0001]:角度』
  • 『V[0002]:結果』
  • 『V[0003]:一時』
  • 『V[0004]:符号』
◆変数の操作:[0004:符号]代入,1
◆条件分岐:変数[0001:角度]が0より小さい
 ◆変数の操作:[0001:角度]乗算,-1
 ◆変数の操作:[0004:符号]乗算,-1
 ◆
:分岐終了
◆条件分岐:変数[0001:角度]が360より大きい
 ◆変数の操作:[0001:角度]剰余,360
 ◆
:分岐終了
◆条件分岐:変数[0001:角度]が270より大きい
 ◆変数の操作:[0001:角度]減算,360
 ◆変数の操作:[0001:角度]乗算,-1
 ◆変数の操作:[0004:符号]乗算,-1
 ◆
:それ以外の場合
 ◆条件分岐:変数[0001:角度]が180より大きい
  ◆変数の操作:[0001:角度]減算,180
  ◆変数の操作:[0004:符号]乗算,-1
  ◆
 :それ以外の場合
  ◆条件分岐:変数[0001:角度]が90より大きい
   ◆変数の操作:[0001:角度]減算,180
   ◆変数の操作:[0001:角度]乗算,-1
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆
:分岐終了
◆変数の操作:[0003:一時]代入,変数[0001]の値
◆変数の操作:[0003:一時]乗算,変数[0001]の値
◆変数の操作:[0003:一時]乗算,64
◆変数の操作:[0003:一時]除算,2025
◆変数の操作:[0002:結果]代入,変数[0003]の値
◆変数の操作:[0002:結果]乗算,-20
◆変数の操作:[0002:結果]加算,12000
◆変数の操作:[0003:一時]乗算,変数[0003]の値
◆変数の操作:[0003:一時]除算,100
◆変数の操作:[0002:結果]加算,変数[0003]の値
◆変数の操作:[0002:結果]乗算,変数[0001]の値
◆変数の操作:[0002:結果]除算,6750
◆変数の操作:[0002:結果]乗算,変数[0004]の値
◆