Twitterに書いたのですが、ブログに残した方がいいかなと思ってこちらにも書いておきます。
写真はJohn Wolff's Web Museumより。ドイツのBrunsviga社の連結機械式計算機です。この機械が面白いので、どう使うかを書いておきます。今風に言えば、この装置は機械式のSIMD MAC演算器です。
基本操作
その前に連結計算機のもととなった機械の紹介を。Model D13R-2はModel 13Rという同社の計算機を左右に連結したものです。
モデル13Rは標準的な改良型のオドナー式計算機です。
この手の機械は日本語では手回し計算機と言われますが、英語だとArithmometerです。Arithmometerは
SUM = SUM + A * B
を計算するものです。
コンピュータの科学技術計算の世界ではMAC演算*1と呼びます。また、使うオフィス用計算機でもこの手の積算機能は棚卸などでよくつかわれます*2。
Model 13の機能を見てみましょう。フロントパネルの真ん中にでんと居座っているレバー群は被乗数(上の式のA)を入力するものです。写真が小さいですがレバーは0から9の数字を各桁ごとに独立して設定できます。設定した数字はレバー群のすぐ上のメーターにそのまま表示されます。
レバー群の下に見えるメーターは積算器(上の式のSUM)です。
一番上に見えるメーターは乗数(上の式のB)で、右側の長いレバーを1回転させるごとに1増えていきます*3。
「じゃぁ、123倍するには123回回すのか!」
と腰が引けてしまいそうですが、ご安心を。一番手前の赤いノブはシフトレバーになっており、右に1回こつんとやると、積算値と乗数が1桁あがります。つまり123倍したければ
- 右のレバーを3回転する
- 手前のノブを右に1回たたく
- 右のレバーを2回転する
- 手前のノブを右に1回たたく
- 手前のレバーを1回転する
となります。レバーを回すたびに積算が行われ、上の作業を行うと SUM = SUM + A * B が完了します。
ここで説明した機能のほか、SUM, A, Bをクリアするためのレバーがそれぞれ存在します。
連結計算機を使った極座標・直交座標変換
さて、Model D13Rです。写真から見て分かるように、Model 13Rを連結したものです。レバーやノブの機能はすでにお分かりだと思います。
この機械の用途ですが、科学技術演算です。例えば極座標から直交座標への変換を考えてみましょう。極座標(r, θ)を直交座標(x,y)に変換するには、以下の演算を行います。
- x = r cos θ
- y = r sin θ
ここで、cos、sinの演算は手回し計算機ではどうしようもないため*4、数表を使って求めます。そうして次のように操作します。
- すべての数値をクリア
- 左の被乗数にcos θを設定
- 右の被乗数にsin θを設定
- 右のハンドルと手前のノブを使ってrを入力
こうすると、左右の積算器にx, yが求まります。一台の計算機を使う場合に比べてハンドルを回す回数が半分になっています。
連結計算機を使った直交座標上の回転
上で紹介したJohn Wolf's Web Musiumによれば、Model D13Rは左右のレバーの回転方向を反転できます。つまり、片方を加算、他方を減算にできます。これを使用すると直交座標上の回転を簡単に行えます。
直交座標(x, y)を原点からθだけ回転するには、次の演算を行います。
- u = x cos θ - y sin θ
- v = x sin θ + y cos θ
Model D13Rで以上の式を計算するには以下のようにします。
- すべての数値をクリア
- 左の被乗数にcos θを設定
- 右の被乗数にsin θを設定
- 左右の連結を正転に設定
- 右のハンドルと手前のノブを使ってxを入力
- 左の被乗数にsin θを設定
- 右の被乗数にcos θを設定
- 左右の連結を反転に設定
- 右のハンドルと手前のノブを使ってyを入力
これで左右の積算器がu,vになります。
手回しの時代
Ebayを見ると、Model D13は特殊な構成である割には出品されています。おぼろげな記憶ですが、アイザック・アシモフが「若いころに手回し計算機で行列演算のアルバイトをしていた」と書いていたように覚えています。
電子計算機が普及する前、第二次大戦前後から60年代までは電子工学、航空宇宙、造船、などが大幅に進歩しており、計算が追い付かない時代でもありました。Model D13のような連結によって効率を上げるという力づくの機械にも、研究室や設計室に大きな需要があったのでしょう。