11 #include "version.inc" 28 SUBROUTINE det3 (A, det)
32 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(3,3) :: A
33 DOUBLE PRECISION,
INTENT(OUT) :: det
35 det = a(1,1)*a(2,2)*a(3,3) + a(1,2)*a(2,3)*a(3,1) + a(1,3)*a(2,1)*a(2,3) &
36 - a(3,1)*a(2,2)*a(1,3) - a(3,2)*a(2,3)*a(1,1) - a(3,3)*a(2,1)*a(1,2)
40 SUBROUTINE inv3 (A, B)
44 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(3,3) :: A
45 DOUBLE PRECISION,
iNTENT(OUT),
DIMENSION(3,3) :: B
47 DOUBLE PRECISION :: detA;
51 IF (deta == 0.d0)
THEN 52 print *,
'QMOMK: Null determinant in matrix' 56 b(1,1) = (a(3,3)*a(2,2) - a(3,2)*a(2,3))/deta
57 b(1,2) = -(a(3,3)*a(1,2) - a(3,2)*a(1,3))/deta
58 b(1,3) = (a(2,3)*a(1,2) - a(2,2)*a(1,3))/deta
60 b(2,1) = -(a(3,3)*a(2,1) - a(3,1)*a(2,3))/deta
61 b(2,2) = (a(3,3)*a(1,1) - a(3,1)*a(1,3))/deta
62 b(2,3) = -(a(2,3)*a(1,1) - a(2,1)*a(1,3))/deta
64 b(3,1) = (a(3,2)*a(2,1) - a(3,1)*a(2,2))/deta
65 b(3,2) = -(a(3,2)*a(1,1) - a(3,1)*a(1,2))/deta
66 b(3,3) = (a(2,2)*a(1,1) - a(2,1)*a(1,2))/deta
69 SUBROUTINE diag3 (a, b, c, mat)
74 DOUBLE PRECISION,
INTENT(IN) :: a, b, c
75 DOUBLE PRECISION,
INTENT(OUT),
DIMENSION(3,3) :: mat
92 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(3,3) :: A
93 DOUBLE PRECISION,
INTENT(OUT),
DIMENSION(3,3) :: L
103 l(1,1) = sqrt(a(1,1))
104 IF (l(1,1) == 0.d0)
THEN 105 print *,
'Impossible to find Cholesky decomposition.' 108 l(2,1) = a(2,1)/l(1,1)
109 l(2,2) = sqrt(a(2,2) - (l(2,1))**2)
110 l(3,1) = a(3,1)/l(1,1)
112 IF (l(2,2) == 0.d0)
THEN 113 print *,
'Impossible to find Cholesky decomposition.' 116 l(3,2) = (a(3,2) - l(3,1)*l(2,1))/l(2,2)
117 l(3,3) = sqrt(a(3,3) - (l(3,1))**2 - (l(3,2))**2)
126 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(3,3) :: A
127 DOUBLE PRECISION,
INTENT(OUT),
DIMENSION(3,3) :: T
143 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(3,3) :: A
144 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(3,3) :: B
145 DOUBLE PRECISION,
INTENT(OUT),
DIMENSION(3,3) :: P
148 DOUBLE PRECISION ::sum
155 sum = sum + a(i,k)*b(k,j)