home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frostbyte's 1980s DOS Shareware Collection
/
floppyshareware.zip
/
floppyshareware
/
DOOG
/
PCSSP1.ZIP
/
ITRPAPSM.ZIP
/
ATSM.FOR
< prev
next >
Wrap
Text File
|
1985-11-29
|
4KB
|
123 lines
C
C ..................................................................
C
C SUBROUTINE ATSM
C
C PURPOSE
C NDIM POINTS OF A GIVEN TABLE WITH MONOTONIC ARGUMENTS ARE
C SELECTED AND ORDERED SUCH THAT
C ABS(ARG(I)-X).GE.ABS(ARG(J)-X) IF I.GT.J.
C
C USAGE
C CALL ATSM (X,Z,F,IROW,ICOL,ARG,VAL,NDIM)
C
C DESCRIPTION OF PARAMETERS
C X - THE SEARCH ARGUMENT.
C Z - THE VECTOR OF ARGUMENT VALUES (DIMENSION IROW).
C THE ARGUMENT VALUES MUST BE STORED IN INCREASING
C OR DECREASING SEQUENCE.
C F - IN CASE ICOL=1, F IS THE VECTOR OF FUNCTION VALUES
C (DIMENSION IROW).
C IN CASE ICOL=2, F IS AN IROW BY 2 MATRIX. THE FIRST
C COLUMN SPECIFIES THE VECTOR OF FUNCTION VALUES AND
C THE SECOND THE VECTOR OF DERIVATIVES.
C IROW - THE DIMENSION OF VECTOR Z AND OF EACH COLUMN
C IN MATRIX F.
C ICOL - THE NUMBER OF COLUMNS IN F (I.E. 1 OR 2).
C ARG - THE RESULTING VECTOR OF SELECTED AND ORDERED
C ARGUMENT VALUES (DIMENSION NDIM).
C VAL - THE RESULTING VECTOR OF SELECTED FUNCTION VALUES
C (DIMENSION NDIM) IN CASE ICOL=1. IN CASE ICOL=2,
C VAL IS THE VECTOR OF FUNCTION AND DERIVATIVE VALUES
C (DIMENSION 2*NDIM) WHICH ARE STORED IN PAIRS (I.E.
C EACH FUNCTION VALUE IS FOLLOWED BY ITS DERIVATIVE
C VALUE).
C NDIM - THE NUMBER OF POINTS WHICH MUST BE SELECTED OUT OF
C THE GIVEN TABLE (Z,F).
C
C REMARKS
C NO ACTION IN CASE IROW LESS THAN 1.
C IF INPUT VALUE NDIM IS GREATER THAN IROW, THE PROGRAM
C SELECTS ONLY A MAXIMUM TABLE OF IROW POINTS. THEREFORE THE
C USER OUGHT TO CHECK CORRESPONDENCE BETWEEN TABLE (ARG,VAL)
C AND ITS DIMENSION BY COMPARISON OF NDIM AND IROW, IN ORDER
C TO GET CORRECT RESULTS IN FURTHER WORK WITH TABLE (ARG,VAL).
C THIS TEST MAY BE DONE BEFORE OR AFTER CALLING
C SUBROUTINE ATSM.
C SUBROUTINE ATSM ESPECIALLY CAN BE USED FOR GENERATING THE
C TABLE (ARG,VAL) NEEDED IN SUBROUTINES ALI, AHI, AND ACFI.
C
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C NONE
C
C METHOD
C SELECTION IS DONE BY SEARCHING THE SUBSCRIPT J OF THAT
C ARGUMENT, WHICH IS NEXT TO X (BINARY SEARCH).
C AFTERWARDS NEIGHBOURING ARGUMENT VALUES ARE TESTED AND
C SELECTED IN THE ABOVE SENSE.
C
C ..................................................................
C
SUBROUTINE ATSM(X,Z,F,IROW,ICOL,ARG,VAL,NDIM)
C
C
DIMENSION Z(1),F(1),ARG(1),VAL(1)
C
C CASE IROW=1 IS CHECKED OUT
IF(IROW-1)23,21,1
1 N=NDIM
C
C IF N IS GREATER THAN IROW, N IS SET EQUAL TO IROW.
IF(N-IROW)3,3,2
2 N=IROW
C
C CASE IROW.GE.2
C SEARCHING FOR SUBSCRIPT J SUCH THAT Z(J) IS NEXT TO X.
3 IF(Z(IROW)-Z(1))5,4,4
4 J=IROW
I=1
GOTO 6
5 I=IROW
J=1
6 K=(J+I)/2
IF(X-Z(K))7,7,8
7 J=K
GOTO 9
8 I=K
9 IF(IABS(J-I)-1)10,10,6
10 IF(ABS(Z(J)-X)-ABS(Z(I)-X))12,12,11
11 J=I
C
C TABLE SELECTION
12 K=J
JL=0
JR=0
DO 20 I=1,N
ARG(I)=Z(K)
IF(ICOL-1)14,14,13
13 VAL(2*I-1)=F(K)
KK=K+IROW
VAL(2*I)=F(KK)
GOTO 15
14 VAL(I)=F(K)
15 JJR=J+JR
IF(JJR-IROW)16,18,18
16 JJL=J-JL
IF(JJL-1)19,19,17
17 IF(ABS(Z(JJR+1)-X)-ABS(Z(JJL-1)-X))19,19,18
18 JL=JL+1
K=J-JL
GOTO 20
19 JR=JR+1
K=J+JR
20 CONTINUE
RETURN
C
C CASE IROW=1
21 ARG(1)=Z(1)
VAL(1)=F(1)
IF(ICOL-2)23,22,23
22 VAL(2)=F(2)
23 RETURN
END