Casio fx-10

提供:Memorandum

< RPN電卓一覧へ戻る

1974年5月にカシオ計算機が定価24,800円で販売した日本初の可搬型ポケット関数電卓である。

CASIO-MINI CM-605でも記載した通り、この時期にカシオ計算機は中置記法へ移行したため、本機も中置記法である。働き出してRPN電卓ユーザとなった現在の管理人には中置記法の電卓が使えなくなる能力が身に付いてしまい使い難いことこの上ないが、このWebサイトでも何度か触れているように、当時の日米間に厳然と存在した技術格差を比較するため、番外として記載する。

後発なのに低スペック

本機発売時に競合していたHP製RPN関数電卓は1973年3月1日発売のHP-45だが[1]、これの元となったHP-35もまだ併売されていた。よって、本機はこれら2機種より後発なのだが、本機のスペックはこれら2機種より低い。

まず、本機のマニュアル1ページから転載した規格を確認してみる。


型式
fx-10
基本計算機能
加減乗除計算、連乗連除計算、定数計算、小数点付計算および混合計算
特殊計算機能
三角関数()、対数関数()、指数関数()、その他(、分秒→度数、)
計算桁数
置数および加減乗除……8桁(および負数は7桁)
三角関数()……答6桁(最大誤差 最下位桁で±1) 被演算数
対数関数()……6桁(最大誤差 最下位桁で±1) 
指数関数()……8桁  の整数
指数関数()……6桁(最大誤差 最下位桁で±1) 
開平()……7桁 
逆数()……8桁 
分、秒→度数()……8桁 
計算方式
四則算は完全数式通り、関数はワンタッチ
小数点方式
完全浮動小数点方式(整数部優先アンダーフロー)
負数表示
フローティングマイナスの真数表示
オーバーフローチェック方式
全桁0表示後演算停止
表示
緑の蛍光表示管使用、8桁ゼロサプレス方式
主要素子
ワンチップLSI
電源
2電源方式
AC:100V±10V(専用ACアダプター使用による)
DC:単3型乾電池4本使用
DCの場合の連続使用時間(表示8888 温度約20℃にて)
高性能マンガン乾電池 約8時間
アルカル乾電池 約17時間
消費電力
0.45W
使用温度
0℃〜40℃
寸法・重さ
幅95×奥行150×厚さ33mm
330g(本体230g・電池100g)
付属品
専用ACアダプター(MODEL AD-4145)、単3型アルカリ乾電池4本、携帯用ケース

上記で判るように、円周率  を入力するための独立キーが設けられ、実装された関数が度数法での三角関数    、常用対数  、自然対数  とその逆関数  、冪乗  (は1桁の正の整数のみ)、開平  、逆数  、分秒→度数変換  の10個というのは、冪乗  の羃指数の制限と分秒→度数変換  機能を除くとHP-35とまったく同じである。つまり、当時のカシオ計算機は本機の開発にあたりHP-35を多いに参考にしたと推定される。

では、演算性能もHP-35とまったく同じかというと、そうではない。HP-35は内部での演算はすべて14桁で実行するため、内蔵している関数を演算しても最長10桁の演算結果をそのまま表示するが、本機で演算できる桁数は開平が7桁、三角関数/対数関数/自然対数の逆関数が6桁までなので、それら関数の内部での演算は8桁や7桁で実行しているのだろう。つまり、本機の演算できる桁数はHP-35の約半分となる。やはりHP-35を参考にワンチップLSIで開発したかったと推定されるNational Semiconductor 4510と同じ結果である。

本機が発売された時点では、HP-35のソフトウェア(ROM)だけ差し替えたHP-45が395ドル(1974年5月の対アメリカドル為替レート279円で計算すると約110,200円)、HP-45が発売されたことで100ドル値下げされたHP-35が295ドル(同じレートで約82,300円)で、ぞれぞれ販売されていた。このとき日本でポケット関数電卓の購入を考えていた層には、この2機種に本機が加わったことになるが、単純に価格だけ比較すれば本機はこれらの¼以下や⅓以下になるとはいえ、その代償は余りに大きいと感じたことだろう。本機が発売された1974年の平均月給は115,200円だったそうだが、もし管理人が当時生きていてリアルタイムでこの選択を迫られたら、間髪を入れずHP-45を選定して月給1ヶ月分を注ぎ込むだろう。無理数を連綿と演算するために存在する関数電卓という製品の性質からして、月給の約22%を突っ込まねばならない割に本機のスペックがショボ過ぎる(スペック差と価格差がバランスしていない)からだ。

「可搬型=ワンチップ」という呪縛?

日本初の可搬型関数電卓である本機が、なぜこのような残念な仕上りになってしまったのか…管理人は「可搬型とすることと、価格と消費電力を下げることから、演算部をワンチップで実装することに拘ったからではないか?」と愚考している。

即ち、どこへでも持ち運べるよう小型化するためにも、バッテリだけで駆動できるようにするためにも、最終的な販売価格に直結するチップ数を抑えるためにも、関数電卓をワンチップLSIで実装することに挑戦したところ、当時のLSI製造技術の集積度でワンチップ化できる回路規模と、そのチップの単価、そして関数電卓として実装したい機能を横睨みした結果、最終的にこのような仕上がりになってしまったのではないだろうか。

ありていに言えば、当時の日本の半導体ベンダ(本機ではNEC)がpMOSプロセスでLSIを製造したものの、1チップあたりの集積度をあまり上げることができず、また消費電力もそれほど抑えられなかったのだろう。しかも、先述の通り、本機のパンフレットには「ワンチップLSI」と記載されているものの、本機を実際に開腹してみると3チップで実装されていることが判る。事実は不明だが、巷では本機の演算はNEC製の2チップ(μPD179CμPD175C)が担っていると推定されている[2]。もしこの推定が正しいとすると、カシオ計算機とNECは本機のワンチップ化にも失敗したことになってしまい、残念さに拍車が掛かる。

消費電力はどうか。3チップで実装された本機は「単3高性能マンガン乾電池4本で8時間」と謳われ、消費電力は「0.45W」とある。翻って、HP-35は4チップ、HP-45は5チップで実装されているが、両機とも、実態は単3ニッカド充電池が3本直列されたバッテリパックをフル充電して「3〜5時間」と謳われ、消費電力は「3.75V, 500mW」とある。バッテリのみでの使用時間はバッテリ容量に依存するため一概には比較できないが、消費電力は、HPでは4チップも5チップも使用しているのに、3チップで実装された本機の消費電力と較べて50mWしか増えていない。これはLSIを製造した半導体ベンダによる1チップあたりの集積度と消費電力の差による影響が大きいと思われる。裏を返せば、カシオ計算機の「ワンチップ化による消費電力の削減」という目論見も失敗した[3]と言えるのかもしれない。ますます残念である。

もし当時のカシオ計算機が本機に実装するLSIの製造を、HPと同じくMostekやAMIに発注していれば、正真正銘の1チップに収められて消費電力が下げられたり、1チップに詰め込む機能を追加したり、演算性能をHP-35並みに引き上げたりしたかもしれない。尤も、チップの単価はNECより上がる可能性は否定できない。

それにしても、本機に実装する10関数を選別する過程で「分秒→度数変換」が生き残った理由は何だろうか。これまで記載した通り、HP-45HP-35のソフトウェア(ROM)だけを差し替えた改良版だが、ここでも「分秒⇔度数 相互変換」が追加されている。可搬型の関数電卓は屋外での使用が想定されるため建築や測量の現場を考慮したのだろうが、だとすれば、三角関数で弧度法を使用できるようにすることのほうが高優先だと思うのだが…?

どうしてこうなった

演算できる桁数が少なくても、機能や演算精度が良ければ、関数電卓としての存在意義はある。しかし、残念ながら、本機の機能や演算精度が良いとは言えない。

有名なのは内蔵10関数の演算結果に誤差が大きく乗る(場合がある)というのがある。例えば  の演算には2秒ほど掛かり、その結果として0.49999を出力する。当然、正解は0.5なので、高校1年生以下の演算能力である。本機は逆三角関数が演算できないため手探りしたところ、0.5となるのは  であった。度数法で変数を扱う際にだけ何かしら誤りがあるのだろう。その割には  の演算結果は正解である1を出力するのは謎である。

逆数  を2度実行して元の値に戻す演算でも誤差が乗る。例えば本機でに対して  を押下すると0.1666666を出力、この結果に再度  を押下すると6.000002という1桁削られた誤差を含む演算結果を出力するが、演算桁数を8桁に設定したHP-45では0.1666667のち6.0000000と正解を出力する。同じ演算をに対して実行しても、HP-45では0.0769231のち13.0000000と正解を出力するが、本機では0.076923のち13.00001と、やはり1桁削られた誤差を含む結果を出力する。

開平  の演算結果を2乗して元の値に戻す演算でも同様だ。例えば本機でに対して  を押下すると1.414213を出力、この結果に   を押下しても   を押下しても1.9999984と誤差を含む演算結果を出力するが、演算桁数を8桁に設定したHP-45では1.4142136のち2.0000000と正解を出力する。同じ演算をに対して実行しても、HP-45では2.2360680のち5.0000000と正解を出力するが、本機では2.236067のち4.9999956と誤差を含む結果を出力する。

この差は演算回路の実装から来ているとしか言い様がない。ワンチップLSIに収めるべく演算精度を妥協した結果だろうか。当然、カシオ計算機もデバッグ時にこういった事象の発生を確認しただろう。にもかかわらず、後発機種の本機でも、この誤差で良しとした理由は何だろうか。

国立科学博物館産業技術史資料情報センター主任調査員の瀬尾悠紀雄氏がまとめた「電子式卓上計算機技術発展の系統化調査」(国立科学博物館 技術の系統化調査報告 第6集 2006年3月)には、本機について下記の記述がある。

しかし関数電卓の出始めの頃は次のようなエピソードもあった。それは「sin30度は数表では0.5なのに0.499999…99となる、これでは困る」といった指摘がユーザから寄せられ、以後回路設計で解決したいきさつがある。

筆者の瀬尾氏はカシオ計算機出身だそうなので、この記述内容の確度は高いと判断しているが、この記述から推定するに、当時のカシオ計算機は「この程度の誤差であれば、ユーザは受容してくれる」と考えていたようにも思える。ただ、やはりというか当然というか、ユーザからクレームが挙がり、改修するに至ったようだ。

なお、この事象を「回路設計で解決した」と明記しているのは、この報告書が初見である。「回路設計で解決した」ということは、この事象の原因が「回路の設計」即ち「ハードウェア」にあり、それを改修して解決したという意味であろうことから、初期のカシオ計算機の関数電卓では、少なくとも三角関数の演算をワイヤードロジックのみ(恐らくCORDIC)で実行していたと推定している。よって、ここでいう「回路設計で解決」とは、次期LSIで「CORDICによる演算結果の丸めの方法を変更した」か「内部での演算桁数を増やして誤差を目立たぬようにした」か…これらはいずれも「回路の設計」即ち「ハードウェア」の話であるため「回路設計で解決」できるが、この報告書では解決方法にまで言及しておらず不明である。

実態は「数表を内蔵したカシオミニ

また、現代の関数電卓からすれば信じられないが、本機は内蔵関数を使用して演算すると、その前に実行した演算結果を忘れる。例えば  を演算すべく       とキーインしても5.49999ではなく  だけを演算した結果である0.49999を出力し、を加えない。この場合は  と項を入れ替えて演算する必要がある。

その理由は、本機の内蔵関数のうち三角関数    ・常用対数  ・自然対数  とその逆関数  を使用する[4]と、その前に実行した演算結果(上記の例で言えば5)を格納しているレジスタを、これら内蔵関数を内部で演算する際のワーキングレジスタとして使用するため上書きしてしまう仕様だからだ。しかも本機にはメモリが実装されてないので、これら内蔵関数を使用する前に、直前の演算結果をメモリに退避(記憶)させることもできない。八方塞がりである。

これら「ワンチップ化に拘ったことでワーキングレジスタやメモリを十分用意できなかったのではないか?」と悪態のひとつも吐きたくなる仕様が、本機に致命傷を負わせた。関数電卓ユーザがふつうに希望するであろう内蔵関数を使用しての連続演算ができないからだ。

例えば、本機にもHP-45にも内蔵関数として実装されてない双曲線関数である  を演算してみる。 は  を用いて  と定義されるので  を演算することになるが、本機で右辺を演算するには紙とペンが必要だ。先述したように、本機に実装された自然対数の逆関数  は前の演算結果を格納したレジスタをワーキングレジスタとして使用するため上書きしてしまうので、その前の演算結果が残されない。よって手順は

  1.   を演算し1.64872を得るので、この結果をメモする
  2.   を演算[5]0.60653を得るので、この結果をメモする
  3. 定義式にメモした結果を代入して四則演算する。即ち  を押下してオールクリア後に  を演算することで、最終結果の0.521095を得る

となる。関数電卓で演算しているはずが、途中で結果をメモしなければならず、それを手で再入力して四則演算していることに、なんとも不思議な気持ちになる。

同じ演算を、演算桁数を8桁に設定したHP-45で実行しても、そんな気持ちにはならない。手順も通常のRPN関数電卓と同じだ。

  1.    とキーインして  を演算、結果である1.64872127がスタックXにプッシュされることで表示される
  2. 続けて     とキーインして  を演算、結果である0.60653066がスタックXにプッシュされることで表示されると同時に、先ほどの演算結果(1.64872127)がスタックYにプッシュされる
  3.  を押下することでスタックYとスタックXがポップされ「スタックYからスタックXの差」を演算、1.04219061が得られると同時にこの結果がスタックXにプッシュされることで表示され、スタックYは空になる
  4.  を押下することでスタックXに2がプッシュされ、先ほどの演算結果(1.04219061)がスタックYにプッシュされる
  5.  を押下することでスタックYとスタックXがポップされ「スタックYをスタックXで除した商」を演算、最終結果である0.52109531がスタックXにプッシュされることで表示され、スタックYは空になる

当たり前だが、途中で結果のメモなど不要で、定義式を読み下す順にキーインすれば良い。RPNの面目躍如である。

念のため双曲線関数を単体で内蔵しているHP-15CHP-48SXで検算する[6]と、両機とも0.521095306を出力する。故に、本機とHP-45による  の演算結果は正しいのだが、このように操作体系を比較してみると「果たして本機を『関数電卓』と言って良いのか?」という疑念が湧く。

なぜなら、内蔵関数を使用して演算すると、その前に実行した演算結果を忘れる仕様だと、その内蔵関数は数表代わりにしか使えないことに気付くからだ。

たとえ内蔵関数が基礎的なものだけの関数電卓であっても、それらを使用して連続演算ができるのであれば、何の問題もない。一連の演算が関数電卓だけで完結するからだ。双曲線関数の例を出すまでもなく、高度な関数は基礎的な関数で定義・表現されることが多い。HP製関数電卓もそうだが、現代の関数電卓でも高度な関数の演算は基礎的な関数を連続演算して近似値を求めている。よって、基礎的な関数が誤差を少なく演算できて、かつ、それらの演算結果を順次使用して連続した演算ができるならば、その関数電卓を使う意味は大いに有る。あとは岩波書店の数学公式集が手許にあれば万全だ。現在販売されているエントリーモデルの関数電卓を使用する際と同じ考えである。

しかし本機のように、内蔵関数を使用した演算を実行すると直前の演算結果(を格納したレジスタ)をクリアしてしまう仕様だと、それらを使用して連続演算ができなので、一連の演算が関数電卓だけで完結しない。1つ1つの値を数表から引いて手入力するのと同じように、1回1回の演算結果をメモして手入力しなければならないなら、本機を使おうが使わなかろうが、演算完了までに必要な手数が変わらないので、本機を使う意味が見出せないのだ。これが〝なんとも不思議な気持ちになる〟正体である。本機のパンフレットにある「関数はワンタッチ」は「関数キーを押下すれば、本機に内蔵している数表のページを捲って、該当する値を呼び出しますよ」という内容だと理解したほうが合点がいく。しかも本機は先述した通り、基礎的な関数の演算ですら大きな誤差を含む結果を出力してしまうほど演算精度が悪い——これなら最初から使い慣れている数表を頼りに演算したほうが確実である。

以上から、本機を何日か使用した管理人の感想は「関数電卓を関数電卓たらしめる、これらの内蔵関数を使用しての連続演算ができない時点で、本機は関数電卓ではない。『数表を内蔵したカシオミニ』だな」に落ち着いてしまった。管理人が所有しているカシオミニが、本機発売の1ヶ月前に発売された完全浮動小数点演算が可能なCASIO-MINI CM-605であることも相俟って、CASIO-MINI CM-605に数表を内蔵することで本機のイメージが出来上がってしまった。尤も、CASIO-MINI CM-605の乗除算は最大12桁まで実行できるので、加減乗除算のいずれも8桁までしか実行できない本機のほうが演算可能桁数は狭い。

なお、HP-35も三角関数を演算する際は最上位のスタックTをワーキングレジスタとして使用するため上書きする仕様だが、それ以外のスタックX・Y・Zには影響が無いため、ここまで酷い状況とはならない。スタックの段数に気をつけていれば、内蔵している関数を使用しての連続演算も可能だ。先述の  の演算もスタックXとスタックYの2段しか使わないためHP-45での手順がそのまま適用でき、正解である.5210953055を出力する。そしてこの仕様は、次期機種であるHP-45では即改善され、以降のすべてのHP製RPN関数電卓では、どの内蔵関数を使用して演算してもすべてのスタックの内容を維持できるようになっている。

寧ろ本機と同じ仕様なのは1975年に旧ソ連で初めて開発されたポケット関数電卓Электроника Б3-18 (Electronika B3-18)である。旧ソ連は自国の歴史を正確に公表しているとは限らないため、発売時期については眉に唾を塗りたくって評価しなければならないものの、Электроника Б3-18 (Electronika B3-18)の存在自体は複数のWebサイトで確認できることと、これらWebサイトでも「概ね1975年に発売された」とされていることから、同時期の日本のポケット関数電卓は旧ソ連製のそれと同等の機能と演算性能であったと言えそうではある[7]。この点を考慮すると、少なくとも1970年代前半の日米間には、半導体製造技術やコンピュータ(演算回路)実装技術に関する格差と、関数電卓に対する製品戦略やマーケティングの能力差について、相当な開きがあったと言わざるを得ない。

ある意味で貴重な遺産

現代から本機を冷静に俯瞰すると、これら一連の仕様や演算精度の悪さは、当時のLSI製造技術で叶えられる集積度で、関数電卓をワンチップで実装した(ことを目指した)ゆえに起きた悲劇にしか見えず、結果として、当時のHP製RPN関数電卓が如何に先進的だったかを更に浮き彫りにさせる「引き立て役」を演じさせられているが、当時のカシオ計算機の開発陣は恐らくそんなことは考えておらず、「次期LSIでどう改修しようか」という挑戦の真っ只中だっただろう。関数電卓で採用する規模のLSIでも、日を追う毎に目に見えて進歩する半導体技術の恩恵が得られた時代が産み落とした、日本製ポケット関数電卓黎明期の貴重な遺産である。

ただ、残念ながら、機能からも演算精度からも、本機を現代で常用するのは無理である。管理人が入手した本機は、キーボードの保護フィルムが貼られたままの、コンデョションが極めて良好な機体である。後世に残すため、モスボール化して大切に保存しておく。

脚注

  1. 厳密には1974年1月19日に発売されたHP-65も存在したが、これは世界初の可搬型プログラマブル関数電卓であり、プログラム機能が無い本機と直接競合しないため、比較対象外とした。尤も、HP-65HP-45HP-35と同じClassicアーキテクチャなので、本機と比較しても結果は同じである。
  2. μPD179Cがマイクロプロセッサ機能と演算ロジック(ソフトウェア)の格納を、μPD175Cがキーボードからの入力やVFD(蛍光表示管)への出力等を、それぞれ担当していると推定されているが、詳細は不明だ。中央に鎮座する東芝製の10ピンのメタルキャンパッケージICであるT3086Dに至っては何も判らない。机上設置型であるCASIO 121-Uにも実装されており、本機では後にT3184にリプレースされたようだが、T3184はCASIO-162Fでも実装されているので、カシオ計算機の電卓のアーキテクチャでは共通して使い回せるIC(機能)ということになる。しかし、T3184についても何の情報も得られないため、何も判らないことに変わりはない。ネットは広大だが、まだまだ所々で千切れているようだ。
  3. この時期の日本製電卓の表示部はなぜか、電池の電圧だけで点灯できるLED(発光ダイオード)ではなく、駆動方式にも依るものの点灯させるにはDCで12〜25Vほど印加する必要がある=ポケット電卓であれば内部に昇圧回路(DC-DCコンバータ)を別途設けなければならないVFD(蛍光表示管)を採用し続けた。輸出されたものを含む当時の日本製電卓の特長であり、「表示部がVFDの電卓=日本製」と判断しても差し支え無いぐらいなのだが、これも消費電力を押し上げる一因である。日本製電卓でLEDを採用したのは、1971年に「世界初のワンチップ電卓」として発売された日本ビジコン製のBusicom LE-120Aなど一部に留まる。消費電力を考えればLEDに分があることは判り切っていたはずだが、当時はLEDよりVFDのほうが部品としても低価格で技術的に熟れていたのだろう。1973年6月にシャープは「世界初のLCD(液晶ディスプレイ)電卓」であるEL-805を発売したが、日本製電卓がLEDを経由せず一足飛びにLCDへ移行するのは、液晶の品質が安定し価格が下がった後の話である。
  4. 本機マニュアル11ページ「混合計算および応用計算」には『関数キーのうち  、 、 は混合計算の一部分として計算できます。』とある。言い換えれば、それ以外の関数である三角関数    ・常用対数  ・自然対数  とその逆関数  は混合計算(連続演算)に使用できないことになる。
  5. 本機には「置数の正負を反転させる」機能(HP製RPN電卓でいう  キー、カシオ計算機製電卓でいう  キーや  キー)も実装されてないので、 を演算させて羃指数を「作る」必要がある。しかも本機は、整数部がゼロの小数を入力する際は整数部のゼロも必ずキーインする必要があり、HP製RPN電卓のように整数部のゼロの入力を省略できない。よって、本機で  を演算するには        とキーインすることになる。地味に面倒だ。
  6. 第三世代(Voyager)と第四世代(Saturn)で差があるか確認するため両機で検算した。
    なお、第三世代(Nut)であるHP-41CXは単体だと双曲線関数を直接演算できないが、HP-41シリーズ用数学・統計拡張モジュールであるHP 5061-7287を装着すれば双曲線関数を演算できる。このモジュールのマニュアルに依ると  で演算しているそうだ。右辺は通分して整理すれば  となるため定義式のひとつに戻せるのだが、ここまでして  を共通因数として括り出している理由は不明だ。HP-41シリーズで  の演算に時間が掛かる訳でもなく、この演算をサブルーチン化してこのモジュールに含まれる他の関数でも流用している訳でもなく、それよりなにより  は本来の定義式と同じ  で演算しているので尚更である。尤も、定義式と合っているため、本モジュールを使用した双曲線関数の演算結果は正しい。本文で記載した  を演算してもHP-15CHP-48SXで検算したのと同じ0.521095306を出力する。
  7. 当然、これらWebサイトが旧ソ連の政権寄りの市民により作成・公開されていて、そのとき本国からの指示や意図を混入させている可能性は否定はできないのだが、それを言い始めると切りがないので、ひとまず掲載されている内容を援用することにした。