Predict and explain the outcome of the following:
(a) 1e1001 > 1e1000
(b) 1e350/1.e100 == 1e250
(c) 1e250 * 1.e-250 == 1e150 * 1.e-150
(d) 1e350 * 1.e-350 == 1e450 * 1.e-450
(e) 1 / 1e250 == 1e-250
(f) 1 / 1e350 == 1e-350
(g) 1e450/1e350 != 1e450 * 1e-350
(h) 1e250/1e375 == 1e-125
(i) 1e35 / (1e1000 - 1e1000) == 1 / (1e1000 - 1e1000)
(j) 1e1001 > 1e1000 or 1e1001 < 1e1000
(k) 1e1001 > 1e1000 or 1e1001 <= 1e1000
With explanations as inline comments to an IPython session:
In [1]: 1e1001 > 1e1000
Out[1]: False # both values are inf
In [2]: 1e350/1.e100 == 1e250
Out[2]: False # LHS is inf, RHS is representable
In [3]: 1e250 * 1.e-250 == 1e150 * 1.e-150
Out[3]: True # both values are equal to 1
In [4]: 1e350 * 1.e-350 == 1e450 * 1.e-450
Out[4]: False # both sides are inf / 0 which is nan
In [5]: 1 / 1e250 == 1e-250
Out[5]: True # both sides are representable
In [6]: 1 / 1e350 == 1e-350
Out[6]: True # both sides equal 0.0 in double precision floating point
In [7]: 1e450/1e350 != 1e450 * 1e-350
Out[7]: True # both sides are nan, which isn't equal to itself
In [8]: 1e250/1e375 == 1e-125
Out[8]: False # LHS is 0.0 in floating point, RHS is representable
In [9]: 1e35 / (1e1000 - 1e1000) == 1 / (1e1000 - 1e1000)
Out[9]: False # inf - inf is nan
In [10]: 1e1001 > 1e1000 or 1e1001 < 1e1000
Out[10]: False # inf is equal to itself
In [11]: 1e1001 > 1e1000 or 1e1001 <= 1e1000
Out[11]: True # inf is equal to itself