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?