使用 SSE 内在函数时如何确保 NaN 传播?

2024-03-23

我最近读到了这篇关于NaNSSE 算术运算中的值:

对两个非数字 (NAN) 参数进行算术运算的结果是未定义的。因此,使用 NAN 参数的浮点运算将与相应汇编指令的预期行为不匹配。

Source: http://msdn.microsoft.com/en-us/library/x5c07e2a(v=vs.100).aspx http://msdn.microsoft.com/en-us/library/x5c07e2a(v=vs.100).aspx

这是否意味着,比如说,添加两个__m128值可能会转换NaN到真实的?

如果计算依赖于NaN值,我需要最终结果是NaN以及。有什么办法可以做到这一点吗?


当我解释该文本时,它所说的是编译器提供了大致对应于 SSE 指令的各种内部函数。通常,您可以预期编译器将使用 SSE 指令来实现内在函数。然而,这并不严格。内在函数实际上指定了某些抽象计算模型中的操作;他们不直接指定 SSE 指令。在该抽象模型中,对两个 NaN 进行操作的结果(奇怪的是它似乎不允许一个 NaN 和一个数字)是未定义的。因此,例如,将两个 NaN 相加得到的结果可能不是 NaN。

特别是,抽象模型中的操作将受到编译器优化的影响,并且这些优化可能会导致 SSE 指令以外的结果(编译时计算,如果编译器可以推断出 NaN 存在,则省略指令,因此实际上不需要执行添加等)。

看来,如果你想保证为 SSE 指令指定的语义,你可能必须用汇编语言编写,而不是使用微软编译器中的内在函数。

我确实希望供应商不要再忽视浮点语义。如果没有明确的行为,就很难进行工程设计。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SSE 内在函数时如何确保 NaN 传播? 的相关文章

随机推荐

  • Symfony 2.8+,教义继承和形式

    在开始之前 请注意我正在学习 symfony 所以请记住这一点 我只是想了解它是如何工作的 这就是我想要实现的目标 我想使用学说制作一个实体继承的简单示例 这就是我的示例的样子 摘要父类 特点 儿童1班 Magician 儿童2班 Warr
  • 如何更改mvc3中razor中LabelFor的显示名称?

    在我用过的剃须刀引擎中LabelFor显示名称的辅助方法 但显示名称似乎不太好显示 所以我需要更改我的显示名称该怎么做 Html LabelFor model gt model SomekingStatus new class contro
  • OpenCV - 薄板样条翘曲的合适实现

    我有一张脸的形状以及该脸的重建 我想对初始形状的相应图像进行建模 基本上 我想将点从原始形状移动到面部重建指示的位置 我尝试通过使用薄板样条翘曲来做到这一点 它的实现如下 http ipwithopencv blogspot ro 2010
  • 在 Asp.Net Mvc 中使用 Ajax 刷新表列表

    我的模式有问题 在创建新条目后 我的表列表没有显示表中最后创建的行 在我的数据库中它已经存在 它仅在刷新页面后才显示 我尝试了一些东西 但只第一次起作用 来自 在 ASP NET MVC 中使用 AJAX 刷新表 https stackov
  • 使用ajax url调用函数

    希望我能正确地问这个问题 因为我知道我想要它做什么 但似乎无法从搜索中找到任何答案 我有一个 func php 页面 其中包含所有函数 并且我希望 ajax 使用该页面中的一个函数 func php function toptable ec
  • Python DataFrame 从每日数据中选择每月增量的行

    让我们直接进入问题吧 以下为每日数据 AAA BBB CCC date 2012 04 16 44 48 28 48 17 65 2012 04 17 44 59 28 74 17 65 2012 04 18 44 92 28 74 17
  • CouchDB 对 _users 数据库的读/写限制

    我想限制用户权限 以便普通用户只能读 写自己的用户文档 我设法设置写入权限 以便用户只能编辑自己的文档 通过设计文档中的 validate doc update 函数 现在我只需限制用户查看用户列表或其他用户文档即可 如果我将数据库读取权限
  • 使用 Scala Slick 实现高阶函数,实现 DRY 优点

    我知道我的 Scala Slick 数据访问层应该是什么样子 但我不确定这是否真的可能 假设我有一个 User 表 其中包含 id 电子邮件 密码等常用字段 object Users extends Table String String
  • Sailsjs/waterline 指定模型中的小数位数

    我如何告诉我的帆模型我想要一些特定的小数位type float 属性 喜欢decimalPlaces 4或者类似的东西 问题是 当我向此条目发布值时 磁盘上的值会被截断为 00 数百 个地方 说我想要 3243 2352362按原样存储 目
  • ENOENT:没有这样的文件或目录。?

    这是发布数据和文件时出现的错误 我遵循 academind 教程来构建 Restful API 服务 我也一直在寻找此类错误的答案 但对我来说没有任何作用 我使用 multer 上传文件 文件夹 上传 在文件夹中可用 但显示 ENOENT
  • Tomcat context.xml 中的资源名称属性如何工作?

    我们正在使用 JNDI 来查找我们的数据库连接 在Tomcat的全局context xml文件中 我们有类似以下内容
  • 什么是 0x43 MIDI 事件?

    我正在尝试编写一个 MIDI 解析器 但我遇到了官方文档中未记录的 MIDI 事件 即http www midi org techspecs midimessages php http www midi org techspecs midi
  • PostgreSQL:间隔“10 天”和当前行之间的范围

    我有一张表 用于存储每件商品的每日价格 如果价格尚未更新 则当天没有该商品的记录 我需要编写一个查询 为每个商品检索最新价格 并具有从当前行日期起 10 天的回溯窗口 否则返回NULL 我想用一个来实现这一点RANGE BETWEEN IN
  • 在 REST Assured 中,如何设置超时?

    我正在使用 RestAssured 2 8 0 我正在尝试设置自己的超时 用于网关超时 因此 如果我在 X 毫秒后没有得到响应 我想中止 I tried public static ValidatableResponse postWithC
  • 使用另一种类型过滤一种类型的键

    我正在尝试创建一种类型 如果它们不出现在另一种类型中 则该类型将递归地排除一种类型中的键 例如 给定两种类型 type TargetType a true b c true d true type InputType a string b
  • Cordova 无法添加 Android 失败,退出代码为 ENOENT

    I am trying to create an Android project with Cordova however i am getting an ENOENT error although i followed the tutor
  • 如何让 emacs 正确显示多字节编码文件?是骡子吗?

    当我打开多字节文件时 我得到 短期内 您可以使用备用编码系统重新访问该文件revert buffer with coding system 然后选择utf 16le 从中期来看 您可以在加载时提高 utf 16le 编码的优先级prefer
  • 获取全文搜索配置语言的完整列表

    to tsvector 支持多种语言 英语 德语 法语 如何获得这些语言的完整列表 有手册中的说明 https www postgresql org docs current textsearch psql html如何使用 psql 检索
  • 在发送给用户之前重命名文件?

    这可能是一个非常简单和愚蠢的问题 但我不知道我会如何去做 我正在用 PHP 为客户端站点构建一些文件托管功能 我在一个目录中有一个中央文件存储库 这是因为如果多人上传同一文件 客户端希望维护每个文件的一份副本 基于文件的 哈希 文件在转储到
  • 使用 SSE 内在函数时如何确保 NaN 传播?

    我最近读到了这篇关于NaNSSE 算术运算中的值 对两个非数字 NAN 参数进行算术运算的结果是未定义的 因此 使用 NAN 参数的浮点运算将与相应汇编指令的预期行为不匹配 Source http msdn microsoft com en