160      SUBROUTINE dtrsyl( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
 
  168      CHARACTER          TRANA, TRANB
 
  169      INTEGER            INFO, ISGN, LDA, LDB, LDC, M, N
 
  170      DOUBLE PRECISION   SCALE
 
  173      DOUBLE PRECISION   A( LDA, * ), B( LDB, * ), C( LDC, * )
 
  179      DOUBLE PRECISION   ZERO, ONE
 
  180      parameter( zero = 0.0d+0, one = 1.0d+0 )
 
  183      LOGICAL            NOTRNA, NOTRNB
 
  184      INTEGER            IERR, J, K, K1, K2, KNEXT, L, L1, L2, LNEXT
 
  185      DOUBLE PRECISION   A11, BIGNUM, DA11, DB, EPS, SCALOC, SGN, SMIN,
 
  186     $                   smlnum, suml, sumr, xnorm
 
  189      DOUBLE PRECISION   DUM( 1 ), VEC( 2, 2 ), X( 2, 2 )
 
  193      DOUBLE PRECISION   DDOT, DLAMCH, DLANGE
 
  194      EXTERNAL           lsame, ddot, dlamch, dlange
 
  200      INTRINSIC          abs, dble, max, min
 
  206      notrna = lsame( trana, 
'N' )
 
  207      notrnb = lsame( tranb, 
'N' )
 
  210      IF( .NOT.notrna .AND. .NOT.lsame( trana, 
'T' ) .AND. .NOT.
 
  211     $    lsame( trana, 
'C' ) ) 
THEN 
  213      ELSE IF( .NOT.notrnb .AND. .NOT.lsame( tranb, 
'T' ) .AND. .NOT.
 
  214     $         lsame( tranb, 
'C' ) ) 
THEN 
  216      ELSE IF( isgn.NE.1 .AND. isgn.NE.-1 ) 
THEN 
  218      ELSE IF( m.LT.0 ) 
THEN 
  220      ELSE IF( n.LT.0 ) 
THEN 
  222      ELSE IF( lda.LT.max( 1, m ) ) 
THEN 
  224      ELSE IF( ldb.LT.max( 1, n ) ) 
THEN 
  226      ELSE IF( ldc.LT.max( 1, m ) ) 
THEN 
  230         CALL xerbla( 
'DTRSYL', -info )
 
  237      IF( m.EQ.0 .OR. n.EQ.0 )
 
  243      smlnum = dlamch( 
'S' )
 
  244      bignum = one / smlnum
 
  245      smlnum = smlnum*dble( m*n ) / eps
 
  246      bignum = one / smlnum
 
  248      smin = max( smlnum, eps*dlange( 
'M', m, m, a, lda, dum ),
 
  249     $       eps*dlange( 
'M', n, n, b, ldb, dum ) )
 
  253      IF( notrna .AND. notrnb ) 
THEN 
  278               IF( b( l+1, l ).NE.zero ) 
THEN 
  300                  IF( a( k, k-1 ).NE.zero ) 
THEN 
  311               IF( l1.EQ.l2 .AND. k1.EQ.k2 ) 
THEN 
  312                  suml = ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
 
  313     $                   c( min( k1+1, m ), l1 ), 1 )
 
  314                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
 
  315                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  318                  a11 = a( k1, k1 ) + sgn*b( l1, l1 )
 
  320                  IF( da11.LE.smin ) 
THEN 
  325                  db = abs( vec( 1, 1 ) )
 
  326                  IF( da11.LT.one .AND. db.GT.one ) 
THEN 
  327                     IF( db.GT.bignum*da11 )
 
  330                  x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
 
  332                  IF( scaloc.NE.one ) 
THEN 
  334                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  338                  c( k1, l1 ) = x( 1, 1 )
 
  340               ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 ) 
THEN 
  342                  suml = ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
 
  343     $                   c( min( k2+1, m ), l1 ), 1 )
 
  344                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
 
  345                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  347                  suml = ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
 
  348     $                   c( min( k2+1, m ), l1 ), 1 )
 
  349                  sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
 
  350                  vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
 
  352                  CALL dlaln2( .false., 2, 1, smin, one, a( k1, k1 ),
 
  353     $                         lda, one, one, vec, 2, -sgn*b( l1, l1 ),
 
  354     $                         zero, x, 2, scaloc, xnorm, ierr )
 
  358                  IF( scaloc.NE.one ) 
THEN 
  360                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  364                  c( k1, l1 ) = x( 1, 1 )
 
  365                  c( k2, l1 ) = x( 2, 1 )
 
  367               ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 ) 
THEN 
  369                  suml = ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
 
  370     $                   c( min( k1+1, m ), l1 ), 1 )
 
  371                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
 
  372                  vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
 
  374                  suml = ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
 
  375     $                   c( min( k1+1, m ), l2 ), 1 )
 
  376                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
 
  377                  vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
 
  379                  CALL dlaln2( .true., 2, 1, smin, one, b( l1, l1 ),
 
  380     $                         ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
 
  381     $                         zero, x, 2, scaloc, xnorm, ierr )
 
  385                  IF( scaloc.NE.one ) 
THEN 
  387                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  391                  c( k1, l1 ) = x( 1, 1 )
 
  392                  c( k1, l2 ) = x( 2, 1 )
 
  394               ELSE IF( l1.NE.l2 .AND. k1.NE.k2 ) 
THEN 
  396                  suml = ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
 
  397     $                   c( min( k2+1, m ), l1 ), 1 )
 
  398                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
 
  399                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  401                  suml = ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
 
  402     $                   c( min( k2+1, m ), l2 ), 1 )
 
  403                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
 
  404                  vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
 
  406                  suml = ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
 
  407     $                   c( min( k2+1, m ), l1 ), 1 )
 
  408                  sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
 
  409                  vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
 
  411                  suml = ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
 
  412     $                   c( min( k2+1, m ), l2 ), 1 )
 
  413                  sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l2 ), 1 )
 
  414                  vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
 
  416                  CALL dlasy2( .false., .false., isgn, 2, 2,
 
  417     $                         a( k1, k1 ), lda, b( l1, l1 ), ldb, vec,
 
  418     $                         2, scaloc, x, 2, xnorm, ierr )
 
  422                  IF( scaloc.NE.one ) 
THEN 
  424                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  428                  c( k1, l1 ) = x( 1, 1 )
 
  429                  c( k1, l2 ) = x( 1, 2 )
 
  430                  c( k2, l1 ) = x( 2, 1 )
 
  431                  c( k2, l2 ) = x( 2, 2 )
 
  438      ELSE IF( .NOT.notrna .AND. notrnb ) 
THEN 
  463               IF( b( l+1, l ).NE.zero ) 
THEN 
  485                  IF( a( k+1, k ).NE.zero ) 
THEN 
  496               IF( l1.EQ.l2 .AND. k1.EQ.k2 ) 
THEN 
  497                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
 
  498                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
 
  499                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  502                  a11 = a( k1, k1 ) + sgn*b( l1, l1 )
 
  504                  IF( da11.LE.smin ) 
THEN 
  509                  db = abs( vec( 1, 1 ) )
 
  510                  IF( da11.LT.one .AND. db.GT.one ) 
THEN 
  511                     IF( db.GT.bignum*da11 )
 
  514                  x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
 
  516                  IF( scaloc.NE.one ) 
THEN 
  518                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  522                  c( k1, l1 ) = x( 1, 1 )
 
  524               ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 ) 
THEN 
  526                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
 
  527                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
 
  528                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  530                  suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
 
  531                  sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
 
  532                  vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
 
  534                  CALL dlaln2( .true., 2, 1, smin, one, a( k1, k1 ),
 
  535     $                         lda, one, one, vec, 2, -sgn*b( l1, l1 ),
 
  536     $                         zero, x, 2, scaloc, xnorm, ierr )
 
  540                  IF( scaloc.NE.one ) 
THEN 
  542                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  546                  c( k1, l1 ) = x( 1, 1 )
 
  547                  c( k2, l1 ) = x( 2, 1 )
 
  549               ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 ) 
THEN 
  551                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
 
  552                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
 
  553                  vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
 
  555                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
 
  556                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
 
  557                  vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
 
  559                  CALL dlaln2( .true., 2, 1, smin, one, b( l1, l1 ),
 
  560     $                         ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
 
  561     $                         zero, x, 2, scaloc, xnorm, ierr )
 
  565                  IF( scaloc.NE.one ) 
THEN 
  567                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  571                  c( k1, l1 ) = x( 1, 1 )
 
  572                  c( k1, l2 ) = x( 2, 1 )
 
  574               ELSE IF( l1.NE.l2 .AND. k1.NE.k2 ) 
THEN 
  576                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
 
  577                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
 
  578                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  580                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
 
  581                  sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
 
  582                  vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
 
  584                  suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
 
  585                  sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
 
  586                  vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
 
  588                  suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l2 ), 1 )
 
  589                  sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l2 ), 1 )
 
  590                  vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
 
  592                  CALL dlasy2( .true., .false., isgn, 2, 2, a( k1,
 
  594     $                         lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
 
  599                  IF( scaloc.NE.one ) 
THEN 
  601                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  605                  c( k1, l1 ) = x( 1, 1 )
 
  606                  c( k1, l2 ) = x( 1, 2 )
 
  607                  c( k2, l1 ) = x( 2, 1 )
 
  608                  c( k2, l2 ) = x( 2, 2 )
 
  614      ELSE IF( .NOT.notrna .AND. .NOT.notrnb ) 
THEN 
  639               IF( b( l, l-1 ).NE.zero ) 
THEN 
  661                  IF( a( k+1, k ).NE.zero ) 
THEN 
  672               IF( l1.EQ.l2 .AND. k1.EQ.k2 ) 
THEN 
  673                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
 
  674                  sumr = ddot( n-l1, c( k1, min( l1+1, n ) ), ldc,
 
  675     $                   b( l1, min( l1+1, n ) ), ldb )
 
  676                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  679                  a11 = a( k1, k1 ) + sgn*b( l1, l1 )
 
  681                  IF( da11.LE.smin ) 
THEN 
  686                  db = abs( vec( 1, 1 ) )
 
  687                  IF( da11.LT.one .AND. db.GT.one ) 
THEN 
  688                     IF( db.GT.bignum*da11 )
 
  691                  x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
 
  693                  IF( scaloc.NE.one ) 
THEN 
  695                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  699                  c( k1, l1 ) = x( 1, 1 )
 
  701               ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 ) 
THEN 
  703                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
 
  704                  sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
 
  705     $                   b( l1, min( l2+1, n ) ), ldb )
 
  706                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  708                  suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
 
  709                  sumr = ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
 
  710     $                   b( l1, min( l2+1, n ) ), ldb )
 
  711                  vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
 
  713                  CALL dlaln2( .true., 2, 1, smin, one, a( k1, k1 ),
 
  714     $                         lda, one, one, vec, 2, -sgn*b( l1, l1 ),
 
  715     $                         zero, x, 2, scaloc, xnorm, ierr )
 
  719                  IF( scaloc.NE.one ) 
THEN 
  721                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  725                  c( k1, l1 ) = x( 1, 1 )
 
  726                  c( k2, l1 ) = x( 2, 1 )
 
  728               ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 ) 
THEN 
  730                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
 
  731                  sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
 
  732     $                   b( l1, min( l2+1, n ) ), ldb )
 
  733                  vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
 
  735                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
 
  736                  sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
 
  737     $                   b( l2, min( l2+1, n ) ), ldb )
 
  738                  vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
 
  740                  CALL dlaln2( .false., 2, 1, smin, one, b( l1, l1 ),
 
  741     $                         ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
 
  742     $                         zero, x, 2, scaloc, xnorm, ierr )
 
  746                  IF( scaloc.NE.one ) 
THEN 
  748                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  752                  c( k1, l1 ) = x( 1, 1 )
 
  753                  c( k1, l2 ) = x( 2, 1 )
 
  755               ELSE IF( l1.NE.l2 .AND. k1.NE.k2 ) 
THEN 
  757                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
 
  758                  sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
 
  759     $                   b( l1, min( l2+1, n ) ), ldb )
 
  760                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  762                  suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
 
  763                  sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
 
  764     $                   b( l2, min( l2+1, n ) ), ldb )
 
  765                  vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
 
  767                  suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
 
  768                  sumr = ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
 
  769     $                   b( l1, min( l2+1, n ) ), ldb )
 
  770                  vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
 
  772                  suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l2 ), 1 )
 
  773                  sumr = ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
 
  774     $                   b( l2, min( l2+1, n ) ), ldb )
 
  775                  vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
 
  777                  CALL dlasy2( .true., .true., isgn, 2, 2, a( k1,
 
  779     $                         lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
 
  784                  IF( scaloc.NE.one ) 
THEN 
  786                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  790                  c( k1, l1 ) = x( 1, 1 )
 
  791                  c( k1, l2 ) = x( 1, 2 )
 
  792                  c( k2, l1 ) = x( 2, 1 )
 
  793                  c( k2, l2 ) = x( 2, 2 )
 
  799      ELSE IF( notrna .AND. .NOT.notrnb ) 
THEN 
  824               IF( b( l, l-1 ).NE.zero ) 
THEN 
  846                  IF( a( k, k-1 ).NE.zero ) 
THEN 
  857               IF( l1.EQ.l2 .AND. k1.EQ.k2 ) 
THEN 
  858                  suml = ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
 
  859     $                   c( min( k1+1, m ), l1 ), 1 )
 
  860                  sumr = ddot( n-l1, c( k1, min( l1+1, n ) ), ldc,
 
  861     $                   b( l1, min( l1+1, n ) ), ldb )
 
  862                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  865                  a11 = a( k1, k1 ) + sgn*b( l1, l1 )
 
  867                  IF( da11.LE.smin ) 
THEN 
  872                  db = abs( vec( 1, 1 ) )
 
  873                  IF( da11.LT.one .AND. db.GT.one ) 
THEN 
  874                     IF( db.GT.bignum*da11 )
 
  877                  x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
 
  879                  IF( scaloc.NE.one ) 
THEN 
  881                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  885                  c( k1, l1 ) = x( 1, 1 )
 
  887               ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 ) 
THEN 
  889                  suml = ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
 
  890     $                   c( min( k2+1, m ), l1 ), 1 )
 
  891                  sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
 
  892     $                   b( l1, min( l2+1, n ) ), ldb )
 
  893                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  895                  suml = ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
 
  896     $                   c( min( k2+1, m ), l1 ), 1 )
 
  897                  sumr = ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
 
  898     $                   b( l1, min( l2+1, n ) ), ldb )
 
  899                  vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
 
  901                  CALL dlaln2( .false., 2, 1, smin, one, a( k1, k1 ),
 
  902     $                         lda, one, one, vec, 2, -sgn*b( l1, l1 ),
 
  903     $                         zero, x, 2, scaloc, xnorm, ierr )
 
  907                  IF( scaloc.NE.one ) 
THEN 
  909                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  913                  c( k1, l1 ) = x( 1, 1 )
 
  914                  c( k2, l1 ) = x( 2, 1 )
 
  916               ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 ) 
THEN 
  918                  suml = ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
 
  919     $                   c( min( k1+1, m ), l1 ), 1 )
 
  920                  sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
 
  921     $                   b( l1, min( l2+1, n ) ), ldb )
 
  922                  vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
 
  924                  suml = ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
 
  925     $                   c( min( k1+1, m ), l2 ), 1 )
 
  926                  sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
 
  927     $                   b( l2, min( l2+1, n ) ), ldb )
 
  928                  vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
 
  930                  CALL dlaln2( .false., 2, 1, smin, one, b( l1, l1 ),
 
  931     $                         ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
 
  932     $                         zero, x, 2, scaloc, xnorm, ierr )
 
  936                  IF( scaloc.NE.one ) 
THEN 
  938                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  942                  c( k1, l1 ) = x( 1, 1 )
 
  943                  c( k1, l2 ) = x( 2, 1 )
 
  945               ELSE IF( l1.NE.l2 .AND. k1.NE.k2 ) 
THEN 
  947                  suml = ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
 
  948     $                   c( min( k2+1, m ), l1 ), 1 )
 
  949                  sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
 
  950     $                   b( l1, min( l2+1, n ) ), ldb )
 
  951                  vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
 
  953                  suml = ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
 
  954     $                   c( min( k2+1, m ), l2 ), 1 )
 
  955                  sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
 
  956     $                   b( l2, min( l2+1, n ) ), ldb )
 
  957                  vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
 
  959                  suml = ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
 
  960     $                   c( min( k2+1, m ), l1 ), 1 )
 
  961                  sumr = ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
 
  962     $                   b( l1, min( l2+1, n ) ), ldb )
 
  963                  vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
 
  965                  suml = ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
 
  966     $                   c( min( k2+1, m ), l2 ), 1 )
 
  967                  sumr = ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
 
  968     $                   b( l2, min( l2+1, n ) ), ldb )
 
  969                  vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
 
  971                  CALL dlasy2( .false., .true., isgn, 2, 2, a( k1,
 
  973     $                         lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
 
  978                  IF( scaloc.NE.one ) 
THEN 
  980                        CALL dscal( m, scaloc, c( 1, j ), 1 )
 
  984                  c( k1, l1 ) = x( 1, 1 )
 
  985                  c( k1, l2 ) = x( 1, 2 )
 
  986                  c( k2, l1 ) = x( 2, 1 )
 
  987                  c( k2, l2 ) = x( 2, 2 )