java.math.BigDecimalと浮動小数点数の歴史
わりとどうでも良い歴史の時間です。
まずは浮動小数点の規格についてふれておこう。
IEEE754-1985 = 2進浮動小数点数
IEEE854-1987 = 基数に依存しない浮動小数点数の規格(とは言っても・・・)
IEEE754-2008 = IEEE754-1985 + IEEE854-1987 = 主に10進浮動小数点数の強化
あと、ここでwikipedia:en:Mike Cowlishaw氏の名前をだしておこう。
この人は、2010年に引退しているけれど元IBMフェローの人。(超エライ!)
浮動小数点数のIEEE754-2008にかかわっていたようだ。
浮動小数点数の世界では他にもWilliam Kahanという人が有名だと思う。
一介のSEの戯言だけど。。。
Mike Cowlishaw氏はJSR 13: Decimal Arithmetic Enhancement にも関わっている。
ざっくり言うとjava.math.BigDecimalの育ての親だろう。
産みの親ではきっとない。
BigDecimalに修正を加えたというのが正しいはずだ。
z10やPOWER6のプロセッサー
IBMの10進浮動小数点数に関わるもののほとんどを手掛けていると思われる。
他にもHTTPやW3CのXML Schemaなんかもかかわってる。幅広い。
学問としてこの人の名前は覚えておいたほうが良いと思う。
年表 わりと適当
1972 C言語誕生
1976 Intelが浮動小数点数のコプロセッサの開発を開始(William Kahan氏が関わる)
1978 Intel8086発表(x86系。整数演算のみ、浮動小数点数演算はナシ)
1979 REXX誕生
1979 C++開発開始
1980 Intel8087発表 (x87。x86のコプロッセッサ。IEEE754-1985、多少非互換)
1985 IEEE754-1985
1987 IEEE854-1987
1990 Java誕生
1995 PHP 1.0リリース
1996 JDK 1.0
1997 JDK 1.1
1998 J2SE 1.2 unscaledValue()追加
1998 C++標準 初版
1999 JSR13 Decimal Arithmetic Enhancemennt : Approval
2000 J2SE 1.3
2002 J2SE 1.4
2004 JSR13 Decimal Arithmetic Enhancemennt : Final Release
2004 J2SE 5.0
BigDecimalの定数,各種コンストラクタ,MathContext関係全般,累乗,その他いろいろ
2006 JavaSE 6
2008 IEEE754-2008
2008 IBM System z10 (10進浮動小数点数演算装置 HW化)
2009 IBM Javaバグ BigDecimal関係いろいろ
2010 IBM POWER 6 (10進浮動小数点数演算装置)
2010 OracleがSunを買収
2011 PHP double Infinite Loop
2011 Oracle/Sun Javaバグ Double.parseDouble() Infinite Loop
2011 JavaSE 7
2012 いまココ
私が知ってる範囲しか書いてないのでしょぼいですね。
そろそろBigDecimal.pow(BigDecimal,MathContext)が欲しい。