linux浮点控制87替换
linux floating point _control87 replacement
我正在处理一些代码的端口(从Windows到Linux),主要是为了了解更多关于在Linux上用c++编程的信息。
我遇到了一个包含以下内容的函数:
_clear87();
_control87(_PC_24, MCW_PC);
_control87(_RC_CHOP, MCW_RC);
_24 = getFPUsw(); // 24, chop
_control87(_RC_NEAR, MCW_RC);
_24r = getFPUsw(); // 24, rounding
_control87(_PC_53, MCW_PC);
_control87(_RC_CHOP, MCW_RC);
_53 = getFPUsw(); // 53, chop
_control87(_RC_NEAR, MCW_RC);
_53r = getFPUsw(); // 53, rounding
_control87(_PC_64, MCW_PC);
_control87(_RC_CHOP, MCW_RC);
_64 = getFPUsw(); // 64, chop
_control87(_RC_NEAR, MCW_RC);
_64r = getFPUsw(); // 64, rounding
据我所知。_control87和_clear87仅为Windows,用于更改浮点计算等的FPU模式。在<float.h>
中的窗口上定义
Linux上的等效功能似乎与#include <cfenv>
中的功能类似
我不确定这些_control87函数的等价物是什么,希望有人能在这里为我指明正确的方向。
事实上,fenv.h似乎是独立于平台的。示例:http://howtounix.info/man/FreeBSD/man3/fenv.3
使用.NET,这也可能起作用:
Word uSaved8087CW = System::Default8087CW;
...
//for example:
System::Set8087CW(0x133f); // Disable all fpu exceptions.
//calculations
...
System::Set8087CW( uSaved8087CW );
相关文章:
- 模板参数替换失败,并且未完成隐式转换
- 如何用转义符替换字符串中的所有特殊字符
- 控制允许动态运行c++的并发操作数
- 从控制台中删除最后打印的元素
- 是否可以使用if constexpr删除控制流语句
- 无法在windows控制台中为C++程序提供必要的输入
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- 在一个读写器队列中,我可以用volatile替换原子吗
- 用符号版本替换对函数的所有调用
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 替换基于地图的所有引用
- 按平均值替换数组中的元素
- 控制到达非空函数clang(-Wreturn-type)的末尾
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 查找 GCD:并非所有控制路径都返回值
- 通过 API 控制 DJI 相机
- 初始化 std::vector 替换为单大括号而不是双大括号
- 禁止在控制台上记录谷神星
- linux浮点控制87替换