StringToCalc.dll

目次

  1. DLLの概要
  2. インストール、アップデート、アンインストール
  3. 対応する関数
  4. 対応する物理定数
  5. 更新履歴
  6. ライセンスと免責に関して
ご質問・要望・バグの報告などはK(turikiti@pet.707.to)までお願いします。また、バージョンアップは、 K's Page (http://fishers.dtdns.net/software/) で通知しております。
(スパムメール防止のため、メールアドレスは@以前を全角英数で記述してます)


























DLLの概要

送られてくる文字列を数式として解き、値を元のプログラムに返すDLL(Dynamic Link Library)です。 Kが作ったアプリケーションがインストールされている各ディレクトリに置いてください。 数式には、四則演算(+、-、*、/)、べき乗(^)の他に、対応している関数を使用できます。 また、円周率πを定数として持っており、数式でpiと記述できます。Version 0.0.0.6以上は物理定数をR(気体定数) のように数式中に入力できます。

演算子の優先度は、次の順番になっています。通常の演算則に則っていると思いますが、間違い等ありましたら 指摘してください。

優先度: 高 括弧:()、[]、{}> 各関数 > ^ > *、/ > +、-

インストール、アップデート、アンインストール

インストール

ダウンロードしたstringtocalcZZ_XX.zip(ZZはbit数、XXはバージョン番号)を解凍し、 StringToCalc.dllを使うアプリケーションのあるフォルダにファイルを全てコピーしてください。 これでStringToCalc.dllが使えるようになり、関数や数式が入力できるようになります。

アップデート

新しいstringtocalcZZ_XX.zipを解凍し、 StringToCalc.dllを使うアプリケーションのあるフォルダにファイルを全て上書きコピーしてください。

アンインストール

レジストリはいじりませんので、以下のファイルを削除すればOKです。

また、以下のファイルがありましたら、削除してください。


対応している関数

一般的な関数

関数 定義や意味 関数の性質や制限
ln(x) 自然対数 x > 0
log(x) 10を底とする対数 x > 0
exp(x) 指数関数(自然対数の底eのべき乗) exp(x) > 0
abs(x) xの絶対値を返す abs(x) ≧ 0
sqr(x) xの2乗 sqr(x) ≧ 0
int(x) xの整数部を返す  
sign(x) xの符号を返す。 sign(x) = { -1, -1, 0}
sqrt(x) xの平方根 x ≧ 0、sqrt(x) ≧ 0
frac(x) xの小数点以下の数値を返す関数  
rad(x) xをdegreeからラジアンへ変換する関数  
fact(x) xの階乗 xは整数。オーバーフローに注意
fisher(x) フィッシャー変換
fisher(x) = (1/2)*ln((1+x)/(1-x)
-1 < x < 1 
(確率で使用される関数であるため、x ≦ -1を受け付けないようになってます )
fisherinv(x) フィッシャー変換の逆関数
fisherinv(x) = (exp(2x)-1)/(exp(2x)+1)
 

三角関数

xが角度の場合、単位はラジアンです。

関数 定義や意味 関数の性質や制限
sin(x) 正弦
(サイン)
-1 ≦ sin(x) ≦ 1
cos(x) 余弦
(コサイン)
-1 ≦ cos(x) ≦ 1
tan(x) 正接
(タンジェント)
tan(x)= sin(x)/cos(x)
x ≠ π*(2n+1)/2、n:整数
sec(x) 正割
(セカント)
sec = 1/cos(x)
x ≠ π*(2n+1)/2、n:整数、|sec(x)|≧ 1
cot(x) 余接
(コタンジェント)
cot = 1/ tan(x)
x ≠ πn、n:整数
csc(x) 余割
(コセカント)
csc = 1/sin(x)
x ≠ πn、n:整数、|csc(x)|≧ 1
sinh(x) 双曲正弦
(ハイパボリックサイン)
sinh(x) = (ex-e-x)/2
 
cosh(x) 双曲余弦
(ハイパボリックコサイン)
cosh(x) = (ex+e-x)/2
cosh(x) ≧ 1
tanh(x) 双曲正接
(ハイパボリックタンジェント)
tanh(x) = sinh/cosh = (ex-e-x)/(ex+e-x)
-1 < tanh(x) < 1
sech(x) 双曲正割
(ハイパボリックセカント) = 1/cosh = 2/(ex+e-x)
0 < sech(x) ≦ 1
coth(x) 双曲余接
(ハイパボリックコタンジェント)
coth(x) = 1/tanh = (ex+e-x)/(ex-e-x)
x ≠ 0、|coth(x)|> 1
csch(x) 双曲余割
(ハイパボリックコセカント)
csch(x) = 1/sinh = 2/(ex-e-x)
x ≠ 0、csch(x) ≠ 0
asin(x) 逆正弦
(アークサイン)
asin(x) = sin-1(x)
-1≦x≦1、-π/2<asin(x)<π/2
acos(x) 逆余弦
(アークコサイン)
acos(x) = cos-1(x)
-1≦x≦1、0<acos(x)<π
atan(x) 逆正接
(アークタンジェント)
atan(x) = tan-1(x)
-π/2<atan(x)<π/2
asec(x) 逆正割
(アークセカント)
asec(x) = sec-1(x)
|x| ≧ 1、0 ≦ asec(x) ≦ π
acot(x) 逆余接
(アークコタンジェント)
acot(x) = cot-1(x)
正側からx → 0の場合、acot(x) → π/2。またacot(0)=π/2。 負からx → 0なら、acot(x) → -π/2。 -π/2 < 0≦ acot(x) ≦ π/2、且つacot(x) ≠ 0
acsc(x) 逆余割
(アークコセカント)
acsc(x) = csc-1(x)
|x|≧ 1、0 <|acsc(x)|≦ π/2
asinh(x) 逆双曲正弦
(ハイパボリックアークサイン)
asinh(x) = sinh-1(x)
 
acosh(x) 逆双曲余弦
(ハイパボリックアークコサイン)
acosh(x) = cosh-1(x)
x ≧ 1、acosh(x) ≧ 0
atanh(x) 逆双曲正接
(ハイパボリックアークタンジェント)
atanh(x) = tanh-1(x)
x < 1
asech(x) 逆双曲正割
(ハイパボリックアークセカント)
asech(x) = sech-1(x)
0 < x ≦ 1
acoth(x) 逆双曲余接
(ハイパボリックアークコタンジェント)
acoth(x) = coth-1(x)
|x|> 1、acoth(x) ≠ 0
acsch(x) 逆双曲余割
(ハイパボリックアークコセカント)
acsch(x) = csch-1(x)
x ≠ 0、acsch(x) ≠ 0

多変数関数

2つ以上の引数を取る関数です

関数 定義や意味 関数の性質や制限
div(x,y) x / y の商を返す関数 x、yは整数
mod(x,y) x / y の剰余(余り)を返す関数 x、yは整数
max(x1,x2,..,xn) x1〜xnの最大値を返す関数  
min(x1,x2,..,xn) x1〜xnの最小値を返す関数  
sum(x1,x2,..,xn) x1〜xnの和を返す関数  
combin(x1,x2) 2項係数を返す関数 combin(総数,抜き取り数) x1、x2は0以上の整数。x1 ≧ x2
average(x1,x2,..,xn) x1〜xnの平均を返す関数  
weibull(x1,x2,x3,x4) 値x1のワイブル分布を返す関数。
x2:形状母数、x3:尺度母数、x4:モード。
x4が0ならば2変数ワイブル累積分布関数を、0以外はワイブル確率密度関数を返す。
累積分布関数 = 1 - exp(-(x1/x2)^x3)
確率密度関数 = (x2/(x3^x2))*x1^(x2-1)*exp(-(x1/x2)^x3)
x1 ≧ 0、x2,x3 > 0
weibull3(x1,x2,x3,x4,x5) 値x1の3変数ワイブル分布を返す関数。
x2:形状母数、x3:尺度母数、x4:位置母数、x5:モード。
x5が0ならばワイブル累積分布関数を、0以外はワイブル確率密度関数を返す。
累積分布関数 = 1 - exp(-((x1-x4)/x2)^x3)
確率密度関数 = (x2/(x3^x2))*(x1-x4)^(x2-1)* exp(-((x1-x4)/x2)^x3)
x1 ≧ 0、x2,x3 > 0

ビット演算子

関数 定義や意味 関数の性質や制限
and(x,y) 32bitの整数としてbitごとにandを取る x、yは整数
or(x,y) 32bitの整数としてbitごとにorを取る x、yは整数
not(x) 32bitの整数として符号を除いたbitを反転させる xは整数
xor(x,y) xとyの排他演算 x、yは整数
shl(x,y) xのビットを左へyだけシフトする。x*2^yと同じ x、yは整数
shl(x,y) xのビットを右へyだけシフトする。x div 2^yと同じ x、yは整数
andn(x,y) 下を参照 x、yは整数
orn(x,y) 下を参照 x、yは整数
notn(x) 下を参照 xは整数
xorn(x,y) 下を参照 x、yは整数

andn、orn、notn、xornについて

これらの関数はそれぞれand、or、not、xorに対応する、n ビットでの演算です。 nは関数の引数として入力された値の絶対値のビット数に符号ビットを1つ加えた値です。 (nは関数内で自動で計算されます)

例えば、-9は次の2進数で表されます。

1 1001

最も左のビットは符号ビットで、負の場合に1となります。それより右の4ビットは 9を2進数で表したものです。プログラム等で使用するビット演算子と 同じものはand、or、not、xorであり、andn、or、notn、xornではありません。

ちなみに、32ビット整数での-9は次のように表されます。関数電卓などで確認できます。

11111111111111111111111111110111

特殊関数(ver. 1.1以上)

解析的にしか値を求められない関数です。

本来は虚数にも対応している関数もありますが、 本DLLではxを実数に制限してます。そのため、引数の入力範囲が本来より狭まっているものもあります。

内部で収束計算をするため、収束判定値を入力できるものもあります。 収束判定値を省略した場合、1E-15が収束判定に使用されます。

関数 定義や意味 関数の性質や制限
erf(x) 誤差関数
erfc(x) 相補誤差関数
gamma(x,収束判定値) ガンマ関数 x= 0, -1, -2, ..で発散
lgamma(x,収束判定値) ガンマ関数の対数
sgamma(a,x,収束判定値) 第1種不完全ガンマ関数 x≧0
sgammaはa= 0, -1, -2, ..で発散
bgamma(a,x,収束判定値) 第2種不完全ガンマ関数
beta(a,b) ベータ関数 a>0、b>0
xbeta(a,b,x,収束判定値) 不完全ベータ関数 0≦x≦1、a>0、b>0
ibeta(a,b,x,収束判定値) 正規化された不完全ベータ関数(正則ベータ関数)
chisq(x,a,収束判定値) カイ2乗累積分布関数
x≧0、a>0、カイ2乗分布の下側累積確率を返す
第1種不完全ガンマ関数比とも言う
expi(x,収束判定値) 指数積分
 
expn(x,収束判定値) (一般化)指数積分
n=0,1,2,..
bsi(x,収束判定値) 正弦積分
ssi(x,収束判定値) 正弦積分
ci(x,収束判定値) 余弦積分
x>0

:オイラー数
cin(x,収束判定値) 余弦積分
li(x,収束判定値) 対数積分
x≧0
zeta(x,収束判定値) リーマンゼータ関数
x=1で発散
deta(x,収束判定値) ディリクレのイータ関数

x=1でln(2)に収束
dgamma(x,収束判定値) ディガンマ関数
x= 0, -1, -2, ..で発散
pgamma(n,x,収束判定値) ポリガンマ関数
x= 0, -1, -2, ..で発散
n=0,1,2,..
polylog(s,x,収束判定値) 多重対数関数
|x|≦ 1

対応する物理定数

以下の物理定数を数式中に記号で入力できます。単位に注意してください。
下では便宜上大文字と小文字を混ぜて書いていますが、StringToCalc.dll内では大文字小文字を区別しません。 (全て小文字で書いても定数を認識します)

これらの値は、Wikiペディア物理定数をそのまま使っています。 (Wikiペディアに感謝致します)

また、定数の前後には必ず括弧や演算子を入れてください。つい、2Rと書きたくなりますが、2*Rと書いてください。

記号 物理定数 単位
R 気体定数 J/(mol*K)
k ボルツマン定数 J/K
A アボガドロ定数 1/mol
h プランク定数 J*s
mp プランク量 kg
lp プランク長 m
tp プランク時間 s
F ファラデー定数 C/mol
G0 万有引力定数 m^3/(kg*s^2)
g 重力加速度 m/s^2
Rr リュードベリ定数 1/m
c 真空中の光速 m/s
u0 真空中の透磁率 N/A^2
e0 真空中の誘電率 F/m
z0 真空のインピーダンス Ω
atm 標準大気圧 Pa
Deg0 摂氏0℃ K
el0 電子素量 C
Mel 電子の静止質量 kg
Mpr 陽子の静止質量 kg
Mnu 中性子の静止質量 kg
Mu 原子質量単位 kg
af 微細構造定数  
a0 ボーア半径 m
Eh ハートリーエネルギー J
ub ボーア磁子 J/T
ue 電子の磁化モーメント J/T
ge 自由電子のランデのg因子  
un 核磁子 J/T
up 陽子磁気モーメント J/T
rp 陽子磁気回転比 1/(s*T)
s シュテファン-ボルツマン定数 W/(m^2*k^4)
c1 第一放射定数 W*m^2
c2 第二放射定数 m*K

更新履歴

下に行くほど古いです。


Version 1.3 32bit版64bit版
Version 1.2 32bit版64bit版
Version 1.1 32bit版64bit版
Version 1.0 32bit版64bit版
Version 0.1.0.2

Version 0.1.0.1

Version 0.1.0.0

Version 0.0.0.7

Version 0.0.0.6

Version 0.0.0.5

Version 0.0.0.4

Version 0.0.0.3

Version 0.0.0.2

Version 0.0.0.1

ライセンスと免責に関して

本DLLをKのソフトウェア以外で無断で使用することを禁じます。


また、本DLLの使用に関して、作者が可能な範囲で万全を期するように作成しておりますが、 万が一、本DLLに起因する損害があっても作者はいかなる責任を追いません。