IEEE Floating-Point Standard

In [1]:
import numpy as np
np.seterr(all='ignore');

Largest IEEE Double-Precision Number

In [2]:
E = 2.**(-52)
x = 1. + E
print(x)
1.0000000000000002
In [3]:
E
Out[3]:
2.220446049250313e-16
In [4]:
np.float32(np.pi)
Out[4]:
3.1415927
In [5]:
2.**1023
Out[5]:
8.98846567431158e+307
In [6]:
1/np.float64(2)**1028
Out[6]:
0.0
In [7]:
# 1.1111...1 x 2**1023
np.finfo('float').eps
Out[7]:
2.220446049250313e-16

Smallest IEEE Double-Precision Number

In [8]:
2**(-1022)
Out[8]:
2.2250738585072014e-308
In [9]:
np.finfo('float').tiny
Out[9]:
2.2250738585072014e-308
In [10]:
#
np.finfo('float').tiny/40
Out[10]:
5.562684646268e-310
In [11]:
#
np.finfo('float').tiny/2.**52/2.
Out[11]:
0.0
In [12]:
#
np.finfo('float').tiny/2.**53
Out[12]:
0.0

Floating-Point Exceptions

In [13]:
np.float64(-1.0) / 0.
Out[13]:
-inf
In [14]:
np.float64(0) / 0.
Out[14]:
nan
In [15]:
np.nan*2-67.
Out[15]:
nan
In [16]:
np.float64(1)/0 - np.float64(1)/0
Out[16]:
nan
In [17]:
np.nan/np.inf
Out[17]:
nan
In [ ]: