C KARSET    SOURCE    CB215821  17/11/30    21:16:37     9639           
      SUBROUTINE KARSET(A,B,N,NM,X,Y,KVU)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C*********************************************************************
C SP appele par KAINTE
C
C -  MISE A JOUR DES INTERVALLES D INTEGRATION
C    A   : A(1,I),A(2,I) I=1,N  INTERVALLES D INTEGRATION
C    B   : TABLEAU DE SAUVEGARDE DE A
C    X Y : SEGMENT A ENLEVER X<Y
C    KVU : 0 SI L INTERVALLE EST VIDE
C*********************************************************************
      DIMENSION A(2,NM),B(2,NM)

      AM=A(1,N+1)
      KVU=1
      DO 1 I=1,N
      B(1,I)=A(1,I)
      B(2,I)=A(2,I)
1     CONTINUE


C1>
      IF(X.LT.B(2,N).AND.Y.GT.B(1,1)) THEN

C11>
      IF(X.LE.B(1,1))         THEN
        IF(Y.GE.B(2,N)) THEN
           KVU=0
        ELSE
C**
C recherche de j
      IF (Y.GT.B(1,N)) THEN
        J=N
      ELSEIF(N.NE.1) THEN
       DO 200 J=1,N-1
       IF(Y.GT.B(1,J).AND.Y.LE.B(1,J+1)) GOTO 201
200    CONTINUE
201    CONTINUE
      ENDIF


C13>
        IF(Y.GT.B(2,J))  THEN
         NI=J
         IF(J+1.LE.N) THEN
            DO 22 K=J+1,N
            A(1,K-NI)=B(1,K)
            A(2,K-NI)=B(2,K)
 22         CONTINUE
          ENDIF
         N=N-NI
C13-
        ELSE
         A(1,1)= Y
         A(2,1)= B(2,J)
         NI=J-1
         IF(J+1.LE.N) THEN
            DO 23 K=J+1,N
            A(1,K-NI)=B(1,K)
            A(2,K-NI)=B(2,K)
 23         CONTINUE
         ENDIF
         N=N-NI

        ENDIF
C13<
        ENDIF
C11-
      ELSE
C2>
      IF(N.EQ.1) THEN
C**  N=1

          IF(Y.LT.B(2,N)) THEN
           N=2
           A(2,1)=X
           A(1,2)=Y
           A(2,2)=B(2,1)
          ELSE
           A(2,1)=X
          ENDIF


C2-  N::1

      ELSE
C recherche de i
      IF (X.GT.B(1,N)) THEN
        I=N
      ELSEIF(N.NE.1) THEN
       DO 300 I=1,N-1
       IF(X.GT.B(1,I).AND.X.LE.B(1,I+1)) GOTO 301
300    CONTINUE
301    CONTINUE
      ENDIF
C3>
        IF(Y.LT.B(2,I))  THEN
C** I=J
          A(2,I)=X
          A(1,I+1)=Y
          A(2,I+1)=B(2,I)
          IF(I+1.LE.N) THEN
            DO 11 K=I+1,N
            A(1,K+1)=B(1,K)
            A(2,K+1)=B(2,K)
 11         CONTINUE
          ENDIF
          N=N+1
C3-
        ELSEIF(Y.LT.B(1,I+1)) THEN
          A(2,I)=MIN(X,B(2,I))
C3-
        ELSE
C** J::I
C recherche de j
      IF (Y.GT.B(1,N)) THEN
        J=N
      ELSEIF(N.NE.1) THEN
       DO 400 J=I+1,N-1
       IF(Y.GT.B(1,J).AND.Y.LE.B(1,J+1)) GOTO 401
400    CONTINUE
401    CONTINUE
      ENDIF

C4>
        IF(Y.LT.B(2,J))  THEN

           A(2,I)=MIN(X,B(2,I))
           A(1,I+1)=Y
           A(2,I+1)=B(2,J)
           NI=J-I-1
           IF(J+1.LE.N) THEN
            DO 13 K=J+1,N
            A(1,K-NI)=B(1,K)
            A(2,K-NI)=B(2,K)
 13         CONTINUE
           ENDIF
           N=N-NI
C4-
        ELSE
           A(2,I)=MIN(X,B(2,I))
           NI=J-I
            IF(J+1.LE.N) THEN
            DO 12 K=J+1,N
            A(1,K-NI)=B(1,K)
            A(2,K-NI)=B(2,K)
 12         CONTINUE
            ENDIF
           N=N-NI

        ENDIF
C4<
        ENDIF
C3<
      ENDIF
C2<
      ENDIF
C11<
      ENDIF
C1<
      A(1,N+1)=AM


      RETURN
      END

 
