Введение

Верхняя граница ошибки округления в арифметике с плавающей точкой
Машинный эпсилон, или точность машины, — это верхняя граница относительной погрешности приближения, возникающей из-за округления в системах счисления с плавающей точкой. Эта величина характеризует компьютерную арифметику в области численного анализа и, как следствие, в области вычислительной науки. Эта величина также называется macheps и обозначается греческой буквой эпсилон (ε). Существует два основных определения, которые здесь обозначаются как машинный эпсилон для округления и машинный эпсилон для интервала. Машинный эпсилон зависит от используемого типа округления и также называется единицей округления, обозначаемой полужирным римским символом u. Однако в наиболее распространенном определении машинный эпсилон не зависит от метода округления и может быть равен u или 2u.

Основное определение (интервальный машинный эпсилон)

Стандарт IEEE не определяет термины "машинный эпсилон" и "единица округления", поэтому используются различные определения этих терминов, что может приводить к путанице. Формальное определение машинного эпсилон используется профессором Джеймсом Деммелом в конспектах лекций, пакете линейной алгебры LAPACK, научных работах по вычислительной математике и в некоторых программах для научных вычислений. Большинство специалистов по вычислительной математике используют термины "машинный эпсилон" и "единица округления" как взаимозаменяемые, подразумевая это значение. Однако существует и другое, значительно более распространенное определение: машинный эпсилон – это разность между 1 и следующим большим числом с плавающей точкой. Согласно этому определению, ε равно значению единицы в младшем разряде относительно 1, то есть (где b – основание системы с плавающей точкой, а p – точность), а единица округления u = ε / 2 при округлении до ближайшего и u = ε при отбрасывании дробной части. Широкое распространение этого определения связано с его использованием в стандарте ISO C для констант, связанных с типами данных с плавающей точкой, и соответствующих констант в других языках программирования. Оно также широко применяется в программном обеспечении для научных вычислений и в литературе по вычислительной математике и информатике.

Приближение

Следующий простой алгоритм можно использовать для приближенного вычисления машинного эпсилон, с точностью до коэффициента двух (один порядок величины) от его истинного значения, с помощью линейного поиска. epsilon = 1.0;

пока (1.0 + 0.5 * epsilon) ≠ 1.0:
epsilon = 0.5 * epsilon

Машинный эпсилон также можно просто вычислить как двойку, возведенную в степень, равную минус числу бит, используемых для представления мантиссы.

Примечания и ссылки

Андерсон, Э.; Руководство пользователя LAPACK, Общество промышленной и прикладной математики (SIAM), Филадельфия, Пенсильвания, третье издание, 1999. Коди, Уильям Дж.; MACHAR: Подпрограмма для динамического определения параметров машины, ACM Transactions on Mathematical Software, Vol. 14(4), 1988, 303–311. Бессет, Дидье Х.; Объектно-ориентированная реализация численных методов, Morgan & Kaufmann, Сан-Франциско, Калифорния, 2000. Деммель, Джеймс У.; Прикладная численная линейная алгебра, Общество промышленной и прикладной математики (SIAM), Филадельфия, Пенсильвания, 1997. Хигам, Николас Дж.; Точность и устойчивость численных алгоритмов, Общество промышленной и прикладной математики (SIAM), Филадельфия, Пенсильвания, второе издание, 2002. Пресс, Уильям Х.; Тейколски, Сол А.; Веттерлинг, Уильям Т.; и Фланнери, Брайан П.; Numerical Recipes in Fortran 77, 2-е изд., Глава 20.2, с. 881–886. Форсайт, Джордж Э.; Малкольм, Майкл А.; Молер, Клив Б.; "Вычислительные методы математических вычислений", Prentice Hall, 1977.