MiniZinc 中的最小和最大浮点值

Minimum and Maximum float value in MiniZinc

来自 MiniZinc specification :

Floats represent real numbers. Float representations are implementation-defined. This means that the representable range and precision of floats is implementation-defined. However, an implementation should abort at run-time on exceptional float operations (e.g., those that produce NaN, if using IEEE754 floats).

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

mzn2fzn 工具如何处理 Float 表示?它绑定了哪些?

MiniZinc 努力遵守 IEEE 标准。据我所知,编译器本身(minizinc 驱动程序或它的哥哥 mzn2fzn)遵守这个标准。在内部,编译器对其浮点值使用 64 位精度。如果有编译器不遵守这些标准的任何问题,我鼓励您报告它们。

求解器的标准是另一回事。 MiniZinc 仅对求解器实施最小控制。如果您想确保他们采用正确的标准,您必须与解算器制造商核实。这就是为什么规范说它是 实现定义的 ,因为求解器可能使用 32 位(如 Gecode)、64 位(大多数求解器都使用)或完全不同的技术(如区间库.