aboutsummaryrefslogtreecommitdiff
path: root/src/slalib/mxm.f
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-03-04 21:21:30 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-03-04 21:21:30 -0500
commitd54fe7c1f704a63824c5bfa0ece65245572e9b27 (patch)
treeafc52015ffc2c74e0266653eecef1c8ef8ba5d91 /src/slalib/mxm.f
downloadcalfuse-d54fe7c1f704a63824c5bfa0ece65245572e9b27.tar.gz
Initial commit
Diffstat (limited to 'src/slalib/mxm.f')
-rw-r--r--src/slalib/mxm.f55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/slalib/mxm.f b/src/slalib/mxm.f
new file mode 100644
index 0000000..67ce113
--- /dev/null
+++ b/src/slalib/mxm.f
@@ -0,0 +1,55 @@
+ SUBROUTINE sla_MXM (A, B, C)
+*+
+* - - - -
+* M X M
+* - - - -
+*
+* Product of two 3x3 matrices:
+* matrix C = matrix A x matrix B
+*
+* (single precision)
+*
+* Given:
+* A real(3,3) matrix
+* B real(3,3) matrix
+*
+* Returned:
+* C real(3,3) matrix result
+*
+* To comply with the ANSI Fortran 77 standard, A, B and C must
+* be different arrays. However, the routine is coded so as to
+* work properly on the VAX and many other systems even if this
+* rule is violated.
+*
+* P.T.Wallace Starlink 5 April 1990
+*
+* Copyright (C) 1995 Rutherford Appleton Laboratory
+*-
+
+ IMPLICIT NONE
+
+ REAL A(3,3),B(3,3),C(3,3)
+
+ INTEGER I,J,K
+ REAL W,WM(3,3)
+
+
+* Multiply into scratch matrix
+ DO I=1,3
+ DO J=1,3
+ W=0.0
+ DO K=1,3
+ W=W+A(I,K)*B(K,J)
+ END DO
+ WM(I,J)=W
+ END DO
+ END DO
+
+* Return the result
+ DO J=1,3
+ DO I=1,3
+ C(I,J)=WM(I,J)
+ END DO
+ END DO
+
+ END