gpt4 book ai didi

fortran - 在Fortran中将逻辑类型转换为 double

转载 作者:行者123 更新时间:2023-12-04 13:23:34 29 4
gpt4 key购买 nike

我正在寻找一种将逻辑类型变量转换为在ifort和gfortran中都可以使用的实类型的防弹方法。以下内容适用于ifort,但不适用于gfortran:

logical :: a
real :: b
a = .true.
b = dble(a)

gfortran中抛出的错误是
b = dble(a)
1
Error: 'a' argument of 'dble' intrinsic at (1) must be a numeric type

显然,.true。应该映射到1.d0和.false。到0.d0。最好的方法是什么?

最佳答案

我不确定是否有执行此操作的内在工具。我不知道为什么ifort会接受这个,我的猜测是它是编译器特有的功能。

编辑:正如下面的https://stackoverflow.com/a/15057846/1624033中指出的那样,存在固有的合并函数,这正是这里所需要的。

为此的一个选择是创建自己的函数,特别是因为您希望这是防弹的。

我尚未对此进行测试,但是以下方法可能会起作用:

elemental pure double precision function logic2dbl(a)
logical, intent(in) :: a

if (a) then
logic2dbl = 1.d0
else
logic2dbl = 0.d0
end if
end function logic2dbl

编辑:我根据以下建议将 元素添加到了函数声明中。我还为此功能添加了 ,因为它增加了在并行情况下使用此功能的额外功能,并且它是很好的文档。但是,这只是我的观点,没有必要。

关于fortran - 在Fortran中将逻辑类型转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057429/

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