跳到内容
新问题

对这个项目有疑问吗?注册一个免费的GitHub帐户以打开一个问题,并联系其维护者和社区。

单击“注册GitHub”,表示您同意我们的服务条款隐私声明。我们偶尔会向您发送与帐户相关的电子邮件。

已经在GitHub上了?登录到您的帐户

IEEEReal.setRoundingMode(IEEE实际设置舍入模式)在Linux上是no-op #70

关闭
5项任务中的1项
JohnReppy公司已打开此问题2022年7月15日·0条评论
关闭
5项任务中的1项
受让人
标签
基本库 标准ML Basis库的问题 缺陷 有些东西不起作用了 固定在110.99.3中 将在110.99.3版本中修复的问题 浮点 与浮点运算相关的问题 玻璃纤维 从smlnj-gforge存储库移植的错误(或功能请求)

评论

@JohnReppy公司
复制链接
贡献者

JohnReppy公司 评论2022年7月15日

版本

v110.99.1版

操作系统

  • 全部
  • Linux操作系统
  • macOS操作系统
  • 窗户
  • 其他Unix

操作系统版本

WSL公司

处理器

x86(32位)

组件

基础库

严重程度

次要

问题描述

IEEEReal.setRoundingMode(IEEE实际设置舍入模式)是no-op,不会更改舍入模式。
其他评论:
这也会导致以下功能出现问题:
真实真实信托,实际实际Ceil,实际实际楼层,实际圆形
因为这些功能是根据IEEEReal.setRoundingMode(IEEE实际设置舍入模式).
请注意,默认的舍入模式是由实现定义的,因此这些函数中只有一个可以正常工作。

此外,如果IEEEReal.set舍入模式不受支持,应抛出错误,而不是什么都不做,
类似于其他未实现的SML/NJ基函数(例如小数后实数).

修复:
我无法理解运行时是如何工作的,
但我认为C运行时可能需要使用pragma
#杂注STDC FENV_ACCESS开启(http://www.cplusplus.com/reference/cfenv/FENV_ACCESS/)

一个临时修复实际地板将是实施real地板f作为#整体(Real.split f).

成绩单

-IEEEReal.setRoundingMode IEEEReal。归零;valit=():单位-IEEEReal.get舍入模式();valit=TO_NEAREST:IEEEReal.rounding_mode

预期行为

无响应

复制步骤

IEEEReal.setRoundingMode IEEEReal。归零;IEEEReal.getRoundingMode();

其他信息

无响应

电子邮件地址

ssoss@uchicago.edu

smlnj-gforge的意见

原始smlnj-gforge错误号314

Skye Soss通过网络表单提交ssoss@uchicago.edu2022-06-02 19:29:00

关键词:雷亚尔,IEEEReal

评论人@JohnReppy公司2022-06-06 14:37:00+000 UTC

这个问题似乎是Linux特有的(例如,在macOS上工作正常)。这可能是因为编译器被允许忽略浮点环境,除非FENV_ACCESS公司pragma已打开。

评论人@JohnReppy公司2022-06-06 15:17:00+000 UTC

问题是Linux不支持“fenv.h”API,所以应该使用汇编代码。现代Linux确实有那个包含文件,所以我们可以只使用库函数。

110.99.3和2022.1固定。

@JohnReppy公司 JohnReppy公司补充基本库 标准ML Basis库的问题 缺陷 有些东西不起作用了 浮点 与浮点运算相关的问题 玻璃纤维 从smlnj-gforge存储库移植的错误(或功能请求)标签2022年7月15日
@JohnReppy公司 JohnReppy公司补充这个固定在110.99.3中 将在110.99.3版本中修复的问题标签2022年7月19日
免费注册 在GitHub上加入此对话.已经有账户了吗?登录以发表评论
标签
基本库 标准ML Basis库的问题 缺陷 有些东西不起作用了 固定在110.99.3中 将在110.99.3版本中修复的问题 浮点 与浮点运算相关的问题 玻璃纤维 从smlnj-gforge存储库移植的错误(或功能请求)
项目
还没有
开发

没有分支或拉请求

1名参与者