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 )
double precision function dlamch(CMACH)
DLAMCH
double precision function ddot(N, DX, INCX, DY, INCY)
DDOT
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.
double precision function dlange(NORM, M, N, A, LDA, WORK)
DLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
subroutine dscal(N, DA, DX, INCX)
DSCAL
logical function lsame(CA, CB)
LSAME