C
      SUBROUTINE FNCRN(WN,FW,FU,XX,DNS,VP,VS,THK,ML,L1,DEP1,L2,DEP2,ISO)
C
      IMPLICIT REAL*8(A-H,O-Z)
      DIMENSION DNS(ML),THK(ML)
      COMPLEX*16 FW,FU,VP(ML),VS(ML)
     *          ,AA(4,4),SA(4,4),SB(4,4),CPX
     *          ,WP2,WS2,CMP,CMS,BM2,PM,QM,RBM,RAM
     *          ,CQ,SQ,STQ,SDQ,CP,SP,STP,SDP,GM
     *          ,C11,C12,C13,C14,C15,C16,D11,D12,D13,D14,D15
     *          ,GN,RAN,RBN,RL,RK,RN,RM,GS2,RS2,HS2,SS2
     *          ,FWZ0,FWX0,FUZ0,FUX0,FR,EPD,ESD,CMPN,CMSN
     *          ,B11,B12,B13,B14,B21,B22,B23,B24
     *          ,AS2(4,4),AR1(4,4),FWZR,FWXR,FUZR,FUXR
      COMMON /FDAT/ OM,NL,QX,QZ
C
      WN2=WN*WN
      OM2=OM*OM
      CV=OM/WN
      CV2=CV*CV
      CPX=DCMPLX(0.D0,1.D0)
C
C *** AA MATRIX ***
C
      DO 100 I=1,4
        DO 110 J=1,4
          AA(I,J) =(0.0D0,0.0D0)
  110   CONTINUE
        AA(I,I)=(1.0D0,0.0D0)
  100 CONTINUE
C
      DO 150 IL=NL-1,1,-1
C
        DO 160 I=1,4
          DO 170 J=1,4
            SA(I,J) =AA(I,J)
  170     CONTINUE
  160   CONTINUE
C
        BM2=VS(IL)*VS(IL)
        WP2=OM2/(VP(IL)*VP(IL))
        WS2=OM2/BM2
C
        CMP=CDSQRT(WP2-WN2)
        CMS=CDSQRT(WS2-WN2)
        IF(IMAG(CMP).GT.0.D0)CMP=-CMP
        IF(IMAG(CMS).GT.0.D0)CMS=-CMS
C
        RAM=CMP/WN
        PM=CMP*THK(IL)
        CP=CDCOS(PM)
        SP=CDSIN(PM)
        STP=RAM*SP
        SDP=SP/RAM
C
        RBM=CMS/WN
        QM=CMS*THK(IL)
        CQ=CDCOS(QM)
        SQ=CDSIN(QM)
        STQ=RBM*SQ
        SDQ=SQ/RBM
C
        GM=2.D0*BM2/CV2
        C11=GM
        C12=GM-1.D0
        C13=GM*GM
        C14=C12*C12
        C16=DNS(IL)*CV2
        C15=1.D0/C16
C
        D11=CP-CQ
        D12=SDP+STQ
        D13=STP+SDQ
        D14=C14*SDP+C13*STQ
        D15=C13*STP+C14*SDQ
C
        SB(1,1)= C11*CP-C12*CQ
        SB(1,2)= (C12*SDP+C11*STQ)*CPX
        SB(1,3)=-C15*D11
        SB(1,4)= C15*D12*CPX
        SB(2,1)=-(C11*STP+C12*SDQ)*CPX
        SB(2,2)=-C12*CP+C11*CQ
        SB(2,3)= C15*D13*CPX
        SB(2,4)= SB(1,3)
        SB(3,1)= C16*C11*C12*D11
        SB(3,2)= C16*D14*CPX
        SB(3,3)= SB(2,2)
        SB(3,4)= SB(1,2)
        SB(4,1)= C16*D15*CPX
        SB(4,2)= SB(3,1)
        SB(4,3)= SB(2,1)
        SB(4,4)= SB(1,1)
C
        DO 180 I=1,4
          DO 190 J=1,4
            AA(I,J)=(0.D0,0.D0)
            DO 195 K=1,4
              AA(I,J) =AA(I,J) +SA(I,K)*SB(K,J)
  195       CONTINUE
  190     CONTINUE
  180   CONTINUE
C
  150 CONTINUE
C
C *** RL-RM AND FR ***
C
      BM2=VS(NL)*VS(NL)
      WP2=OM2/(VP(NL)*VP(NL))
      WS2=OM2/BM2
      CMPN=CDSQRT(WP2-WN2)
      CMSN=CDSQRT(WS2-WN2)
      IF(IMAG(CMPN).GT.0.D0)CMPN=-CMPN
      IF(IMAG(CMSN).GT.0.D0)CMSN=-CMSN
C
      GN=2.D0*BM2/CV2
      RAN=CMPN/WN
      RBN=CMSN/WN
C
      B11=GN*RAN
      B12=GN-1.D0
      B14=1.D0/(DNS(NL)*CV2)
      B13=-RAN*B14
      B21=-B12
      B22=GN*RBN
      B23=B14
      B24=RBN*B14
C
      RL=B11*AA(1,1)+B12*AA(2,1)+B13*AA(3,1)+B14*AA(4,1)
      RK=B11*AA(1,2)+B12*AA(2,2)+B13*AA(3,2)+B14*AA(4,2)
      RN=B21*AA(1,1)+B22*AA(2,1)+B23*AA(3,1)+B24*AA(4,1)
      RM=B21*AA(1,2)+B22*AA(2,2)+B23*AA(3,2)+B24*AA(4,2)
C
      FR=RN*RK-RL*RM
C
C *** SP AND OB ***
C
      IF(L1.EQ.NL)THEN
C
        EPD=CDEXP(-CPX*CMPN*DEP1)
        ESD=CDEXP(-CPX*CMSN*DEP1)
C
        RS2= B14*EPD
        GS2=-RAN*RS2
        HS2= B14*ESD
        SS2= RBN*HS2
C
      ELSE
C
        CALL FNC22(AS2,L1,DEP1,OM2,CV2,WN,DNS,VP,VS,THK,ML,NL)
C
        GS2=B11*AS2(1,3)+B12*AS2(2,3)+B13*AS2(3,3)+B14*AS2(4,3)
        RS2=B11*AS2(1,4)+B12*AS2(2,4)+B13*AS2(3,4)+B14*AS2(4,4)
        HS2=B21*AS2(1,3)+B22*AS2(2,3)+B23*AS2(3,3)+B24*AS2(4,3)
        SS2=B21*AS2(1,4)+B22*AS2(2,4)+B23*AS2(3,4)+B24*AS2(4,4)
C
      END IF

      FWZ0=GS2*RN-HS2*RL
      FWX0=RS2*RN-SS2*RL
      FUZ0=GS2*RM-HS2*RK
      FUX0=RS2*RM-SS2*RK
C
      CALL FNC21(AR1,L2,DEP2,OM2,CV2,WN,DNS,VP,VS,THK,ML)
C
      FWZR=AR1(2,2)*FWZ0-AR1(2,1)*FUZ0
      FWXR=AR1(2,2)*FWX0-AR1(2,1)*FUX0
      FUZR=AR1(1,1)*FUZ0-AR1(1,2)*FWZ0
      FUXR=AR1(1,1)*FUX0-AR1(1,2)*FWX0
C
      WNX=WN*XX
      CKX=DCOS(WNX)
      SKX=DSIN(WNX)
C
      IF(ISO.EQ.1)THEN
        FW=( FWZR*CKX*QZ-CPX*FWXR*SKX*QX)/(WN*FR)
        FU=(-CPX*FUZR*SKX*QZ+FUXR*CKX*QX)/(WN*FR)
      ELSE
        FW=( FWZR*CKX*QZ+CPX*FWXR*SKX*QX)/(WN*FR)
        FU=( CPX*FUZR*SKX*QZ+FUXR*CKX*QX)/(WN*FR)
      END IF
C
      RETURN
      END
