跳到内容
新问题

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

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

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

从字符串到实数的转换不接受非有限值 #73

关闭
5项任务中的1项
JohnReppy公司已打开此问题2022年7月15日·4条评论
关闭
5项任务中的1项

从字符串到实数的转换不接受非有限值 #73

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

评论

@JohnReppy公司
复制链接
贡献者

JohnReppy公司 评论2022年7月15日

版本

110.99

操作系统

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

操作系统版本

无响应

处理器

无响应

组件

基础库

严重程度

次要

问题描述

在基础库中,在签名REAL中,函数的描述扫描来自字符串状态:

它还接受以下非有限值的字符串表示:
[+~-]?(inf|infinity | nan)
其中字母字符区分大小写。

然而,这些函数都返回对于此类非有限值。
其他评论:
复制自polyml/polyml#181

成绩单

无响应

预期行为

无响应

复制步骤

以下表达式应匹配一些_:

StringCvt.scanString实际扫描"";实际值字符串"-inf公司";

其他信息

无响应

电子邮件地址

phil.clayton@veonix.com

smlnj-gforge的意见

原始smlnj-gforge错误号317

Phil Clayton通过网络表单提交phil.clayton@veonix.com2022-07-05 13:17:00

关键词:雷亚尔

评论人@JohnReply公司2022-07-05 14:37:00+000 UTC

110.99.3和2022.1固定

@JohnReppy公司 JohnReppy公司补充基本库 标准ML Basis库的问题 缺陷 有些东西不起作用了 浮点 与浮点运算相关的问题 gforge公司 从smlnj-gforge存储库移植的错误(或功能请求)标签2022年7月15日
@普莱顿
复制链接

感谢您的更新。我已经测试了固定版本,并观察到以下情况:

  1. 例外比赛可提出:

    -Real.fromString“n”;未捕获异常Match[非穷尽匹配失败]提出时间:Basis/Implementation/real-scan.sml:106.62

    类似于“不”以及病例变体。请注意,SML/NJ在编译时会发出警告:

    [编译$SMLNJ-BASIS/(BASIS.cm):(BASIS-common.cm):实现/(sources.cm):real-scan.sml]基础/实现/实际扫描。sml:105.46-106.62警告:match nonexualtive一些cs'=>。。。
  2. 应该扫描来自字符串生成签名的NaN,作为从十进制做?基础库似乎不需要这样做。目前该符号被忽略,因此fromString“+nan”fromString“-nan”具有相同的符号位。其意图是Option.composePartial(来自Decimal,IEEEReal.fromString)是的可能实现来自字符串但是否更受约束(生成签名NaN)?

@JohnReply公司 JohnReppy公司补充这个固定在110.99.3中 将在110.99.3版本中修复的问题标签2022年7月19日
@JohnReppy公司
复制链接
贡献者 作者

我会修复扫描错误。

NaN未签名。在指定SML基础库时,IEEE FP标准没有指定符号位的任何含义。最近,指定了该位以区分信令和静默NaN(1表示静默)。发送NaN信号对于SML来说是有问题的(假设我们会将它们映射到异常),因为很难以精确的方式将其映射到异常。例如,

(sNaN+1; x(x):=)

(其中sNaN公司是一个信号NaN)可能会在发出异常信号之前进行赋值。因此,我认为我们应该在所有情况下都坚持使用安静的NaN(即设置符号位)。

@普莱顿
复制链接

我认为signaling/quiet位是尾数的MSB,而不是符号位。维基百科状态:

有效位字段的最高有效位专门用于区分静默和信令NaN

因此,基本库中的抽象级别不允许观察或改变NaN的信令/静默位,但是可以观察和改变(无意义的)符号位。

@JohnReppy公司
复制链接
贡献者 作者

你说得对(我不应该在半夜考虑浮点)。

我已经修复了扫描错误,并添加了对设置符号位的支持。正如您所指出的,Basis Library规范没有指定扫描NaN时如何解释符号,并且在打印时肯定会忽略符号。应在https://github.com/SMLFamily/Basis图书馆.

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

没有分支或拉请求

2名参与者