|
#module
"su"
#deffunc absolute_value val,int ;絶対値(変数,数値) mref
_s,16 mref _s2,1 _s=_s2*-1 return
#deffunc
power_value val,int,int ;累乗(変数,数値,何乗) mref _p,16 mref
_v,1 mref _v2,2 mref st,64
;stat=1:指定した数値が変 ;stat=2:$0~$FFFFFFFFの範囲を超えるため命令終了 st=0
hoz=_v if
_v=0 : st=1 : _p=0 : return ;0は時間の無駄 if _v2=0 : st=1 : _p=1 :
return ;数値の0乗は1と定義されている if (_v=1)|(_v2=1) : st=0 : _p=_v : return
;無駄無駄
if _v<0 : _v=_v*-1 ;0以下は自然数に直す(詳しいコトは知らない) if
_v2<0 : _v2=_v2*-1 ;こっちもな
_p=_v
repeat
_v2-1 if _p>(2147483647/_v) : _p=2147483647/_v : st=2 : break
;数値が変になりそうだったら打ち止め _p=_p*_v loop if
(_v2&1)&(hoz<0) : _p=_p*-1
;-を奇数回掛けたら-にしておく return
#deffunc get_far
val,int,int,int,int,int ;精度低い二点間の距離(変数,x,y,x2,y2,精度) mref abe,16
;しかも遅い mref x,1 mref y,2 mref x2,3 mref y2,4 mref
sei,5 mref st,64
if sei<1 : sei=1 if sei>1024 :
sei=1024 con=0 st=0 y3=y-y2 x3=x-x2 xy=(x3*x3)+(y3*y3)
repeat
32768,0 con+=sei if xy<=sq.con : abe=con :
break loop
st=1 return
#deffunc get_sqrt val,int
;√を求める(変数,数値) mref abe,16 mref s,1 mref st,64 st=0 if
s<0 : s=s*-1 : fl=1 : else : fl=0 if s=0 : st=2 : return
repeat 32768,0 if s<=sq.cnt : abe=cnt :
break loop if fl=1 :
abe=abe*-1 st=1 return
#deffunc init_sqrt
;平方根初期化(返り値stat=1) mref st,64 ;平方命令前にやっとく st=0 ;激遅が弱点 dim
sq,32768 repeat
32768,0 tmp=cnt sq.cnt=tmp*tmp loop st=1 return
#global
#module
"draw"
#deffunc draw_sq int,int,int,int,int
;正方形描写(x,y,x2,y2,対角線フラグ) mref x,0
;(x,y)と(x2,y2)を通る線を対角線として正方形を描く mref y,1 ;正確じゃない mref
x2,2 mref y2,3 mref fl,4
;=0,対角線非表示,>0,対角線表示 x3=x2-x y3=y2-y xs=x3/2 ys=y3/2 x4=xs+ys+x y4=ys-xs+y x5=xs-ys+x y5=ys+xs+y if
fl>0 { line x,y,x2,y2 line x4,y4,x5,y5 } line
x,y,x4,y4 line x4,y4,x2,y2 line x2,y2,x5,y5 line
x5,y5,x,y return
#global
kurasoftの悪用厳禁の中に入っているやつです
|
|