home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
fortran
/
library
/
ssp
/
matstor
/
loc.for
< prev
next >
Wrap
Text File
|
1985-11-29
|
2KB
|
62 lines
C
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