File: LOC.FT of Tape: Various/ETH/eth11-1
(Source file text)
C .................................................................. C C SUBROUTINE LOC C C PURPOSE C COMPUTE A VECTOR SUBSCRIPT FOR AN ELEMENT IN A MATRIX OF C SPECIFIED STORAGE MODE C C USAGE C CALL LOC (I,J,IR,N,M,MS) C C DESCRIPTION OF PARAMETERS C I - ROW NUMBER OF ELEMENT C J - COLUMN NUMBER OF ELEMENT C IR - RESULTANT VECTOR SUBSCRIPT C N - NUMBER OF ROWS IN MATRIX C M - NUMBER OF COLUMNS IN MATRIX C MS - ONE DIGIT NUMBER FOR STORAGE MODE OF MATRIX C 0 - GENERAL C 1 - SYMMETRIC C 2 - DIAGONAL C C REMARKS C NONE C C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED C NONE C C METHOD C MS=0 SUBSCRIPT IS COMPUTED FOR A MATRIX WITH N*M ELEMENTS C IN STORAGE (GENERAL MATRIX) C MS=1 SUBSCRIPT IS COMPUTED FOR A MATRIX WITH N*(N+1)/2 IN C STORAGE (UPPER TRIANGLE OF SYMMETRIC MATRIX). IF C ELEMENT IS IN LOWER TRIANGULAR PORTION, SUBSCRIPT IS C CORRESPONDING ELEMENT IN UPPER TRIANGLE. C MS=2 SUBSCRIPT IS COMPUTED FOR A MATRIX WITH N ELEMENTS C IN STORAGE (DIAGONAL ELEMENTS OF DIAGONAL MATRIX). C IF ELEMENT IS NOT ON DIAGONAL (AND THEREFORE NOT IN C STORAGE), IR IS SET TO ZERO. C C .................................................................. C SUBROUTINE LOC(I,J,IR,N,M,MS) C IX=I JX=J IF(MS-1) 10,20,30 10 IRX=N*(JX-1)+IX GO TO 36 20 IF(IX-JX) 22,24,24 22 IRX=IX+(JX*JX-JX)/2 GO TO 36 24 IRX=JX+(IX*IX-IX)/2 GO TO 36 30 IRX=0 IF(IX-JX) 36,32,36 32 IRX=IX 36 IR=IRX RETURN END C