anchor.diff:      istop = Xadj(Root+1) - 1
       IF ( istop<istrt ) RETURN
       DO i = istrt, istop
  -       nabor = Adjncy(i)
  -       IF ( nabor==0 ) RETURN
  -       IF ( Marker(nabor)==0 ) THEN
  -          IF ( Deg(nabor)<0 ) THEN
  -             Marker(nabor) = -1
  -             Nhdsze = Nhdsze + 1
  -             Nbrhd(Nhdsze) = nabor
  -             DO
  -                jstrt = Xadj(nabor)
  -                jstop = Xadj(nabor+1) - 1
  -                DO j = jstrt, jstop
  -                   node = Adjncy(j)
  -                   nabor = -node
  -                   IF ( node<0 ) GOTO 10
  -                   IF ( node==0 ) EXIT
  -                   IF ( Marker(node)==0 ) THEN
  -                      Rchsze = Rchsze + 1
  -                      Rchset(Rchsze) = node
  -                      Marker(node) = 1
  -                   ENDIF
  -                ENDDO
  -                EXIT
  -10           ENDDO
  -          ELSE
  -             Rchsze = Rchsze + 1
  -             Rchset(Rchsze) = nabor
  -             Marker(nabor) = 1
  -          ENDIF
  -       ENDIF
  +      nabor = Adjncy(i)
  +      IF ( nabor==0 ) RETURN
  +      IF ( Marker(nabor)==0 ) THEN
  +        IF ( Deg(nabor)<0 ) THEN
  +          Marker(nabor) = -1
  +          Nhdsze = Nhdsze + 1
  +          Nbrhd(Nhdsze) = nabor
  +          DO
  +            jstrt = Xadj(nabor)
  +            jstop = Xadj(nabor+1) - 1
  +            DO j = jstrt, jstop
  +              node = Adjncy(j)
  +              nabor = -node
  +              IF ( node<0 ) GOTO 10
  +              IF ( node==0 ) EXIT
  +              IF ( Marker(node)==0 ) THEN
  +                Rchsze = Rchsze + 1
  +                Rchset(Rchsze) = node
  +                Marker(node) = 1
  +              ENDIF
  +            ENDDO
  +            EXIT
  +10        ENDDO
  +        ELSE
  +          Rchsze = Rchsze + 1
  +          Rchset(Rchsze) = nabor
  +          Marker(nabor) = 1
  +        ENDIF
  +      ENDIF
       ENDDO
     END SUBROUTINE QMDRCH
   
  
positive.code: 
      ! forward
      DO i = 1, Neqns
         Wk(i) = B(Iperm(i))
      ENDDO
      joc = 1
      DO i = 1, Neqns
         ks = Xlnzr(i)
         ke = Xlnzr(i+1) - 1
         IF ( ke>=ks ) Wk(i) = Wk(i) - SPDOT2(Wk,Zln,Colno,ks,ke)
         IF ( i>Nstop ) THEN
            Wk(i) = Wk(i) - DDOT(Wk(Nstop),Dsln(joc),i-Nstop)
            joc = joc + i - Nstop
         ENDIF
      ENDDO
      DO i = 1, Neqns
         Wk(i) = Wk(i)*Diag(i)
      ENDDO
      ! back ward
      DO i = Neqns, 1, -1
         IF ( i>=Nstop ) THEN
            DO j = i - 1, Nstop, -1
               joc = joc - 1
               Wk(j) = Wk(j) - Wk(i)*Dsln(joc)
            ENDDO
         ENDIF
         ks = Xlnzr(i)
         ke = Xlnzr(i+1) - 1
         IF ( ke>=ks ) THEN
            DO k = ks, ke
               j = Colno(k)
               Wk(j) = Wk(j) - Wk(i)*Zln(k)
            ENDDO
         ENDIF
      ENDDO
      ! permutaion
      DO i = 1, Neqns
         B(Iperm(i)) = Wk(i)
      ENDDO
    END SUBROUTINE NUSOL1
  
  
negative.code:     deg0 = 0
      nhdsze = 0
      DO il = 1, Nlist
        node = List(il)
        deg0 = deg0 + Qsize(node)
        jstrt = Xadj(node)
        jstop = Xadj(node+1) - 1
        DO j = jstrt, jstop
          nabor = Adjncy(j)
          IF ( Marker(nabor)==0 .AND. Deg(nabor)<0 ) THEN
            Marker(nabor) = -1
            nhdsze = nhdsze + 1
            Nbrhd(nhdsze) = nabor
          ENDIF
        ENDDO
      ENDDO
  
      IF ( nhdsze>0 ) CALL QMDMRG(Xadj,Adjncy,Deg,Qsize,Qlink,Marker,deg0,nhdsze,Nbrhd,Rchset,Nbrhd(nhdsze+1))
      DO il = 1, Nlist
        node = List(il)
        mark = Marker(node)
        IF ( mark<=1 .AND. mark>=0 ) THEN
          CALL QMDRCH(node,Xadj,Adjncy,Deg,Marker,rchsze,Rchset,nhdsze,Nbrhd)
          deg1 = deg0
          IF ( rchsze>0 ) THEN
            DO irch = 1, rchsze
              inode = Rchset(irch)
              deg1 = deg1 + Qsize(inode)
              Marker(inode) = 0
            ENDDO
          ENDIF
          Deg(node) = deg1 - 1
          IF ( nhdsze>0 ) THEN
            DO inhd = 1, nhdsze
              inode = Nbrhd(inhd)
              Marker(inode) = 0
            ENDDO
          ENDIF
        ENDIF
      ENDDO
    END SUBROUTINE QMDUPD
  
  