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 )
198 DOUBLE PRECISION DDOT, DLAMCH, DLANGE
199 EXTERNAL lsame, ddot, dlamch, dlange
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 )
248 smlnum = dlamch(
'S' )
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 )
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 xerbla(SRNAME, INFO)
XERBLA
subroutine dlabad(SMALL, LARGE)
DLABAD
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 dscal(N, DA, DX, INCX)
DSCAL
subroutine dtrsyl(TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCALE, INFO)
DTRSYL