Как машина эпсилон происходит от поплавка макс?
Вы можете получить машину эпсилон в 754-подобной системе двоичной с плавающей точкой IEEE от максимального конечного поплавка, заметив, что максимальное конечное поплавок записываются 1,111 < п двоичных разрядов один> * 2 х макс..
В этих условиях машина epsilon в двоичном формате составляет 0.000 < n-1 двоичных цифр 0> 1.
Однако максимальный конечный поплавок и эпсилон машины представляют собой действительно разные параметры, которые фиксируют различные характеристики системы с плавающей точкой: диапазон значений, которые могут быть представлены с конечными аппроксимациями, и точность этих приближений.
EDIT: по просьбе О.П., скелетные реализации:
#include <stdio.h>
#include <float.h>
int main(void) {
printf("%a\n", FLT_MAX);
printf("FLT_MAX is 0x1.fffffep+127 therefore machine epsilon must be:\n");
printf(" 0x0.000002p0 that is approx %e in decimal\n", 0x0.000002p0);
}
На моей платформе я получаю результат:
0x1.fffffep+127
FLT_MAX is 0x1.fffffep+127 therefore machine epsilon must be:
0x0.000002p0 that is approx 1.192093e-07 in decimal
Поскольку все упражнения совершенно бессмысленно, фактическое вычисление машина epsilon от FLT_MAX
оставлена в качестве упражнения для читателя.
См. Http://floating-point-gui.de/ –
Это не производное от максимального значения. Это происходит от размера мантиссы. – interjay
Просто загляните в заголовочные файлы компилятора. Вы увидите, что это не «производное», оно жестко закодировано. Очень мало оборудования осталось, что не использует IEEE-754. –