```      SUBROUTINE LUMSIS(N)

IMPLICIT REAL*8 (A-H,O-Z)
C-----------------------------------------------------------------------
C PURPOSE: Finds the solutions of a set of linear equations
C
C N- a number of equations inthe set + 1
C AK(I,J)-coefficients in equations
C BK(I) - right side terms of equations
C When solutions are found they will be written into array BK(I) in
C the common block
C
C-----------------------------------------------------------------------
C
C ADAS305 version. Developed from JETSHP.STARK.FORT (H P Summers).
C
C VERSION  : 1.1
C DATE     : 24-02-2005
C MODIFIED : Martin O'Mullane
C             - First version.
C
C VERSION  : 1.2
C DATE     : 16-05-2007
C MODIFIED : Allan Whiteford
C             - Updated comments as part of subroutine documentation
C               procedure.
C
C----------------------------------------------------------------------
COMMON /CX/ AK(65,65),BK(65)
C*********
C**   EXPANSION OF MATRIX AK
C*********

DO 200 I=1,N-1
AK(N,I)=FLOAT(I)
200   AK(I,N)=BK(I)

C*****   MAX OF MAIN MINORS

DO 202 K=1,N-2
AMAX=AK(K,K)
IMAX=K
JMAX=K
DO 206 I=K,N-1
DO 206 J=K,N-1
IF (DABS(AMAX).GE.DABS(AK(I,J))) GOTO 206
AMAX=AK(I,J)
JMAX=J
IMAX=I
206   CONTINUE

C***** LINES INTERCHANGE

IF(IMAX.EQ.K) GOTO 210
DO 212 J1=1,N
AB=AK(IMAX,J1)
AK(IMAX,J1)=AK(K,J1)
212   AK(K,J1)=AB

C***** ROWS INTERCHANGE

210   IF(JMAX.EQ.K) GOTO 202
DO 216 I1=1,N
AB=AK(I1,JMAX)
AK(I1,JMAX)=AK(I1,K)
216   AK(I1,K)=AB
202   CONTINUE

C******* FIRST FORMATION BK

DO 218 I=1,N-1
218   BK(I)=AK(I,N)

C*****
C****   LU EXPANSION
C*********

DO 120 K=1,N-2
AB=1.E00/AK(K,K)
DO 122 J=K,N-2
122   AK(K,J+1)=AK(K,J+1)*AB

DO 120 J=K+1,N-1
DO 120 I=K+1,N-1
120   AK(I,J)=AK(I,J)-AK(I,K)*AK(K,J)

C**** SOLUTION OF THE SYSTEM

BK(1)=BK(1)/AK(1,1)
DO 105 I=2,N-1
DO 106 J=1,I-1
106   BK(I)=BK(I)-AK(I,J)*BK(J)
105   BK(I)=BK(I)/AK(I,I)

DO 107 I=N-2,1,-1
DO 107 J=I+1,N-1
107   BK(I)=BK(I)-AK(I,J)*BK(J)

C*******     SECOND FORMATION OF BK

DO 240 J=1,N-1
DO 241 IB=1,N-1
IF(IB.NE.IDINT(DABS(AK(N,J)))) GOTO 241
II=IB
GOTO 240
241   CONTINUE
240   AK(II,N)=BK(J)
DO 242 J=1,N-1
242   BK(J)=AK(J,N)
RETURN
END
INTEGER             N
```