gpt4 book ai didi

c++ - 将一个值从 fortran 传输到 C++,以便它通过共享内存在 C++ 中显示为 numeric_limits

转载 作者:行者123 更新时间:2023-11-30 02:58:56 25 4
gpt4 key购买 nike

我需要将一个数字从 fortran 传输到 C++,以便当它在 C++ 中读取时,它被视为 numeric_limits::quiet_nan()。我们在 Fortran 端使用 Salford/Intel 编译器,在 C++ 端使用 VS2010,使用 Windows 中的共享内存。

任何想法,詹姆斯

最佳答案

Fortran 2003 标准定义了一个内部模块 ieee_arithmetic,其中包含除其他外 的派生类型的定义,称为 ieee_class_type。同一个模块还定义了一堆该类型的命名常量,其中一个命名常量的名称是 ieee_quiet_nan

ieee_arithmetic 还定义了一个函数 ieee_value,它有两个参数;其中第一个(称为 x)是实数,第二个(称为 class)采用 ieee_class_type 类型的值,例如 ieee_quiet_nan 因此函数调用 ieee_value(x,ieee_quiet_nan) 将返回与 x 相同类型和类型的 IEEE quiet NaN。

请注意,此函数仅在函数调用 ieee_support_nan(x) 返回 .true. 时有效。 Fortran 处理器不需要支持 IEEE 算术的所有功能,为了可移植性,最好先检查您要使用的功能。

因此,我猜想,如果您的 Fortran 和 C++ 程序正在共享内存,那么像这样的 Fortran 语句

y = ieee_value(x,ieee_quiet_nan)

会将位放入名称 y 指定的位置,您的 C++ 程序会将其理解为一个安静的 NaN。

编辑

如果像 Vladimir F 告诉我们的那样,Salford 的 Fortran 缺少 ieee_arithmetic,我想您将不得不求助于 Fortran 的位运算工具。在 C++ 中用你想要的位数声明一个整数变量,找出安静 NaN 的有效位模式是什么,那么它应该是飞机航行。

关于c++ - 将一个值从 fortran 传输到 C++,以便它通过共享内存在 C++ 中显示为 numeric_limits<float>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13364978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com