329 SUBROUTINE slatmt( M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX,
330 $ RANK, KL, KU, PACK, A, LDA, WORK, INFO )
338 INTEGER INFO, KL, KU, , M, MODE, N, RANK
339 CHARACTER DIST, PACK, SYM
342 REAL A( LDA, * ), D( * ), WORK( * )
350 parameter( zero = 0.0e0 )
352 parameter( one = 1.0e0 )
354 parameter( twopi = 6.28318530717958647692528676655900576839e+0 )
357 REAL ALPHA, ANGLE, C, DUMMY, EXTRA, S, TEMP
358 INTEGER I, IC, ICOL, IDIST, IENDCH, IINFO, IL, ILDA,
359 $ ioffg, ioffst, ipack, ipackg, ir, ir1, ir2,
360 $ irow, irsign, iskew, isym, isympk, j,
jc, jch,
361 $ jkl, jku, jr, k, llb, minlda, mnmin, mr, nc,
363 LOGICAL GIVENS, ILEXTR, ILTEMP, TOPDWN
368 EXTERNAL slarnd, lsame
375 INTRINSIC abs, cos,
max,
min, mod, real, sin
386 IF( m.EQ.0 .OR. n.EQ.0 )
391 IF( lsame( dist,
'U' ) )
THEN
393 ELSE IF( lsame( dist,
'S' ) )
THEN
395 ELSE IF( lsame( dist,
'N' ) )
THEN
403 IF( lsame( sym,
'N' ) )
THEN
406 ELSE IF( lsame( sym, 'p
' ) ) THEN
409 ELSE IF( LSAME( SYM, 's
' ) ) THEN
412 ELSE IF( LSAME( SYM, 'h
' ) ) THEN
422 IF( LSAME( PACK, 'n
' ) ) THEN
424 ELSE IF( LSAME( PACK, 'u
' ) ) THEN
427 ELSE IF( LSAME( PACK, 'l
' ) ) THEN
430 ELSE IF( LSAME( PACK, 'c
' ) ) THEN
433 ELSE IF( LSAME( PACK, 'r
' ) ) THEN
436 ELSE IF( LSAME( PACK, 'b
' ) ) THEN
439 ELSE IF( LSAME( PACK, 'q
' ) ) THEN
442 ELSE IF( LSAME( PACK, 'z
' ) ) THEN
456.EQ..OR..EQ.
IF( IPACK5 IPACK6 ) THEN
458.EQ.
ELSE IF( IPACK7 ) THEN
459 MINLDA = LLB + UUB + 1
469.LT.
IF( REAL( LLB+UUB )0.3*REAL( MAX( 1, MR+NC ) ) )
475.LT..AND..GE.
IF( LDAM LDAMINLDA )
482.NE..AND..NE.
ELSE IF( MN ISYM1 ) THEN
484.LT.
ELSE IF( N0 ) THEN
486.EQ.
ELSE IF( IDIST-1 ) THEN
488.EQ.
ELSE IF( ISYM-1 ) THEN
490.GT.
ELSE IF( ABS( MODE )6 ) THEN
492.NE..AND..NE..AND..LT.
ELSE IF( ( MODE0 ABS( MODE )6 ) CONDONE )
495.LT.
ELSE IF( KL0 ) THEN
497.LT..OR..NE..AND..NE.
ELSE IF( KU0 ( ISYM1 KLKU ) ) THEN
499.EQ..OR..EQ..AND..EQ..OR.
ELSE IF( IPACK-1 ( ISYMPK1 ISYM1 )
500.EQ..AND..EQ..AND..GT..OR.
$ ( ISYMPK2 ISYM1 KL0 )
501.EQ..AND..EQ..AND..GT..OR.
$ ( ISYMPK3 ISYM1 KU0 )
502.NE..AND..NE.
$ ( ISYMPK0 MN ) ) THEN
504.LT.
ELSE IF( LDAMAX( 1, MINLDA ) ) THEN
509 CALL XERBLA( 'slatmt', -INFO )
516 ISEED( I ) = MOD( ABS( ISEED( I ) ), 4096 )
519.NE.
IF( MOD( ISEED( 4 ), 2 )1 )
520 $ ISEED( 4 ) = ISEED( 4 ) + 1
526 CALL SLATM7( MODE, COND, IRSIGN, IDIST, ISEED, D, MNMIN, RANK,
528.NE.
IF( IINFO0 ) THEN
536.LE.
IF( ABS( D( 1 ) )ABS( D( RANK ) ) ) THEN
542.NE..AND..NE.
IF( MODE0 ABS( MODE )6 ) THEN
548 TEMP = MAX( TEMP, ABS( D( I ) ) )
551.GT.
IF( TEMPZERO ) THEN
558 CALL SSCAL( RANK, ALPHA, D, 1 )
571.GT.
IF( IPACK4 ) THEN
574.GT.
IF( IPACK5 ) THEN
590 CALL SLASET( 'full
', LDA, N, ZERO, ZERO, A, LDA )
595.EQ..AND..EQ.
IF( LLB0 UUB0 ) THEN
596 CALL SCOPY( MNMIN, D, 1, A( 1-ISKEW+IOFFST, 1 ), ILDA+1 )
597.LE..OR..GE.
IF( IPACK2 IPACK5 )
600 ELSE IF( GIVENS ) THEN
609.GT.
IF( IPACK4 ) THEN
615 CALL SCOPY( MNMIN, D, 1, A( 1-ISKEW+IOFFST, 1 ), ILDA+1 )
626 DO 130 JR = 1, MIN( M+JKU, N ) + JKL - 1
628 ANGLE = TWOPI*SLARND( 1, ISEED )
631 ICOL = MAX( 1, JR-JKL )
633 IL = MIN( N, JR+JKU ) + 1 - ICOL
634.GT.
CALL SLAROT( .TRUE., JRJKL, .FALSE., IL, C,
635 $ S, A( JR-ISKEW*ICOL+IOFFST, ICOL ),
636 $ ILDA, EXTRA, DUMMY )
643 DO 120 JCH = JR - JKL, 1, -JKL - JKU
645 CALL SLARTG( A( IR+1-ISKEW*( IC+1 )+IOFFST,
646 $ IC+1 ), EXTRA, C, S, DUMMY )
648 IROW = MAX( 1, JCH-JKU )
652 CALL SLAROT( .FALSE., ILTEMP, .TRUE., IL, C, -S,
653 $ A( IROW-ISKEW*IC+IOFFST, IC ),
654 $ ILDA, TEMP, EXTRA )
656 CALL SLARTG( A( IROW+1-ISKEW*( IC+1 )+IOFFST,
657 $ IC+1 ), TEMP, C, S, DUMMY )
658 ICOL = MAX( 1, JCH-JKU-JKL )
661.GT.
CALL SLAROT( .TRUE., JCHJKU+JKL, .TRUE.,
662 $ IL, C, -S, A( IROW-ISKEW*ICOL+
663 $ IOFFST, ICOL ), ILDA, EXTRA,
677 DO 160 JC = 1, MIN( N+JKL, M ) + JKU - 1
679 ANGLE = TWOPI*SLARND( 1, ISEED )
682 IROW = MAX( 1, JC-JKU )
684 IL = MIN( M, JC+JKL ) + 1 - IROW
685.GT.
CALL SLAROT( .FALSE., JCJKU, .FALSE., IL, C,
686 $ S, A( IROW-ISKEW*JC+IOFFST, JC ),
687 $ ILDA, EXTRA, DUMMY )
694 DO 150 JCH = JC - JKU, 1, -JKL - JKU
696 CALL SLARTG( A( IR+1-ISKEW*( IC+1 )+IOFFST,
697 $ IC+1 ), EXTRA, C, S, DUMMY )
699 ICOL = MAX( 1, JCH-JKL )
703 CALL SLAROT( .TRUE., ILTEMP, .TRUE., IL, C, -S,
704 $ A( IR-ISKEW*ICOL+IOFFST, ICOL ),
705 $ ILDA, TEMP, EXTRA )
707 CALL SLARTG( A( IR+1-ISKEW*( ICOL+1 )+IOFFST,
708 $ ICOL+1 ), TEMP, C, S, DUMMY )
709 IROW = MAX( 1, JCH-JKL-JKU )
712.GT.
CALL SLAROT( .FALSE., JCHJKL+JKU, .TRUE.,
713 $ IL, C, -S, A( IROW-ISKEW*ICOL+
714 $ IOFFST, ICOL ), ILDA, EXTRA,
735 IENDCH = MIN( M, N+JKL ) - 1
736 DO 190 JC = MIN( M+JKU, N ) - 1, 1 - JKL, -1
738 ANGLE = TWOPI*SLARND( 1, ISEED )
741 IROW = MAX( 1, JC-JKU+1 )
743 IL = MIN( M, JC+JKL+1 ) + 1 - IROW
744.LT.
CALL SLAROT( .FALSE., .FALSE., JC+JKLM, IL,
745 $ C, S, A( IROW-ISKEW*JC+IOFFST,
746 $ JC ), ILDA, DUMMY, EXTRA )
752 DO 180 JCH = JC + JKL, IENDCH, JKL + JKU
755 CALL SLARTG( A( JCH-ISKEW*IC+IOFFST, IC ),
756 $ EXTRA, C, S, DUMMY )
759 ICOL = MIN( N-1, JCH+JKU )
760.LT.
ILTEMP = JCH + JKUN
762 CALL SLAROT( .TRUE., ILEXTR, ILTEMP, ICOL+2-IC,
763 $ C, S, A( JCH-ISKEW*IC+IOFFST, IC ),
764 $ ILDA, EXTRA, TEMP )
766 CALL SLARTG( A( JCH-ISKEW*ICOL+IOFFST,
767 $ ICOL ), TEMP, C, S, DUMMY )
768 IL = MIN( IENDCH, JCH+JKL+JKU ) + 2 - JCH
770 CALL SLAROT( .FALSE., .TRUE.,
771.LE.
$ JCH+JKL+JKUIENDCH, IL, C, S,
772 $ A( JCH-ISKEW*ICOL+IOFFST,
773 $ ICOL ), ILDA, TEMP, EXTRA )
788 IENDCH = MIN( N, M+JKU ) - 1
789 DO 220 JR = MIN( N+JKL, M ) - 1, 1 - JKU, -1
791 ANGLE = TWOPI*SLARND( 1, ISEED )
794 ICOL = MAX( 1, JR-JKL+1 )
796 IL = MIN( N, JR+JKU+1 ) + 1 - ICOL
797.LT.
CALL SLAROT( .TRUE., .FALSE., JR+JKUN, IL,
798 $ C, S, A( JR-ISKEW*ICOL+IOFFST,
799 $ ICOL ), ILDA, DUMMY, EXTRA )
805 DO 210 JCH = JR + JKU, IENDCH, JKL + JKU
808 CALL SLARTG( A( IR-ISKEW*JCH+IOFFST, JCH ),
809 $ EXTRA, C, S, DUMMY )
812 IROW = MIN( M-1, JCH+JKL )
813.LT.
ILTEMP = JCH + JKLM
815 CALL SLAROT( .FALSE., ILEXTR, ILTEMP, IROW+2-IR,
816 $ C, S, A( IR-ISKEW*JCH+IOFFST,
817 $ JCH ), ILDA, EXTRA, TEMP )
819 CALL SLARTG( A( IROW-ISKEW*JCH+IOFFST, JCH ),
820 $ TEMP, C, S, DUMMY )
821 IL = MIN( IENDCH, JCH+JKL+JKU ) + 2 - JCH
823 CALL SLAROT( .TRUE., .TRUE.,
824.LE.
$ JCH+JKL+JKUIENDCH, IL, C, S,
825 $ A( IROW-ISKEW*JCH+IOFFST, JCH ),
826 $ ILDA, TEMP, EXTRA )
845.GE.
IF( IPACK5 ) THEN
851 CALL SCOPY( MNMIN, D, 1, A( 1-ISKEW+IOFFG, 1 ), ILDA+1 )
855 IROW = MAX( 1, JC-K )
856 IL = MIN( JC+1, K+2 )
858 TEMP = A( JC-ISKEW*( JC+1 )+IOFFG, JC+1 )
859 ANGLE = TWOPI*SLARND( 1, ISEED )
862.GT.
CALL SLAROT( .FALSE., JCK, .TRUE., IL, C, S,
863 $ A( IROW-ISKEW*JC+IOFFG, JC ), ILDA,
865 CALL SLAROT( .TRUE., .TRUE., .FALSE.,
866 $ MIN( K, N-JC )+1, C, S,
867 $ A( ( 1-ISKEW )*JC+IOFFG, JC ), ILDA,
873 DO 240 JCH = JC - K, 1, -K
874 CALL SLARTG( A( JCH+1-ISKEW*( ICOL+1 )+IOFFG,
875 $ ICOL+1 ), EXTRA, C, S, DUMMY )
876 TEMP = A( JCH-ISKEW*( JCH+1 )+IOFFG, JCH+1 )
877 CALL SLAROT( .TRUE., .TRUE., .TRUE., K+2, C, -S,
878 $ A( ( 1-ISKEW )*JCH+IOFFG, JCH ),
879 $ ILDA, TEMP, EXTRA )
880 IROW = MAX( 1, JCH-K )
881 IL = MIN( JCH+1, K+2 )
883.GT.
CALL SLAROT( .FALSE., JCHK, .TRUE., IL, C,
884 $ -S, A( IROW-ISKEW*JCH+IOFFG, JCH ),
885 $ ILDA, EXTRA, TEMP )
894.NE..AND..NE.
IF( IPACKIPACKG IPACK3 ) THEN
896 IROW = IOFFST - ISKEW*JC
897 DO 270 JR = JC, MIN( N, JC+UUB )
898 A( JR+IROW, JC ) = A( JC-ISKEW*JR+IOFFG, JR )
901.EQ.
IF( IPACK5 ) THEN
902 DO 300 JC = N - UUB + 1, N
903 DO 290 JR = N + 2 - JC, UUB + 1
908.EQ.
IF( IPACKG6 ) THEN
918.GE.
IF( IPACK5 ) THEN
925 CALL SCOPY( MNMIN, D, 1, A( 1-ISKEW+IOFFG, 1 ), ILDA+1 )
928 DO 320 JC = N - 1, 1, -1
929 IL = MIN( N+1-JC, K+2 )
931 TEMP = A( 1+( 1-ISKEW )*JC+IOFFG, JC )
932 ANGLE = TWOPI*SLARND( 1, ISEED )
935.GT.
CALL SLAROT( .FALSE., .TRUE., N-JCK, IL, C, S,
936 $ A( ( 1-ISKEW )*JC+IOFFG, JC ), ILDA,
938 ICOL = MAX( 1, JC-K+1 )
939 CALL SLAROT( .TRUE., .FALSE., .TRUE., JC+2-ICOL, C,
940 $ S, A( JC-ISKEW*ICOL+IOFFG, ICOL ),
941 $ ILDA, DUMMY, TEMP )
946 DO 310 JCH = JC + K, N - 1, K
947 CALL SLARTG( A( JCH-ISKEW*ICOL+IOFFG, ICOL ),
948 $ EXTRA, C, S, DUMMY )
949 TEMP = A( 1+( 1-ISKEW )*JCH+IOFFG, JCH )
950 CALL SLAROT( .TRUE., .TRUE., .TRUE., K+2, C, S,
951 $ A( JCH-ISKEW*ICOL+IOFFG, ICOL ),
952 $ ILDA, EXTRA, TEMP )
953 IL = MIN( N+1-JCH, K+2 )
955.GT.
CALL SLAROT( .FALSE., .TRUE., N-JCHK, IL, C,
956 $ S, A( ( 1-ISKEW )*JCH+IOFFG, JCH ),
957 $ ILDA, TEMP, EXTRA )
966.NE..AND..NE.
IF( IPACKIPACKG IPACK4 ) THEN
968 IROW = IOFFST - ISKEW*JC
969 DO 340 JR = JC, MAX( 1, JC-UUB ), -1
970 A( JR+IROW, JC ) = A( JC-ISKEW*JR+IOFFG, JR )
973.EQ.
IF( IPACK6 ) THEN
975 DO 360 JR = 1, UUB + 1 - JC
980.EQ.
IF( IPACKG5 ) THEN
1002 CALL SLAGGE( MR, NC, LLB, UUB, D, A, LDA, ISEED, WORK,
1008 CALL SLAGSY( M, LLB, D, A, LDA, ISEED, WORK, IINFO )
1011.NE.
IF( IINFO0 ) THEN
1019.NE.
IF( IPACKIPACKG ) THEN
1020.EQ.
IF( IPACK1 ) THEN
1030.EQ.
ELSE IF( IPACK2 ) THEN
1040.EQ.
ELSE IF( IPACK3 ) THEN
1049.GT.
IF( IROWLDA ) THEN
1053 A( IROW, ICOL ) = A( I, J )
1057.EQ.
ELSE IF( IPACK4 ) THEN
1066.GT.
IF( IROWLDA ) THEN
1070 A( IROW, ICOL ) = A( I, J )
1074.GE.
ELSE IF( IPACK5 ) THEN
1086 DO 460 I = MIN( J+LLB, M ), 1, -1
1087 A( I-J+UUB+1, J ) = A( I, J )
1091 DO 490 J = UUB + 2, N
1092 DO 480 I = J - UUB, MIN( J+LLB, M )
1093 A( I-J+UUB+1, J ) = A( I, J )
1103.EQ..OR..EQ.
IF( IPACK3 IPACK4 ) THEN
1105 DO 500 JR = IROW + 1, LDA
1111.GE.
ELSE IF( IPACK5 ) THEN
1122 DO 520 JR = 1, UUB + 1 - JC
1125 DO 530 JR = MAX( 1, MIN( IR1, IR2-JC ) ), LDA
subroutine slaset(uplo, m, n, alpha, beta, a, lda)
SLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine slartg(f, g, c, s, r)
SLARTG generates a plane rotation with real cosine and real sine.
subroutine xerbla(srname, info)
XERBLA
subroutine slatm7(mode, cond, irsign, idist, iseed, d, n, rank, info)
SLATM7
subroutine slagsy(n, k, d, a, lda, iseed, work, info)
SLAGSY
subroutine slagge(m, n, kl, ku, d, a, lda, iseed, work, info)
SLAGGE
subroutine slatmt(m, n, dist, iseed, sym, d, mode, cond, dmax, rank, kl, ku, pack, a, lda, work, info)
SLATMT
subroutine slarot(lrows, lleft, lright, nl, c, s, a, lda, xleft, xright)
SLAROT
subroutine sscal(n, sa, sx, incx)
SSCAL
subroutine scopy(n, sx, incx, sy, incy)
SCOPY
subroutine jc(p, t, a, b, cm, cn, tref, tm, epsm, sigmam, jc_yield, tan_jc)