CTITLESAFXDC6 -- SPATIAL PREDICTION DRIVER ROUTINE 00010002 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR D CORRIGAN 00020002 CA DESIGNER D CORRIGAN 00030002 CA LANGUAGE FORTRAN 77 00040002 CA SYSTEM IBM (SEE CRAY) 00050002 CA WRITTEN AUGUST 1988 00060002 C REVISED 11/14/88 CAD REPLACED CALL FROM SNAXPY TO 00070002 C SASNXPY. ADDED SASNXPY SUBROUTINE00080002 C REVISED 01-15-89 JJC FOR SPARC PRODUCTION. 00090002 C REVISED 02-28-89 JJC CHANGED BACK TO ESSL SNAXPY DUE 00100002 C TO BAD PERFORMANCE IN MATHADV. 00110002 C REVISED 08-22-90 ESN INITIALIZE H0 TO 0.0. 00120002 CA 00130002 CA 00140002 CA 00150002 CA THIS ROUTINE PERFORMS SPATIAL PREDICTION FILTER OPERATIONS 00160002 CA MAIN ENGINE FOR SPATIAL PREDICTION 00170002 CA 00180002 CA 00190002 C SUBROUTINES CALLED : 00200002 C SAFXCC5 00210002 C SACLEVN 00220002 C CCOPY (IBM ESSL ROUTINE) 00230002 C SASNXPY 00240002 C 00250002 C 00260002 C 00270002 C CALL SAFXDC6 (D,N,NX,LX,WNF,R,C,H,A,B,F) 00280002 C 00290002 C ARGUMENTS : 00300002 C 00310002 C D INPUT/OUTPUT - DATA FOR A SINGLE FREQUENCY 00320002 C N INPUT/OUTPUT - NOISE ESTIMATE 00330002 C NX INPUT - NUMBER OF TRACES IN DESIGN GATE 00340002 C LX INPUT - NUMBER OF TRACES IN SPATIAL FILTER 00350002 C WNF INPUT - WHITE NOISE FACTOR 00360002 C R INPUT/OUTPUT - AUTO CORRELATIONS 00370002 C C INPUT/OUTPUT - CROSS CORRELATIONS 00380002 C H INPUT - FILTER 00390002 C A INPUT - ARRAY FOR INTERMEDIATE RESULTS 00400002 C B INPUT - ARRAY FOR INTERMEDIATE RESULTS 00410002 C F OUTPUT - FILTER 00420002 C 00430002 C ---------------------------------------------------------------------00440002 C 00450002 SUBROUTINE SAFXDC6( D,N,NX,LX,WNF,R,C,H,A,B,F ) 00460002 C 00470002 IMPLICIT INTEGER (A-Z) 00480002 C 00490002 COMPLEX D(1),N(1) 00500002 COMPLEX R(1),C(1) 00510002 COMPLEX H(1) 00520002 COMPLEX H0 00530002 COMPLEX ZERO 00540002 REAL A(1),B(1) 00550002 REAL F(1) 00560002 REAL WNF 00570002 C 00580002 DATA ZERO/(0.,0.)/ 00590002 C 00600002 C INITIALIZE 00610002 C 00620002 MX = LX - 1 00630002 MH = MX/2 00640002 NM = NX + MX 00650002 IS = 1 + MH 00660002 C 00670002 C AUTO/CROSS CORRELATIONS 00680002 C 00690002 CALL SAFXCC5(D(IS),NX,LX,R,C,A,B) 00700002 C 00710002 C PREDICTION OPERATOR 00720002 C 00730002 R(1) = WNF*R(1) 00740002 CALL SACLEVN(LX,R,C,H,A,B) 00750002 C 00760002 C SCALE FILTER 00770002 C 00780002 IR = 1 00790002 CJJ 00800002 H0 = 0.0 00810002 IF (H(1+MH) .NE. 0) H0 = 1./H(1+MH) 00820002 C 00830002 DO 100 IH = 1,LX 00840002 II = IR + 1 00850002 H(IH) = H0*H(IH) 00860002 F(IR) = REAL(H(IH)) 00870002 F(II) = AIMAG(H(IH)) 00880002 100 IR = IR + 2 00890002 C 00900002 C COMPLEX FILTER OPERATION 00910002 C 00920002 C MOVE DATA TO BE FILTERED TO B 00930002 C 00940002 CALL CCOPY( NX,ZERO,0,A,1 ) 00950002 CALL CCOPY( NX+MX,D,1,B,1 ) 00960002 IR = 1 00970002 II = 2 00980002 CALL SNAXPY( LX,NX,F(IR),2,B(II),2,2,A(II),2,0 ) 00990002 CALL SNAXPY( LX,NX,F(II),2,B(IR),2,2,A(II),2,0 ) 01000002 CALL SNAXPY( LX,NX,F(IR),2,B(IR),2,2,A(IR),2,0 ) 01010002 CJJ CALL SASNXPY( LX,NX,F(IR),2,B(II),2,2,A(II),2,0 ) 01020002 CJJ CALL SASNXPY( LX,NX,F(II),2,B(IR),2,2,A(II),2,0 ) 01030002 CJJ CALL SASNXPY( LX,NX,F(IR),2,B(IR),2,2,A(IR),2,0 ) 01040002 C 01050002 JF1 = II 01060002 JF2 = II + 2*LX - 2 01070002 DO 200 JF = JF1,JF2,2 01080002 200 F(JF) = - F(JF) 01090002 C 01100002 CALL SNAXPY( LX,NX,F(II),2,B(II),2,2,A(IR),2,0 ) 01110002 CJJ CALL SASNXPY( LX,NX,F(II),2,B(II),2,2,A(IR),2,0 ) 01120002 C 01130002 C 01140002 C OUTPUT: 01150002 C 01160002 C PUT NOISE ESTIMATE IN N 01170002 C REPLACE D BY D - N 01180002 C 01190002 CALL CCOPY( NX,A,1,N,1 ) 01200002 DO 300 I = 1,NX 01210002 300 D(I) = D(I+MH) - N(I) 01220002 C 01230002 C 01240002 C ---------------------------------------------------------------------01250002 C 01260002 RETURN 01270002 END 01280002