lili 发表于 2023-2-24 20:26:00

cdexp 指数函数使用报错

使用指数函数的时候 数据类型报错了,有同学知道原因吗求助

fcode 发表于 2023-2-24 21:08:25

因为 cdexp 只能用 complex(kind=8) 类型的输入。注意 complex*8 等效于 complex(kind=4)

其实,直接改成 exp 即可。
详解 http://whyd.w.fcode.cn

lili 发表于 2023-2-24 21:21:13

EXP是可以算虚数吗请问
我们用的是complex16

fcode 发表于 2023-2-24 21:24:31

lili 发表于 2023-2-24 21:21
EXP是可以算虚数吗请问
我们用的是complex16

可以,只要你传入的是 complex 类型。
注意, complex*16 和 complex(16) 或 complex(kind=16) 不是一回事。
complex*16 等效于 complex(8) 或 complex(kind=8)
而 cdexp 只适合于 complex(8)

如果是 complex(16) ,需要用 cqexp。

其实,只要写 exp 就行了。详解上面的链接。

lili 发表于 2023-2-24 21:39:34

大佬,我们用的是complex*16,我们用CDEXP的时候显示数据类型错误是为啥呀,里面有一个data fai ,和这个有关系吗        DATA THETA,FAI/0.314159260D0,1.5707963D0/

fcode 发表于 2023-2-24 23:06:14

1. 试试直接改为 exp
2. 给出错误行代码,及对应变量的定义
3. 和 data fai 无关

lili 发表于 2023-2-25 10:00:27

这是我们错误行的代码,和对应变量的定义,求大佬指点
        DO I=1,NNJ-1          
        A(I,I+1+NNJ)=-2*TSO*cos(0.50D0*FAI)*SIN(THETA1)
        &*EXP(-COMI*(I*FAI-0.50D0*FAI))

        COMPLEX*16                   A(NNJT,NNJT)

lili 发表于 2023-2-25 10:04:51

fcode 发表于 2023-2-24 23:06
1. 试试直接改为 exp
2. 给出错误行代码,及对应变量的定义
3. 和 data fai 无关


我用EXP算了一下,可以出结果,但是因为我的e指数是复数,老师想让我用CDEXP算,这样应该会更准确,但是就会出现最开始我发帖的那种问题,不知道是为啥呢?

fcode 发表于 2023-2-28 16:03:24

lili 发表于 2023-2-25 10:04
我用EXP算了一下,可以出结果,但是因为我的e指数是复数,老师想让我用CDEXP算,这样应该会更准确,但是 ...

请认真阅读 http://whyd.w.fcode.cn
页: [1]
查看完整版本: cdexp 指数函数使用报错