MiniZinc中的最小和最大浮点值

时间:2019-01-09 10:46:24

标签: floating-point minizinc mzn2fzn

来自MiniZinc specification

  

浮点数表示实数。浮点表示法是实现定义的。这意味着浮点数的可表示范围和精度是实现定义的。但是,实现应在运行时中止特殊的浮点操作(例如,如果使用IEEE754浮点,则产生NaN的操作)会中止。

浮点表示是实现定义的是什么意思?是否取决于要使用的求解器?

mzn2fzn 工具如何处理Float表示形式?它的界限是什么?

1 个答案:

答案 0 :(得分:0)

MiniZinc尝试遵守IEEE标准。就我所知,编译器本身(minizinc驱动程序或其较老的兄弟mzn2fzn)遵守此标准。在内部,编译器对其浮点值使用64位精度。如果存在任何编译器不遵守这些标准的问题,我建议您报告这些情况。

求解器的标准是另一回事。 MiniZinc仅对求解器实施最小的控制。如果要确保他们采用正确的标准,则必须与求解器的制造商进行验证。这就是为什么规范说它是实现定义的的原因,因为求解程序可能像大多数求解程序那样使用32位(例如Gecode),64位,或者使用完全不同的技术(例如间隔库)。