UP | HOME

calc

Table of Contents

Last modified: 20240815T1633+0900


emacsには、標準で、高性能な関数電卓が装備されています。うっかり、emacsで作業しながら電卓を出してきたりしないように、使い方の基本を学習しておきましょう。

The GNU Emacs Calculator

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もありますので、興味がある人はページ冒頭のリンク先をのぞいてみてください。

Date: 2024-08-14 Wed 20:54

Author: Yoshinori Ueeda

Created: 2024-08-15 Thu 16:33

Validate