在fortran中:当用-fdefault-real-8编译时,CONJG(Z)是否与DCONJG(Z)等效?

时间:2015-07-28 13:49:46

标签: fortran gfortran

如果在现有代码中调用DCONJG(Z),其中Z被声明为COMPLEX*16。添加DCONJG标志后,CONJG调用是否可以替换为-fdefault-real-8

如果Z被定义为double complex,这仍然适用吗?

在现有代码中double complexcomplex*16都用于提高精度(并且应该是等效的)。应用-fdefault-real-8标记后,double complex是否映射到complex*32

1 个答案:

答案 0 :(得分:1)

  

当-fdefault-real-8时,DCONJG呼叫是否可以用CONJG替换   标志被添加?

是的,标准conjg将返回与其参数相同类型的值,而不管编译设置如何。内部函数的特定于类型的变体,例如dconjg,通常被弃用,因为它们并不是无关紧要的。

  

如果Z被定义为双复数,这仍然适用吗?

  

并且是双复数,相当于应用了标志的复数   (双精度和真实相同)?

如果你的意思是那个编译标志也会影响复数值的实部和虚部的大小,那么是的,确实如此。

修改

我不知道gfortran对于非标准(从不是,不是,也可能永远不会是)类型规范complex*32的含义。但编译器的记录相当充分,所以自己有一个侦察员。就个人而言,我坚持使用指定复数类型的标准方法之一,在这种情况下,标准会向您保证指定的类型,例如: complex(real64),表示复数的每个组成部分的类型。