RosettaCodeData/Task/Matrix-exponentiation-operator/ERRE/matrix-exponentiation-operator.erre
2016-12-05 23:44:36 +01:00

53 lines
772 B
Text

PROGRAM MAT_PROD
!$MATRIX
!-----------------
! calculate A[]^N
!-----------------
CONST ORDER=1
DIM A[1,1],B[1,1],ANS[1,1]
BEGIN
DATA(3,2,2,1)
DATA(10) ! integer power only
FOR I=0 TO ORDER DO
FOR J=0 TO ORDER DO
READ(A[I,J])
END FOR
END FOR
READ(M) N=M-1
IF N=0 THEN ! A[]^0=matrice identit…
for I=0 TO ORDER DO
B[I,I]=1
END FOR
ELSE
B[]=A[]
FOR Z=1 TO N DO
ANS[]=0
FOR I=0 TO ORDER DO
FOR J=0 TO ORDER DO
FOR K=0 TO ORDER DO
ANS[I,J]=ANS[I,J]+(A[I,K]*B[K,J])
END FOR
END FOR
END FOR
B[]=ANS[]
END FOR
END IF
! print answer
FOR I=0 TO ORDER DO
FOR J=0 TO ORDER DO
PRINT(B[I,J],)
END FOR
PRINT
END FOR
END PROGRAM