Sintaxis error in PGf90

Hello,
I have been trying to re-compile a scientific package, previus compiled in other computer with ifort. There is a “syntax error” in this 3 lines :


39 real(kind=pcal) :: xl,aw,tl,fr1,fr2


43 zero = real(0.0q0,pcal)
44 one = real(1.0q0,pcal)
45
46 pi = real(4*atan(1.0q0),pcal)



[…]%pgf90 -O2 -tp istanbul-64 -c axitra.f90
PGF90-S-0034-Syntax error at or near identifier q0 (axitra.f90: 43)
PGF90-S-0034-Syntax error at or near identifier q0 (axitra.f90: 44)
PGF90-S-0034-Syntax error at or near identifier q0 (axitra.f90: 46)
make: *** [axitra] Error 2

Any idea ?

I think the issue is that 1.0q0 is a quad-precision real (aka 16-byte reals). Unfortunately, PGI doesn’t support quad precision, so I’m guessing the compiler can’t even create a 1.0q0 even if it tried. (Even if pcal is say, single-precision, the compiler wouldn’t know how to cast one from a quad to a single since it doesn’t know about quad.)

To get around it, I’d probably convert all the q0 to d0 which means you’d have the “ultimate” precision of zero, one, pi, etc. at double. Of course, if you need quad precision, your only choice is to use Intel or another compiler than supports it.

Matt

thank you …

It seems weird that pgi doesn’t have support for quad precision …

thanks for your response… again