LCOV - code coverage report
Current view: top level - math - inv3.f90 (source / functions) Hit Total Coverage
Test: FLEUR test coverage Lines: 12 24 50.0 %
Date: 2024-04-27 04:44:07 Functions: 1 2 50.0 %

          Line data    Source code
       1             : MODULE m_inv3
       2             :   !-----------------------------------
       3             :   !     invert 3x3 matrix
       4             :   !-----------------------------------
       5             : 
       6             :   PRIVATE
       7             : 
       8             :   INTERFACE inv3
       9             :      MODULE PROCEDURE inv3i,inv3r
      10             :   END INTERFACE inv3
      11             : 
      12             :   PUBLIC :: inv3
      13             : 
      14             : CONTAINS
      15        1056 :   SUBROUTINE inv3r(a,b,d)
      16             : 
      17             :     IMPLICIT NONE
      18             :     !     ..
      19             :     !     .. Arguments ..
      20             :     REAL, INTENT (IN)  :: a(3,3)
      21             :     REAL, INTENT (OUT) :: b(3,3)  ! inverse matrix
      22             :     REAL, INTENT (OUT) :: d       ! determinant
      23             :     !     ..
      24             :     d = a(1,1)*a(2,2)*a(3,3) + a(1,2)*a(2,3)*a(3,1) + &
      25             :          a(2,1)*a(3,2)*a(1,3) - a(1,3)*a(2,2)*a(3,1) - &
      26        1056 :          a(2,3)*a(3,2)*a(1,1) - a(2,1)*a(1,2)*a(3,3)
      27        1056 :     b(1,1) = (a(2,2)*a(3,3)-a(2,3)*a(3,2))/d
      28        1056 :     b(1,2) = (a(1,3)*a(3,2)-a(1,2)*a(3,3))/d
      29        1056 :     b(1,3) = (a(1,2)*a(2,3)-a(2,2)*a(1,3))/d
      30        1056 :     b(2,1) = (a(2,3)*a(3,1)-a(2,1)*a(3,3))/d
      31        1056 :     b(2,2) = (a(1,1)*a(3,3)-a(3,1)*a(1,3))/d
      32        1056 :     b(2,3) = (a(1,3)*a(2,1)-a(1,1)*a(2,3))/d
      33        1056 :     b(3,1) = (a(2,1)*a(3,2)-a(2,2)*a(3,1))/d
      34        1056 :     b(3,2) = (a(1,2)*a(3,1)-a(1,1)*a(3,2))/d
      35        1056 :     b(3,3) = (a(1,1)*a(2,2)-a(1,2)*a(2,1))/d
      36             : 
      37        1056 :   END SUBROUTINE inv3r
      38             : 
      39           0 :   SUBROUTINE inv3i(a,b,d)
      40             : 
      41             :     IMPLICIT NONE
      42             :     !     ..
      43             :     !     .. Arguments ..
      44             :     INTEGER, INTENT (IN)  :: a(3,3)
      45             :     INTEGER, INTENT (OUT) :: b(3,3)  ! inverse matrix
      46             :     INTEGER, INTENT (OUT) :: d       ! determinant
      47             :     !     ..
      48             :     d = a(1,1)*a(2,2)*a(3,3) + a(1,2)*a(2,3)*a(3,1) +&
      49             :          a(2,1)*a(3,2)*a(1,3) - a(1,3)*a(2,2)*a(3,1) -&
      50           0 :          a(2,3)*a(3,2)*a(1,1) - a(2,1)*a(1,2)*a(3,3)
      51           0 :     b(1,1) = (a(2,2)*a(3,3)-a(2,3)*a(3,2))/d
      52           0 :     b(1,2) = (a(1,3)*a(3,2)-a(1,2)*a(3,3))/d
      53           0 :     b(1,3) = (a(1,2)*a(2,3)-a(2,2)*a(1,3))/d
      54           0 :     b(2,1) = (a(2,3)*a(3,1)-a(2,1)*a(3,3))/d
      55           0 :     b(2,2) = (a(1,1)*a(3,3)-a(3,1)*a(1,3))/d
      56           0 :     b(2,3) = (a(1,3)*a(2,1)-a(1,1)*a(2,3))/d
      57           0 :     b(3,1) = (a(2,1)*a(3,2)-a(2,2)*a(3,1))/d
      58           0 :     b(3,2) = (a(1,2)*a(3,1)-a(1,1)*a(3,2))/d
      59           0 :     b(3,3) = (a(1,1)*a(2,2)-a(1,2)*a(2,1))/d
      60             : 
      61           0 :   END SUBROUTINE inv3i
      62             : END MODULE m_inv3

Generated by: LCOV version 1.14