1 SUBROUTINE ZGET10( M, N, A, LDA, B, LDB, WORK, RWORK, RESULT )
2 *
3 * -- LAPACK test routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 INTEGER LDA, LDB, M, N
9 DOUBLE PRECISION RESULT
10 * ..
11 * .. Array Arguments ..
12 DOUBLE PRECISION RWORK( * )
13 COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * )
14 * ..
15 *
16 * Purpose
17 * =======
18 *
19 * ZGET10 compares two matrices A and B and computes the ratio
20 * RESULT = norm( A - B ) / ( norm(A) * M * EPS )
21 *
22 * Arguments
23 * =========
24 *
25 * M (input) INTEGER
26 * The number of rows of the matrices A and B.
27 *
28 * N (input) INTEGER
29 * The number of columns of the matrices A and B.
30 *
31 * A (input) COMPLEX*16 array, dimension (LDA,N)
32 * The m by n matrix A.
33 *
34 * LDA (input) INTEGER
35 * The leading dimension of the array A. LDA >= max(1,M).
36 *
37 * B (input) COMPLEX*16 array, dimension (LDB,N)
38 * The m by n matrix B.
39 *
40 * LDB (input) INTEGER
41 * The leading dimension of the array B. LDB >= max(1,M).
42 *
43 * WORK (workspace) COMPLEX*16 array, dimension (M)
44 *
45 * RWORK (workspace) COMPLEX*16 array, dimension (M)
46 *
47 * RESULT (output) DOUBLE PRECISION
48 * RESULT = norm( A - B ) / ( norm(A) * M * EPS )
49 *
50 * =====================================================================
51 *
52 * .. Parameters ..
53 DOUBLE PRECISION ONE, ZERO
54 PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
55 * ..
56 * .. Local Scalars ..
57 INTEGER J
58 DOUBLE PRECISION ANORM, EPS, UNFL, WNORM
59 * ..
60 * .. External Functions ..
61 DOUBLE PRECISION DLAMCH, DZASUM, ZLANGE
62 EXTERNAL DLAMCH, DZASUM, ZLANGE
63 * ..
64 * .. External Subroutines ..
65 EXTERNAL ZAXPY, ZCOPY
66 * ..
67 * .. Intrinsic Functions ..
68 INTRINSIC DBLE, DCMPLX, MAX, MIN
69 * ..
70 * .. Executable Statements ..
71 *
72 * Quick return if possible
73 *
74 IF( M.LE.0 .OR. N.LE.0 ) THEN
75 RESULT = ZERO
76 RETURN
77 END IF
78 *
79 UNFL = DLAMCH( 'Safe minimum' )
80 EPS = DLAMCH( 'Precision' )
81 *
82 WNORM = ZERO
83 DO 10 J = 1, N
84 CALL ZCOPY( M, A( 1, J ), 1, WORK, 1 )
85 CALL ZAXPY( M, DCMPLX( -ONE ), B( 1, J ), 1, WORK, 1 )
86 WNORM = MAX( WNORM, DZASUM( N, WORK, 1 ) )
87 10 CONTINUE
88 *
89 ANORM = MAX( ZLANGE( '1', M, N, A, LDA, RWORK ), UNFL )
90 *
91 IF( ANORM.GT.WNORM ) THEN
92 RESULT = ( WNORM / ANORM ) / ( M*EPS )
93 ELSE
94 IF( ANORM.LT.ONE ) THEN
95 RESULT = ( MIN( WNORM, M*ANORM ) / ANORM ) / ( M*EPS )
96 ELSE
97 RESULT = MIN( WNORM / ANORM, DBLE( M ) ) / ( M*EPS )
98 END IF
99 END IF
100 *
101 RETURN
102 *
103 * End of ZGET10
104 *
105 END
2 *
3 * -- LAPACK test routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 INTEGER LDA, LDB, M, N
9 DOUBLE PRECISION RESULT
10 * ..
11 * .. Array Arguments ..
12 DOUBLE PRECISION RWORK( * )
13 COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * )
14 * ..
15 *
16 * Purpose
17 * =======
18 *
19 * ZGET10 compares two matrices A and B and computes the ratio
20 * RESULT = norm( A - B ) / ( norm(A) * M * EPS )
21 *
22 * Arguments
23 * =========
24 *
25 * M (input) INTEGER
26 * The number of rows of the matrices A and B.
27 *
28 * N (input) INTEGER
29 * The number of columns of the matrices A and B.
30 *
31 * A (input) COMPLEX*16 array, dimension (LDA,N)
32 * The m by n matrix A.
33 *
34 * LDA (input) INTEGER
35 * The leading dimension of the array A. LDA >= max(1,M).
36 *
37 * B (input) COMPLEX*16 array, dimension (LDB,N)
38 * The m by n matrix B.
39 *
40 * LDB (input) INTEGER
41 * The leading dimension of the array B. LDB >= max(1,M).
42 *
43 * WORK (workspace) COMPLEX*16 array, dimension (M)
44 *
45 * RWORK (workspace) COMPLEX*16 array, dimension (M)
46 *
47 * RESULT (output) DOUBLE PRECISION
48 * RESULT = norm( A - B ) / ( norm(A) * M * EPS )
49 *
50 * =====================================================================
51 *
52 * .. Parameters ..
53 DOUBLE PRECISION ONE, ZERO
54 PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
55 * ..
56 * .. Local Scalars ..
57 INTEGER J
58 DOUBLE PRECISION ANORM, EPS, UNFL, WNORM
59 * ..
60 * .. External Functions ..
61 DOUBLE PRECISION DLAMCH, DZASUM, ZLANGE
62 EXTERNAL DLAMCH, DZASUM, ZLANGE
63 * ..
64 * .. External Subroutines ..
65 EXTERNAL ZAXPY, ZCOPY
66 * ..
67 * .. Intrinsic Functions ..
68 INTRINSIC DBLE, DCMPLX, MAX, MIN
69 * ..
70 * .. Executable Statements ..
71 *
72 * Quick return if possible
73 *
74 IF( M.LE.0 .OR. N.LE.0 ) THEN
75 RESULT = ZERO
76 RETURN
77 END IF
78 *
79 UNFL = DLAMCH( 'Safe minimum' )
80 EPS = DLAMCH( 'Precision' )
81 *
82 WNORM = ZERO
83 DO 10 J = 1, N
84 CALL ZCOPY( M, A( 1, J ), 1, WORK, 1 )
85 CALL ZAXPY( M, DCMPLX( -ONE ), B( 1, J ), 1, WORK, 1 )
86 WNORM = MAX( WNORM, DZASUM( N, WORK, 1 ) )
87 10 CONTINUE
88 *
89 ANORM = MAX( ZLANGE( '1', M, N, A, LDA, RWORK ), UNFL )
90 *
91 IF( ANORM.GT.WNORM ) THEN
92 RESULT = ( WNORM / ANORM ) / ( M*EPS )
93 ELSE
94 IF( ANORM.LT.ONE ) THEN
95 RESULT = ( MIN( WNORM, M*ANORM ) / ANORM ) / ( M*EPS )
96 ELSE
97 RESULT = MIN( WNORM / ANORM, DBLE( M ) ) / ( M*EPS )
98 END IF
99 END IF
100 *
101 RETURN
102 *
103 * End of ZGET10
104 *
105 END