Fortran Coder

标题: cdexp 指数函数使用报错 [打印本页]

作者: lili    时间: 2023-2-24 20:26
标题: cdexp 指数函数使用报错
使用指数函数的时候 数据类型报错了,有同学知道原因吗求助

QQ图片20230224202250.png (19.5 KB, 下载次数: 160)

QQ图片20230224202250.png

QQ图片20230224202306.png (3.25 KB, 下载次数: 155)

QQ图片20230224202306.png

作者: fcode    时间: 2023-2-24 21:08
因为 cdexp 只能用 complex(kind=8) 类型的输入。注意 complex*8 等效于 complex(kind=4)

其实,直接改成 exp 即可。
详解 http://whyd.w.fcode.cn
作者: lili    时间: 2023-2-24 21:21
EXP是可以算虚数吗请问
我们用的是complex16
作者: fcode    时间: 2023-2-24 21:24
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
大佬,我们用的是complex*16,我们用CDEXP的时候显示数据类型错误是为啥呀,里面有一个data fai ,和这个有关系吗        DATA THETA,FAI/0.314159260D0,1.5707963D0/

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

作者: lili    时间: 2023-2-25 10:00
这是我们错误行的代码,和对应变量的定义,求大佬指点
        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
fcode 发表于 2023-2-24 23:06
1. 试试直接改为 exp
2. 给出错误行代码,及对应变量的定义
3. 和 data fai 无关

我用EXP算了一下,可以出结果,但是因为我的e指数是复数,老师想让我用CDEXP算,这样应该会更准确,但是就会出现最开始我发帖的那种问题,不知道是为啥呢?
作者: fcode    时间: 2023-2-28 16:03
lili 发表于 2023-2-25 10:04
我用EXP算了一下,可以出结果,但是因为我的e指数是复数,老师想让我用CDEXP算,这样应该会更准确,但是 ...

请认真阅读 http://whyd.w.fcode.cn




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2