Hewlett Packard 15c Scientific Calculator

Hewlett Packard社が販売していたHP15cと呼ばれる函数電卓. RPNと呼ばれる計算方式とスタックの組み合わせにより,強力かつ柔軟な計算が行える本機. そんな根強い人気を持つ電卓の魅力を,RPNやスタックの説明を交えながら,ほんのちょっとだけ紹介したい.

Background

1982
Hewlett Packard社からある函数電卓が発売された. 15cと呼ばれるそれは行列計算や複素数計算,ルートソルバーといった数々の強力な機能を搭載していた. また,計算はマクロの如くプログラム可能であった. RPNと呼ばれる入力方式を採用し,使った者を次々とその虜にして行った. RPN(Reverse Polish Notation:逆ポーランド記法)とは,スタックを用いることで複雑な計算であっても括弧を必要としない入力方式であり,一般の代数記法と比べてキィ入力の手数を減らすことが出来る. 素早い入力,計算. 使いやすさを追求した一品であった.
1989
15cは生産を終了したが,後にこの電卓に愛着を抱いた者は再販を訴えた. 再販を訴えること7年. 署名には15,000人を超える人々が名を連ねた.
2011
再販の声に応え,Hewlett Packard社は15cをLimited Editionとして再販. 処理速度はオリジナルに比べ最高150倍高速化し,かつ更なる省電力化も施されたとのこと. 復刻版では,キィ表面の文字は成型から印刷へ変更され,使用する電池の型も変わるなど多少の差異は見られるが,そのデザインと操作性はオリジナルモデルを再現している.

Reverse Polish Notation (RPN)

スタックとは次のような入れ物(記憶装置)である.

Push:データ格納,   Pop: データ取出.
Stack : 積み重ね
銃のマガジン(弾倉)を思い浮かべよう. 弾をマガジンにPushする(押し込む)と弾がマガジンに入る. 弾をPopする(はじき出す)と弾がマガジンから出る. スタックもこれとまったく同じ仕組みを有する. スタックにデータをPushしたり,Popしたり出来る. スタックへデータをたくさんPushした後,そのスタック内のデータをすべてPopすると,最初にPushしたデータは一番最後に出てくる. これを日本語では"後入先出法",英語でFirst-In Last-Out(FILO:フィロ)と呼ぶ. つまり"スタックはFILO"なのだ. 15cの場合,スタックに入れられるデータの数は4つまでとなっている. 4つ以上データをPushすると一番最初にPushしたデータが外へ押しやられ,消滅する.

最初にPushしたデータ"1"が押し出され消えてゆく様子
ちなみに,15cのスタックにはデータを格納する区画それぞれに名前が有り,
  • 先頭のデータ格納場所を'X'
  • 2つ目のデータ格納場所を'Y'
  • 3つ目のデータ格納場所を'Z'
  • 4つ目のデータ格納場所を'T'
と呼ぶ. まるでMinkowski空間だ. 数値キィを入力するとその数値はすぐさまスタックXに格納されるというわけ.
ではここで,スタックを用いた足し算を試みる. 考える足し算は次式とする.
3 + 5 => ?
この表記は代数記法である. RPNでは次のようになる.
3 5 + => ?
ふざけて+と5を逆順に記した訳ではない. スタックを用いたのだ. この時のスタック中の数字の動きを見てみよう. 納得するはず.

キィ入力(下部)とスタックの変化の図. 矢印は読み書き位置を示す.
まず3のキィを押す. この時点で数値3はもうスタックにPushされている. よってスタックの最上段(X)は3である. 続いてEnterキィを押す. これにより数値3がスタックのひとつ奥(Y)へと押し込まれ,同時に3のコピーが先頭(X)にPushされる. これにより,3をスタックに格納し新たな数値をスタックにPush出来るようになった. 5のキィを押す. 5がスタックの最上段(X),3がそのひとつ下段(Y)にいる状態となった. ここで+(プラス)キィを押すと,スタック最上段(X)とそのひとつ下段(Y)の数値は2つともスタックからPopされ足し合わされる. 足し合わさった結果8はスタックの最上段(X)へPushされる. 求めていた答え8を得た.

もし,この状態で2のキィを押し,次いで+キィを押せばスタックの最上段(X)には数値10がPushされる. 更にここで7を入力し,×(クロス)キィを押せば数値70がスタックの最上段(X)にPushされる. この計算を代数記法で表記すると,こうなる.
7 × (3 + 5 + 2) => 70
RPNなら先ほどのキィ操作なので,
3 5 + 2 + 7 × => ?
となる. 括弧を入力する必要がないのだ. ここで思い出してほしい. 15cのスタックなら数値を4つまで入れることが出来る. 上式(代数記法)の括弧で括られた部分を見て欲しい. 3,5,2. そう,3つの数値が括弧で括られているのだ.3つの数値がひとまとまり. スタックは4つ. こんな時15cなら,まず先に3つの数値全部をスタックに入れてしまえる.

まず3を入力(スタックXにPush). 次にEnterを入力して数値をもうひとつスタックにPush出来るようにする. 5を入力する. スタックの中身は上から5,3の状態. ここでもう一度Enterを入力する. ここがミソ. 代数記法のように,数値と数値の間に必ず演算子が入らなくても良いのだ. 2を入力. スタックの中身は上から2,5,3の状態. +を入力すると,スタックの中身は7,3となる. +演算子によってスタックXとスタックYの中身が足し合わされ,その結果がスタックXにPushされたためだ. もう一度+を押すとスタックの中は10となる. あとは7を入力してから×を入力. すると求めていた解70がスタックの最上段に現れた!
3 5 2 + + 7 × => 70

四則演算子は,XとYの値を演算し,その結果をXにPushするものである.
括弧を入力する必要がないため(スタックの特徴を生かしたため),代数記法で入力するよりも手数を少なくすることが出来る. これがRPNのメリットである.

HP-15c Scientific Calculator

スタックを用いた計算方法. RPN.
その楽しさを味わえる電卓. 15c.
15cでは他にも,スタックやレジスタ(スタックとは別の記憶装置)を用いて,行列計算,定積分,複素演算,統計解析,プログラム,進数変換,擬似乱数生成,座標変換,ルートソルバなどの機能を実行することが出来る.
8706927452606668762 http://www.storange.jp/2013/05/hewlett-packard-15c-scientific.html http://www.storange.jp/2013/05/hewlett-packard-15c-scientific.html Hewlett Packard 15c Scientific Calculator 2013-05-26T21:54:00+09:00 http://www.storange.jp/2013/05/hewlett-packard-15c-scientific.html Hideyuki Tabata 200 200 72 72