calc
Table of Contents
Last modified: 20240815T1633+0900
emacsには、標準で、高性能な関数電卓が装備されています。うっかり、emacsで作業しながら電卓を出してきたりしないように、使い方の基本を学習しておきましょう。
1. 基本
起動は、 M-x calc
で、Calculatorというウインドウが開きます。
.
通常の電卓と違うのは、逆ポーランド記法の順番で入力することです。emacsが書かれているLISPは、ポーランド記法で演算を行います。たとえば、 3 + 4
を計算するには、 + 3 4
という式を評価します。たとえば、scratchバッファで、
(+ 3 4)
と書いて、その直後で C-j
をタイプして評価をすると、
(+ 3 5) 8
と計算結果が出力されます。
calcでは、この逆、 3 4 +
という順番で入力します。つまり、被演算子、演算子という順番です。
たとえば2と3が被演算子であるとき、 2
return
3
return
と入力すると、
2: 2 1: 3 .
という画面になり、次に演算子の +
を入力すれば、
1: 5
と答えが出ます。
2. 逆ポーランド記法 (reverse Polish notation)
通常の計算では、演算の順番が決まっているので、 (2 + 3) * ( 5 + 7)
を計算したいとき、 2 + 3 * 5 + 7
の順番で入力してはいけません。括弧の中を別々に計算して、最後に掛け合わせます。
しかし、ポーランド記法では、こういった括弧が必要ありません。 *+2 3 + 5 7
でOKです (elispの場合は、(* (+ 2 3) (+ 5 7))と書かないといけませんが括弧は演算の順序に影響しません)。逆ポーランド記法は、演算子を後に置きますので、 2 3 + 5 7 + *
という表記になります。そしてcalcでは、この順番でそのまま入力すればいいです。やってみましょう。
2
return
3
return
2: 2 1: 3
+
1: 5
5
return
7
return
3: 5 2: 5 1: 7
+
2: 5 1: 12
*
1: 60
と正しく計算できます。
3. 素数チェック
単純な計算以外でよく使う機能としては、 k
p
で素数チェックができます。
先日、病院で、受付番号が1129番でした。私はよく、こういった番号を素因数分解して覚えます。これはおそらく素数だろうと思ったのですが、はっきりしなかったので、Webで調べて素数であることを確認しました。emacsが使える状況だったら、calcで確認できます。
1: 1129 .
この画面で k
p
を入力すると、 Prime (guaranteed)
と表示され、1129が素数であることがわかります。(guaranteed)というのは確実に素数だという意味で、大きな数になると、確率など別の仕方で判別されます。
4. 素因数分解
関連して、素因数分解もしてくれます。
1: 2453317
k
f
と打つと、以下の画面になります。
1: [41, 53, 1129]
2453317 = 41 * 53 * 1129 だということがわかりました。
以上はcalcの機能のほんのさわりです。充実したtutorialもありますので、興味がある人はページ冒頭のリンク先をのぞいてみてください。