------- Comment #3 from burnus at gcc dot gnu dot org 2007-12-20 14:04 ------- > Exponentation has a higher precedence than multiplication, so > 2.0**-3*5 <=> (2.0**(-3)) * 5
You forgot about the minus sign. You have: [constant][exponent][minus][constant][times][constant] and not [constant][exponent][level-1 expr][times][constant] (with level-1 expr = "([unary minus][constant])" Thus one can say: [times] comes before [minus] and thus: [2.0][exponent]([minus]([3][times][5]) but one can also claim that the exponent comes first and the user probably meant an unary [minus]: ([2.0][exponent]([minus][3]))[times][5] a) is what intel does (without -stand f03) b) is what gfortran does (without -std=f2003) I cannot find exactly where it is forbidden, but it boils down that expression operator expression is allowed and expression operator operator expression is not. Also all compilers agree that it is non-standard Fortran. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34536