annotate libcruft/blas/chemm.f @ 8692:54227442f7ed

add missing BLAS sources
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 06 Feb 2009 07:30:55 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8692
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
1 SUBROUTINE CHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
2 * .. Scalar Arguments ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
3 COMPLEX ALPHA,BETA
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
4 INTEGER LDA,LDB,LDC,M,N
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
5 CHARACTER SIDE,UPLO
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
6 * ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
7 * .. Array Arguments ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
8 COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
9 * ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
10 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
11 * Purpose
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
12 * =======
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
13 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
14 * CHEMM performs one of the matrix-matrix operations
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
15 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
16 * C := alpha*A*B + beta*C,
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
17 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
18 * or
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
19 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
20 * C := alpha*B*A + beta*C,
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
21 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
22 * where alpha and beta are scalars, A is an hermitian matrix and B and
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
23 * C are m by n matrices.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
24 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
25 * Arguments
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
26 * ==========
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
27 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
28 * SIDE - CHARACTER*1.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
29 * On entry, SIDE specifies whether the hermitian matrix A
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
30 * appears on the left or right in the operation as follows:
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
31 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
32 * SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
33 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
34 * SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
35 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
36 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
37 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
38 * UPLO - CHARACTER*1.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
39 * On entry, UPLO specifies whether the upper or lower
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
40 * triangular part of the hermitian matrix A is to be
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
41 * referenced as follows:
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
42 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
43 * UPLO = 'U' or 'u' Only the upper triangular part of the
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
44 * hermitian matrix is to be referenced.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
45 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
46 * UPLO = 'L' or 'l' Only the lower triangular part of the
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
47 * hermitian matrix is to be referenced.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
48 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
49 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
50 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
51 * M - INTEGER.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
52 * On entry, M specifies the number of rows of the matrix C.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
53 * M must be at least zero.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
54 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
55 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
56 * N - INTEGER.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
57 * On entry, N specifies the number of columns of the matrix C.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
58 * N must be at least zero.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
59 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
60 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
61 * ALPHA - COMPLEX .
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
62 * On entry, ALPHA specifies the scalar alpha.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
63 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
64 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
65 * A - COMPLEX array of DIMENSION ( LDA, ka ), where ka is
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
66 * m when SIDE = 'L' or 'l' and is n otherwise.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
67 * Before entry with SIDE = 'L' or 'l', the m by m part of
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
68 * the array A must contain the hermitian matrix, such that
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
69 * when UPLO = 'U' or 'u', the leading m by m upper triangular
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
70 * part of the array A must contain the upper triangular part
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
71 * of the hermitian matrix and the strictly lower triangular
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
72 * part of A is not referenced, and when UPLO = 'L' or 'l',
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
73 * the leading m by m lower triangular part of the array A
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
74 * must contain the lower triangular part of the hermitian
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
75 * matrix and the strictly upper triangular part of A is not
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
76 * referenced.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
77 * Before entry with SIDE = 'R' or 'r', the n by n part of
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
78 * the array A must contain the hermitian matrix, such that
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
79 * when UPLO = 'U' or 'u', the leading n by n upper triangular
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
80 * part of the array A must contain the upper triangular part
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
81 * of the hermitian matrix and the strictly lower triangular
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
82 * part of A is not referenced, and when UPLO = 'L' or 'l',
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
83 * the leading n by n lower triangular part of the array A
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
84 * must contain the lower triangular part of the hermitian
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
85 * matrix and the strictly upper triangular part of A is not
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
86 * referenced.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
87 * Note that the imaginary parts of the diagonal elements need
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
88 * not be set, they are assumed to be zero.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
89 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
90 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
91 * LDA - INTEGER.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
92 * On entry, LDA specifies the first dimension of A as declared
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
93 * in the calling (sub) program. When SIDE = 'L' or 'l' then
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
94 * LDA must be at least max( 1, m ), otherwise LDA must be at
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
95 * least max( 1, n ).
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
96 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
97 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
98 * B - COMPLEX array of DIMENSION ( LDB, n ).
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
99 * Before entry, the leading m by n part of the array B must
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
100 * contain the matrix B.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
101 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
102 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
103 * LDB - INTEGER.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
104 * On entry, LDB specifies the first dimension of B as declared
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
105 * in the calling (sub) program. LDB must be at least
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
106 * max( 1, m ).
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
107 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
108 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
109 * BETA - COMPLEX .
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
110 * On entry, BETA specifies the scalar beta. When BETA is
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
111 * supplied as zero then C need not be set on input.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
112 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
113 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
114 * C - COMPLEX array of DIMENSION ( LDC, n ).
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
115 * Before entry, the leading m by n part of the array C must
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
116 * contain the matrix C, except when beta is zero, in which
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
117 * case C need not be set on entry.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
118 * On exit, the array C is overwritten by the m by n updated
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
119 * matrix.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
120 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
121 * LDC - INTEGER.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
122 * On entry, LDC specifies the first dimension of C as declared
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
123 * in the calling (sub) program. LDC must be at least
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
124 * max( 1, m ).
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
125 * Unchanged on exit.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
126 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
127 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
128 * Level 3 Blas routine.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
129 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
130 * -- Written on 8-February-1989.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
131 * Jack Dongarra, Argonne National Laboratory.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
132 * Iain Duff, AERE Harwell.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
133 * Jeremy Du Croz, Numerical Algorithms Group Ltd.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
134 * Sven Hammarling, Numerical Algorithms Group Ltd.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
135 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
136 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
137 * .. External Functions ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
138 LOGICAL LSAME
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
139 EXTERNAL LSAME
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
140 * ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
141 * .. External Subroutines ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
142 EXTERNAL XERBLA
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
143 * ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
144 * .. Intrinsic Functions ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
145 INTRINSIC CONJG,MAX,REAL
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
146 * ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
147 * .. Local Scalars ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
148 COMPLEX TEMP1,TEMP2
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
149 INTEGER I,INFO,J,K,NROWA
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
150 LOGICAL UPPER
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
151 * ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
152 * .. Parameters ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
153 COMPLEX ONE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
154 PARAMETER (ONE= (1.0E+0,0.0E+0))
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
155 COMPLEX ZERO
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
156 PARAMETER (ZERO= (0.0E+0,0.0E+0))
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
157 * ..
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
158 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
159 * Set NROWA as the number of rows of A.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
160 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
161 IF (LSAME(SIDE,'L')) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
162 NROWA = M
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
163 ELSE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
164 NROWA = N
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
165 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
166 UPPER = LSAME(UPLO,'U')
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
167 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
168 * Test the input parameters.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
169 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
170 INFO = 0
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
171 IF ((.NOT.LSAME(SIDE,'L')) .AND. (.NOT.LSAME(SIDE,'R'))) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
172 INFO = 1
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
173 ELSE IF ((.NOT.UPPER) .AND. (.NOT.LSAME(UPLO,'L'))) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
174 INFO = 2
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
175 ELSE IF (M.LT.0) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
176 INFO = 3
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
177 ELSE IF (N.LT.0) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
178 INFO = 4
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
179 ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
180 INFO = 7
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
181 ELSE IF (LDB.LT.MAX(1,M)) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
182 INFO = 9
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
183 ELSE IF (LDC.LT.MAX(1,M)) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
184 INFO = 12
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
185 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
186 IF (INFO.NE.0) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
187 CALL XERBLA('CHEMM ',INFO)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
188 RETURN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
189 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
190 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
191 * Quick return if possible.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
192 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
193 IF ((M.EQ.0) .OR. (N.EQ.0) .OR.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
194 + ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
195 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
196 * And when alpha.eq.zero.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
197 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
198 IF (ALPHA.EQ.ZERO) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
199 IF (BETA.EQ.ZERO) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
200 DO 20 J = 1,N
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
201 DO 10 I = 1,M
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
202 C(I,J) = ZERO
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
203 10 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
204 20 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
205 ELSE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
206 DO 40 J = 1,N
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
207 DO 30 I = 1,M
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
208 C(I,J) = BETA*C(I,J)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
209 30 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
210 40 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
211 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
212 RETURN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
213 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
214 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
215 * Start the operations.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
216 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
217 IF (LSAME(SIDE,'L')) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
218 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
219 * Form C := alpha*A*B + beta*C.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
220 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
221 IF (UPPER) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
222 DO 70 J = 1,N
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
223 DO 60 I = 1,M
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
224 TEMP1 = ALPHA*B(I,J)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
225 TEMP2 = ZERO
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
226 DO 50 K = 1,I - 1
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
227 C(K,J) = C(K,J) + TEMP1*A(K,I)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
228 TEMP2 = TEMP2 + B(K,J)*CONJG(A(K,I))
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
229 50 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
230 IF (BETA.EQ.ZERO) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
231 C(I,J) = TEMP1*REAL(A(I,I)) + ALPHA*TEMP2
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
232 ELSE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
233 C(I,J) = BETA*C(I,J) + TEMP1*REAL(A(I,I)) +
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
234 + ALPHA*TEMP2
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
235 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
236 60 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
237 70 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
238 ELSE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
239 DO 100 J = 1,N
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
240 DO 90 I = M,1,-1
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
241 TEMP1 = ALPHA*B(I,J)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
242 TEMP2 = ZERO
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
243 DO 80 K = I + 1,M
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
244 C(K,J) = C(K,J) + TEMP1*A(K,I)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
245 TEMP2 = TEMP2 + B(K,J)*CONJG(A(K,I))
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
246 80 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
247 IF (BETA.EQ.ZERO) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
248 C(I,J) = TEMP1*REAL(A(I,I)) + ALPHA*TEMP2
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
249 ELSE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
250 C(I,J) = BETA*C(I,J) + TEMP1*REAL(A(I,I)) +
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
251 + ALPHA*TEMP2
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
252 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
253 90 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
254 100 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
255 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
256 ELSE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
257 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
258 * Form C := alpha*B*A + beta*C.
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
259 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
260 DO 170 J = 1,N
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
261 TEMP1 = ALPHA*REAL(A(J,J))
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
262 IF (BETA.EQ.ZERO) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
263 DO 110 I = 1,M
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
264 C(I,J) = TEMP1*B(I,J)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
265 110 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
266 ELSE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
267 DO 120 I = 1,M
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
268 C(I,J) = BETA*C(I,J) + TEMP1*B(I,J)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
269 120 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
270 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
271 DO 140 K = 1,J - 1
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
272 IF (UPPER) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
273 TEMP1 = ALPHA*A(K,J)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
274 ELSE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
275 TEMP1 = ALPHA*CONJG(A(J,K))
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
276 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
277 DO 130 I = 1,M
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
278 C(I,J) = C(I,J) + TEMP1*B(I,K)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
279 130 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
280 140 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
281 DO 160 K = J + 1,N
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
282 IF (UPPER) THEN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
283 TEMP1 = ALPHA*CONJG(A(J,K))
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
284 ELSE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
285 TEMP1 = ALPHA*A(K,J)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
286 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
287 DO 150 I = 1,M
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
288 C(I,J) = C(I,J) + TEMP1*B(I,K)
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
289 150 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
290 160 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
291 170 CONTINUE
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
292 END IF
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
293 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
294 RETURN
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
295 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
296 * End of CHEMM .
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
297 *
54227442f7ed add missing BLAS sources
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
298 END