きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

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に修正を加えたというのが正しいはずだ。

DB2,MQ,TPF,C,PL/I,REXX(産みの親)

z10やPOWER6のプロセッサー

IBMの10進浮動小数点数に関わるもののほとんどを手掛けていると思われる。

IBMメインフレームではいまでもREXXが生き残っている。

他にもHTTPやW3CXML Schemaなんかもかかわってる。幅広い。

学問としてこの人の名前は覚えておいたほうが良いと思う。 

 

年表 わりと適当

1972 C言語誕生

1976 Intel浮動小数点数コプロセッサの開発を開始(William Kahan氏が関わる)

1978 Intel8086発表(x86系。整数演算のみ、浮動小数点数演算はナシ)

1979 REXX誕生

1979 C++開発開始

1980 Intel8087発表 (x87x86のコプロッセッサ。IEEE754-1985、多少非互換)

1985 IEEE754-1985

1987 IEEE854-1987

1990 Java誕生

1994 Intel Pentium FDIV バグ

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関係全般,累乗,その他いろいろ

 浮動小数リテラルや16進文字列の変換など

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)が欲しい。