floating-point - MiniZinc 中的最小和最大浮点值
问题描述
来自 MiniZinc规范:
浮点数代表实数。浮点表示是实现定义的。这意味着浮点数的可表示范围和精度是实现定义的。然而,一个实现应该在运行时中止异常浮点操作(例如,如果使用 IEEE754 浮点,则产生 NaN 的那些)。
Float 表示是实现定义的,这意味着什么?这是否取决于将使用的求解器?
mzn2fzn工具如何处理浮点表示?它的界限是什么?
解决方案
MiniZinc 试图遵守 IEEE 标准。据我所知,编译器本身(minizinc
驱动程序或其哥哥)遵守这个标准。mzn2fzn
在内部,编译器对其浮点值使用 64 位精度。如果编译器有任何不符合这些标准的问题,我鼓励您报告它们。
求解器的标准是另一回事。MiniZinc 仅对求解器强制执行最低限度的控制。如果您想确保他们采用正确的标准,您必须与求解器的制造商进行验证。这就是为什么规范说它是实现定义的,因为求解器可能使用 32 位,如 Gecode,64 位,就像大多数求解器一样,或完全不同的技术,如区间库。
推荐阅读
- python - 为什么我收到此错误“TypeError:只能将 str(而不是“int”)连接到 str”?
- math - 哪种是从其他货币转换货币价格的最佳方法
- orchardcms - 使用 Azure 搜索索引和搜索 Orchard CMS 站点
- python - 有没有办法让程序在 python 中运行不止一次
- python - 如何找到几个相同的模板 OpenCV Python
- angular-material - Angular 7 的 Angular 材质
- .net - 表达式必须具有类类型 - C++/CLI
- python - 查找列表中的第一个非连续数字
- git - 关于还原和提交的 Git 用例说明
- numerical-methods - 非线性微分方程数值解系统