Libchecker:checker eq FPTYPE abs
From EjudgeWiki
Навигация: Главная страница/Система ejudge/Проверяющие программы/libchecker/Функции/Сравнение вещественных значений/Сравнение вещественных чисел с заданной абсолютной погрешностью
Данные функции позволяют сравнивать два вещественных числа на равенство с заданной абсолютной погрешностью.
int checker_eq_float_abs(float v1, float v2, float eps); int checker_eq_double_abs(double v1, double v2, double eps); int checker_eq_long_double_abs(long double v1, long double v2, long double eps);
Параметр eps задаёт абсолютную погрешность и должен быть больше 0. Как правило, указывается значение eps, равное 10^{-n}. Параметры v1 и v2 задают значения для сравнения.
Сравнение ведется по следующим правилам в порядке их применения:
- если оба числа равны NaN, они считаются равными;
- если только одно число равно NaN, числа считаются различными;
- если оба числа равны Inf и имеют один знак, они считаются равными;
- если оба числа равны Inf, но имеют разный знак, либо только одно число равно Inf, числа считаются различными;
- если модуль разности чисел |v1 - v2| меньше значния 1.125*eps, числа считаются равными, а в противном случае различными.
Константа 1.125 (9/8) выбрана потому, что она незначительно больше 1 и точно представима в двоичной системе счисления.
Функции возвращают 1, если два числа равны, и 0, если числа не равны.