Минимальное и максимальное значения с плавающей точкой в ​​MiniZinc

Из спецификации MiniZinc:

Поплавки представляют собой действительные числа. Представления с плавающей точкой определяются реализацией. Это означает, что представимый диапазон и точность значений с плавающей точкой определяются реализацией. Однако реализация должна прерваться во время выполнения при исключительных операциях с плавающей точкой (например, тех, которые генерируют NaN, если используется IEEE754 с плавающей точкой).

Что это означает, что представления Float определяются реализацией? Зависит ли это от решателя, который будет использоваться?

И как представление Float обрабатывается инструментом mzn2fzn? С чем это связано?

1 ответ

Решение

MiniZinc старается придерживаться стандарта IEEE. Сам компилятор (minizinc водитель или его старший брат mzn2fzn) придерживается этого стандарта, насколько мне известно. Внутренне компилятор использует 64-битную точность для своих значений с плавающей запятой. Если есть какие-либо проблемы, когда компилятор не придерживается этих стандартов, я рекомендую вам сообщить о них.

Стандарты для решателей - это другое дело. MiniZinc только обеспечивает минимальный контроль над решателями. Если вы хотите убедиться, что они используют правильные стандарты, вы должны будете уточнить у производителя решателя. Вот почему в спецификации говорится, что это определяется реализацией, так как решатель может использовать 32-битные, такие как Gecode, 64-битные, как это делают большинство решателей, или совершенно другой метод, такой как библиотека интервалов.

Другие вопросы по тегам