parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

^math:eq(a;b[;максимальная разница]) - в ночных сборках

moko 01.09 22:10 / 01.09 22:10

Есть тонкий момент. Текущее поведение оператора == для double в Parser соответствует поведению в других языках. Так делают из-за того, что приблизительное сравнение не транзитивно (может быть a≈b и b≈c, но a≈c — нет). Поэтому пока добавил метод ^math:eq(a;b[;max ULP]) для приблизительного сравнения.
max ULP — максимально допустимая разница между упорядоченными двоичными представлениями двух double, по умолчанию 3. Для нормализованных значений это ≈ 3·2⁻⁵² ≈ 6.7×10⁻¹⁶, то есть отклонения на уровне 15–16-й значащей десятичной цифры.
По ссылке можно посмотреть, какие числа считаются или не считаются равными для разных значений max ULP.
Технически можно поменять именно поведение оператора ==, но пока не очень понимаю, будут ли негативные последствия и max ULP можно будет задавать только в конфигурационном методе.