!*********************************************************************************************************************************** ! ! M 5 5 D E T _ M A I N ! ! Program: M55DET_MAIN ! ! Programmer: David G. Simpson ! NASA Goddard Space Flight Center ! Greenbelt, Maryland 20771 ! ! Date: February 7, 2009 ! ! Language: Fortran-90 ! ! Version: 1.00a ! ! Description: This program is a short "driver" to call function M55DET, which computes the determinant a 5x5 matrix. ! ! Files: Source files: ! ! m55det.f90 Main program ! !*********************************************************************************************************************************** PROGRAM M55DET_MAIN IMPLICIT NONE INTEGER :: I, J DOUBLE PRECISION, DIMENSION(5,5) :: MAT DOUBLE PRECISION :: DET DOUBLE PRECISION :: M55DET !----------------------------------------------------------------------------------------------------------------------------------- ! ! Get user input. ! WRITE (UNIT=*, FMT='(/A/)') ' Enter matrix:' DO I = 1, 5 DO J = 1, 5 WRITE (UNIT=*, FMT='(A,I1,1H,,I1,A)', ADVANCE='NO') ' A(', I, J, ') = ' READ (UNIT=*, FMT=*) MAT(I,J) END DO END DO ! ! Compute the determinant of the input matrix. ! DET = M55DET (MAT) ! ! Print the result. ! WRITE (UNIT=*, FMT='(/A,ES25.15)') ' Det = ', DET STOP END PROGRAM M55DET_MAIN !*********************************************************************************************************************************** ! M55DET - Compute the determinant of a 5x5 matrix. !*********************************************************************************************************************************** FUNCTION M55DET (A) RESULT (DET) IMPLICIT NONE DOUBLE PRECISION, DIMENSION(5,5), INTENT(IN) :: A DOUBLE PRECISION :: DET, A11, A12, A13, A14, A15, A21, A22, A23, A24, & A25, A31, A32, A33, A34, A35, A41, A42, A43, A44, A45, & A51, A52, A53, A54, A55 A11=A(1,1); A12=A(1,2); A13=A(1,3); A14=A(1,4); A15=A(1,5) A21=A(2,1); A22=A(2,2); A23=A(2,3); A24=A(2,4); A25=A(2,5) A31=A(3,1); A32=A(3,2); A33=A(3,3); A34=A(3,4); A35=A(3,5) A41=A(4,1); A42=A(4,2); A43=A(4,3); A44=A(4,4); A45=A(4,5) A51=A(5,1); A52=A(5,2); A53=A(5,3); A54=A(5,4); A55=A(5,5) DET = A15*A24*A33*A42*A51-A14*A25*A33*A42*A51-A15*A23*A34*A42*A51+ & A13*A25*A34*A42*A51+A14*A23*A35*A42*A51-A13*A24*A35*A42*A51- & A15*A24*A32*A43*A51+A14*A25*A32*A43*A51+A15*A22*A34*A43*A51- & A12*A25*A34*A43*A51-A14*A22*A35*A43*A51+A12*A24*A35*A43*A51+ & A15*A23*A32*A44*A51-A13*A25*A32*A44*A51-A15*A22*A33*A44*A51+ & A12*A25*A33*A44*A51+A13*A22*A35*A44*A51-A12*A23*A35*A44*A51- & A14*A23*A32*A45*A51+A13*A24*A32*A45*A51+A14*A22*A33*A45*A51- & A12*A24*A33*A45*A51-A13*A22*A34*A45*A51+A12*A23*A34*A45*A51- & A15*A24*A33*A41*A52+A14*A25*A33*A41*A52+A15*A23*A34*A41*A52- & A13*A25*A34*A41*A52-A14*A23*A35*A41*A52+A13*A24*A35*A41*A52+ & A15*A24*A31*A43*A52-A14*A25*A31*A43*A52-A15*A21*A34*A43*A52+ & A11*A25*A34*A43*A52+A14*A21*A35*A43*A52-A11*A24*A35*A43*A52- & A15*A23*A31*A44*A52+A13*A25*A31*A44*A52+A15*A21*A33*A44*A52- & A11*A25*A33*A44*A52-A13*A21*A35*A44*A52+A11*A23*A35*A44*A52+ & A14*A23*A31*A45*A52-A13*A24*A31*A45*A52-A14*A21*A33*A45*A52+ & A11*A24*A33*A45*A52+A13*A21*A34*A45*A52-A11*A23*A34*A45*A52+ & A15*A24*A32*A41*A53-A14*A25*A32*A41*A53-A15*A22*A34*A41*A53+ & A12*A25*A34*A41*A53+A14*A22*A35*A41*A53-A12*A24*A35*A41*A53- & A15*A24*A31*A42*A53+A14*A25*A31*A42*A53+A15*A21*A34*A42*A53- & A11*A25*A34*A42*A53-A14*A21*A35*A42*A53+A11*A24*A35*A42*A53+ & A15*A22*A31*A44*A53-A12*A25*A31*A44*A53-A15*A21*A32*A44*A53+ & A11*A25*A32*A44*A53+A12*A21*A35*A44*A53-A11*A22*A35*A44*A53- & A14*A22*A31*A45*A53+A12*A24*A31*A45*A53+A14*A21*A32*A45*A53- & A11*A24*A32*A45*A53-A12*A21*A34*A45*A53+A11*A22*A34*A45*A53- & A15*A23*A32*A41*A54+A13*A25*A32*A41*A54+A15*A22*A33*A41*A54- & A12*A25*A33*A41*A54-A13*A22*A35*A41*A54+A12*A23*A35*A41*A54+ & A15*A23*A31*A42*A54-A13*A25*A31*A42*A54-A15*A21*A33*A42*A54+ & A11*A25*A33*A42*A54+A13*A21*A35*A42*A54-A11*A23*A35*A42*A54- & A15*A22*A31*A43*A54+A12*A25*A31*A43*A54+A15*A21*A32*A43*A54- & A11*A25*A32*A43*A54-A12*A21*A35*A43*A54+A11*A22*A35*A43*A54+ & A13*A22*A31*A45*A54-A12*A23*A31*A45*A54-A13*A21*A32*A45*A54+ & A11*A23*A32*A45*A54+A12*A21*A33*A45*A54-A11*A22*A33*A45*A54+ & A14*A23*A32*A41*A55-A13*A24*A32*A41*A55-A14*A22*A33*A41*A55+ & A12*A24*A33*A41*A55+A13*A22*A34*A41*A55-A12*A23*A34*A41*A55- & A14*A23*A31*A42*A55+A13*A24*A31*A42*A55+A14*A21*A33*A42*A55- & A11*A24*A33*A42*A55-A13*A21*A34*A42*A55+A11*A23*A34*A42*A55+ & A14*A22*A31*A43*A55-A12*A24*A31*A43*A55-A14*A21*A32*A43*A55+ & A11*A24*A32*A43*A55+A12*A21*A34*A43*A55-A11*A22*A34*A43*A55- & A13*A22*A31*A44*A55+A12*A23*A31*A44*A55+A13*A21*A32*A44*A55- & A11*A23*A32*A44*A55-A12*A21*A33*A44*A55+A11*A22*A33*A44*A55 RETURN END FUNCTION M55DET