164 SUBROUTINE dtrsyl( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
173 CHARACTER trana, tranb
174 INTEGER info, isgn, lda, ldb, ldc, m, n
175 DOUBLE PRECISION scale
178 DOUBLE PRECISION a( lda, * ), b( ldb, * ), c( ldc, * )
184 DOUBLE PRECISION zero, one
185 parameter( zero = 0.0d+0, one = 1.0d+0 )
188 LOGICAL notrna, notrnb
189 INTEGER ierr, j, k, k1, k2, knext, l, l1, l2, lnext
190 DOUBLE PRECISION a11, bignum, da11, db, eps, scaloc, sgn, smin,
191 $ smlnum, suml, sumr, xnorm
194 DOUBLE PRECISION dum( 1 ), vec( 2, 2 ), x( 2, 2 )
205 INTRINSIC abs, dble, max, min
211 notrna =
lsame( trana,
'N' )
212 notrnb =
lsame( tranb,
'N' )
215 IF( .NOT.notrna .AND. .NOT.
lsame( trana,
'T' ) .AND. .NOT.
216 $
lsame( trana,
'C' ) )
THEN
218 ELSE IF( .NOT.notrnb .AND. .NOT.
lsame( tranb,
'T' ) .AND. .NOT.
219 $
lsame( tranb,
'C' ) )
THEN
221 ELSE IF( isgn.NE.1 .AND. isgn.NE.-1 )
THEN
223 ELSE IF( m.LT.0 )
THEN
225 ELSE IF( n.LT.0 )
THEN
227 ELSE IF( lda.LT.max( 1, m ) )
THEN
229 ELSE IF( ldb.LT.max( 1, n ) )
THEN
231 ELSE IF( ldc.LT.max( 1, m ) )
THEN
235 CALL
xerbla(
'DTRSYL', -info )
242 IF( m.EQ.0 .OR. n.EQ.0 )
249 bignum = one / smlnum
250 CALL
dlabad( smlnum, bignum )
251 smlnum = smlnum*dble( m*n ) / eps
252 bignum = one / smlnum
254 smin = max( smlnum, eps*
dlange(
'M', m, m, a, lda, dum ),
255 $ eps*
dlange(
'M', n, n, b, ldb, dum ) )
259 IF( notrna .AND. notrnb )
THEN
284 IF( b( l+1, l ).NE.zero )
THEN
306 IF( a( k, k-1 ).NE.zero )
THEN
317 IF( l1.EQ.l2 .AND. k1.EQ.k2 )
THEN
318 suml =
ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
319 $ c( min( k1+1, m ), l1 ), 1 )
320 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
321 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
324 a11 = a( k1, k1 ) + sgn*b( l1, l1 )
326 IF( da11.LE.smin )
THEN
331 db = abs( vec( 1, 1 ) )
332 IF( da11.LT.one .AND. db.GT.one )
THEN
333 IF( db.GT.bignum*da11 )
336 x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
338 IF( scaloc.NE.one )
THEN
340 CALL
dscal( m, scaloc, c( 1, j ), 1 )
344 c( k1, l1 ) = x( 1, 1 )
346 ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 )
THEN
348 suml =
ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
349 $ c( min( k2+1, m ), l1 ), 1 )
350 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
351 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
353 suml =
ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
354 $ c( min( k2+1, m ), l1 ), 1 )
355 sumr =
ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
356 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
358 CALL
dlaln2( .false., 2, 1, smin, one, a( k1, k1 ),
359 $ lda, one, one, vec, 2, -sgn*b( l1, l1 ),
360 $ zero, x, 2, scaloc, xnorm, ierr )
364 IF( scaloc.NE.one )
THEN
366 CALL
dscal( m, scaloc, c( 1, j ), 1 )
370 c( k1, l1 ) = x( 1, 1 )
371 c( k2, l1 ) = x( 2, 1 )
373 ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 )
THEN
375 suml =
ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
376 $ c( min( k1+1, m ), l1 ), 1 )
377 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
378 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
380 suml =
ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
381 $ c( min( k1+1, m ), l2 ), 1 )
382 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
383 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
385 CALL
dlaln2( .true., 2, 1, smin, one, b( l1, l1 ),
386 $ ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
387 $ zero, x, 2, scaloc, xnorm, ierr )
391 IF( scaloc.NE.one )
THEN
393 CALL
dscal( m, scaloc, c( 1, j ), 1 )
397 c( k1, l1 ) = x( 1, 1 )
398 c( k1, l2 ) = x( 2, 1 )
400 ELSE IF( l1.NE.l2 .AND. k1.NE.k2 )
THEN
402 suml =
ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
403 $ c( min( k2+1, m ), l1 ), 1 )
404 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
405 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
407 suml =
ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
408 $ c( min( k2+1, m ), l2 ), 1 )
409 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
410 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
412 suml =
ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
413 $ c( min( k2+1, m ), l1 ), 1 )
414 sumr =
ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
415 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
417 suml =
ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
418 $ c( min( k2+1, m ), l2 ), 1 )
419 sumr =
ddot( l1-1, c( k2, 1 ), ldc, b( 1, l2 ), 1 )
420 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
422 CALL
dlasy2( .false., .false., isgn, 2, 2,
423 $ a( k1, k1 ), lda, b( l1, l1 ), ldb, vec,
424 $ 2, scaloc, x, 2, xnorm, ierr )
428 IF( scaloc.NE.one )
THEN
430 CALL
dscal( m, scaloc, c( 1, j ), 1 )
434 c( k1, l1 ) = x( 1, 1 )
435 c( k1, l2 ) = x( 1, 2 )
436 c( k2, l1 ) = x( 2, 1 )
437 c( k2, l2 ) = x( 2, 2 )
444 ELSE IF( .NOT.notrna .AND. notrnb )
THEN
469 IF( b( l+1, l ).NE.zero )
THEN
491 IF( a( k+1, k ).NE.zero )
THEN
502 IF( l1.EQ.l2 .AND. k1.EQ.k2 )
THEN
503 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
504 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
505 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
508 a11 = a( k1, k1 ) + sgn*b( l1, l1 )
510 IF( da11.LE.smin )
THEN
515 db = abs( vec( 1, 1 ) )
516 IF( da11.LT.one .AND. db.GT.one )
THEN
517 IF( db.GT.bignum*da11 )
520 x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
522 IF( scaloc.NE.one )
THEN
524 CALL
dscal( m, scaloc, c( 1, j ), 1 )
528 c( k1, l1 ) = x( 1, 1 )
530 ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 )
THEN
532 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
533 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
534 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
536 suml =
ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
537 sumr =
ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
538 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
540 CALL
dlaln2( .true., 2, 1, smin, one, a( k1, k1 ),
541 $ lda, one, one, vec, 2, -sgn*b( l1, l1 ),
542 $ zero, x, 2, scaloc, xnorm, ierr )
546 IF( scaloc.NE.one )
THEN
548 CALL
dscal( m, scaloc, c( 1, j ), 1 )
552 c( k1, l1 ) = x( 1, 1 )
553 c( k2, l1 ) = x( 2, 1 )
555 ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 )
THEN
557 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
558 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
559 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
561 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
562 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
563 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
565 CALL
dlaln2( .true., 2, 1, smin, one, b( l1, l1 ),
566 $ ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
567 $ zero, x, 2, scaloc, xnorm, ierr )
571 IF( scaloc.NE.one )
THEN
573 CALL
dscal( m, scaloc, c( 1, j ), 1 )
577 c( k1, l1 ) = x( 1, 1 )
578 c( k1, l2 ) = x( 2, 1 )
580 ELSE IF( l1.NE.l2 .AND. k1.NE.k2 )
THEN
582 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
583 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
584 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
586 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
587 sumr =
ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
588 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
590 suml =
ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
591 sumr =
ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
592 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
594 suml =
ddot( k1-1, a( 1, k2 ), 1, c( 1, l2 ), 1 )
595 sumr =
ddot( l1-1, c( k2, 1 ), ldc, b( 1, l2 ), 1 )
596 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
598 CALL
dlasy2( .true., .false., isgn, 2, 2, a( k1, k1 ),
599 $ lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
604 IF( scaloc.NE.one )
THEN
606 CALL
dscal( m, scaloc, c( 1, j ), 1 )
610 c( k1, l1 ) = x( 1, 1 )
611 c( k1, l2 ) = x( 1, 2 )
612 c( k2, l1 ) = x( 2, 1 )
613 c( k2, l2 ) = x( 2, 2 )
619 ELSE IF( .NOT.notrna .AND. .NOT.notrnb )
THEN
644 IF( b( l, l-1 ).NE.zero )
THEN
666 IF( a( k+1, k ).NE.zero )
THEN
677 IF( l1.EQ.l2 .AND. k1.EQ.k2 )
THEN
678 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
679 sumr =
ddot( n-l1, c( k1, min( l1+1, n ) ), ldc,
680 $ b( l1, min( l1+1, n ) ), ldb )
681 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
684 a11 = a( k1, k1 ) + sgn*b( l1, l1 )
686 IF( da11.LE.smin )
THEN
691 db = abs( vec( 1, 1 ) )
692 IF( da11.LT.one .AND. db.GT.one )
THEN
693 IF( db.GT.bignum*da11 )
696 x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
698 IF( scaloc.NE.one )
THEN
700 CALL
dscal( m, scaloc, c( 1, j ), 1 )
704 c( k1, l1 ) = x( 1, 1 )
706 ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 )
THEN
708 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
709 sumr =
ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
710 $ b( l1, min( l2+1, n ) ), ldb )
711 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
713 suml =
ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
714 sumr =
ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
715 $ b( l1, min( l2+1, n ) ), ldb )
716 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
718 CALL
dlaln2( .true., 2, 1, smin, one, a( k1, k1 ),
719 $ lda, one, one, vec, 2, -sgn*b( l1, l1 ),
720 $ zero, x, 2, scaloc, xnorm, ierr )
724 IF( scaloc.NE.one )
THEN
726 CALL
dscal( m, scaloc, c( 1, j ), 1 )
730 c( k1, l1 ) = x( 1, 1 )
731 c( k2, l1 ) = x( 2, 1 )
733 ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 )
THEN
735 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
736 sumr =
ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
737 $ b( l1, min( l2+1, n ) ), ldb )
738 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
740 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
741 sumr =
ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
742 $ b( l2, min( l2+1, n ) ), ldb )
743 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
745 CALL
dlaln2( .false., 2, 1, smin, one, b( l1, l1 ),
746 $ ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
747 $ zero, x, 2, scaloc, xnorm, ierr )
751 IF( scaloc.NE.one )
THEN
753 CALL
dscal( m, scaloc, c( 1, j ), 1 )
757 c( k1, l1 ) = x( 1, 1 )
758 c( k1, l2 ) = x( 2, 1 )
760 ELSE IF( l1.NE.l2 .AND. k1.NE.k2 )
THEN
762 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
763 sumr =
ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
764 $ b( l1, min( l2+1, n ) ), ldb )
765 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
767 suml =
ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
768 sumr =
ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
769 $ b( l2, min( l2+1, n ) ), ldb )
770 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
772 suml =
ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
773 sumr =
ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
774 $ b( l1, min( l2+1, n ) ), ldb )
775 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
777 suml =
ddot( k1-1, a( 1, k2 ), 1, c( 1, l2 ), 1 )
778 sumr =
ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
779 $ b( l2, min( l2+1, n ) ), ldb )
780 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
782 CALL
dlasy2( .true., .true., isgn, 2, 2, a( k1, k1 ),
783 $ lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
788 IF( scaloc.NE.one )
THEN
790 CALL
dscal( m, scaloc, c( 1, j ), 1 )
794 c( k1, l1 ) = x( 1, 1 )
795 c( k1, l2 ) = x( 1, 2 )
796 c( k2, l1 ) = x( 2, 1 )
797 c( k2, l2 ) = x( 2, 2 )
803 ELSE IF( notrna .AND. .NOT.notrnb )
THEN
828 IF( b( l, l-1 ).NE.zero )
THEN
850 IF( a( k, k-1 ).NE.zero )
THEN
861 IF( l1.EQ.l2 .AND. k1.EQ.k2 )
THEN
862 suml =
ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
863 $ c( min( k1+1, m ), l1 ), 1 )
864 sumr =
ddot( n-l1, c( k1, min( l1+1, n ) ), ldc,
865 $ b( l1, min( l1+1, n ) ), ldb )
866 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
869 a11 = a( k1, k1 ) + sgn*b( l1, l1 )
871 IF( da11.LE.smin )
THEN
876 db = abs( vec( 1, 1 ) )
877 IF( da11.LT.one .AND. db.GT.one )
THEN
878 IF( db.GT.bignum*da11 )
881 x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
883 IF( scaloc.NE.one )
THEN
885 CALL
dscal( m, scaloc, c( 1, j ), 1 )
889 c( k1, l1 ) = x( 1, 1 )
891 ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 )
THEN
893 suml =
ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
894 $ c( min( k2+1, m ), l1 ), 1 )
895 sumr =
ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
896 $ b( l1, min( l2+1, n ) ), ldb )
897 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
899 suml =
ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
900 $ c( min( k2+1, m ), l1 ), 1 )
901 sumr =
ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
902 $ b( l1, min( l2+1, n ) ), ldb )
903 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
905 CALL
dlaln2( .false., 2, 1, smin, one, a( k1, k1 ),
906 $ lda, one, one, vec, 2, -sgn*b( l1, l1 ),
907 $ zero, x, 2, scaloc, xnorm, ierr )
911 IF( scaloc.NE.one )
THEN
913 CALL
dscal( m, scaloc, c( 1, j ), 1 )
917 c( k1, l1 ) = x( 1, 1 )
918 c( k2, l1 ) = x( 2, 1 )
920 ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 )
THEN
922 suml =
ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
923 $ c( min( k1+1, m ), l1 ), 1 )
924 sumr =
ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
925 $ b( l1, min( l2+1, n ) ), ldb )
926 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
928 suml =
ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
929 $ c( min( k1+1, m ), l2 ), 1 )
930 sumr =
ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
931 $ b( l2, min( l2+1, n ) ), ldb )
932 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
934 CALL
dlaln2( .false., 2, 1, smin, one, b( l1, l1 ),
935 $ ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
936 $ zero, x, 2, scaloc, xnorm, ierr )
940 IF( scaloc.NE.one )
THEN
942 CALL
dscal( m, scaloc, c( 1, j ), 1 )
946 c( k1, l1 ) = x( 1, 1 )
947 c( k1, l2 ) = x( 2, 1 )
949 ELSE IF( l1.NE.l2 .AND. k1.NE.k2 )
THEN
951 suml =
ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
952 $ c( min( k2+1, m ), l1 ), 1 )
953 sumr =
ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
954 $ b( l1, min( l2+1, n ) ), ldb )
955 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
957 suml =
ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
958 $ c( min( k2+1, m ), l2 ), 1 )
959 sumr =
ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
960 $ b( l2, min( l2+1, n ) ), ldb )
961 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
963 suml =
ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
964 $ c( min( k2+1, m ), l1 ), 1 )
965 sumr =
ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
966 $ b( l1, min( l2+1, n ) ), ldb )
967 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
969 suml =
ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
970 $ c( min( k2+1, m ), l2 ), 1 )
971 sumr =
ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
972 $ b( l2, min( l2+1, n ) ), ldb )
973 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
975 CALL
dlasy2( .false., .true., isgn, 2, 2, a( k1, k1 ),
976 $ lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
981 IF( scaloc.NE.one )
THEN
983 CALL
dscal( m, scaloc, c( 1, j ), 1 )
987 c( k1, l1 ) = x( 1, 1 )
988 c( k1, l2 ) = x( 1, 2 )
989 c( k2, l1 ) = x( 2, 1 )
990 c( k2, l2 ) = x( 2, 2 )