HSP2.x系で、平方根の近似値を整数で取得するサンプルモジュール
Hot Soup Processor 2.x系で、平方根の近似値を取得するためのサンプルコードです。モジュール化してあるので、何かの需要があれば、モジュールとして使えます。
・・・需要あるのか?(笑)
・・・需要あるのか?(笑)
;
; sqrt … 平方根の計算
;
; ○書式
; sqrt p1
; p1=1〜92682(0) : 数値
;
; ○戻り値
; stat : 成功=平方根の近似値(整数) 失敗=0
;
; ※整数ですので、精度は良くない筈です。(^^;
; また、速度も保証できません。
;
;
;###########モジュール開始###########
#module
#deffunc sqrt int
mref x,0:mref n,64
if x>$16a0a or (x==0):n=0:return ;限界値
if x<0:x=-x:f=1:else:f=0 ;xが負の場合の処理
c=x+1>>1 ;初期値
repeat c,-c
n=cnt*cnt-x
if -x*10<=n and(n<=1)or(cnt==-1):n=-cnt:break
loop
;↑近似値の計算、10000まで動作確認済み。
if f:n=-n
return
#global
;###########モジュール終了###########
;(例)
;sqrt 6400:mes stat:stop
; sqrt … 平方根の計算
;
; ○書式
; sqrt p1
; p1=1〜92682(0) : 数値
;
; ○戻り値
; stat : 成功=平方根の近似値(整数) 失敗=0
;
; ※整数ですので、精度は良くない筈です。(^^;
; また、速度も保証できません。
;
;
;###########モジュール開始###########
#module
#deffunc sqrt int
mref x,0:mref n,64
if x>$16a0a or (x==0):n=0:return ;限界値
if x<0:x=-x:f=1:else:f=0 ;xが負の場合の処理
c=x+1>>1 ;初期値
repeat c,-c
n=cnt*cnt-x
if -x*10<=n and(n<=1)or(cnt==-1):n=-cnt:break
loop
;↑近似値の計算、10000まで動作確認済み。
if f:n=-n
return
#global
;###########モジュール終了###########
;(例)
;sqrt 6400:mes stat:stop
最初に記事を書いた日:2017/10/30
この記事をシェアする
関連記事
- ・HSP2.xで、MIDIファイルのヘッダ情報を調べるモジュール
- ・HSP2.xで、LHA書庫の圧縮と解凍を実現するモジュール
要loadlib&llmod - ・HSP2.xで、HTMLファイル内のリンク先を列挙するサンプルコード(モジュール付き)
- ・HSP2.x系で、ファイルパスから、ファイル名やフォルダ名を取得するサンプルモジュール
- ・HSP2.x系で、アルファベットの大文字と小文字を相互変換するサンプルモジュール
- ・HSP2.x系で、getkey、stick命令のキー番号を取得・表示するサンプルコード
- ・HSP2.x系で、円の中心に向かってグラデーションをかけるサンプルコード
- ・HSP2.x系用 ベンチマークプログラム ソースコード
- ・HSP2.xでMDIウインドウを作成するサンプルコード
要loadlib&llmod