ウィリアム・カハン

ウィリアム・モートン・カハン
生誕 (1933-06-05) 1933年6月5日(90歳)
カナダの旗 カナダ オンタリオ州トロント
国籍 カナダの旗 カナダ
研究分野 数学
計算機科学
研究機関 カリフォルニア大学バークレー校
出身校 トロント大学
主な業績 IEEE 754
カハンの加算アルゴリズム
主な受賞歴 チューリング賞(1989)
ACMフェロー
プロジェクト:人物伝
テンプレートを表示

ウィリアム・モートン・カハンWilliam Morton Kahan1933年6月5日 - )は、カナダ数学者計算機科学者。「数値解析への根本的(fundamental)貢献に対して」1989年にチューリング賞を受賞。1994年にはACMフェローに選ばれた。

経歴[編集]

カナダトロントで生まれる。トロント大学で数学を学び、1954年に学士号、1956年に修士号、1958年に博士号を取得した。2012年現在はカリフォルニア大学バークレー校の名誉教授である。

カハンはトロント大学在学中の1953年にプログラミングを習得した。コンピュータ関連の色々な機器を知り、人々と知り合った(まだどちらも総数がそんなに多くない時代であった)。1960年にトロント大学で教職に就いたが、そこでは当時設置されていたIBM 7090のソフトウェアを自由に変更する許可を得た。その計算機で、研究中の大学院生が当面した浮動小数点演算の不正確さによる問題を解決したことがあった。院生は解決された結果を論文にまとめたが、カハンにとっては問題は終わりではなかった。1963年に更新された、改良版のはずのIBM 7094でそのプログラムを走らせたところ、同様の問題が再発し、原因究明に時間を費したのであった。[1]

ヒューレット・パッカード (HP) の世界初のポケット関数電卓 HP-35 は、超越関数を特定の引数で計算したときの精度に問題があった。1974年、HPはカハンをコンサルタントに招き、共同でそれらのアルゴリズムの改良に熱心に取り組み、大きな改善をもたらした。このことは当時の Hewlett-Packard Journal で紹介されている[2][3]。その後HP-10Cシリーズでのアルゴリズム設計にも関わり、マニュアル執筆にも関わった。この経験は次に大きく生かされることになった。

1976年、インテル8087をはじめとする自社の全製品群の浮動小数点の仕様を設計するにあたり、共同研究者としてカハンを招いた。インテルの設計と時代的には同時進行で、1977年から、IEEE 754(および基数非依存の拡張版である IEEE 854)の策定も進められた。カハンはそちらでもアーキテクト代表を務めた。標準は策定に 1985 年までかかったのだが(そのためインテルは、標準化に先行する形で製品をリリースすることになった[4])、最終案の仕様はカハンらが提出したものがほぼ採用されたものとなった。以上のような経緯から、カハンは「浮動小数点数の父」と呼ばれる。その後の IEEE 754 改訂作業にも貢献し、現在の IEEE 754 規格を作り出した。

1980年代には "paranoia" という有名なプログラムも開発した。これは浮動小数点演算に関するバグを検出するベンチマークである。1994年、これによってPentium除算バグが発見され、今日でもよく使われている。多数の浮動小数点数の値の合計を計算する[5]ための重要なアルゴリズム「カハンの加算アルゴリズム」にも名を残す。他に、浮動小数点数演算を「正しく」行うコストに関しての、ある考察から「テーブルメーカーのジレンマ」という語で表される、ある困難さを指摘した: 「ふたつのオーバーフローもアンダーフローもしていない浮動小数点数について超越関数(たとえば yw )を正しく丸めつつ計算するコストは不明である」[6]

彼は浮動小数点演算に関する教育に熱心で、浮動小数点数に関して間違った設計のハードウェアやプログラミング言語に対して厳しい。

参考文献[編集]

  • Richard Karpinski. 1985. Paranoia: A floating-point benchmark. Byte Magazine 10, 2 (Feb.), 223–235
  • IEEE 1985. IEEE standard for binary floating-point arithmetic. ACM SIGPLAN Notices 22, 2 (Feb.), 9–25

脚注[編集]

  1. ^ 『コンピュータの構成と設計 第3版 別冊 歴史展望』 p. 59
  2. ^ Kahan, William M. (12 1979). “Personal Calculator Has Key to Solve Any Equation f(x) = 0”. Hewlett-Packard Journal 30 (12): 20–26. http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1979-12.pdf 2008年11月14日閲覧。. 
  3. ^ Kahan, William M. (8 1980). “Handheld Calculator Evaluates Integrals”. Hewlett-Packard Journal 31 (8): 23–32. http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1980-08.pdf 2008年11月14日閲覧。. 
  4. ^ そのため、287XLのように最終的に決定した仕様に合わせた修正版を出したりしている。
  5. ^ 2数の加算などの計算の際、絶対値の小さい側の数の下の桁の情報が失われる「情報落ち」は、単独の計算であれば無視して構わないものなのだが、多数の数の合計では「積み残し」などと呼ばれ、無視できない場合がある。
  6. ^ Kahan, William. “A Logarithm Too Clever by Half”. 2008年11月14日閲覧。

外部リンク[編集]