Tcllib1.8(?)から付く任意桁数の実数計算です。今のとこSourceForgeからDLできるTcllib1.7には含まれていません。CVSかActiveTcl8.4.9.1からゲットできます。
Tcllib1.8(?)から付く多倍長実数演算です。今のとこSourceForgeからDLできるTcllib1.7には含まれていません。CVSかActiveTcl8.4.9.1からゲットできます。
**使ってみる [#p4cb1110]
package require math::bigfloat
#適当に計算
set a [fromstr 0.0000000000000000000000000000000000010]
set b [fromstr 0.0000000000000000000000000000000000010]
puts [tostr [add $a $b]]
2.e-36
#円周率
puts [tostr [pi 50]]
3.1415926535897932384626433832795028841971693993751
このパッケージは内部でbignumも読んでるので、整数の演算(BigInt)も普通にできます。
#BigIntの計算
set a [fromstr 1234000000000000000]
set b [fromstr 1234567890000000000]
puts [tostr [mul $a $b]]
あと、なんか知らんけどfromstrで実数を変換する時は最後に0をつけないといけないみたいです。たとえばfromstr 0.1はダメでfromstr 0.10にする。
***bigfloatの型変換 [#k4d12c0b]
-文字列から
fromstr string ?base?
-文字列に
tostr bigfloat
-数値に
todouble bigfloat
-型を調べる
isInt bighoge
isFloat bighoge
***色々な演算 [#e8fe763f]
-基本的な四則演算とか
add x y
sub x y
mul x y
div x y
mod x y
abs x
opp x ;#符号の反転
pow x n ;#nはBigIntで無ければならない。(Bigfloatは不可)
-比較
iszero x
equal x y
compare x y ;#x==yの時0、x>yの時1、x<yの時-1。BigIntとBigFloatは比較不可
-数学関数もつかえる
sqrt x
log x
exp x
cos x
sin x
tan x
cotan x
acos x
asin x
atan x
cosh x
sinh x
tanh x
pi n ;#n桁の円周率
rad2deg radians ;#ラジアン->度数
deg2rad degrees ;#度数->ラジアン
-丸め
round x
ceil x
floor x
あと、この辺の関数は全部グローバルな空間に定義してるので、コンフリクトしないように注意しないといけないです。マニュアルに一応の解決方法が書いてありますけど、できればbignumと名前空間を一緒にするとか統一してほしかった・・・。
----
[[CategoryTclTk]]
HTML convert time: 0.002 sec.