Изучаю Python по книге Саммерфильда Programming in Python 3 (A Complete Introduction to the Python Language)
Дошел до машинного эпсилона.
В питоне есть sys.float_info.epsilon и эта величина является машинным эпсилоном. Это я понял.
Так же я понял, что существуют значения меньше машинного эпсилона, но с этими значениями компьютер работает не точно.
В последней строчке, нижеследующего кода, я делю машинный эпсилон на 2 и получаю значение меньше машинного эпсилона, потом я это значение складываю с единицей и в результате получаю число чуть больше единицы, но это "чуть", меньше числа, которое компьютер может представить корректно и поэтому компьютер это "чуть" округляет до нуля и в итоге, в последней строчке, я получаю единицу без изменений.
x = sys.float_info.epsilon
'''
this is how to work machine epsilon
1.0 + x != 1.0
1.0 + x/2 == 1.0
'''
print (1.0 + x) # output will be 1.0000000000000002
print (1.0 + x/2) # output will be 1.0
Итого у меня два вопроса:
1) Правильно ли я понимаю, что машинный эпсилон это минимальная разница между двумя числами, с которой компьютер может работать без погрешностей?
2) Машинный эпсилон и машинный ноль это синонимы?