Минимальное и максимальное значения с плавающей точкой в ​​MiniZinc - PullRequest
0 голосов
/ 09 января 2019

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

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

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

А как представление Float обрабатывается инструментом mzn2fzn ? Каковы его границы?

1 Ответ

0 голосов
/ 14 января 2019

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

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

...