対数関数

logxの値を求めます。底はeです。

 

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

概要

テイラー展開を用いた対数関数の計算です。引数を『V[0001]:引数』に入れて実行すると、対数関数の値の100倍が『V[0002]:結果』に返ります。引数は非負の数のみです。例えばlog30000を求めるには、引数に30000を入れて実行すれば、結果に1033が返ります(真値は10.308……)。

イベント命令

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

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

/* 以下、イベント命令の構文 */
varsel v3 : var 0, 0, 0, 0
varsel v2 : var 0, 0, 0, 0
label 1
co 1, v1, 0, 100000, 4
        varsel v1 : var 3, 0, 10, 0
        varsel v3 : var 1, 0, 1, 0
        golabel 1
coend
co 1, v3, 0, 6, 4
        varsel v1 : var 4, 0, 272, 0
        varsel v1 : var 3, 0, 100, 0
        varsel v2 : var 1, 0, 100, 0
        golabel 1
coend
varsel v1 : var 4, 0, 1000, 0
varsel v1 : var 2, 0, 1000, 0
varsel v3 : var 0, 1, v1, 0
varsel v3 : var 3, 0, 2, 0
varsel v3 : var 2, 0, 3000, 0
varsel v3 : var 4, 0, 10, 0
varsel v3 : var 3, 1, v1, 0
varsel v3 : var 1, 0, 600000, 0
varsel v3 : var 4, 0, 1000, 0
varsel v3 : var 3, 1, v1, 0
varsel v3 : var 4, 0, 6000, 0
varsel v2 : var 1, 1, v3, 0
send
使用変数
  • 『V[0001]:引数』
  • 『V[0002]:結果』
  • 『V[0003]:一時』
◆変数の操作:[0003:一時]代入,0
◆変数の操作:[0002:結果]代入,0
◆ラベルの設定:1番
◆条件分岐:変数[0001:引数]が100000より小さい
◆変数の操作:[0001:引数]乗算,10
◆変数の操作:[0003:一時]加算,1
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了
◆条件分岐:変数[0003:一時]が6より小さい
◆変数の操作:[0001:引数]除算,272
◆変数の操作:[0001:引数]乗算,100
◆変数の操作:[0002:結果]加算,100
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了
◆変数の操作:[0001:引数]除算,1000
◆変数の操作:[0001:引数]減算,1000
◆変数の操作:[0003:一時]代入,変数[0001]の値
◆変数の操作:[0003:一時]乗算,2
◆変数の操作:[0003:一時]減算,3000
◆変数の操作:[0003:一時]除算,10
◆変数の操作:[0003:一時]乗算,変数[0001]の値
◆変数の操作:[0003:一時]加算,600000
◆変数の操作:[0003:一時]除算,1000
◆変数の操作:[0003:一時]乗算,変数[0001]の値
◆変数の操作:[0003:一時]除算,6000
◆変数の操作:[0002:結果]加算,変数[0003]の値
◆