HideMath.dll(Ver8.91対応版)
目次浮動小数点数モード− HideMath.dll
1.HideMath.dllとは

 HideMath.dllは、浮動小数点数モードで呼び出して使う、科学技術演算用の関数ライブラリーです。

 浮動小数点数版(統合版)で浮動小数点数モードにして呼び出して使うことにより、各種の科学技術演算が出来ます。
 V6.50未満の浮動小数点数バージョンの秀丸エディタからも呼び出すことができます。

2.使い方

 マクロのloaddll文やdllfunc関数を使って呼び出して使います。
 V6.50以降の浮動小数点数版(統合版)ではHideMath.dllは標準添付されています。

 普通の秀丸エディタから呼び出して使うことは出来ません。
 間違って普通の秀丸から呼び出しても死んでしまうことは無いと思いますが、正しい結果は返しません。

 マクロからの基本的な呼び出し方は、以下のようになります。
setfloatmode 1;    //浮動小数点数モードにする
loaddll "hidemath.dll";
if( !result ) {
    message "hidemath.dllのロードに失敗しました。";
    endmacro;
}
...
... hidemath.dllを使った処理
...
 マクロの最後に
freedll;
 を入れておくとなおいいですが、無くても特に支障はありません。

 HideMath.dllが提供している関数は、dllfunc関数を使って呼び出せばいいです。例えば絶対値を返す関数である"Abs"を呼ぶには、
#a = dllfunc( "Abs", #a );
 と呼び出せばいいです。ほとんどの関数はこのような形になりますが、"Pi"等、パラメータの数が変わってくる物もあります。

 また、"Format"関数だけは、文字列型の値を返すので、dllfuncstr関数を使って呼び出すことになります。例えば、
$a = dllfuncstr( "Format", "%lE", #a );
message "結果 = " + $a;
 のように呼び出すことになります。

 関数名は大文字/小文字が区別されるので、例えばAbs関数を呼ぶ場合は正しく"Abs"と指定しないといけないです。"abs"や"ABS"で呼び出そうとするとエラーになってマクロの実行が中断します。

3.関数リファレンス

●Sin,Cos,Tan,Asin,Acos,Atan,Atan2,Sinh,Cosh,Tanh

 いわゆる三角関数のsin,cos,tanと、逆三角関数(アークサイン、…)、ハイパボリック関数(sinh,cosh,tanh)です。
#a = dllfunc( "Sin", 3.14159 / 2 );
 のように使います。

 Atan2は、パラメータが2つあります。

 Atan2( x, y )は、Atan( x / y ) に相当します。

 yの値が0の場合でも正しく値を返します。
#a = dllfunc( "Atan2", #x, #y );
 のように使います。

●Pi

 Piは、いわゆるパイの値を返します。パイの値は3.14159…となります。
#pi = dllfunc( "Pi" );
 のように呼び出して使います。

●Abs

 Absは、絶対値を返します。
#n = dllfunc( "Abs", #n );
 のように使います。

●Ceil, Floor

 Ceilは、小数点以下を切り上げた整数を返します。
#n = dllfunc( "Ceil", #n );
 のように使います。

 Floorは、逆に小数点以下を切り捨てた整数を返します。

 ちなみに四捨五入を計算するには
#n = dllfunc( "Floor", #n + 0.5 );
 とすればいいです。

●Exp, Log, Log10

 Expは、いわゆる指数(エクスポーネンシャル)を計算します。

 Logは、いわゆる自然対数(ナチュラルロガリズム)を計算します。

 Log10は、10を基数とする対数を計算します。(だったっけかな?)
#n = dllfunc( "Log", 10 );

●Sqrt

 Sqrtは、いわゆる平方根(square root)を計算します。
#n = dllfunc( "Sqrt", 2 );

●Pow

 Powは、べき乗(xのy乗)を計算します。
#n = dllfunc( "Pow", #x, #y )
 上記の例は、#xの#y乗を計算して#nに代入しています。

●Random、Randomize

 Randomは、疑似乱数を生成し、生成した値を返します。

 Randomizeは、パソコンの内部時計を使って疑似乱数生成のための初期値を狂わせます。これ自体も関数ですが、返す値は常に0です。

 乱数を得たい場合には、まず、Randomize関数を最低1回呼んで、その後Random関数を使って乱数を得るようにしてください。

 例:
#dummy = dllfunc( "Randomize" );
#rand = dllfunc( "Random" );
 Random関数の返す値の範囲は0から32767です。

●Bessel_xxxx関数

 Bessel系関数(って何か知らないけど)です。
Bessel_j0(x)
Bessel_j1(x)
Bessel_jn(n,x)
Bessel_y0(x)
Bessel_y1(x)
Bessel_yn(n,x)
 があります。

 例:
message "j0(2.387) = " + str( dllfunc( "Bessel_j0", 2.387 ) );

●Format

 Formatは、いわゆるC言語のsprintfを使って浮動小数点数を文字列に変換します。
$s = dllfuncstr( "Format", "%lf", #n );
 のように使います。dllfuncstr関数での2番目のパラメータがフォーマット文字列となります。

 Formatは、1つの数値の変換しか出来ません。例えば
$s = dllfuncstr( "Format", "%lf lf", #n1, #n2 );
 のような使い方は出来ませんのでご注意ください。

 フォーマット文字列の指定方法の例を以下に挙げます。
"%le" ... 1.234e+2 のような形式(仮数部+指数部の形式)
"%lf" ... 123.456 のような形式
"%.5lf ... 小数点以下5桁まで表示