164 SUBROUTINE strsyl( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
173 CHARACTER TRANA, TRANB
174 INTEGER INFO, ISGN, LDA, LDB, LDC, M, N
178 REAL A( lda, * ), B( ldb, * ), C( ldc, * )
185 parameter ( zero = 0.0e+0, one = 1.0e+0 )
188 LOGICAL NOTRNA, NOTRNB
189 INTEGER IERR, J, K, K1, K2, KNEXT, L, L1, L2, LNEXT
190 REAL A11, BIGNUM, DA11, DB, EPS, SCALOC, SGN, SMIN,
191 $ smlnum, suml, sumr, xnorm
194 REAL DUM( 1 ), VEC( 2, 2 ), X( 2, 2 )
198 REAL SDOT, SLAMCH, SLANGE
199 EXTERNAL lsame, sdot, slamch, slange
205 INTRINSIC abs, max, min, real
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(
'STRSYL', -info )
242 IF( m.EQ.0 .OR. n.EQ.0 )
248 smlnum = slamch(
'S' )
249 bignum = one / smlnum
250 CALL slabad( smlnum, bignum )
251 smlnum = smlnum*
REAL( M*N ) / EPS
252 bignum = one / smlnum
254 smin = max( smlnum, eps*slange(
'M', m, m, a, lda, dum ),
255 $ eps*slange(
'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 = sdot( m-k1, a( k1, min( k1+1, m ) ), lda,
319 $ c( min( k1+1, m ), l1 ), 1 )
320 sumr = sdot( 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 sscal( 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 = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
349 $ c( min( k2+1, m ), l1 ), 1 )
350 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
351 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
353 suml = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
354 $ c( min( k2+1, m ), l1 ), 1 )
355 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
356 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
358 CALL slaln2( .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 sscal( 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 = sdot( m-k1, a( k1, min( k1+1, m ) ), lda,
376 $ c( min( k1+1, m ), l1 ), 1 )
377 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
378 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
380 suml = sdot( m-k1, a( k1, min( k1+1, m ) ), lda,
381 $ c( min( k1+1, m ), l2 ), 1 )
382 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
383 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
385 CALL slaln2( .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 sscal( 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 = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
403 $ c( min( k2+1, m ), l1 ), 1 )
404 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
405 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
407 suml = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
408 $ c( min( k2+1, m ), l2 ), 1 )
409 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
410 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
412 suml = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
413 $ c( min( k2+1, m ), l1 ), 1 )
414 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
415 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
417 suml = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
418 $ c( min( k2+1, m ), l2 ), 1 )
419 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l2 ), 1 )
420 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
422 CALL slasy2( .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 sscal( 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 = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
504 sumr = sdot( 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 sscal( 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 = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
533 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
534 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
536 suml = sdot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
537 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
538 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
540 CALL slaln2( .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 sscal( 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 = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
558 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
559 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
561 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
562 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
563 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
565 CALL slaln2( .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 sscal( 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 = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
583 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
584 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
586 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
587 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
588 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
590 suml = sdot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
591 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
592 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
594 suml = sdot( k1-1, a( 1, k2 ), 1, c( 1, l2 ), 1 )
595 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l2 ), 1 )
596 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
598 CALL slasy2( .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 sscal( 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 = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
679 sumr = sdot( 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 sscal( 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 = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
709 sumr = sdot( 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 = sdot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
714 sumr = sdot( 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 slaln2( .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 sscal( 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 = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
736 sumr = sdot( 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 = sdot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
741 sumr = sdot( 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 slaln2( .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 sscal( 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 = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
763 sumr = sdot( 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 = sdot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
768 sumr = sdot( 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 = sdot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
773 sumr = sdot( 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 = sdot( k1-1, a( 1, k2 ), 1, c( 1, l2 ), 1 )
778 sumr = sdot( 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 slasy2( .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 sscal( 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 = sdot( m-k1, a( k1, min(k1+1, m ) ), lda,
863 $ c( min( k1+1, m ), l1 ), 1 )
864 sumr = sdot( 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 sscal( 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 = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
894 $ c( min( k2+1, m ), l1 ), 1 )
895 sumr = sdot( 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 = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
900 $ c( min( k2+1, m ), l1 ), 1 )
901 sumr = sdot( 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 slaln2( .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 sscal( 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 = sdot( m-k1, a( k1, min( k1+1, m ) ), lda,
923 $ c( min( k1+1, m ), l1 ), 1 )
924 sumr = sdot( 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 = sdot( m-k1, a( k1, min( k1+1, m ) ), lda,
929 $ c( min( k1+1, m ), l2 ), 1 )
930 sumr = sdot( 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 slaln2( .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 sscal( 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 = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
952 $ c( min( k2+1, m ), l1 ), 1 )
953 sumr = sdot( 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 = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
958 $ c( min( k2+1, m ), l2 ), 1 )
959 sumr = sdot( 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 = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
964 $ c( min( k2+1, m ), l1 ), 1 )
965 sumr = sdot( 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 = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
970 $ c( min( k2+1, m ), l2 ), 1 )
971 sumr = sdot( 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 slasy2( .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 sscal( 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 slasy2(LTRANL, LTRANR, ISGN, N1, N2, TL, LDTL, TR, LDTR, B, LDB, SCALE, X, LDX, XNORM, INFO)
SLASY2 solves the Sylvester matrix equation where the matrices are of order 1 or 2.
subroutine strsyl(TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCALE, INFO)
STRSYL
subroutine slabad(SMALL, LARGE)
SLABAD
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine slaln2(LTRANS, NA, NW, SMIN, CA, A, LDA, D1, D2, B, LDB, WR, WI, X, LDX, SCALE, XNORM, INFO)
SLALN2 solves a 1-by-1 or 2-by-2 linear system of equations of the specified form.
subroutine sscal(N, SA, SX, INCX)
SSCAL