FFTPack中ZFFTB函数的数组传递问题
编译一个软件包里的程序遇到了一个问题,程序在gfortran编译器上可以编译,但是在IVF上编译有问题。主要问题是实参和虚参类型不一致,实参是双精度,虚参是单精度,暂时没想到好的办法解决这个问题,请教一下大家。
下面是部分程序截图,提示939行,wase矩阵实参虚参类型不一致,应该是wase(iw2)出现问题。
把虚参定义一下就好了 本帖最后由 wenqiang0606 于 2018-9-7 09:46 编辑
fcode 发表于 2018-9-7 09:37
把虚参定义一下就好了
虚参在子函数中还要传递给其他参数,后面这个58行也类似。
这些代码是 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 即可。 fcode 发表于 2018-9-7 10:03
这些代码是 Numerical Analysis Library 这个函数库里的
(见 https://people.sc.fsu.edu/~jburkardt/f_src ...
好的,我再看一下,多谢 wenqiang0606 发表于 2018-9-7 10:31
好的,我再看一下,多谢
1. "实参和虚参类型不一致" 是老Fortran的"技巧"
2. 如果牽涉廣泛, 不建議你revise這樣的用法
3. "type不一致"的各個程式, 分開(王不見王)compile, 再link, 就不會有問題了
chiangtp 发表于 2018-9-26 00:37
1. "实参和虚参类型不一致" 是老Fortran的"技巧"
2. 如果牽涉廣泛, 不建議你revise這樣的用法
3. "type不 ...
对,是fortran77写的一个程序,那就是在命令行下编译然后再链接成库函数是吗?谢谢
页:
[1]