来自MiniZinc 规格说明:
浮标代表实数。浮点表示是实现定义的。这意味着浮动的可表示范围和精度是由实现定义的。但是,在特殊的浮点操作(例如,那些产生NaN的操作,如果使用IEEE754浮点数的话),实现应该在运行时中止。
什么意味着浮点表示是实现定义的?这取决于将使用的解算器吗?
以及mzn2fzn工具如何处理浮点表示?它的界限是哪一个?
发布于 2019-01-13 22:33:16
MiniZinc试图遵守IEEE标准。据我所知,编译器本身( minizinc驱动程序或其哥哥mzn2fzn)遵循这一标准。在内部,编译器对其浮点值使用64位精度。如果编译器不遵守这些标准有什么问题,我鼓励您报告它们。
解决者的标准是另一回事。MiniZinc只对求解者施加最小的控制。如果您想要确保他们采用正确的标准,您将必须与制造商的解决方案验证。这就是为什么规范说它是由实现定义的,因为解决程序可能使用32位,比如Gecode,64位,就像大多数求解者所做的那样,或者使用完全不同的技术,比如区间库。
https://stackoverflow.com/questions/54108339
复制相似问题