Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-02 - 43,50145/dmtds.doc
There are 2 other files named dmtds.doc in the archive. Click here to see a list.
SUBROUTINE DMTDS

PURPOSE
   MULTIPLY A GENERAL MATRIX A ON THE LEFT OR RIGHT BY
   INVERSE(T),INVERSE(TRANSPOSE(T)) OR INVERSE(TRANSPOSE(T*T))
   THE TRIANGULAR MATRIX T IS STORED COLUMNWISE IN COMPRESSED
   FORM, I.E. UPPER TRIANGULAR PART ONLY.

USAGE
   CALL DMTDS(A,M,N,T,IOP,IER)

DESCRIPTION OF PARAMETERS
   A	 - GIVEN GENERAL MATRIX WITH  M ROWS AND N COLUMNS.
	   A MUST BE OF DOUBLE PRECISION
   M	 - NUMBER OF ROWS OF MATRIX A
   N	 - NUMBER OF COLUMNS OF MATRIX A
   T	 - GIVEN TRIANGULAR MATRIX STORED COLUMNWISE UPPER
	   TRIANGULAR PART ONLY. ITS NUMBER OF ROWS AND
	   COLUMNS K IS IMPLIED BY COMPATIBILITY.
	   K = M IF IOP IS POSITIVE,
	   K = N IF IOP IS NEGATIVE.
	   T OCCUPIES K*(K+1)/2 STORAGE POSITIONS.
	   T MUST BE OF DOUBLE PRECISION
   IOP	 - INPUT VARIABLE FOR SELECTION OF OPERATION
	   IOP = 1 - A IS REPLACED BY INVERSE(T)*A
	   IOP =-1 - A IS REPLACED BY A*INVERSE(T)
	   IOP = 2 - A IS REPLACED BY INVERSE(TRANSPOSE(T))*A
	   IOP =-2 - A IS REPLACED BY A*INVERSE(TRANSPOSE(T))
	   IOP = 3 - A IS REPLACED BY INVERSE(TRANSPOSE(T)*T)*A
	   IOP =-3 - A IS REPLACED BY A*INVERSE(TRANSPOSE(T)*T)
   IER	 - RESULTING ERROR PARAMETER
	   IER =-1 MEANS M AND N ARE NOT BOTH POSITIVE
			 AND/OR IOP IS ILLEGAL
	   IER = 0 MEANS OPERATION WAS SUCCESSFUL
	   IER = 1 MEANS TRIANGULAR MATRIX T IS SINGULAR

REMARKS
   SUBROUTINE DMTDS MAY BE USED TO CALCULATE THE SOLUTION OF
   A SYSTEM OF EQUATIONS WITH SYMMETRIC POSITIVE DEFINITE
   COEFFICIENT MATRIX. THE FIRST STEP TOWARDS THE SOLUTION
   IS TRIANGULAR FACTORIZATION BY MEANS OF DMFSD, THE SECOND
   STEP IS APPLICATION OF DMTDS.
   SUBROUTINES DMFSD AND DMTDS MAY BE USED IN ORDER TO
   CACULATE THE PRODUCT TRANSPOSE(A)*INVERSE(B)*A WITH GIVEN
   SYMMETRIC POSITIVE DEFINITE B AND GIVEN A IN THREE STEPS
   1) TRIANGULAR FACTORIZATION OF B (B=TRANSPOSE(T)*T)
   2) MULTIPLICATION OF A ON THE LEFT BY INVERSE(TRANSPOSE(T))
      A IS REPLACED BY C=INVERSE(TRANSPOSE(T))*A
   3) CALCULATION OF THE RESULT FORMING TRANSPOSE(C)*C

SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
   NONE

METHOD
   CALCULATION OF X = INVERSE(T)*A IS DONE USING BACKWARD
   SUBSTITUTION TO OBTAIN X FROM T*X = A.
   CALCULATION OF Y = INVERSE(TRANSPOSE(T))*A IS DONE USING
   FORWARD SUBSTITUTION TO OBTAIN Y FROM TRANSPOSE(T)*Y = A.
   CALCULATION OF Z = INVERSE(TRANSPOSE(T)*T)*A IS DONE
   SOLVING FIRST TRANSPOSE(T)*Y = A AND THEN T*Z = Y, IE.
   USING THE ABOVE TWO STEPS IN REVERSE ORDER