2013年12月17日火曜日

zsh: degrees / radians が zsh/mathfunc に無いので作った、けれども

zshのコマンドライン電卓(zsh/mathfunc)は三角関数も扱えて便利なのですが、degrees/radians(弧度とラジアンの相互変換関数)がありません。のでとりあえず的に作りました。

  << cat calc.zsh                                                                                                   zmodload -i zsh/mathfunc
calc(){ if [ $# != 0 ]; then echo "$(( $* ))"; fi; }

export PI="3.14159265358979323846264338327950288"

degrees(){ if [ $# != 0 ]; then calc "1. * $* * 180 / $PI"; fi; }
radians(){ if [ $# != 0 ]; then calc "1. * $* * $PI / 180"; fi; }
ちなみに、 calc は zsh/mathfunc を簡単なコマンドライン電卓として使う度に echo $(( ... )) って書くのはだるだるなので定義してあります。

[使い方]

echo $PI
3.14159265358979323846264338327950288

calc 'atan(30./45)'
0.5880026035475675

degrees 0.5880026035475675
33.690067525979785

[(´・ω・`)]

この実装だと calc 'atan(30./45)' | degrees とかできないし、 弧度法からcalcに渡すにしても calc "atan(`radians $PI/0.1`)" とか微妙に面倒。やっぱりちゃんと電卓アプリ入れるなり calc を `R -q -e "1+2+3+4"` とか `nodejs "console.log( $* )"` とかにしようかな・w・

0 件のコメント:

コメントを投稿