68 parameter( zero = 0.0e0, one = 1.0e+0, ten = 1.0e1 )
70 parameter( nsz = 5, nszb = 3*nsz-2 )
72 parameter( nszp = ( nsz*( nsz+1 ) ) / 2,
78 INTEGER I, INFO, J, KL, KU, M, N
79 REAL CCOND, EPS, NORM, RATIO, RCMAX, RCMIN, RCOND
82 REAL A( NSZ, NSZ ), AB( NSZB, NSZ ), AP( NSZP ),
83 $ C( NSZ ), POW( NPOW ), R( NSZ ), RESLTS( 5 ),
94 INTRINSIC abs, max, min
98 path( 1:1 ) =
'Single precision'
106 pow( i ) = ten**( i-1 )
107 rpow( i ) = one / pow( i )
117 IF( i.LE.m .AND. j.LE.n )
THEN
118 a( i, j ) = pow( i+j+1 )*( -1 )**( i+j )
125 CALL sgeequ( m, n, a, nsz, r, c, rcond, ccond, norm, info )
130 IF( n.NE.0 .AND. m.NE.0 )
THEN
131 reslts( 1 ) = max( reslts( 1 ),
132 $ abs( ( rcond-rpow( m ) ) / rpow( m ) ) )
133 reslts( 1 ) = max( reslts( 1 ),
134 $ abs( ( ccond-rpow( n ) ) / rpow( n ) ) )
135 reslts( 1 ) = max( reslts( 1 ),
136 $ abs( ( norm-pow( n+m+1 ) ) / pow( n+m+
139 reslts( 1 ) = max( reslts( 1 ),
140 $ abs( ( r( i )-rpow( i+n+1 ) ) /
144 reslts( 1 ) = max( reslts( 1 ),
145 $ abs( ( c( j )-pow( n-j+1 ) ) /
157 a( max( nsz-1, 1 ), j ) = zero
159 CALL sgeequ( nsz, nsz, a, nsz, r, c, rcond, ccond, norm, info )
160 IF( info.NE.max( nsz-1, 1 ) )
164 a( max( nsz-1, 1 ), j ) = one
167 a( i, max( nsz-1, 1 ) ) = zero
169 CALL sgeequ( nsz, nsz, a, nsz, r, c, rcond, ccond, norm, info )
170 IF( info.NE.nsz+max( nsz-1, 1 ) )
172 reslts( 1 ) = reslts( 1 ) / eps
178 DO 230 kl = 0, max( m-1, 0 )
179 DO 220 ku = 0, max( n-1, 0 )
188 IF( i.LE.min( m, j+kl ) .AND. i.GE.
189 $ max( 1, j-ku ) .AND. j.LE.n )
THEN
190 ab( ku+1+i-j, j ) = pow( i+j+1 )*
196 CALL sgbequ( m, n, kl, ku, ab, nszb, r, c, rcond,
197 $ ccond, norm, info )
200 IF( .NOT.( ( n+kl.LT.m .AND. info.EQ.n+kl+1 ) .OR.
201 $ ( m+ku.LT.n .AND. info.EQ.2*m+ku+1 ) ) )
THEN
205 IF( n.NE.0 .AND. m.NE.0 )
THEN
210 rcmin = min( rcmin, r( i ) )
211 rcmax = max( rcmax, r( i ) )
213 ratio = rcmin / rcmax
214 reslts( 2 ) = max( reslts( 2 ),
215 $ abs( ( rcond-ratio ) / ratio ) )
220 rcmin = min( rcmin, c( j ) )
221 rcmax = max( rcmax, c( j ) )
223 ratio = rcmin / rcmax
224 reslts( 2 ) = max( reslts( 2 ),
225 $ abs( ( ccond-ratio ) / ratio ) )
227 reslts( 2 ) = max( reslts( 2 ),
228 $ abs( ( norm-pow( n+m+1 ) ) /
233 IF( i.LE.j+kl .AND. i.GE.j-ku )
THEN
234 ratio = abs( r( i )*pow( i+j+1 )*
236 rcmax = max( rcmax, ratio )
239 reslts( 2 ) = max( reslts( 2 ),
246 IF( i.LE.j+kl .AND. i.GE.j-ku )
THEN
247 ratio = abs( r( i )*pow( i+j+1 )*
249 rcmax = max( rcmax, ratio )
252 reslts( 2 ) = max( reslts( 2 ),
262 reslts( 2 ) = reslts( 2 ) / eps
270 IF( i.LE.n .AND. j.EQ.i )
THEN
271 a( i, j ) = pow( i+j+1 )*( -1 )**( i+j )
278 CALL spoequ( n, a, nsz, r, rcond, norm, info )
284 reslts( 3 ) = max( reslts( 3 ),
285 $ abs( ( rcond-rpow( n ) ) / rpow( n ) ) )
286 reslts( 3 ) = max( reslts( 3 ),
287 $ abs( ( norm-pow( 2*n+1 ) ) / pow( 2*n+
290 reslts( 3 ) = max( reslts( 3 ),
291 $ abs( ( r( i )-rpow( i+1 ) ) / rpow( i+
297 a( max( nsz-1, 1 ), max( nsz-1, 1 ) ) = -one
298 CALL spoequ( nsz, a, nsz, r, rcond, norm, info )
299 IF( info.NE.max( nsz-1, 1 ) )
301 reslts( 3 ) = reslts( 3 ) / eps
309 DO 300 i = 1, ( n*( n+1 ) ) / 2
313 ap( ( i*( i+1 ) ) / 2 ) = pow( 2*i+1 )
316 CALL sppequ(
'U', n, ap, r, rcond, norm, info )
322 reslts( 4 ) = max( reslts( 4 ),
323 $ abs( ( rcond-rpow( n ) ) / rpow( n ) ) )
324 reslts( 4 ) = max( reslts( 4 ),
325 $ abs( ( norm-pow( 2*n+1 ) ) / pow( 2*n+
328 reslts( 4 ) = max( reslts( 4 ),
329 $ abs( ( r( i )-rpow( i+1 ) ) / rpow( i+
337 DO 330 i = 1, ( n*( n+1 ) ) / 2
342 ap( j ) = pow( 2*i+1 )
346 CALL sppequ(
'L', n, ap, r, rcond, norm, info )
352 reslts( 4 ) = max( reslts( 4 ),
353 $ abs( ( rcond-rpow( n ) ) / rpow( n ) ) )
354 reslts( 4 ) = max( reslts( 4 ),
355 $ abs( ( norm-pow( 2*n+1 ) ) / pow( 2*n+
358 reslts( 4 ) = max( reslts( 4 ),
359 $ abs( ( r( i )-rpow( i+1 ) ) / rpow( i+
366 i = ( nsz*( nsz+1 ) ) / 2 - 2
368 CALL sppequ(
'L', nsz, ap, r, rcond, norm, info )
369 IF( info.NE.max( nsz-1, 1 ) )
371 reslts( 4 ) = reslts( 4 ) / eps
376 DO 450 kl = 0, max( n-1, 0 )
386 ab( kl+1, j ) = pow( 2*j+1 )
389 CALL spbequ(
'U', n, kl, ab, nszb, r, rcond, norm, info )
395 reslts( 5 ) = max( reslts( 5 ),
396 $ abs( ( rcond-rpow( n ) ) / rpow( n ) ) )
397 reslts( 5 ) = max( reslts( 5 ),
398 $ abs( ( norm-pow( 2*n+1 ) ) / pow( 2*n+
401 reslts( 5 ) = max( reslts( 5 ),
402 $ abs( ( r( i )-rpow( i+1 ) ) /
408 ab( kl+1, max( n-1, 1 ) ) = -one
409 CALL spbequ(
'U', n, kl, ab, nszb, r, rcond, norm, info )
410 IF( info.NE.max( n-1, 1 ) )
422 ab( 1, j ) = pow( 2*j+1 )
425 CALL spbequ(
'L', n, kl, ab, nszb, r, rcond, norm, info )
431 reslts( 5 ) = max( reslts( 5 ),
432 $ abs( ( rcond-rpow( n ) ) / rpow( n ) ) )
433 reslts( 5 ) = max( reslts( 5 ),
434 $ abs( ( norm-pow( 2*n+1 ) ) / pow( 2*n+
437 reslts( 5 ) = max( reslts( 5 ),
438 $ abs( ( r( i )-rpow( i+1 ) ) /
444 ab( 1, max( n-1, 1 ) ) = -one
445 CALL spbequ(
'L', n, kl, ab, nszb, r, rcond, norm, info )
446 IF( info.NE.max( n-1, 1 ) )
451 reslts( 5 ) = reslts( 5 ) / eps
452 ok = ( reslts( 1 ).LE.thresh ) .AND.
453 $ ( reslts( 2 ).LE.thresh ) .AND.
454 $ ( reslts( 3 ).LE.thresh ) .AND.
455 $ ( reslts( 4 ).LE.thresh ) .AND. ( reslts( 5 ).LE.thresh )
456 WRITE( nout, fmt = * )
458 WRITE( nout, fmt = 9999 )path
460 IF( reslts( 1 ).GT.thresh )
461 $
WRITE( nout, fmt = 9998 )reslts( 1 ), thresh
462 IF( reslts( 2 ).GT.thresh )
463 $
WRITE( nout, fmt = 9997 )reslts( 2 ), thresh
464 IF( reslts( 3 ).GT.thresh )
465 $
WRITE( nout, fmt = 9996 )reslts( 3 ), thresh
466 IF( reslts( 4 ).GT.thresh )
467 $
WRITE( nout, fmt = 9995 )reslts( 4 ), thresh
468 IF( reslts( 5 ).GT.thresh )
469 $
WRITE( nout, fmt = 9994 )reslts( 5 ), thresh
471 9999
FORMAT( 1x,
'All tests for ', a3,
472 $
' routines passed the threshold' )
473 9998
FORMAT(
' SGEEQU failed test with value ', e10.3,
' exceeding',
474 $
' threshold ', e10.3 )
475 9997
FORMAT(
' SGBEQU failed test with value ', e10.3,
' exceeding',
476 $
' threshold ', e10.3 )
477 9996
FORMAT(
' SPOEQU failed test with value ', e10.3,
' exceeding',
478 $
' threshold ', e10.3 )
479 9995
FORMAT(
' SPPEQU failed test with value ', e10.3,
' exceeding',
480 $
' threshold ', e10.3 )
481 9994
FORMAT(
' SPBEQU failed test with value ', e10.3,
' exceeding',
482 $
' threshold ', e10.3 )
subroutine sgbequ(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, info)
SGBEQU
subroutine sgeequ(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
SGEEQU
subroutine spbequ(uplo, n, kd, ab, ldab, s, scond, amax, info)
SPBEQU
subroutine spoequ(n, a, lda, s, scond, amax, info)
SPOEQU
subroutine sppequ(uplo, n, ap, s, scond, amax, info)
SPPEQU
subroutine schkeq(thresh, nout)
SCHKEQ