From d54fe7c1f704a63824c5bfa0ece65245572e9b27 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 4 Mar 2015 21:21:30 -0500 Subject: Initial commit --- src/slalib/dmxm.f | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/slalib/dmxm.f (limited to 'src/slalib/dmxm.f') diff --git a/src/slalib/dmxm.f b/src/slalib/dmxm.f new file mode 100644 index 0000000..41f3d99 --- /dev/null +++ b/src/slalib/dmxm.f @@ -0,0 +1,56 @@ + SUBROUTINE sla_DMXM (A, B, C) +*+ +* - - - - - +* D M X M +* - - - - - +* +* Product of two 3x3 matrices: +* +* matrix C = matrix A x matrix B +* +* (double precision) +* +* Given: +* A dp(3,3) matrix +* B dp(3,3) matrix +* +* Returned: +* C dp(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 + + DOUBLE PRECISION A(3,3),B(3,3),C(3,3) + + INTEGER I,J,K + DOUBLE PRECISION W,WM(3,3) + + +* Multiply into scratch matrix + DO I=1,3 + DO J=1,3 + W=0D0 + 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 -- cgit