79 SUBROUTINE dget35( RMAX, LMAX, NINFO, KNT )
87 INTEGER KNT, LMAX, NINFO
94 DOUBLE PRECISION ZERO, ONE
95 parameter ( zero = 0.0d0, one = 1.0d0 )
96 DOUBLE PRECISION TWO, FOUR
97 parameter ( two = 2.0d0, four = 4.0d0 )
100 CHARACTER TRANA, TRANB
101 INTEGER I, IMA, IMB, IMLDA1, IMLDA2, IMLDB1, IMLOFF,
102 $ info, isgn, itrana, itranb, j, m, n
103 DOUBLE PRECISION BIGNUM, CNRM, EPS, RES, RES1, RMUL, SCALE,
107 INTEGER IDIM( 8 ), IVAL( 6, 6, 8 )
108 DOUBLE PRECISION A( 6, 6 ), B( 6, 6 ), C( 6, 6 ), CC( 6, 6 ),
109 $ dum( 1 ), vm1( 3 ), vm2( 3 )
112 DOUBLE PRECISION DLAMCH, DLANGE
113 EXTERNAL dlamch, dlange
119 INTRINSIC abs, dble, max, sin, sqrt
122 DATA idim / 1, 2, 3, 4, 3, 3, 6, 4 /
123 DATA ival / 1, 35*0, 1, 2, 4*0, -2, 0, 28*0, 1, 5*0,
124 $ 5, 1, 2, 3*0, -8, -2, 1, 21*0, 3, 4, 4*0, -5,
125 $ 3, 4*0, 1, 2, 1, 4, 2*0, -3, -9, -1, 1, 14*0,
126 $ 1, 5*0, 2, 3, 4*0, 5, 6, 7, 21*0, 1, 5*0, 1, 3,
127 $ -4, 3*0, 2, 5, 2, 21*0, 1, 2, 4*0, -2, 0, 4*0,
128 $ 5, 6, 3, 4, 2*0, -1, -9, -5, 2, 2*0, 4*8, 5, 6,
129 $ 4*9, -7, 5, 1, 5*0, 1, 5, 2, 3*0, 2, -21, 5,
130 $ 3*0, 1, 2, 3, 4, 14*0 /
137 smlnum = dlamch(
'S' )*four / eps
138 bignum = one / smlnum
139 CALL dlabad( smlnum, bignum )
143 vm1( 1 ) = sqrt( smlnum )
145 vm1( 3 ) = sqrt( bignum )
147 vm2( 2 ) = one + two*eps
159 DO 130 isgn = -1, 1, 2
179 a( i, j ) = ival( i, j, ima )
180 IF( abs( i-j ).LE.1 )
THEN
181 a( i, j ) = a( i, j )*
183 a( i, j ) = a( i, j )*
186 a( i, j ) = a( i, j )*
195 b( i, j ) = ival( i, j, imb )
196 IF( abs( i-j ).LE.1 )
THEN
197 b( i, j ) = b( i, j )*
200 b( i, j ) = b( i, j )*
210 c( i, j ) = sin( dble( i*j ) )
211 cnrm = max( cnrm, c( i, j ) )
212 cc( i, j ) = c( i, j )
216 CALL dtrsyl( trana, tranb, isgn, m, n,
217 $ a, 6, b, 6, c, 6, scale,
221 xnrm = dlange(
'M', m, n, c, 6, dum )
223 IF( xnrm.GT.one .AND. tnrm.GT.one )
225 IF( xnrm.GT.bignum / tnrm )
THEN
226 rmul = one / max( xnrm, tnrm )
229 CALL dgemm( trana,
'N', m, n, m, rmul,
230 $ a, 6, c, 6, -scale*rmul,
232 CALL dgemm(
'N', tranb, m, n, n,
233 $ dble( isgn )*rmul, c, 6, b,
235 res1 = dlange(
'M', m, n, cc, 6, dum )
236 res = res1 / max( smlnum, smlnum*xnrm,
237 $ ( ( rmul*tnrm )*eps )*xnrm )
238 IF( res.GT.rmax )
THEN
subroutine dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM
subroutine dlabad(SMALL, LARGE)
DLABAD
subroutine dget35(RMAX, LMAX, NINFO, KNT)
DGET35
subroutine dtrsyl(TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCALE, INFO)
DTRSYL