!*********************************************************************************************************************************** ! ! M 4 4 D E T _ M A I N ! ! Program: M44DET_MAIN ! ! Programmer: David G. Simpson ! NASA Goddard Space Flight Center ! Greenbelt, Maryland 20771 ! ! Date: February 6, 2009 ! ! Language: Fortran-90 ! ! Version: 1.00a ! ! Description: This program is a short "driver" to call function M44DET, which computes the determinant a 4x4 matrix. ! ! Files: Source files: ! ! m44det.f90 Main program ! !*********************************************************************************************************************************** PROGRAM M44DET_MAIN IMPLICIT NONE INTEGER :: I, J DOUBLE PRECISION, DIMENSION(4,4) :: MAT DOUBLE PRECISION :: DET DOUBLE PRECISION :: M44DET !----------------------------------------------------------------------------------------------------------------------------------- ! ! Get user input. ! WRITE (UNIT=*, FMT='(/A/)') ' Enter matrix:' DO I = 1, 4 DO J = 1, 4 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 = M44DET (MAT) ! ! Print the result. ! WRITE (UNIT=*, FMT='(/A,ES25.15)') ' Det = ', DET STOP END PROGRAM M44DET_MAIN !*********************************************************************************************************************************** ! M44DET - Compute the determinant of a 4x4 matrix. !*********************************************************************************************************************************** FUNCTION M44DET (A) RESULT (DET) IMPLICIT NONE DOUBLE PRECISION, DIMENSION(4,4), INTENT(IN) :: A DOUBLE PRECISION :: DET DET = A(1,1)*(A(2,2)*(A(3,3)*A(4,4)-A(3,4)*A(4,3))+A(2,3)*(A(3,4)*A(4,2)-A(3,2)*A(4,4))+A(2,4)*(A(3,2)*A(4,3)- & A(3,3)*A(4,2)))-A(1,2)*(A(2,1)*(A(3,3)*A(4,4)-A(3,4)*A(4,3))+A(2,3)*(A(3,4)*A(4,1)-A(3,1)*A(4,4))+ & A(2,4)*(A(3,1)*A(4,3)-A(3,3)*A(4,1)))+A(1,3)*(A(2,1)*(A(3,2)*A(4,4)-A(3,4)*A(4,2))+A(2,2)*(A(3,4)*A(4,1)- & A(3,1)*A(4,4))+A(2,4)*(A(3,1)*A(4,2)-A(3,2)*A(4,1)))-A(1,4)*(A(2,1)*(A(3,2)*A(4,3)-A(3,3)*A(4,2))+ & A(2,2)*(A(3,3)*A(4,1)-A(3,1)*A(4,3))+A(2,3)*(A(3,1)*A(4,2)-A(3,2)*A(4,1))) RETURN END FUNCTION M44DET