SQRT(平方根) RTM版
作成者 劉徹 改造・アップロード者 天樹

本日は、SQRT(平方根)コモンをDLしていただき、誠にありがとうございます。
この中では、諸注意と、説明書きを行いたいと思います。

このコモンファイルはコモンイベント集の基本ルールに則って利用してOKです。

また、計算に必要な“固定小数点演算コモン”が未だβ版なので、計算が狂う場合がありますので、必ず確認をしてください。おかしい計算が出た場合は、コメント欄に代入式を記入してバグが出たと書いてくだされば、確認し次第対応させていただきます。
この説明書きが分かりづらい場合もコメントしてください。

このコモンファイルは、劉徹さん(天樹の同級生です)が作ってくれました。この場を借りて感謝申し上げます。
改造&アップロードに関しては本人の許可を受けております。どうぞご安心ください。
と言っても、改造点は10万以上の根号に対応させたくらいですが(正確さが最大10倍劣るので、ご注意ください)

さて、これくらいで注意喚起とお願いを終わりにして、説明書きに移行します。

1.必須のコモンファイル

このコモンが演算する環境として、“固定小数点演算コモン”が必要です。別途ダウンロードしてください。小数の表記法に関して詳しいことは“固定小数点演算コモン”のReadMe.htmlをご確認ください。

2.変数の呼び出し法

ウディタでは、コモンイベントの変数入力では、変数を呼び出せるようになっていますが、このコモンにとっては迷惑なことです(泣)
ですので、変数入力に入れる変数に、固定小数点変数の呼び出し値を代入します。

さて、このコモンイベントでは、入力変数が4つ定められています。

入力1 入力2 は、平方根を求めたい値の整数値と小数値(4桁)を入力してください。

入力3 は代入先として整数値を格納する変数の呼び出し値 を格納した変数。
入力4 は代入先として小数値を格納する変数の呼び出し値 を格納した変数を入力してください。

なので、通常変数0に整数値を、通常変数1に小数値を代入するために、「このイベントのセルフ変数0と1」を用いると、

セルフ変数0 セルフ変数1
2000000 2000001
と代入します。

そして、このセルフ変数を入力変数に入れればOKです。

入力値(整数) 入力値(小数) 返値整数保存 返値変数保存
根号内の整数 根号内の小数 1100000 1100001

3.初期値の変更

このコモンファイルの中で、21行と22行のAとaの変数に代入する値は、正の値であれば何でも構いません。但し、この値によっては演算時間に影響が出ますので、注意して設定してください。なお、一般的使用であれば、初期設定で大丈夫です。

最後に

この平方根計算コモンはニュートン法を用いて行っています。

a(n+1)=(1/2)(a(n)+p/a(n)) p=求めたい根号の中身 という漸化式を解く(というより代入し続ける)ことで算出します。

そして、“固定小数点演算”の演算限界の為、10万以上の根号の中身に関しては、演算精度が落ちるので、ご了承ください。
また、マイナスの値を入力すると、永久ループにはまって身動きが取れなくなりますので、絶対にしないでください。

このコモンで10万未満の数の平方根は誤差±0.0001で、10万以上の誤差は±0.0010に収まっています。
(ちなみに、10万以上の平方根に関しては、 √100x=10√x を元に最適化を行っています。これによって、“固定小数点演算”の制限内に収めています。そのため、10万から1000万の間では、小数点以下3桁まで、1000万から10億までは小数点以下2桁の精度に下がります)

最後に、このコモンを作ってくださった劉徹さんに再度感謝いたします。