wenqiang0606 发表于 2018-9-7 09:14:43

FFTPack中ZFFTB函数的数组传递问题

编译一个软件包里的程序遇到了一个问题,程序在gfortran编译器上可以编译,但是在IVF上编译有问题。
主要问题是实参和虚参类型不一致,实参是双精度,虚参是单精度,暂时没想到好的办法解决这个问题,请教一下大家。
下面是部分程序截图,提示939行,wase矩阵实参虚参类型不一致,应该是wase(iw2)出现问题。




fcode 发表于 2018-9-7 09:37:38

把虚参定义一下就好了

wenqiang0606 发表于 2018-9-7 09:43:50

本帖最后由 wenqiang0606 于 2018-9-7 09:46 编辑

fcode 发表于 2018-9-7 09:37
把虚参定义一下就好了
虚参在子函数中还要传递给其他参数,后面这个58行也类似。





fcode 发表于 2018-9-7 10:03:37

这些代码是 Numerical Analysis Library 这个函数库里的
(见 https://people.sc.fsu.edu/~jburkardt/f_src/nms/nms.html)

原来的代码中有以下注释:
!   WSAVE   A REAL WORK ARRAY WHICH MUST BE DIMENSIONED AT LEAST 4N+1
!             IN THE PROGRAM THAT CALLS CFFTF. THE WSAVE ARRAY MUST BE
!             INITIALIZED BY CALLING SUBROUTINE CFFTI(N,WSAVE) AND A
!             DIFFERENT WSAVE ARRAY MUST BE USED FOR EACH DIFFERENT
!             VALUE OF N. THIS INITIALIZATION DOES NOT HAVE TO BE
!             REPEATED SO LONG AS N REMAINS UNCHANGED THUS SUBSEQUENT
!             TRANSFORMS CAN BE OBTAINED FASTER THAN THE FIRST.
!             THE SAME WSAVE ARRAY CAN BE USED BY CFFTF AND CFFTB.

这个 wsave 是用来存储 FFT 的交叉顺序,所以应该是整数类型。
用 ZFFTI 获得值以后,可以供 ZFFTF 和 ZFFTB 使用。所以你只要把他们都定义为 integer 即可。

wenqiang0606 发表于 2018-9-7 10:31:46

fcode 发表于 2018-9-7 10:03
这些代码是 Numerical Analysis Library 这个函数库里的
(见 https://people.sc.fsu.edu/~jburkardt/f_src ...

好的,我再看一下,多谢

chiangtp 发表于 2018-9-26 00:37:43

wenqiang0606 发表于 2018-9-7 10:31
好的,我再看一下,多谢

1. "实参和虚参类型不一致" 是老Fortran的"技巧"
2. 如果牽涉廣泛, 不建議你revise這樣的用法
3. "type不一致"的各個程式, 分開(王不見王)compile, 再link, 就不會有問題了

wenqiang0606 发表于 2018-9-26 15:50:10

chiangtp 发表于 2018-9-26 00:37
1. "实参和虚参类型不一致" 是老Fortran的"技巧"
2. 如果牽涉廣泛, 不建議你revise這樣的用法
3. "type不 ...

对,是fortran77写的一个程序,那就是在命令行下编译然后再链接成库函数是吗?谢谢
页: [1]
查看完整版本: FFTPack中ZFFTB函数的数组传递问题