哪些语言向开发人员公开 IEEE 754 陷阱?

2024-01-15

我想出于教育目的玩这些陷阱。

数值微积分中默认行为的一个常见问题是我们“错过”了错误运算中出现的 Nan(或 +-inf)。默认行为是通过计算进行传播,但某些操作(如比较)会破坏链条并释放 Nan,并且其余处理将继续,而不会在算法的先前步骤中确认奇点。

有时我们有办法对这种事件做出反应:延长一个函数(“在我的例子中,0/0 = 12”),或者在时域模拟中放弃步骤并尝试其他设置(例如预测器、步骤)大小或其他)。

所以我的问题是:您知道向开发人员公开 IEEE754 陷阱的语言吗?我不想为此而打扰 ASM。


据我所知,在 C 和 C++ 中进行浮点异常处理有两种选择:

首先,如果您禁用/屏蔽浮点异常(大多数环境默认情况下都会这样做),您可以通过调用来查看是否发生了任何浮点异常盛宴除外 http://linux.die.net/man/3/fetestexcept。 fetestexcept 在 Visual C++ 中不可用,但您可以轻松窃取 MinGW 运行时的实现。 (它属于公共领域。)一旦标记了异常,直到调用 feclearexcept 之前它不会被清除,因此您可以在一系列计算结束时调用 fetestexcept 来查看是否有任何计算引发了异常。这不会为您提供所需的陷阱,但它确实可以让您测试是否发生了 NaN 或 +/-inf 等问题并根据需要做出反应。

其次,您可以通过调用启用/取消屏蔽浮点异常收费的除外 http://linux.die.net/man/3/feenableexcept在 Linux 或_controlfp http://msdn.microsoft.com/en-us/library/e9b52ceh(VS.80).aspx在Windows中。操作系统如何处理处理器生成的浮点异常取决于您的操作系统。

  • 在 Linux 中,操作系统发送 SIGFPE 信号,因此您可以安装信号处理程序来捕获该信号,并设置一个标志来告诉您的例程做出适当的反应。
  • 在 Windows 中,操作系统调用结构化异常处理将处理器异常转换为语言异常,您可以使用__try / __catchC 中的块或try / catchC++ 中的块。
  • Update:对于 Mac OS X,如中所述这个答案 https://stackoverflow.com/questions/247053/enabling-floating-point-interrupts-on-mac-os-x-intel/340683#340683,您应该能够使用启用/取消屏蔽异常_MM_SET_EXCEPTION_MASK from xmmintrin.h,并且只要您使用默认编译器选项(即不禁用 SSE),您应该能够使用 SIGFPE 捕获异常。

(我在 C 和 C++ 中写了更多关于这个问题和其他浮点问题的文章这篇博文 http://codingcastles.blogspot.com/2009/01/floating-point-reference.html如果你好奇的话。)

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

哪些语言向开发人员公开 IEEE 754 陷阱? 的相关文章

随机推荐

  • require_once(Google/Auth/AssertionCredentials.php):无法打开流:没有这样的文件或目录

    我正在尝试做一个非常简单的事情 require once vendor google src Google Client php require once vendor google src Google Service Plus php
  • 如何将自定义 HTML 类名称添加到管理屏幕子菜单项?

    这是下面的这些子菜单项Posts menu 我检查了代码 发现它的标记是这样的 ul class wp submenu wp submenu wrap li class wp submenu head Posts li li class w
  • 必须创建一个matlab计数器[重复]

    这个问题在这里已经有答案了 Q 从 0 limit 1 创建一个 计数器 例如 如果您选择 3 它将显示 0 1 2 计数器的长度不是在程序中确定的 应该在运行时确定 并且输入可以彼此不同 不太确定你的意思 但是 for i 0 limit
  • 带有渐变的CSS3动画[重复]

    这个问题在这里已经有答案了 难道真的没有办法用 CSS 来制作渐变背景的动画吗 就像是 webkit keyframes pulse 0 background webkit gradient linear left top left bot
  • Android 虚拟设备 - Armeabi-v7a 与 x86_64

    我想制作自己的 Android 应用程序 我正在使用 Ubuntu 64 位和 IntelliJ 在虚拟设备配置中 它要求我选择系统映像 所有选项都有一个Download另外 这意味着我还没有下载任何系统映像 有 3 个选项可供选择Loll
  • grep 排除多个字符串

    我正在尝试使用查看日志文件tail f并想要排除包含以下字符串的所有行 Nopaging the limit is and keyword to remove is 我可以像这样排除一个字符串 tail f admin log grep v
  • 如何在 Cloud Machine Learning Engine 上获取模型的 C# 在线预测?

    我已成功部署在 Cloud ML Engine 上的模型上 并验证它正在使用gcloud ml engine models predict依照指示说明 https cloud google com ml engine docs how to
  • 在bash中将字符插入字符串?

    我需要转动绳子 125959 into 12 59 59 显然 字符串是时间 所以正则表达式在这里不太好 time 125959 echo time 0 2 time 2 2 time 4 2
  • 并发程序中的 I/O

    我正在开发一个并发程序 它有两个线程 其中一个监听来自服务器的消息 另一个线程向服务器发送消息 我需要从用户获取命令 使用 cin 并同时显示来自服务器的消息 我该如何处理这种情况 问题是 如果我在收到消息时读取用户的命令 则用户的输入会被
  • Mesa + Linux:gl.h 不包含现代 OpenGL

    这是我目前使用的环境 Eclipse Luna Linux Mint Rebecca 上的 C 11 当我尝试使用现代 OpenGL 例如 VAO 或 VBO 时 我收到编译器错误 导致方法无法解析 例如 GLuint VaoID GLui
  • F# 中 Control.Observable 和 Control.Event 模块之间有哪些相似/差异?

    F 至少在 Visual Studio 2012 中 两者兼而有之Control Observable http msdn microsoft com en us library ee370313 v vs 110 aspx and Con
  • 带有scope.$watch的Angular指令强制验证其他字段

    我写了一个match model当用户在我的应用程序中注册时 我用于密码 密码重复过程的角度指令 密码重复字段具有此特定属性 可根据原始密码字段验证此字段 我的指令有scope watch出于优化目的 因为我不必每次验证重复密码范围属性时都
  • 枚举和使用带有常量的静态类有什么区别?

    这两项之间的性能影响是什么 我最近在野外看到了静态类 但我不知道如何理解它 public enum SomeEnum One 1 Two Three public static class SomeClass public static r
  • OpenGL 二进制程序格式是否标准化?

    我一直在谷歌上搜索 OpenGL 二进制格式及其实际含义 到目前为止我还没有取得太大的成功 我知道我可以按如下方式获取数量和格式集 glGetIntegerv GL PROGRAM BINARY FORMATS values 0 其中 va
  • NX Monorepo 和库中的情感主题

    我们想用useTheme from emotion react在库内和我们的应用程序内 我们正在使用 反应本机网络 nx monorepo 反应本机 这是我们的结构 apps web ReactJS mobile React native
  • 如何使用 Gallio 和 MBUnit 以编程方式运行单元测试?

    作为部署过程的一部分 我正在尝试以编程方式检查我的单元测试是否通过 该应用程序使用 MBunit 和 Gallio 作为其单元测试框架 这是我的代码 var setup new Gallio Runtime RuntimeSetup set
  • ASP.NET MVC 操作被调用两次

    我有一个特定的控制器操作被调用两次 这除了奇怪之外还导致我的应用程序的单例部分出现问题 这并不是真正的问题 它只是引起了我对两次调用的注意 知道为什么控制器操作每次都会执行两次吗 不回来false或者阻止对通过 AJAX 进行调用的链接上的
  • 如何将 QFlags 与 QML 结合使用?

    我有一个我创建的 QFlag 我想在 QML 中使用这个 QFlag 具体来说 我希望能够将几个标志组合在一起 并将它们作为参数传递给方法 我注意到这里没有明确列出 QFlags 作为 QML 支持的数据类型 http doc qt nok
  • iOS .onContinueUserActivity 未被调用

    onContinueUserActivity从未被调用过Apple 提供的状态恢复示例应用程序 https developer apple com documentation swiftui restoring your app s sta
  • 哪些语言向开发人员公开 IEEE 754 陷阱?

    我想出于教育目的玩这些陷阱 数值微积分中默认行为的一个常见问题是我们 错过 了错误运算中出现的 Nan 或 inf 默认行为是通过计算进行传播 但某些操作 如比较 会破坏链条并释放 Nan 并且其余处理将继续 而不会在算法的先前步骤中确认奇