J'ai essayé de compiler un programme et j'ai rencontré un problème simple. Cependant, je n'ai pas encore réussi à le résoudre. Toutes les idées sont très appréciées. Le programme ressemble à ce qui suit,Problème de compilation de gfortran avec une variable complexe double
code:
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 ((rang 0)) doit stocker le maximum de zy
et maxabs
. Simple, non?
Je tente de compiler ce programme avec gfortran et d'obtenir l'erreur suivante. Je ne comprends pas pourquoi le compilateur se plaint que maxabs
devrait être de rang 1 et non de rang 0. À ma compréhension, zabs
est la bonne fonction à utiliser avec un nombre complexe double précision.
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
Oh! Je vous remercie! J'ai dû être aveugle comme une chauve-souris pour ne pas voir l'index. Merci encore! – januka