visual studio students composer compiler fortran gfortran intel-fortran

studio - Fortran inicialización de matriz 2D



intel fortran composer (1)

Vuelva a escribir la línea de declaración de matriz como:

REAL,DIMENSION(2,2) :: X = RESHAPE([1,2,3,4],[2,2])

La razón por la cual ifort lo compiló de otra manera es una implementación no estándar. Esta es una forma de inicializar matrices de rango superiores a 1.

El siguiente programa compila con ifort (versión 12) pero no con GFortran (hasta la versión 4.8):

PROGRAM TEST IMPLICIT NONE REAL,DIMENSION(2,2)::X=(/1,2,3,4/) WRITE(*,*) X END PROGRAM TEST

GFortran da el error

REAL,DIMENSION(2,2)::X=(/1,2,3,4/) 1 Error: Incompatible ranks 2 and 1 in assignment at (1)

Ifort compila el programa y da el resultado esperado. ¿Es esto un error en GFortran o Intel Fortran simplemente permite la inicialización de matriz no estándar?