C FUNCTION DETERM.F
C
C SOURCE
C   BEVINGTON, PAGE 294.
C
C PURPOSE
C   CALCULATE THE DETERMINANT OF A SQUARE MATRIX
C
C USAGE 
C   DET = DETERM (ARRAY, NORDER)
C
C DESCRIPTION OF PARAMETERS
C   ARRAY  - MATRIX
C   NORDER - ORDER OF DETERMINANT (DEGREE OF MATRIX)
C
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED 
C   NONE
C
C COMMENTS
C   THIS SUBPROGRAM DESTROYS THE INPUT MATRIX ARRAY
C   DIMENSION STATEMENT VALID FOR NORDER UP TO 10
C
    	double precision FUNCTION DETERM (ARRAY,NORDER)
	    implicit double precision (A-H,O-Z)
c        DOUBLE PRECISION ARRAY,SAVE
	DIMENSION ARRAY(10,10)
C
10	DETERM=1.0d0
11	DO 50 K=1,NORDER
C
C INTERCHANGE COLUMNS IF DIAGONAL ELEMENT IS ZERO
C
	IF (ARRAY(K,K)) 41,21,41
21	DO 23 J=K,NORDER
	IF (ARRAY(K,J)) 31,23,31
23	CONTINUE
	DETERM=0.0d0
	GOTO 60 
31	DO 34 I=K,NORDER
	SAVE=ARRAY(I,J) 
	ARRAY(I,J)=ARRAY(I,K)
34	ARRAY(I,K)=SAVE 
	DETERM=-DETERM
C
C SUBTRACT ROW K FROM LOWER ROWS TO GET DIAGONAL MATRIX 
C
41	DETERM=DETERM*ARRAY(K,K)
	IF (K-NORDER) 43,50,50
43	K1=K+1
	DO 46 I=K1,NORDER
	DO 46 J=K1,NORDER
46	ARRAY(I,J)=ARRAY(I,J)-ARRAY(I,K)*ARRAY(K,J)/ARRAY(K,K)
50	CONTINUE
60	RETURN
	END
