83 SUBROUTINE cget35( RMAX, LMAX, NINFO, KNT, NIN )
90 INTEGER KNT, LMAX, NIN, NINFO
100 parameter( zero = 0.0e0, one = 1.0e0, two = 2.0e0 )
102 parameter( large = 1.0e6 )
104 parameter( cone = 1.0e0 )
107 CHARACTER TRANA, TRANB
108 INTEGER , IMLA, IMLAD, IMLB, IMLC, INFO, ISGN, ITRANA,
110 REAL BIGNUM, EPS, RES, RES1, SCALE, SMLNUM, TNRM,
115 REAL DUM( 1 ), VM1( 3 ), VM2( 3 )
116 COMPLEX A( LDT, LDT ), ATMP( LDT, LDT ), B( LDT, LDT ),
117 $ BTMP( LDT, LDT ), C( LDT, LDT ),
118 $ CSAV( LDT, LDT ), ( LDT, LDT )
122 EXTERNAL clange, slamch
128 INTRINSIC abs,
max, real, sqrt
135 smlnum = slamch(
'S' ) / eps
136 bignum = one / smlnum
137 CALL slabad( smlnum, bignum )
141 vm1( 1 ) = sqrt( smlnum )
145 vm2( 2 ) = one + two*eps
156 READ( nin, fmt = * )m, n
160 READ( nin, fmt = * )( atmp( i, j ), j = 1, m )
163 READ( nin, fmt = * )( btmp( i, j ), j = 1, n )
166 READ( nin, fmt = * )( ctmp( i, j ), j = 1, n )
174 DO 110 isgn = -1, 1, 2
186 a( i, j ) = atmp( i, j )*vm1( imla )
187 tnrm =
max( tnrm, abs( a( i, j ) ) )
189 a( i, i ) = a( i, i )*vm2( imlad )
190 tnrm =
max( tnrm, abs( a( i, i ) ) )
194 b( i, j ) = btmp( i, j )*vm1( imlb )
195 tnrm =
max( tnrm, abs( b( i, j ) ) )
202 c( i, j ) = ctmp( i, j )*vm1( imlc )
203 csav( i, j ) = c( i, j )
207 CALL ctrsyl( trana, tranb, isgn, m, n, a,
208 $ ldt, b, ldt, c, ldt, scale,
212 xnrm = clange(
'M', m, n, c, ldt, dum )
214 IF( xnrm.GT.one .AND. tnrm.GT.one )
THEN
215 IF( xnrm.GT.bignum / tnrm )
THEN
216 rmul =
max( xnrm, tnrm )
220 CALL cgemm( trana,
'N', m, n, m, rmul, a,
223 CALL cgemm(
'N', tranb, m, n, n,
224 $ real( isgn )*rmul, c, ldt, b,
225 $ ldt, cone, csav, ldt )
226 res1 = clange(
'M', m, n, csav, ldt, dum )
227 res = res1 /
max( smlnum, smlnum*xnrm,
228 $ ( ( abs( rmul )*tnrm )*eps )*xnrm )
229 IF( res.GT.rmax )
THEN
subroutine ctrsyl(trana, tranb, isgn, m, n, a, lda, b, ldb, c, ldc, scale, info)
CTRSYL
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM