ウィリアム・カハン

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

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

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

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

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

1980年代には "paranoia" という有名なプログラムも開発した。これは浮動小数点演算に関するバグを検出するベンチマークである。1994年、これによってPentiumの除算バグが発見され、今日でもよく使われている。多数の浮動小数点数の値の合計を計算する2数の加算などの計算の際、絶対値の小さい側の数の下の桁の情報が失われる「情報落ち」は、単独の計算であれば無視して構わないものなのだが、多数の数の合計では「積み残し」などと呼ばれ、無視できない場合がある。ための重要なアルゴリズム「カハンの加算アルゴリズム」にも名を残す。他に、浮動小数点数演算を「正しく」行うコストに関しての、ある考察から「テーブルメーカーのジレンマ」という語で表される、ある困難さを指摘した: 「ふたつのオーバーフローもアンダーフローもしていない浮動小数点数について超越関数（たとえば yw ）を正しく丸めつつ計算するコストは不明である」

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

 参考文献 
 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

 脚注 

 外部リンク 

 William Kahan's home page
 An Interview with the Old Man of Floating-Point, 1998年2月20日
 顔写真
 2004 discussion of flaws found by paranoia on multiple cpu/compiler combinations
 Paranoia for modern graphics processing units (GPUs)
 Paranoia source code in multiple languages
 A Conversation with William Kahan, Dr. Dobb's Journal November, 1997

Category:カナダの計算機科学者
Category:カナダの数学者
Category:数値解析研究者
Category:チューリング賞受賞者
Category:アメリカ芸術科学アカデミー会員
Category:カリフォルニア大学バークレー校の教員
Category:ACMフェロー
Category:在アメリカ合衆国カナダ人
Category:トロント出身の人物
Category:1933年生
Category:存命人物