ルートの処理についてNo.01065
SHF さん 00/02/25 19:41
 
 秀丸マクロでルート(平方根)を使いたいんですけど、可能でしょうか?

 平方根を使えなくても、while(##a > ##b * ##b) の様にすればできるんですけど、
これだと ##b が 50000 などになった場合、オーバーフローしてしまうんです。


[ ]
RE:01065 ルートの処理についてNo.01070
ひろ さん 00/02/25 21:41
 
 SHF さん今日は、ひろです。
>  秀丸マクロでルート(平方根)を使いたいんですけど、可能でしょうか?
 秀丸は現在数値として、整数しか扱うことが出来ません。しかし正式
version ではありませんが、http://hidemaru.xaxon.co.jp/hmfloat.html
秀丸エディタ、浮動小数点数バージョン Ver3.01 (5 回目) HMFLOAT301_5.LZH
[288KB]
科学技術演算用 DLL (HideMath.dll)、  Ver-.-- (6 回目) HIDEMATH_6.LZH   [
36KB]
というものがあります。若干 bug fix と機能追加されていますが、基本的に
は正式板の Ver.3.01 相当になっています。

[ ]
RE:01070 RE: ルートの処理についてNo.01071
SHF さん 00/02/25 22:10
 
> 秀丸は現在数値として、整数しか扱うことが出来ません。しかし正式
>version ではありませんが、
>秀丸エディタ、浮動小数点数バージョン Ver3.01 (5 回目)
>科学技術演算用 DLL (HideMath.dll)、  Ver-.-- (6 回目)
>というものがあります。

 ありがとうございます。早速インストールしてみました。

 でも、普通の秀丸と浮動小数点用を区別しないといけないんですね。普通の秀丸で
も DLL 読み込み機能を早く付けて欲しいです。

[ ]
RE:01071 RE: ルートの処理についてNo.01073
杉浦 まさき さん 00/02/26 03:55
 
SHF さん、こんばんは。
杉浦 まさき と申します。

> でも、普通の秀丸と浮動小数点用を区別しないといけないんですね。
> 普通の秀丸でも DLL 読み込み機能を早く付けて欲しいです。

DLL 読込み機能は既に Ver.3.04 以降で実装されています。
但し、普通の物(=整数版)はマクロ中で int しか扱えない
(&整数版から浮動小数点数版用に作られた DLL は使えない)ため、
マクロ中で実数計算をしたければ浮動小数点数版を使うしかないです。

ところで、拙作の田楽DLLVer.1.00(整数版専用)には非公開関数として
数式の評価を(浮動小数点数として)行う関数を入れてあるんですが、
こいつは(整数版専用なので(^^;)返す値は「文字列型」なんです。
(例えば「$s = CALC("(1.2+0.6)/3");」で $s == "0.6" を返す)

で、ここで質問なんですが、たとえ返す値が文字列型であっても、
浮動小数点数計算を行う関数はあった方がよいでしょうか??
#ここで肯定的な意見があれば sin() や sqrt() のような
 初等関数も扱えるようにするつもりなんですが…。


[ ]
RE:01073 RE: ルートの処理についてNo.01074
杉浦 まさき さん 00/02/26 03:56
 
すんません。自己レスです。

>DLL 読込み機能は既に Ver.3.04 以降で実装されています。

Ver.3.02 以降でしたね。ごめんなさい。


[ ]
RE:01073 RE: ルートの処理についてNo.01079
SHF さん 00/02/27 15:04
 
 SHFです。

>DLL 読込み機能は既に Ver.3.02 以降で実装されています。

 あっ、本当ですね。(^^ゞ

>で、ここで質問なんですが、たとえ返す値が文字列型であっても、
>浮動小数点数計算を行う関数はあった方がよいでしょうか??
>#ここで肯定的な意見があれば sin() や sqrt() のような
> 初等関数も扱えるようにするつもりなんですが…。

 うーむ ... 現在は整数部分しか必要ないので、小数点を検索してそれより前の文
字列を整数に直すことになりますねぇ。
 無いよりは、文字列型でもあった方がいいと思います。

 まあ、秀丸が標準でサポートしてくれれば一番簡単なんですけど ... (汗)

[ ]
RE:01079 RE: ルートの処理についてNo.01080
杉浦 まさき さん 00/02/27 23:40
 
SHF さん、こんばんは。
杉浦 まさき です。

> うーむ ... 現在は整数部分しか必要ないので、小数点を検索して
> それより前の文字列を整数に直すことになりますねぇ。

それでいいなら整数版のDLLで可能ですね。
#純粋にマクロでもできそうですし(^^;。

> 無いよりは、文字列型でもあった方がいいと思います。

まぁそれほどでもなさそうなので暇をみてやることにします(^^;。


[ ]
RE:01079 RE: ルートの処理についてNo.01084
ENCODINGSHIFTJIS さん 00/02/28 12:44
 
> まあ、秀丸が標準でサポートしてくれれば一番簡単なんですけど ... (汗)

検査してないが、あふれにくい例、
// rootint.mac
// 古めかしい教科書的な式 ニュートン・ラフソン法
// 整数用の継ぎ接ぎ
selectword #b=val(gettext(seltopx,seltopy,selendx,selendy));

if(3>#b){beep endmacro}
if(2147483647<#b){beep endmacro}

#x0=#b/16; if(#x0==0)#x0=1; #x1=#x0+3; // 初期値

while((1<#x1-#x0)||(1<#x0-#x1)){
     #x0=#x1;if(#x0==0)#x0=1;
#x1=(#x0+#b/#x0)/2;
 }
     #x0=#x1;if(#x0==0)#x0=1;// もう一度回す
#x1=(#x0+#b/#x0)/2;
if(#x0<#x1)#x1=#x0;// 収束が振動するとき 小さいほう
golineend insert " √は "+str(#x1); searchdown "[0-9]",regular;

endmacro
//2
//3 √は 1
//4 √は 2
//9 √は 3
//99 √は 9
//999 √は 31
//9999 √は 99
//99999 √は 316
//999999 √は 999
//9999999 √は 3162
//99999999 √は 9999
//999999999 √は 31622
//9999999999 √は 37550
//99999999999 √は 34867

[ ]