Что означает EPS в C?
7 ответов
Это будет какая-то форма Эпсилон чтобы определить, является ли число "достаточно маленьким, чтобы быть незначительным". Точное значение выглядит так, как будто это #define
d где-то в этом случае.
EPS-это Эпсилон. Фактор "достаточно близко".
вопрос в том, " является ли абсолютное значение достаточно близким?"Где "достаточно близко" - это небольшое число, часто что-то вроде 1.0E-3
.
В зависимости от того, как алгоритм сходится на ответ, производительность может зависеть от размера EPS. Будьте осторожны, делая EPS слишком маленьким, потому что ваш процесс может работать часами (или столетиями) и не давать действительно полезный ответ.
в этом случае -- где нет никакого цикла - EPS используется, потому что числа с плавающей запятой накапливают небольшие ошибки во время умножения. Вы не можете просто сказать
a == b
и пусть это будет правдой в целом. Поэтому мы всегда говорим
abs( a-b ) <= EPS
Я бы сказал, что Джон Скит прав. Посмотрев на код lisp на этой странице, вы найдете аналогичную ссылку в вычислениях под названием "nearzero", которая определяется как таковая:
(setq nearzero 0.00001)
поэтому из этого я бы сказал, что EPS является константой, установленной на 0.00001.
Эпсилон... Вероятно, это будет #define...
Epsilon обычно используется для обозначения числа, очень близкого к нулю в пределах float или двойной точности.
Он используется для определения, если значение p43.x достаточно близко к нулю, чтобы считаться нулем.
скажу, что ЭПС для Эпсилона:
в математике (особенно исчислении), произвольно (или почти так) малая положительная величина.
в вашем примере он используется для определения, является ли результат (ABS (p43.x) достаточно мал (близок к нулю).
скорее всего, p43
- Это структура, которая содержит значения с плавающей запятой. Поскольку значения с плавающей запятой имеют конечную точность, они могут представлять только подмножество действительных чисел, что означает, что часто необходимо проверять равенство с запасом ошибок округления.
вместо проверки x = 0
проверяет код |x| < EPS
, то есть все значения в ]-EPS, +EPS[
считаются достаточно маленькими, чтобы быть 0
.
если бы вы прочли на машина Эпсилон!--11-->.
в C и C++ у вас есть константы препроцессора FLT_EPSILON и DBL_EPSILON,которые являются наименьшими числами, такими, что 1 + {FLT, DBL}_EPSILON > 1 для float и двойной точности соответственно. Эта ЭПС, кажется, некоторые подобные специальные "близкой к нулевой" стоимости.