home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frostbyte's 1980s DOS Shareware Collection
/
floppyshareware.zip
/
floppyshareware
/
DOOG
/
PCSSP1.ZIP
/
ITRPAPSM.ZIP
/
DATSE.FOR
< prev
next >
Wrap
Text File
|
1985-11-29
|
4KB
|
111 lines
C
C ..................................................................
C
C SUBROUTINE DATSE
C
C PURPOSE
C NDIM POINTS OF A GIVEN TABLE WITH EQUIDISTANT 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 DATSE (X,ZS,DZ,F,IROW,ICOL,ARG,VAL,NDIM)
C
C DESCRIPTION OF PARAMETERS
C X - DOUBLE PRECISION SEARCH ARGUMENT.
C ZS - DOUBLE PRECISION STARTING VALUE OF ARGUMENTS.
C DZ - DOUBLE PRECISION INCREMENT OF ARGUMENT VALUES.
C F - IN CASE ICOL=1, F IS THE DOUBLE PRECISION VECTOR
C OF FUNCTION VALUES (DIMENSION IROW).
C IN CASE ICOL=2, F IS A DOUBLE PRECISION IROW BY 2
C MATRIX. THE FIRST COLUMN SPECIFIES VECTOR OF FUNC-
C TION VALUES AND THE SECOND VECTOR OF DERIVATIVES.
C IROW - THE DIMENSION OF EACH COLUMN IN MATRIX F.
C ICOL - THE NUMBER OF COLUMNS IN F (I.E. 1 OR 2).
C ARG - RESULTING DOUBLE PRECISION VECTOR OF SELECTED AND
C ORDERED ARGUMENT VALUES (DIMENSION NDIM).
C VAL - RESULTING DOUBLE PRECISION VECTOR OF SELECTED
C FUNCTION VALUES (DIMENSION NDIM) IN CASE ICOL=1.
C IN CASE ICOL=2, VAL IS THE DOUBLE PRECISION VECTOR
C OF FUNCTION AND DERIVATIVE VALUES (DIMENSION
C 2*NDIM) WHICH ARE STORED IN PAIRS (I.E. EACH FUNC-
C TION VALUE IS FOLLOWED BY ITS DERIVATIVE VALUE).
C NDIM - THE NUMBER OF POINTS WHICH MUST BE SELECTED OUT OF
C THE GIVEN TABLE.
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 DATSE.
C SUBROUTINE DATSE ESPECIALLY CAN BE USED FOR GENERATING THE
C TABLE (ARG,VAL) NEEDED IN SUBROUTINES DALI, DAHI, AND DACFI.
C
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C NONE
C
C METHOD
C SELECTION IS DONE BY COMPUTING THE SUBSCRIPT J OF THAT
C ARGUMENT, WHICH IS NEXT TO X.
C AFTERWARDS NEIGHBOURING ARGUMENT VALUES ARE TESTED AND
C SELECTED IN THE ABOVE SENSE.
C
C ..................................................................
C
SUBROUTINE DATSE(X,ZS,DZ,F,IROW,ICOL,ARG,VAL,NDIM)
C
C
DIMENSION F(1),ARG(1),VAL(1)
DOUBLE PRECISION X,ZS,DZ,F,ARG,VAL
IF(IROW-1)19,17,1
C
C CASE DZ=0 IS CHECKED OUT
1 IF(DZ)2,17,2
2 N=NDIM
C
C IF N IS GREATER THAN IROW, N IS SET EQUAL TO IROW.
IF(N-IROW)4,4,3
3 N=IROW
C
C COMPUTATION OF STARTING SUBSCRIPT J.
4 J=(X-ZS)/DZ+1.5D0
IF(J)5,5,6
5 J=1
6 IF(J-IROW)8,8,7
7 J=IROW
C
C GENERATION OF TABLE ARG,VAL IN CASE DZ.NE.0.
8 II=J
JL=0
JR=0
DO 16 I=1,N
ARG(I)=ZS+DFLOAT(II-1)*DZ
IF(ICOL-2)9,10,10
9 VAL(I)=F(II)
GOTO 11
10 VAL(2*I-1)=F(II)
III=II+IROW
VAL(2*I)=F(III)
11 IF(J+JR-IROW)12,15,12
12 IF(J-JL-1)13,14,13
13 IF((ARG(I)-X)*DZ)14,15,15
14 JR=JR+1
II=J+JR
GOTO 16
15 JL=JL+1
II=J-JL
16 CONTINUE
RETURN
C
C CASE DZ=0
17 ARG(1)=ZS
VAL(1)=F(1)
IF(ICOL-2)19,19,18
18 VAL(2)=F(2)
19 RETURN
END