160 SUBROUTINE strsyl( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
168 CHARACTER TRANA, TRANB
169 INTEGER INFO, ISGN, LDA, LDB, LDC, M, N
173 REAL A( LDA, * ), B( LDB, * ), C( LDC, * )
180 parameter( zero = 0.0e+0, one = 1.0e+0 )
183 LOGICAL NOTRNA, NOTRNB
184 INTEGER IERR, J, K, K1, K2, KNEXT, L, L1, L2, LNEXT
185 REAL A11, BIGNUM, DA11, DB, EPS, SCALOC, SGN, SMIN,
186 $ smlnum, suml, sumr, xnorm
189 REAL DUM( 1 ), VEC( 2, 2 ), X( 2, 2 )
193 REAL SDOT, SLAMCH, SLANGE
194 EXTERNAL lsame, sdot, slamch, slange
200 INTRINSIC abs, max, min, real
206 notrna = lsame( trana,
'N' )
207 notrnb = lsame( tranb,
'N' )
210 IF( .NOT.notrna .AND. .NOT.lsame( trana,
'T' ) .AND. .NOT.
211 $ lsame( trana,
'C' ) )
THEN
213 ELSE IF( .NOT.notrnb .AND. .NOT.lsame( tranb,
'T' ) .AND. .NOT.
214 $ lsame( tranb,
'C' ) )
THEN
216 ELSE IF( isgn.NE.1 .AND. isgn.NE.-1 )
THEN
218 ELSE IF( m.LT.0 )
THEN
220 ELSE IF( n.LT.0 )
THEN
222 ELSE IF( lda.LT.max( 1, m ) )
THEN
224 ELSE IF( ldb.LT.max( 1, n ) )
THEN
226 ELSE IF( ldc.LT.max( 1, m ) )
THEN
230 CALL xerbla(
'STRSYL', -info )
237 IF( m.EQ.0 .OR. n.EQ.0 )
243 smlnum = slamch(
'S' )
244 bignum = one / smlnum
245 smlnum = smlnum*real( m*n ) / eps
246 bignum = one / smlnum
248 smin = max( smlnum, eps*slange(
'M', m, m, a, lda, dum ),
249 $ eps*slange(
'M', n, n, b, ldb, dum ) )
253 IF( notrna .AND. notrnb )
THEN
278 IF( b( l+1, l ).NE.zero )
THEN
300 IF( a( k, k-1 ).NE.zero )
THEN
311 IF( l1.EQ.l2 .AND. k1.EQ.k2 )
THEN
312 suml = sdot( m-k1, a( k1, min( k1+1, m ) ), lda,
313 $ c( min( k1+1, m ), l1 ), 1 )
314 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
315 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
318 a11 = a( k1, k1 ) + sgn*b( l1, l1 )
320 IF( da11.LE.smin )
THEN
325 db = abs( vec( 1, 1 ) )
326 IF( da11.LT.one .AND. db.GT.one )
THEN
327 IF( db.GT.bignum*da11 )
330 x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
332 IF( scaloc.NE.one )
THEN
334 CALL sscal( m, scaloc, c( 1, j ), 1 )
338 c( k1, l1 ) = x( 1, 1 )
340 ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 )
THEN
342 suml = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
343 $ c( min( k2+1, m ), l1 ), 1 )
344 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
345 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
347 suml = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
348 $ c( min( k2+1, m ), l1 ), 1 )
349 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
350 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
352 CALL slaln2( .false., 2, 1, smin, one, a( k1, k1 ),
353 $ lda, one, one, vec, 2, -sgn*b( l1, l1 ),
354 $ zero, x, 2, scaloc, xnorm, ierr )
358 IF( scaloc.NE.one )
THEN
360 CALL sscal( m, scaloc, c( 1, j ), 1 )
364 c( k1, l1 ) = x( 1, 1 )
365 c( k2, l1 ) = x( 2, 1 )
367 ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 )
THEN
369 suml = sdot( m-k1, a( k1, min( k1+1, m ) ), lda,
370 $ c( min( k1+1, m ), l1 ), 1 )
371 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
372 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
374 suml = sdot( m-k1, a( k1, min( k1+1, m ) ), lda,
375 $ c( min( k1+1, m ), l2 ), 1 )
376 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
377 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
379 CALL slaln2( .true., 2, 1, smin, one, b( l1, l1 ),
380 $ ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
381 $ zero, x, 2, scaloc, xnorm, ierr )
385 IF( scaloc.NE.one )
THEN
387 CALL sscal( m, scaloc, c( 1, j ), 1 )
391 c( k1, l1 ) = x( 1, 1 )
392 c( k1, l2 ) = x( 2, 1 )
394 ELSE IF( l1.NE.l2 .AND. k1.NE.k2 )
THEN
396 suml = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
397 $ c( min( k2+1, m ), l1 ), 1 )
398 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
399 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
401 suml = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
402 $ c( min( k2+1, m ), l2 ), 1 )
403 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
404 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
406 suml = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
407 $ c( min( k2+1, m ), l1 ), 1 )
408 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
409 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
411 suml = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
412 $ c( min( k2+1, m ), l2 ), 1 )
413 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l2 ), 1 )
414 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
416 CALL slasy2( .false., .false., isgn, 2, 2,
417 $ a( k1, k1 ), lda, b( l1, l1 ), ldb, vec,
418 $ 2, scaloc, x, 2, xnorm, ierr )
422 IF( scaloc.NE.one )
THEN
424 CALL sscal( m, scaloc, c( 1, j ), 1 )
428 c( k1, l1 ) = x( 1, 1 )
429 c( k1, l2 ) = x( 1, 2 )
430 c( k2, l1 ) = x( 2, 1 )
431 c( k2, l2 ) = x( 2, 2 )
438 ELSE IF( .NOT.notrna .AND. notrnb )
THEN
463 IF( b( l+1, l ).NE.zero )
THEN
485 IF( a( k+1, k ).NE.zero )
THEN
496 IF( l1.EQ.l2 .AND. k1.EQ.k2 )
THEN
497 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
498 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
499 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
502 a11 = a( k1, k1 ) + sgn*b( l1, l1 )
504 IF( da11.LE.smin )
THEN
509 db = abs( vec( 1, 1 ) )
510 IF( da11.LT.one .AND. db.GT.one )
THEN
511 IF( db.GT.bignum*da11 )
514 x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
516 IF( scaloc.NE.one )
THEN
518 CALL sscal( m, scaloc, c( 1, j ), 1 )
522 c( k1, l1 ) = x( 1, 1 )
524 ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 )
THEN
526 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
527 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
528 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
530 suml = sdot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
531 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
532 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
534 CALL slaln2( .true., 2, 1, smin, one, a( k1, k1 ),
535 $ lda, one, one, vec, 2, -sgn*b( l1, l1 ),
536 $ zero, x, 2, scaloc, xnorm, ierr )
540 IF( scaloc.NE.one )
THEN
542 CALL sscal( m, scaloc, c( 1, j ), 1 )
546 c( k1, l1 ) = x( 1, 1 )
547 c( k2, l1 ) = x( 2, 1 )
549 ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 )
THEN
551 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
552 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
553 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
555 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
556 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
557 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
559 CALL slaln2( .true., 2, 1, smin, one, b( l1, l1 ),
560 $ ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
561 $ zero, x, 2, scaloc, xnorm, ierr )
565 IF( scaloc.NE.one )
THEN
567 CALL sscal( m, scaloc, c( 1, j ), 1 )
571 c( k1, l1 ) = x( 1, 1 )
572 c( k1, l2 ) = x( 2, 1 )
574 ELSE IF( l1.NE.l2 .AND. k1.NE.k2 )
THEN
576 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
577 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l1 ), 1 )
578 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
580 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
581 sumr = sdot( l1-1, c( k1, 1 ), ldc, b( 1, l2 ), 1 )
582 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
584 suml = sdot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
585 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l1 ), 1 )
586 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
588 suml = sdot( k1-1, a( 1, k2 ), 1, c( 1, l2 ), 1 )
589 sumr = sdot( l1-1, c( k2, 1 ), ldc, b( 1, l2 ), 1 )
590 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
592 CALL slasy2( .true., .false., isgn, 2, 2, a( k1,
594 $ lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
599 IF( scaloc.NE.one )
THEN
601 CALL sscal( m, scaloc, c( 1, j ), 1 )
605 c( k1, l1 ) = x( 1, 1 )
606 c( k1, l2 ) = x( 1, 2 )
607 c( k2, l1 ) = x( 2, 1 )
608 c( k2, l2 ) = x( 2, 2 )
614 ELSE IF( .NOT.notrna .AND. .NOT.notrnb )
THEN
639 IF( b( l, l-1 ).NE.zero )
THEN
661 IF( a( k+1, k ).NE.zero )
THEN
672 IF( l1.EQ.l2 .AND. k1.EQ.k2 )
THEN
673 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
674 sumr = sdot( n-l1, c( k1, min( l1+1, n ) ), ldc,
675 $ b( l1, min( l1+1, n ) ), ldb )
676 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
679 a11 = a( k1, k1 ) + sgn*b( l1, l1 )
681 IF( da11.LE.smin )
THEN
686 db = abs( vec( 1, 1 ) )
687 IF( da11.LT.one .AND. db.GT.one )
THEN
688 IF( db.GT.bignum*da11 )
691 x( 1, 1 ) = ( vec( 1, 1 )*scaloc ) / a11
693 IF( scaloc.NE.one )
THEN
695 CALL sscal( m, scaloc, c( 1, j ), 1 )
699 c( k1, l1 ) = x( 1, 1 )
701 ELSE IF( l1.EQ.l2 .AND. k1.NE.k2 )
THEN
703 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
704 sumr = sdot( n-l2, c( k1, min( l2+1, n ) ), ldc,
705 $ b( l1, min( l2+1, n ) ), ldb )
706 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
708 suml = sdot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
709 sumr = sdot( n-l2, c( k2, min( l2+1, n ) ), ldc,
710 $ b( l1, min( l2+1, n ) ), ldb )
711 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
713 CALL slaln2( .true., 2, 1, smin, one, a( k1, k1 ),
714 $ lda, one, one, vec, 2, -sgn*b( l1, l1 ),
715 $ zero, x, 2, scaloc, xnorm, ierr )
719 IF( scaloc.NE.one )
THEN
721 CALL sscal( m, scaloc, c( 1, j ), 1 )
725 c( k1, l1 ) = x( 1, 1 )
726 c( k2, l1 ) = x( 2, 1 )
728 ELSE IF( l1.NE.l2 .AND. k1.EQ.k2 )
THEN
730 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
731 sumr = sdot( n-l2, c( k1, min( l2+1, n ) ), ldc,
732 $ b( l1, min( l2+1, n ) ), ldb )
733 vec( 1, 1 ) = sgn*( c( k1, l1 )-( suml+sgn*sumr ) )
735 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
736 sumr = sdot( n-l2, c( k1, min( l2+1, n ) ), ldc,
737 $ b( l2, min( l2+1, n ) ), ldb )
738 vec( 2, 1 ) = sgn*( c( k1, l2 )-( suml+sgn*sumr ) )
740 CALL slaln2( .false., 2, 1, smin, one, b( l1, l1 ),
741 $ ldb, one, one, vec, 2, -sgn*a( k1, k1 ),
742 $ zero, x, 2, scaloc, xnorm, ierr )
746 IF( scaloc.NE.one )
THEN
748 CALL sscal( m, scaloc, c( 1, j ), 1 )
752 c( k1, l1 ) = x( 1, 1 )
753 c( k1, l2 ) = x( 2, 1 )
755 ELSE IF( l1.NE.l2 .AND. k1.NE.k2 )
THEN
757 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l1 ), 1 )
758 sumr = sdot( n-l2, c( k1, min( l2+1, n ) ), ldc,
759 $ b( l1, min( l2+1, n ) ), ldb )
760 vec( 1, 1 ) = c( k1, l1 ) - ( suml+sgn*sumr )
762 suml = sdot( k1-1, a( 1, k1 ), 1, c( 1, l2 ), 1 )
763 sumr = sdot( n-l2, c( k1, min( l2+1, n ) ), ldc,
764 $ b( l2, min( l2+1, n ) ), ldb )
765 vec( 1, 2 ) = c( k1, l2 ) - ( suml+sgn*sumr )
767 suml = sdot( k1-1, a( 1, k2 ), 1, c( 1, l1 ), 1 )
768 sumr = sdot( n-l2, c( k2, min( l2+1, n ) ), ldc,
769 $ b( l1, min( l2+1, n ) ), ldb )
770 vec( 2, 1 ) = c( k2, l1 ) - ( suml+sgn*sumr )
772 suml = sdot( k1-1, a( 1, k2 ), 1, c( 1, l2 ), 1 )
773 sumr = sdot( n-l2, c( k2, min( l2+1, n ) ), ldc,
774 $ b( l2, min(l2+1, n ) ), ldb )
775 vec( 2, 2 ) = c( k2, l2 ) - ( suml+sgn*sumr )
777 CALL slasy2( .true., .true., isgn, 2, 2, a( k1,
779 $ lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
784 IF( scaloc.NE.one )
THEN
786 CALL sscal( 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 = sdot( m-k1, a( k1, min(k1+1, m ) ), lda,
859 $ c( min( k1+1, m ), l1 ), 1 )
860 sumr = sdot( 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 sscal( 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 = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
890 $ c( min( k2+1, m ), l1 ), 1 )
891 sumr = sdot( 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 = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
896 $ c( min( k2+1, m ), l1 ), 1 )
897 sumr = sdot( 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 slaln2( .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 sscal( 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 = sdot( m-k1, a( k1, min( k1+1, m ) ), lda,
919 $ c( min( k1+1, m ), l1 ), 1 )
920 sumr = sdot( 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 = sdot( m-k1, a( k1, min( k1+1, m ) ), lda,
925 $ c( min( k1+1, m ), l2 ), 1 )
926 sumr = sdot( 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 slaln2( .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 sscal( 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 = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
948 $ c( min( k2+1, m ), l1 ), 1 )
949 sumr = sdot( 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 = sdot( m-k2, a( k1, min( k2+1, m ) ), lda,
954 $ c( min( k2+1, m ), l2 ), 1 )
955 sumr = sdot( 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 = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
960 $ c( min( k2+1, m ), l1 ), 1 )
961 sumr = sdot( 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 = sdot( m-k2, a( k2, min( k2+1, m ) ), lda,
966 $ c( min( k2+1, m ), l2 ), 1 )
967 sumr = sdot( 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 slasy2( .false., .true., isgn, 2, 2, a( k1,
973 $ lda, b( l1, l1 ), ldb, vec, 2, scaloc, x,
978 IF( scaloc.NE.one )
THEN
980 CALL sscal( m, scaloc, c( 1, j ), 1 )
984 c( k1, l1 ) = x( 1, 1 )
985 c( k1, l2 ) = x( 1, 2 )
986 c( k2, l1 ) = x( 2, 1 )
987 c( k2, l2 ) = x( 2, 2 )