Macbook Air OS X 10.8.2 のふしぎ
>>> 1e100 * 1e100 1e+200 >>> 1e200 * 1e200 inf >>> 1e200 ** 1e200 Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Numerical result out of range') >>> 1e1000 ** 1e1000 Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Numerical result out of range')
こんな感じになる。手元の Linux とかWindows、Cygwinでも同じ結果になる。
同じ演算を、買ったばかりの Macbook Air / OS X 10.8.2、13インチ液晶/ 2 GHz Intel Core i7/メモリ8G/SSD 512G で実行すると、次のようになる。
>>> 1e100 * 1e100 1e+200 >>> 1e200 * 1e200 inf >>> 1e200 ** 1e200 Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Result too large') >>> 1e1000 ** 1e1000 inf
途中までは同じだが、最後の 1e1000 ** 1e10000
が例外ではなく、inf
となっている。Python 2.7.3/3.3
どちらでも同じ結果となった。なにか評価の順番でも違うのかもしれないが、Macのビルド環境を整えるのはちょっとめんどくさそうなので、原因は調査していない。
なお、前述の動作環境で、"13インチ液晶/ 2 GHz Intel Core i7/メモリ8G/SSD 512G" の部分は、たんなるスペック自慢である。特に意味は無いので注意されたい。