Determinant and permanent: Difference between revisions

→‎{{header|Simula}}: reduced overspecification; conditional index instead of four-branch-if-else in firstMINOR
(→‎{{header|Simula}}: reduced overspecification; conditional index instead of four-branch-if-else in firstMINOR)
Line 1,978:
BEGIN
 
INTEGER PROCEDURE LENGTH(A); REAL ARRAY A;
LENGTH := UPPERBOUND(A, 1) - LOWERBOUND(A, 1) + 1;
 
PROCEDURE! MINOR(A,Set X,MAT Y,to MAT);the REALfirst ARRAYminor of A, MAT;dropping INTEGERrow X, and column Y ;
PROCEDURE MINOR(A, X, Y, MAT); ARRAY A, MAT; INTEGER X, Y;
BEGIN
INTEGER I, J, rowA, M; M := LENGTH(A) - 1; ! not a constant;
FOR I := 1 STEP 1 UNTIL M DO BEGIN
rowA ELSE:= IF I < X ANDTHEN JI >=ELSE YI THEN+ 1;
FOR J := 1 STEP 1 UNTIL M DO
MAT(I, J) := A(IrowA, +IF 1,J < Y THEN J else J + 1);
BEGIN
IF I < X AND J < Y THENEND
MAT(I, J) := A(I, J)
ELSE IF I >= X AND J < Y THEN
MAT(I, J) := A(I + 1, J)
ELSE IF I < X AND J >= Y THEN
MAT(I, J) := A(I, J + 1)
ELSE ! I > X AND J > Y ;
MAT(I, J) := A(I + 1, J + 1)
END
END MINOR;
 
Line 2,045 ⟶ 2,039:
INTEGER I, J;
 
FOR I := 1 STEP 1 UNTIL SIZE DO BEGIN
! may be need here: INIMAGE;
FOR J := 1 STEP 1 UNTIL SIZE DO
A(I, J) := INREAL;
BEGINEND;
 
OUTTEXT("DETERMINANT ... : "); OUTREAL(DET (A), 10, 20); OUTIMAGE;
OUTTEXT("PERMANENT ..... : "); OUTREAL(PERM(A), 10, 20); OUTIMAGE;
END
 
!COMMENT NOTE THAT THE FIRST INPUT IS THE SIZE OF THE MATRIX., FOR EXAMPLE:
! FOR EXAMPLE:
 
COMMENT
! 2
! 1 2
Line 2,073 ⟶ 2,066:
! PERMANENT: 6778800.0 ;
 
END</lang>
</lang>
Input:
<pre>
Anonymous user