330 SUBROUTINE cgesvj( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V,
331 $ ldv, cwork, lwork, rwork, lrwork, info )
340 INTEGER INFO, LDA, LDV, LWORK, LRWORK, M, MV, N
341 CHARACTER*1 JOBA, JOBU, JOBV
344 COMPLEX A( lda, * ), V( ldv, * ), CWORK( lwork )
345 REAL RWORK( lrwork ), SVA( n )
352 parameter( zero = 0.0e0, half = 0.5e0, one = 1.0e0)
354 parameter( czero = (0.0e0, 0.0e0), cone = (1.0e0, 0.0e0) )
356 parameter( nsweep = 30 )
360 REAL AAPP, AAPP0, AAPQ1, AAQQ, APOAQ, AQOAP, BIG,
361 $ bigtheta, cs, ctol, epsln, large, mxaapq,
362 $ mxsinj, rootbig, rooteps, rootsfmin, roottol,
363 $ skl, sfmin, small, sn, t, temp1, theta, thsign, tol
364 INTEGER BLSKIP, EMPTSW, i, ibr, IERR, igl, IJBLSK, ir1,
365 $ iswrot, jbc, jgl, kbl, lkahead, mvl, n2, n34,
366 $ n4, nbl, notrot, p, pskipped, q, rowskip, swband
367 LOGICAL APPLV, GOSCALE, LOWER, LSVEC, NOSCALE, ROTOK,
368 $ rsvec, uctol, upper
372 INTRINSIC abs, amax1, amin1, conjg, float, min0, max0,
380 EXTERNAL cdotc, scnrm2
401 lsvec = lsame( jobu,
'U' )
402 uctol = lsame( jobu,
'C' )
403 rsvec = lsame( jobv,
'V' )
404 applv = lsame( jobv,
'A' )
405 upper = lsame( joba,
'U' )
406 lower = lsame( joba,
'L' )
408 IF( .NOT.( upper .OR. lower .OR. lsame( joba,
'G' ) ) )
THEN
410 ELSE IF( .NOT.( lsvec .OR. uctol .OR. lsame( jobu,
'N' ) ) )
THEN
412 ELSE IF( .NOT.( rsvec .OR. applv .OR. lsame( jobv,
'N' ) ) )
THEN
414 ELSE IF( m.LT.0 )
THEN
416 ELSE IF( ( n.LT.0 ) .OR. ( n.GT.m ) )
THEN
418 ELSE IF( lda.LT.m )
THEN
420 ELSE IF( mv.LT.0 )
THEN
422 ELSE IF( ( rsvec .AND. ( ldv.LT.n ) ) .OR.
423 $ ( applv .AND. ( ldv.LT.mv ) ) )
THEN
425 ELSE IF( uctol .AND. ( rwork( 1 ).LE.one ) )
THEN
427 ELSE IF( lwork.LT.( m+n ) )
THEN
429 ELSE IF( lrwork.LT.max0( n, 6 ) )
THEN
437 CALL xerbla(
'CGESVJ', -info )
443 IF( ( m.EQ.0 ) .OR. ( n.EQ.0 ) )
RETURN
457 IF( lsvec .OR. rsvec .OR. applv )
THEN
458 ctol = sqrt( float( m ) )
466 epsln = slamch(
'Epsilon' )
467 rooteps = sqrt( epsln )
468 sfmin = slamch(
'SafeMinimum' )
469 rootsfmin = sqrt( sfmin )
470 small = sfmin / epsln
471 big = slamch(
'Overflow' )
473 rootbig = one / rootsfmin
474 large = big / sqrt( float( m*n ) )
475 bigtheta = one / rooteps
478 roottol = sqrt( tol )
480 IF( float( m )*epsln.GE.one )
THEN
482 CALL xerbla(
'CGESVJ', -info )
490 CALL claset(
'A', mvl, n, czero, cone, v, ldv )
491 ELSE IF( applv )
THEN
494 rsvec = rsvec .OR. applv
505 skl = one / sqrt( float( m )*float( n ) )
514 CALL classq( m-p+1, a( p, p ), 1, aapp, aaqq )
515 IF( aapp.GT.big )
THEN
517 CALL xerbla(
'CGESVJ', -info )
521 IF( ( aapp.LT.( big / aaqq ) ) .AND. noscale )
THEN
525 sva( p ) = aapp*( aaqq*skl )
529 sva( q ) = sva( q )*skl
534 ELSE IF( upper )
THEN
539 CALL classq( p, a( 1, p ), 1, aapp, aaqq )
540 IF( aapp.GT.big )
THEN
542 CALL xerbla(
'CGESVJ', -info )
546 IF( ( aapp.LT.( big / aaqq ) ) .AND. noscale )
THEN
550 sva( p ) = aapp*( aaqq*skl )
554 sva( q ) = sva( q )*skl
564 CALL classq( m, a( 1, p ), 1, aapp, aaqq )
565 IF( aapp.GT.big )
THEN
567 CALL xerbla(
'CGESVJ', -info )
571 IF( ( aapp.LT.( big / aaqq ) ) .AND. noscale )
THEN
575 sva( p ) = aapp*( aaqq*skl )
579 sva( q ) = sva( q )*skl
586 IF( noscale )skl = one
595 IF( sva( p ).NE.zero )aaqq = amin1( aaqq, sva( p ) )
596 aapp = amax1( aapp, sva( p ) )
601 IF( aapp.EQ.zero )
THEN
602 IF( lsvec )
CALL claset(
'G', m, n, czero, cone, a, lda )
615 IF( lsvec )
CALL clascl(
'G', 0, 0, sva( 1 ), skl, m, 1,
616 $ a( 1, 1 ), lda, ierr )
617 rwork( 1 ) = one / skl
618 IF( sva( 1 ).GE.sfmin )
THEN
633 sn = sqrt( sfmin / epsln )
634 temp1 = sqrt( big / float( n ) )
635 IF( ( aapp.LE.sn ) .OR. ( aaqq.GE.temp1 ) .OR.
636 $ ( ( sn.LE.aaqq ) .AND. ( aapp.LE.temp1 ) ) )
THEN
637 temp1 = amin1( big, temp1 / aapp )
640 ELSE IF( ( aaqq.LE.sn ) .AND. ( aapp.LE.temp1 ) )
THEN
641 temp1 = amin1( sn / aaqq, big / ( aapp*sqrt( float( n ) ) ) )
644 ELSE IF( ( aaqq.GE.sn ) .AND. ( aapp.GE.temp1 ) )
THEN
645 temp1 = amax1( sn / aaqq, temp1 / aapp )
648 ELSE IF( ( aaqq.LE.sn ) .AND. ( aapp.GE.temp1 ) )
THEN
649 temp1 = amin1( sn / aaqq, big / ( sqrt( float( n ) )*aapp ) )
658 IF( temp1.NE.one )
THEN
659 CALL slascl(
'G', 0, 0, one, temp1, n, 1, sva, n, ierr )
662 IF( skl.NE.one )
THEN
663 CALL clascl( joba, 0, 0, one, skl, m, n, a, lda, ierr )
669 emptsw = ( n*( n-1 ) ) / 2
693 IF( ( nbl*kbl ).NE.n )nbl = nbl + 1
698 rowskip = min0( 5, kbl )
709 IF( ( lower .OR. upper ) .AND. ( n.GT.max0( 64, 4*kbl ) ) )
THEN
731 CALL cgsvj0( jobv, m-n34, n-n34, a( n34+1, n34+1 ), lda,
732 $ cwork( n34+1 ), sva( n34+1 ), mvl,
733 $ v( n34*q+1, n34+1 ), ldv, epsln, sfmin, tol,
734 $ 2, cwork( n+1 ), lwork-n, ierr )
736 CALL cgsvj0( jobv, m-n2, n34-n2, a( n2+1, n2+1 ), lda,
737 $ cwork( n2+1 ), sva( n2+1 ), mvl,
738 $ v( n2*q+1, n2+1 ), ldv, epsln, sfmin, tol, 2,
739 $ cwork( n+1 ), lwork-n, ierr )
741 CALL cgsvj1( jobv, m-n2, n-n2, n4, a( n2+1, n2+1 ), lda,
742 $ cwork( n2+1 ), sva( n2+1 ), mvl,
743 $ v( n2*q+1, n2+1 ), ldv, epsln, sfmin, tol, 1,
744 $ cwork( n+1 ), lwork-n, ierr )
746 CALL cgsvj0( jobv, m-n4, n2-n4, a( n4+1, n4+1 ), lda,
747 $ cwork( n4+1 ), sva( n4+1 ), mvl,
748 $ v( n4*q+1, n4+1 ), ldv, epsln, sfmin, tol, 1,
749 $ cwork( n+1 ), lwork-n, ierr )
751 CALL cgsvj0( jobv, m, n4, a, lda, cwork, sva, mvl, v, ldv,
752 $ epsln, sfmin, tol, 1, cwork( n+1 ), lwork-n,
755 CALL cgsvj1( jobv, m, n2, n4, a, lda, cwork, sva, mvl, v,
756 $ ldv, epsln, sfmin, tol, 1, cwork( n+1 ),
760 ELSE IF( upper )
THEN
763 CALL cgsvj0( jobv, n4, n4, a, lda, cwork, sva, mvl, v, ldv,
764 $ epsln, sfmin, tol, 2, cwork( n+1 ), lwork-n,
767 CALL cgsvj0( jobv, n2, n4, a( 1, n4+1 ), lda, cwork( n4+1 ),
768 $ sva( n4+1 ), mvl, v( n4*q+1, n4+1 ), ldv,
769 $ epsln, sfmin, tol, 1, cwork( n+1 ), lwork-n,
772 CALL cgsvj1( jobv, n2, n2, n4, a, lda, cwork, sva, mvl, v,
773 $ ldv, epsln, sfmin, tol, 1, cwork( n+1 ),
776 CALL cgsvj0( jobv, n2+n4, n4, a( 1, n2+1 ), lda,
777 $ cwork( n2+1 ), sva( n2+1 ), mvl,
778 $ v( n2*q+1, n2+1 ), ldv, epsln, sfmin, tol, 1,
779 $ cwork( n+1 ), lwork-n, ierr )
787 DO 1993 i = 1, nsweep
805 igl = ( ibr-1 )*kbl + 1
807 DO 1002 ir1 = 0, min0( lkahead, nbl-ibr )
811 DO 2001 p = igl, min0( igl+kbl-1, n-1 )
815 q = isamax( n-p+1, sva( p ), 1 ) + p - 1
817 CALL cswap( m, a( 1, p ), 1, a( 1, q ), 1 )
818 IF( rsvec )
CALL cswap( mvl, v( 1, p ), 1,
842 IF( ( sva( p ).LT.rootbig ) .AND.
843 $ ( sva( p ).GT.rootsfmin ) )
THEN
844 sva( p ) = scnrm2( m, a( 1, p ), 1 )
848 CALL classq( m, a( 1, p ), 1, temp1, aapp )
849 sva( p ) = temp1*sqrt( aapp )
856 IF( aapp.GT.zero )
THEN
860 DO 2002 q = p + 1, min0( igl+kbl-1, n )
864 IF( aaqq.GT.zero )
THEN
867 IF( aaqq.GE.one )
THEN
868 rotok = ( small*aapp ).LE.aaqq
869 IF( aapp.LT.( big / aaqq ) )
THEN
870 aapq = ( cdotc( m, a( 1, p ), 1,
871 $ a( 1, q ), 1 ) / aaqq ) / aapp
873 CALL ccopy( m, a( 1, p ), 1,
875 CALL clascl(
'G', 0, 0, aapp, one,
876 $ m, 1, cwork(n+1), lda, ierr )
877 aapq = cdotc( m, cwork(n+1), 1,
878 $ a( 1, q ), 1 ) / aaqq
881 rotok = aapp.LE.( aaqq / small )
882 IF( aapp.GT.( small / aaqq ) )
THEN
883 aapq = ( cdotc( m, a( 1, p ), 1,
884 $ a( 1, q ), 1 ) / aaqq ) / aapp
886 CALL ccopy( m, a( 1, q ), 1,
888 CALL clascl(
'G', 0, 0, aaqq,
890 $ cwork(n+1), lda, ierr )
891 aapq = cdotc( m, a(1, p ), 1,
892 $ cwork(n+1), 1 ) / aapp
898 mxaapq = amax1( mxaapq, -aapq1 )
902 IF( abs( aapq1 ).GT.tol )
THEN
915 ompq = aapq / abs(aapq)
918 theta = -half*abs( aqoap-apoaq )/aapq1
920 IF( abs( theta ).GT.bigtheta )
THEN
925 CALL crot( m, a(1,p), 1, a(1,q), 1,
926 $ cs, conjg(ompq)*t )
928 CALL crot( mvl, v(1,p), 1,
929 $ v(1,q), 1, cs, conjg(ompq)*t )
932 sva( q ) = aaqq*sqrt( amax1( zero,
933 $ one+t*apoaq*aapq1 ) )
934 aapp = aapp*sqrt( amax1( zero,
935 $ one-t*aqoap*aapq1 ) )
936 mxsinj = amax1( mxsinj, abs( t ) )
942 thsign = -sign( one, aapq1 )
943 t = one / ( theta+thsign*
944 $ sqrt( one+theta*theta ) )
945 cs = sqrt( one / ( one+t*t ) )
948 mxsinj = amax1( mxsinj, abs( sn ) )
949 sva( q ) = aaqq*sqrt( amax1( zero,
950 $ one+t*apoaq*aapq1 ) )
951 aapp = aapp*sqrt( amax1( zero,
952 $ one-t*aqoap*aapq1 ) )
954 CALL crot( m, a(1,p), 1, a(1,q), 1,
955 $ cs, conjg(ompq)*sn )
957 CALL crot( mvl, v(1,p), 1,
958 $ v(1,q), 1, cs, conjg(ompq)*sn )
961 cwork(p) = -cwork(q) * ompq
965 CALL ccopy( m, a( 1, p ), 1,
967 CALL clascl(
'G', 0, 0, aapp, one, m,
968 $ 1, cwork(n+1), lda,
970 CALL clascl(
'G', 0, 0, aaqq, one, m,
971 $ 1, a( 1, q ), lda, ierr )
972 CALL caxpy( m, -aapq, cwork(n+1), 1,
974 CALL clascl(
'G', 0, 0, one, aaqq, m,
975 $ 1, a( 1, q ), lda, ierr )
976 sva( q ) = aaqq*sqrt( amax1( zero,
977 $ one-aapq1*aapq1 ) )
978 mxsinj = amax1( mxsinj, sfmin )
985 IF( ( sva( q ) / aaqq )**2.LE.rooteps )
987 IF( ( aaqq.LT.rootbig ) .AND.
988 $ ( aaqq.GT.rootsfmin ) )
THEN
989 sva( q ) = scnrm2( m, a( 1, q ), 1 )
993 CALL classq( m, a( 1, q ), 1, t,
995 sva( q ) = t*sqrt( aaqq )
998 IF( ( aapp / aapp0 ).LE.rooteps )
THEN
999 IF( ( aapp.LT.rootbig ) .AND.
1000 $ ( aapp.GT.rootsfmin ) )
THEN
1001 aapp = scnrm2( m, a( 1, p ), 1 )
1005 CALL classq( m, a( 1, p ), 1, t,
1007 aapp = t*sqrt( aapp )
1014 IF( ir1.EQ.0 )notrot = notrot + 1
1016 pskipped = pskipped + 1
1020 IF( ir1.EQ.0 )notrot = notrot + 1
1021 pskipped = pskipped + 1
1024 IF( ( i.LE.swband ) .AND.
1025 $ ( pskipped.GT.rowskip ) )
THEN
1026 IF( ir1.EQ.0 )aapp = -aapp
1041 IF( ( ir1.EQ.0 ) .AND. ( aapp.EQ.zero ) )
1042 $ notrot = notrot + min0( igl+kbl-1, n ) - p
1053 igl = ( ibr-1 )*kbl + 1
1055 DO 2010 jbc = ibr + 1, nbl
1057 jgl = ( jbc-1 )*kbl + 1
1062 DO 2100 p = igl, min0( igl+kbl-1, n )
1065 IF( aapp.GT.zero )
THEN
1069 DO 2200 q = jgl, min0( jgl+kbl-1, n )
1072 IF( aaqq.GT.zero )
THEN
1079 IF( aaqq.GE.one )
THEN
1080 IF( aapp.GE.aaqq )
THEN
1081 rotok = ( small*aapp ).LE.aaqq
1083 rotok = ( small*aaqq ).LE.aapp
1085 IF( aapp.LT.( big / aaqq ) )
THEN
1086 aapq = ( cdotc( m, a( 1, p ), 1,
1087 $ a( 1, q ), 1 ) / aaqq ) / aapp
1089 CALL ccopy( m, a( 1, p ), 1,
1091 CALL clascl(
'G', 0, 0, aapp,
1093 $ cwork(n+1), lda, ierr )
1094 aapq = cdotc( m, cwork(n+1), 1,
1095 $ a( 1, q ), 1 ) / aaqq
1098 IF( aapp.GE.aaqq )
THEN
1099 rotok = aapp.LE.( aaqq / small )
1101 rotok = aaqq.LE.( aapp / small )
1103 IF( aapp.GT.( small / aaqq ) )
THEN
1104 aapq = ( cdotc( m, a( 1, p ), 1,
1105 $ a( 1, q ), 1 ) / aaqq ) / aapp
1107 CALL ccopy( m, a( 1, q ), 1,
1109 CALL clascl(
'G', 0, 0, aaqq,
1111 $ cwork(n+1), lda, ierr )
1112 aapq = cdotc( m, a( 1, p ), 1,
1113 $ cwork(n+1), 1 ) / aapp
1119 mxaapq = amax1( mxaapq, -aapq1 )
1123 IF( abs( aapq1 ).GT.tol )
THEN
1131 ompq = aapq / abs(aapq)
1134 theta = -half*abs( aqoap-apoaq )/ aapq1
1135 IF( aaqq.GT.aapp0 )theta = -theta
1137 IF( abs( theta ).GT.bigtheta )
THEN
1140 CALL crot( m, a(1,p), 1, a(1,q), 1,
1141 $ cs, conjg(ompq)*t )
1143 CALL crot( mvl, v(1,p), 1,
1144 $ v(1,q), 1, cs, conjg(ompq)*t )
1146 sva( q ) = aaqq*sqrt( amax1( zero,
1147 $ one+t*apoaq*aapq1 ) )
1148 aapp = aapp*sqrt( amax1( zero,
1149 $ one-t*aqoap*aapq1 ) )
1150 mxsinj = amax1( mxsinj, abs( t ) )
1155 thsign = -sign( one, aapq1 )
1156 IF( aaqq.GT.aapp0 )thsign = -thsign
1157 t = one / ( theta+thsign*
1158 $ sqrt( one+theta*theta ) )
1159 cs = sqrt( one / ( one+t*t ) )
1161 mxsinj = amax1( mxsinj, abs( sn ) )
1162 sva( q ) = aaqq*sqrt( amax1( zero,
1163 $ one+t*apoaq*aapq1 ) )
1164 aapp = aapp*sqrt( amax1( zero,
1165 $ one-t*aqoap*aapq1 ) )
1167 CALL crot( m, a(1,p), 1, a(1,q), 1,
1168 $ cs, conjg(ompq)*sn )
1170 CALL crot( mvl, v(1,p), 1,
1171 $ v(1,q), 1, cs, conjg(ompq)*sn )
1174 cwork(p) = -cwork(q) * ompq
1178 IF( aapp.GT.aaqq )
THEN
1179 CALL ccopy( m, a( 1, p ), 1,
1181 CALL clascl(
'G', 0, 0, aapp, one,
1182 $ m, 1, cwork(n+1),lda,
1184 CALL clascl(
'G', 0, 0, aaqq, one,
1185 $ m, 1, a( 1, q ), lda,
1187 CALL caxpy( m, -aapq, cwork(n+1),
1189 CALL clascl(
'G', 0, 0, one, aaqq,
1190 $ m, 1, a( 1, q ), lda,
1192 sva( q ) = aaqq*sqrt( amax1( zero,
1193 $ one-aapq1*aapq1 ) )
1194 mxsinj = amax1( mxsinj, sfmin )
1196 CALL ccopy( m, a( 1, q ), 1,
1198 CALL clascl(
'G', 0, 0, aaqq, one,
1199 $ m, 1, cwork(n+1),lda,
1201 CALL clascl(
'G', 0, 0, aapp, one,
1202 $ m, 1, a( 1, p ), lda,
1204 CALL caxpy( m, -conjg(aapq),
1205 $ cwork(n+1), 1, a( 1, p ), 1 )
1206 CALL clascl(
'G', 0, 0, one, aapp,
1207 $ m, 1, a( 1, p ), lda,
1209 sva( p ) = aapp*sqrt( amax1( zero,
1210 $ one-aapq1*aapq1 ) )
1211 mxsinj = amax1( mxsinj, sfmin )
1218 IF( ( sva( q ) / aaqq )**2.LE.rooteps )
1220 IF( ( aaqq.LT.rootbig ) .AND.
1221 $ ( aaqq.GT.rootsfmin ) )
THEN
1222 sva( q ) = scnrm2( m, a( 1, q ), 1)
1226 CALL classq( m, a( 1, q ), 1, t,
1228 sva( q ) = t*sqrt( aaqq )
1231 IF( ( aapp / aapp0 )**2.LE.rooteps )
THEN
1232 IF( ( aapp.LT.rootbig ) .AND.
1233 $ ( aapp.GT.rootsfmin ) )
THEN
1234 aapp = scnrm2( m, a( 1, p ), 1 )
1238 CALL classq( m, a( 1, p ), 1, t,
1240 aapp = t*sqrt( aapp )
1248 pskipped = pskipped + 1
1253 pskipped = pskipped + 1
1257 IF( ( i.LE.swband ) .AND. ( ijblsk.GE.blskip ) )
1263 IF( ( i.LE.swband ) .AND.
1264 $ ( pskipped.GT.rowskip ) )
THEN
1278 IF( aapp.EQ.zero )notrot = notrot +
1279 $ min0( jgl+kbl-1, n ) - jgl + 1
1280 IF( aapp.LT.zero )notrot = 0
1290 DO 2012 p = igl, min0( igl+kbl-1, n )
1291 sva( p ) = abs( sva( p ) )
1298 IF( ( sva( n ).LT.rootbig ) .AND. ( sva( n ).GT.rootsfmin ) )
1300 sva( n ) = scnrm2( m, a( 1, n ), 1 )
1304 CALL classq( m, a( 1, n ), 1, t, aapp )
1305 sva( n ) = t*sqrt( aapp )
1310 IF( ( i.LT.swband ) .AND. ( ( mxaapq.LE.roottol ) .OR.
1311 $ ( iswrot.LE.n ) ) )swband = i
1313 IF( ( i.GT.swband+1 ) .AND. ( mxaapq.LT.sqrt( float( n ) )*
1314 $ tol ) .AND. ( float( n )*mxaapq*mxsinj.LT.tol ) )
THEN
1318 IF( notrot.GE.emptsw )
GO TO 1994
1340 DO 5991 p = 1, n - 1
1341 q = isamax( n-p+1, sva( p ), 1 ) + p - 1
1346 CALL cswap( m, a( 1, p ), 1, a( 1, q ), 1 )
1347 IF( rsvec )
CALL cswap( mvl, v( 1, p ), 1, v( 1, q ), 1 )
1349 IF( sva( p ).NE.zero )
THEN
1351 IF( sva( p )*skl.GT.sfmin )n2 = n2 + 1
1354 IF( sva( n ).NE.zero )
THEN
1356 IF( sva( n )*skl.GT.sfmin )n2 = n2 + 1
1361 IF( lsvec .OR. uctol )
THEN
1363 CALL csscal( m, one / sva( p ), a( 1, p ), 1 )
1371 temp1 = one / scnrm2( mvl, v( 1, p ), 1 )
1372 CALL csscal( mvl, temp1, v( 1, p ), 1 )
1377 IF( ( ( skl.GT.one ) .AND. ( sva( 1 ).LT.( big / skl ) ) )
1378 $ .OR. ( ( skl.LT.one ) .AND. ( sva( max( n2, 1 ) ) .GT.
1379 $ ( sfmin / skl ) ) ) )
THEN
1381 sva( p ) = skl*sva( p )
1391 rwork( 2 ) = float( n4 )
1394 rwork( 3 ) = float( n2 )
1399 rwork( 4 ) = float( i )
subroutine clascl(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO)
CLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.
subroutine slascl(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO)
SLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.
subroutine classq(N, X, INCX, SCALE, SUMSQ)
CLASSQ updates a sum of squares represented in scaled form.
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine claset(UPLO, M, N, ALPHA, BETA, A, LDA)
CLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine cgsvj0(JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO)
CGSVJ0 pre-processor for the routine cgesvj.
subroutine cgesvj(JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V, LDV, CWORK, LWORK, RWORK, LRWORK, INFO)
CGESVJ
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine cswap(N, CX, INCX, CY, INCY)
CSWAP
subroutine cgsvj1(JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV, EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO)
CGSVJ1 pre-processor for the routine cgesvj, applies Jacobi rotations targeting only particular pivot...
subroutine caxpy(N, CA, CX, INCX, CY, INCY)
CAXPY
subroutine csscal(N, SA, CX, INCX)
CSSCAL
subroutine crot(N, CX, INCX, CY, INCY, C, S)
CROT applies a plane rotation with real cosine and complex sine to a pair of complex vectors...