/usr/share/doc/libsuperlu-dev/tests/MATGEN/zlaset.c is in libsuperlu3-dev 3.0+20070106-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | #include "f2c.h"
/* Subroutine */ int zlaset_(char *uplo, integer *m, integer *n,
doublecomplex *alpha, doublecomplex *beta, doublecomplex *a, integer *
lda)
{
/* -- LAPACK auxiliary routine (version 2.0) --
Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
Courant Institute, Argonne National Lab, and Rice University
October 31, 1992
Purpose
=======
ZLASET initializes a 2-D array A to BETA on the diagonal and
ALPHA on the offdiagonals.
Arguments
=========
UPLO (input) CHARACTER*1
Specifies the part of the matrix A to be set.
= 'U': Upper triangular part is set. The lower triangle
is unchanged.
= 'L': Lower triangular part is set. The upper triangle
is unchanged.
Otherwise: All of the matrix A is set.
M (input) INTEGER
On entry, M specifies the number of rows of A.
N (input) INTEGER
On entry, N specifies the number of columns of A.
ALPHA (input) COMPLEX*16
All the offdiagonal array elements are set to ALPHA.
BETA (input) COMPLEX*16
All the diagonal array elements are set to BETA.
A (input/output) COMPLEX*16 array, dimension (LDA,N)
On entry, the m by n matrix A.
On exit, A(i,j) = ALPHA, 1 <= i <= m, 1 <= j <= n, i.ne.j;
A(i,i) = BETA , 1 <= i <= min(m,n)
LDA (input) INTEGER
The leading dimension of the array A. LDA >= max(1,M).
=====================================================================
Parameter adjustments
Function Body */
/* System generated locals */
integer a_dim1, a_offset, i__1, i__2, i__3;
/* Local variables */
static integer i, j;
extern logical lsame_(char *, char *);
#define A(I,J) a[(I)-1 + ((J)-1)* ( *lda)]
if (lsame_(uplo, "U")) {
/* Set the diagonal to BETA and the strictly upper triangular
part of the array to ALPHA. */
i__1 = *n;
for (j = 2; j <= *n; ++j) {
/* Computing MIN */
i__3 = j - 1;
i__2 = min(i__3,*m);
for (i = 1; i <= min(j-1,*m); ++i) {
i__3 = i + j * a_dim1;
A(i,j).r = alpha->r, A(i,j).i = alpha->i;
/* L10: */
}
/* L20: */
}
i__1 = min(*n,*m);
for (i = 1; i <= min(*n,*m); ++i) {
i__2 = i + i * a_dim1;
A(i,i).r = beta->r, A(i,i).i = beta->i;
/* L30: */
}
} else if (lsame_(uplo, "L")) {
/* Set the diagonal to BETA and the strictly lower triangular
part of the array to ALPHA. */
i__1 = min(*m,*n);
for (j = 1; j <= min(*m,*n); ++j) {
i__2 = *m;
for (i = j + 1; i <= *m; ++i) {
i__3 = i + j * a_dim1;
A(i,j).r = alpha->r, A(i,j).i = alpha->i;
/* L40: */
}
/* L50: */
}
i__1 = min(*n,*m);
for (i = 1; i <= min(*n,*m); ++i) {
i__2 = i + i * a_dim1;
A(i,i).r = beta->r, A(i,i).i = beta->i;
/* L60: */
}
} else {
/* Set the array to BETA on the diagonal and ALPHA on the
offdiagonal. */
i__1 = *n;
for (j = 1; j <= *n; ++j) {
i__2 = *m;
for (i = 1; i <= *m; ++i) {
i__3 = i + j * a_dim1;
A(i,j).r = alpha->r, A(i,j).i = alpha->i;
/* L70: */
}
/* L80: */
}
i__1 = min(*m,*n);
for (i = 1; i <= min(*m,*n); ++i) {
i__2 = i + i * a_dim1;
A(i,i).r = beta->r, A(i,i).i = beta->i;
/* L90: */
}
}
return 0;
/* End of ZLASET */
} /* zlaset_ */
|