任意精度計算機calcの使い方を説明します.作者が,どうやら説明する気がないみたいですので.
いや,こんなスーパーウルトラ超高性能スクリプト計算機,他には無いだろう?!
calc を起動して利用
これ使えば?べんりだし. あ?簡単に言うと 2+3[RETURN]で 5が表示されます.a=1とかしてa+2とかもできます.他にもまあ, 関数使ったりとかで矢印キーでポコポコ計算します.電卓ソフト?関数電卓?いや,あり得ねえだろう.式打ったら計算できて矢印キーで訂正できたほうが楽に決まっている
% calc C-style arbitrary precision calculator (version 2.14.1.2) Calc is open software. For license details type: help copyright [Type "exit" to exit, or "help" for help.] ; 2+3 5 ; exit
A=2+3 とか代入すると変数が使える. sinとかcosとか数学関数も使える. ユーザー関数を定義したりできる. 2進数とかも得意. ちなみに任意精度計算なので, 計算精度は任意に高い. 助かりたければhelpと入力すれば良い.
calc をスクリプトで利用
スクリプトの最初はこんな感じ:
#!/usr/local/bin/calc -df # 倍精度の15桁では足りないので, 100桁で計算 config("display",100); config("epsilon",1e-100); # 試しに, pi を計算してみる pi=4*atan2(1,1); # 3.14159265358979323846264338327950288419716939937510 # 582097494459230781640628620899862803482534211706 あってるわー # では exp[i pi]=-1 を確認してみよう. 複素数も使えるしな z=pi*1i; exp(z);
関数を定義
Joukowski変換と, その逆関数を定義してみよう.
define jf(z) { if (abs(z)<=1) abort "Joukowski: Domain error"; # 単位円の外側だけで行きます return z+1/z; } define jf_i(zeta) { local az=abs(zeta)^2-4; local s=(az+sqrt(az^2+16*im(zeta)^2))/2; local r=(sqrt(s)+sqrt(s+4))/2; local th=atan2(im(zeta)/sqrt(s),re(zeta)/sqrt(s+4)); return r*exp(1i*th); } #テスト z=0.5+1i*1; zeta=jf(z); ret=jf_i(zeta); printf("z= %f returned to %f\n",z,ret);
ま,こんな感じですね. 実行してみると
z= 0.5+1i returned to 0.500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000+1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000i
なるほど精密ですね.
線形代数を計算
行列も使えるだべよ.
ビルド
ビルドするには, まずreadlineをインストールします.でここから,
cd x86_64 tar zxf ../calc-2.14.1.2.tar.bz2 cd calc-2.14.1.2 make fswatch -x /usr/local/ > files.log & sudo make install kill %1 fswatch_analyze.sh -c _binary files.log