1
私はプログラムをコンパイルしようとしていて、簡単な問題に遭遇しました。しかし、私はまだそれを解決することができませんでした。どんなアイデアも非常に高く評価されています。プログラムは次のようになり、gfortranはdouble complex変数で問題をコンパイルします
コード:
subroutine rescal(zy,nvar)
integer nvar,i, nexponent
double complex zy(nvar)
double precision maxabs, scalfac
maxabs = 0.d0
do i = 1, nvar
maxabs = max(zabs(zy),maxabs)
enddo
maxabs((ランク0))zy
とmaxabs
の最大を格納する必要があります。シンプル、そう?
私はこのプログラムをgfortranでコンパイルしようとしましたが、次のエラーが発生しました。コンパイラがmaxabs
がランク1であり、ランク0ではないと不平を言っている理由は分かりません。私の理解では、zabs
は倍精度複素数で使用する正しい関数です。
gfortran -e -Ofast -ffixed-line-length-none -std=legacy -c -o rescal.o rescal.f
rescal.f:13.8:
maxabs = max(zabs(zy),maxabs)
1
Error: Incompatible ranks 0 and 1 in assignment at (1)
make: *** [rescal.o] Error 1
ああを持つことができます!ありがとうございました!私は指数を見ないようにバットとして盲目になったに違いない。再度、感謝します! – januka