C RESO33    SOURCE    CHAT      05/01/13    02:52:56     5004
      subroutine reso33(a,b,nmax,idi,kerre)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8( A-H,O-Z)
      dimension a(nmax,*),b(*)
      kerre=0
      if(idi.eq.2) then
        det = a(1,1) *a(2,2) - a(1,2)*a(2,1)
        if( det .eq.0.d0) then
            kerre=6
            return
        endif
        aa = b(1)*a(2,2) - a(1,2)*b(2)
        bb =  a(1,1) *b(2) - b(1)*a(2,1)
        b(1) = aa/ det
        b(2)= bb/det
        return
      elseif ( idi.eq.3) then
        det = a(1,1) *(a(2,2) *a(3,3) -  a(3,2)*a(2,3))
     $       + a(2,1)* (a(3,2)*a(1,3) -a(3,3)*a(1,2))
     $       + a(3,1)*(a(1,2)*a(2,3) - a(2,2)*a(1,3))
        if( det .eq.0.d0) then
            kerre=6
            return
        endif
        a1=  b(1) *(a(2,2) *a(3,3) -  a(3,2)*a(2,3))
     $       + b(2)* (a(3,2)*a(1,3) -a(3,3)*a(1,2))
     $       + b(3)*(a(1,2)*a(2,3) - a(2,2)*a(1,3))
        a2 = a(1,1) *(b(2) *a(3,3) -  b(3)*a(2,3))
     $       + a(2,1)* (b(3)*a(1,3) -a(3,3)*b(1))
     $       + a(3,1)*(b(1)*a(2,3) - b(2)*a(1,3))
        a3 = a(1,1) *(a(2,2) *b(3) -  a(3,2)*b(2))
     $       + a(2,1)* (a(3,2)*b(1) -b(3)*a(1,2))
     $       + a(3,1)*(a(1,2)*b(2) - a(2,2)*b(1))
         b(1) = a1 / det
         b(2) = a2 / det
         b(3) = a3 / det
        return
      else
         kerre=5
      endif
      return
      end


