162 SUBROUTINE dtrsyl( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
170 CHARACTER TRANA, TRANB
171 INTEGER INFO, ISGN, LDA, LDB, LDC, M, N
172 DOUBLE PRECISION SCALE
175 DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * )
181 DOUBLE PRECISION ZERO, ONE
182 parameter( zero = 0.0d+0, one = 1.0d+0 )
185 LOGICAL NOTRNA, NOTRNB
186 INTEGER IERR, J, K, K1, K2, KNEXT, L, L1, L2, LNEXT
187 DOUBLE PRECISION A11, BIGNUM, DA11, DB, EPS, SCALOC, SGN, SMIN,
188 $ smlnum, suml, sumr, xnorm
191 DOUBLE PRECISION DUM( 1 ), VEC( 2, 2 ), X( 2, 2 )
195 DOUBLE PRECISION DDOT, DLAMCH, DLANGE
196 EXTERNAL lsame, ddot, dlamch, dlange
202 INTRINSIC abs, dble, max, min
208 notrna = lsame( trana,
'N' )
209 notrnb = lsame( tranb,
'N' )
212 IF( .NOT.notrna .AND. .NOT.lsame( trana,
'T' ) .AND. .NOT.
213 $ lsame( trana,
'C' ) )
THEN
215 ELSE IF( .NOT.notrnb .AND. .NOT.lsame( tranb,
'T' ) .AND. .NOT.
216 $ lsame( tranb,
'C' ) )
THEN
218 ELSE IF( isgn.NE.1 .AND. isgn.NE.-1 )
THEN
220 ELSE IF( m.LT.0 )
THEN
222 ELSE IF( n.LT.0 )
THEN
224 ELSE IF( lda.LT.max( 1, m ) )
THEN
226 ELSE IF( ldb.LT.max( 1, n ) )
THEN
228 ELSE IF( ldc.LT.max( 1, m ) )
THEN
232 CALL xerbla(
'DTRSYL', -info )
239 IF( m.EQ.0 .OR. n.EQ.0 )
245 smlnum = dlamch(
'S' )
246 bignum = one / smlnum
247 smlnum = smlnum*dble( m*n ) / eps
248 bignum = one / smlnum
250 smin = max( smlnum, eps*dlange(
'M', m, m, a, lda, dum ),
251 $ eps*dlange(
'M', n, n, b, ldb, dum ) )
255 IF( notrna .AND. notrnb )
THEN
280 IF( b( l+1, l ).NE.zero )
THEN
302 IF( a( k, k-1 ).NE.zero )
THEN
313 IF( l1.EQ.l2 .AND. k1.EQ.k2 )
THEN
314 suml = ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
315 $ c( min( k1+1, m ), l1 ), 1 )
316 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
317 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
320 a11 = a( k1, k1 ) + sgn*b( l1, l1 )
322 IF( da11.LE.smin )
THEN
327 db = abs( vec( 1, 1 ) )
328 IF( da11.LT.one .AND. db.GT.one )
THEN
329 IF( db.GT.bignum*da11 )
332 x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
334 IF( scaloc.NE.one )
THEN
336 CALL dscal( m, scaloc, c( 1, j ), 1 )
340 c( k1, l1 ) = x( 1, 1 )
342 ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 )
THEN
344 suml = ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
345 $ c( min( k2+1, m ), l1 ), 1 )
346 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
347 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
349 suml = ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
350 $ c( min( k2+1, m ), l1 ), 1 )
351 sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
352 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
354 CALL dlaln2( .false., 2, 1, smin, one, a( k1, k1 ),
355 $ lda, one, one, vec, 2, -sgn*b( l1, l1 ),
356 $ zero, x, 2, scaloc, xnorm, ierr )
360 IF( scaloc.NE.one )
THEN
362 CALL dscal( m, scaloc, c( 1, j ), 1 )
366 c( k1, l1 ) = x( 1, 1 )
367 c( k2, l1 ) = x( 2, 1 )
369 ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 )
THEN
371 suml = ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
372 $ c( min( k1+1, m ), l1 ), 1 )
373 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
374 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
376 suml = ddot( m-k1, a( k1, min( k1+1, m ) ), lda,
377 $ c( min( k1+1, m ), l2 ), 1 )
378 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
379 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
381 CALL dlaln2( .true., 2, 1, smin, one, b( l1, l1 ),
382 $ ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
383 $ zero, x, 2, scaloc, xnorm, ierr )
387 IF( scaloc.NE.one )
THEN
389 CALL dscal( m, scaloc, c( 1, j ), 1 )
393 c( k1, l1 ) = x( 1, 1 )
394 c( k1, l2 ) = x( 2, 1 )
396 ELSE IF( l1.NE.l2 .AND. k1.NE.k2 )
THEN
398 suml = ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
399 $ c( min( k2+1, m ), l1 ), 1 )
400 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
401 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
403 suml = ddot( m-k2, a( k1, min( k2+1, m ) ), lda,
404 $ c( min( k2+1, m ), l2 ), 1 )
405 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
406 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
408 suml = ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
409 $ c( min( k2+1, m ), l1 ), 1 )
410 sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
411 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
413 suml = ddot( m-k2, a( k2, min( k2+1, m ) ), lda,
414 $ c( min( k2+1, m ), l2 ), 1 )
415 sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l2 ), 1 )
416 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
418 CALL dlasy2( .false., .false., isgn, 2, 2,
419 $ a( k1, k1 ), lda, b( l1, l1 ), ldb, vec,
420 $ 2, scaloc, x, 2, xnorm, ierr )
424 IF( scaloc.NE.one )
THEN
426 CALL dscal( m, scaloc, c( 1, j ), 1 )
430 c( k1, l1 ) = x( 1, 1 )
431 c( k1, l2 ) = x( 1, 2 )
432 c( k2, l1 ) = x( 2, 1 )
433 c( k2, l2 ) = x( 2, 2 )
440 ELSE IF( .NOT.notrna .AND. notrnb )
THEN
465 IF( b( l+1, l ).NE.zero )
THEN
487 IF( a( k+1, k ).NE.zero )
THEN
498 IF( l1.EQ.l2 .AND. k1.EQ.k2 )
THEN
499 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
500 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
501 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
504 a11 = a( k1, k1 ) + sgn*b( l1, l1 )
506 IF( da11.LE.smin )
THEN
511 db = abs( vec( 1, 1 ) )
512 IF( da11.LT.one .AND. db.GT.one )
THEN
513 IF( db.GT.bignum*da11 )
516 x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
518 IF( scaloc.NE.one )
THEN
520 CALL dscal( m, scaloc, c( 1, j ), 1 )
524 c( k1, l1 ) = x( 1, 1 )
526 ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 )
THEN
528 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
529 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
530 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
532 suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
533 sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
534 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
536 CALL dlaln2( .true., 2, 1, smin, one, a( k1, k1 ),
537 $ lda, one, one, vec, 2, -sgn*b( l1, l1 ),
538 $ zero, x, 2, scaloc, xnorm, ierr )
542 IF( scaloc.NE.one )
THEN
544 CALL dscal( m, scaloc, c( 1, j ), 1 )
548 c( k1, l1 ) = x( 1, 1 )
549 c( k2, l1 ) = x( 2, 1 )
551 ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 )
THEN
553 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
554 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
555 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
557 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
558 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
559 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
561 CALL dlaln2( .true., 2, 1, smin, one, b( l1, l1 ),
562 $ ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
563 $ zero, x, 2, scaloc, xnorm, ierr )
567 IF( scaloc.NE.one )
THEN
569 CALL dscal( m, scaloc, c( 1, j ), 1 )
573 c( k1, l1 ) = x( 1, 1 )
574 c( k1, l2 ) = x( 2, 1 )
576 ELSE IF( l1.NE.l2 .AND. k1.NE.k2 )
THEN
578 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
579 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
580 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
582 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
583 sumr = ddot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
584 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
586 suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
587 sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
588 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
590 suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l2 ), 1 )
591 sumr = ddot( l1-1, c( k2, 1 ), ldc, b( 1, l2 ), 1 )
592 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
594 CALL dlasy2( .true., .false., isgn, 2, 2, a( k1, k1 ),
595 $ lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
600 IF( scaloc.NE.one )
THEN
602 CALL dscal( m, scaloc, c( 1, j ), 1 )
606 c( k1, l1 ) = x( 1, 1 )
607 c( k1, l2 ) = x( 1, 2 )
608 c( k2, l1 ) = x( 2, 1 )
609 c( k2, l2 ) = x( 2, 2 )
615 ELSE IF( .NOT.notrna .AND. .NOT.notrnb )
THEN
640 IF( b( l, l-1 ).NE.zero )
THEN
662 IF( a( k+1, k ).NE.zero )
THEN
673 IF( l1.EQ.l2 .AND. k1.EQ.k2 )
THEN
674 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
675 sumr = ddot( n-l1, c( k1, min( l1+1, n ) ), ldc,
676 $ b( l1, min( l1+1, n ) ), ldb )
677 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
680 a11 = a( k1, k1 ) + sgn*b( l1, l1 )
682 IF( da11.LE.smin )
THEN
687 db = abs( vec( 1, 1 ) )
688 IF( da11.LT.one .AND. db.GT.one )
THEN
689 IF( db.GT.bignum*da11 )
692 x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
694 IF( scaloc.NE.one )
THEN
696 CALL dscal( m, scaloc, c( 1, j ), 1 )
700 c( k1, l1 ) = x( 1, 1 )
702 ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 )
THEN
704 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
705 sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
706 $ b( l1, min( l2+1, n ) ), ldb )
707 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
709 suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
710 sumr = ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
711 $ b( l1, min( l2+1, n ) ), ldb )
712 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
714 CALL dlaln2( .true., 2, 1, smin, one, a( k1, k1 ),
715 $ lda, one, one, vec, 2, -sgn*b( l1, l1 ),
716 $ zero, x, 2, scaloc, xnorm, ierr )
720 IF( scaloc.NE.one )
THEN
722 CALL dscal( m, scaloc, c( 1, j ), 1 )
726 c( k1, l1 ) = x( 1, 1 )
727 c( k2, l1 ) = x( 2, 1 )
729 ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 )
THEN
731 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
732 sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
733 $ b( l1, min( l2+1, n ) ), ldb )
734 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
736 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
737 sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
738 $ b( l2, min( l2+1, n ) ), ldb )
739 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
741 CALL dlaln2( .false., 2, 1, smin, one, b( l1, l1 ),
742 $ ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
743 $ zero, x, 2, scaloc, xnorm, ierr )
747 IF( scaloc.NE.one )
THEN
749 CALL dscal( m, scaloc, c( 1, j ), 1 )
753 c( k1, l1 ) = x( 1, 1 )
754 c( k1, l2 ) = x( 2, 1 )
756 ELSE IF( l1.NE.l2 .AND. k1.NE.k2 )
THEN
758 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
759 sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
760 $ b( l1, min( l2+1, n ) ), ldb )
761 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
763 suml = ddot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
764 sumr = ddot( n-l2, c( k1, min( l2+1, n ) ), ldc,
765 $ b( l2, min( l2+1, n ) ), ldb )
766 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
768 suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
769 sumr = ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
770 $ b( l1, min( l2+1, n ) ), ldb )
771 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
773 suml = ddot( k1-1, a( 1, k2 ), 1, c( 1, l2 ), 1 )
774 sumr = ddot( n-l2, c( k2, min( l2+1, n ) ), ldc,
775 $ b( l2, min( l2+1, n ) ), ldb )
776 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
778 CALL dlasy2( .true., .true., isgn, 2, 2, a( k1, 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, k1 ),
972 $ lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
977 IF( scaloc.NE.one )
THEN
979 CALL dscal( m, scaloc, c( 1, j ), 1 )
983 c( k1, l1 ) = x( 1, 1 )
984 c( k1, l2 ) = x( 1, 2 )
985 c( k2, l1 ) = x( 2, 1 )
986 c( k2, l2 ) = x( 2, 2 )
subroutine xerbla(srname, info)
subroutine dlaln2(ltrans, na, nw, smin, ca, a, lda, d1, d2, b, ldb, wr, wi, x, ldx, scale, xnorm, info)
DLALN2 solves a 1-by-1 or 2-by-2 linear system of equations of the specified form.
subroutine dlasy2(ltranl, ltranr, isgn, n1, n2, tl, ldtl, tr, ldtr, b, ldb, scale, x, ldx, xnorm, info)
DLASY2 solves the Sylvester matrix equation where the matrices are of order 1 or 2.
subroutine dscal(n, da, dx, incx)
DSCAL
subroutine dtrsyl(trana, tranb, isgn, m, n, a, lda, b, ldb, c, ldc, scale, info)
DTRSYL