LAPACK  3.9.1
LAPACK: Linear Algebra PACKage

◆ dger()

subroutine dger ( integer  M,
integer  N,
double precision  ALPHA,
double precision, dimension(*)  X,
integer  INCX,
double precision, dimension(*)  Y,
integer  INCY,
double precision, dimension(lda,*)  A,
integer  LDA 
)

DGER

Purpose:
 DGER   performs the rank 1 operation

    A := alpha*x*y**T + A,

 where alpha is a scalar, x is an m element vector, y is an n element
 vector and A is an m by n matrix.
Parameters
[in]M
          M is INTEGER
           On entry, M specifies the number of rows of the matrix A.
           M must be at least zero.
[in]N
          N is INTEGER
           On entry, N specifies the number of columns of the matrix A.
           N must be at least zero.
[in]ALPHA
          ALPHA is DOUBLE PRECISION.
           On entry, ALPHA specifies the scalar alpha.
[in]X
          X is DOUBLE PRECISION array, dimension at least
           ( 1 + ( m - 1 )*abs( INCX ) ).
           Before entry, the incremented array X must contain the m
           element vector x.
[in]INCX
          INCX is INTEGER
           On entry, INCX specifies the increment for the elements of
           X. INCX must not be zero.
[in]Y
          Y is DOUBLE PRECISION array, dimension at least
           ( 1 + ( n - 1 )*abs( INCY ) ).
           Before entry, the incremented array Y must contain the n
           element vector y.
[in]INCY
          INCY is INTEGER
           On entry, INCY specifies the increment for the elements of
           Y. INCY must not be zero.
[in,out]A
          A is DOUBLE PRECISION array, dimension ( LDA, N )
           Before entry, the leading m by n part of the array A must
           contain the matrix of coefficients. On exit, A is
           overwritten by the updated matrix.
[in]LDA
          LDA is INTEGER
           On entry, LDA specifies the first dimension of A as declared
           in the calling (sub) program. LDA must be at least
           max( 1, m ).
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
  Level 2 Blas routine.

  -- Written on 22-October-1986.
     Jack Dongarra, Argonne National Lab.
     Jeremy Du Croz, Nag Central Office.
     Sven Hammarling, Nag Central Office.
     Richard Hanson, Sandia National Labs.

Definition at line 129 of file dger.f.

130 *
131 * -- Reference BLAS level2 routine --
132 * -- Reference BLAS is a software package provided by Univ. of Tennessee, --
133 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
134 *
135 * .. Scalar Arguments ..
136  DOUBLE PRECISION ALPHA
137  INTEGER INCX,INCY,LDA,M,N
138 * ..
139 * .. Array Arguments ..
140  DOUBLE PRECISION A(LDA,*),X(*),Y(*)
141 * ..
142 *
143 * =====================================================================
144 *
145 * .. Parameters ..
146  DOUBLE PRECISION ZERO
147  parameter(zero=0.0d+0)
148 * ..
149 * .. Local Scalars ..
150  DOUBLE PRECISION TEMP
151  INTEGER I,INFO,IX,J,JY,KX
152 * ..
153 * .. External Subroutines ..
154  EXTERNAL xerbla
155 * ..
156 * .. Intrinsic Functions ..
157  INTRINSIC max
158 * ..
159 *
160 * Test the input parameters.
161 *
162  info = 0
163  IF (m.LT.0) THEN
164  info = 1
165  ELSE IF (n.LT.0) THEN
166  info = 2
167  ELSE IF (incx.EQ.0) THEN
168  info = 5
169  ELSE IF (incy.EQ.0) THEN
170  info = 7
171  ELSE IF (lda.LT.max(1,m)) THEN
172  info = 9
173  END IF
174  IF (info.NE.0) THEN
175  CALL xerbla('DGER ',info)
176  RETURN
177  END IF
178 *
179 * Quick return if possible.
180 *
181  IF ((m.EQ.0) .OR. (n.EQ.0) .OR. (alpha.EQ.zero)) RETURN
182 *
183 * Start the operations. In this version the elements of A are
184 * accessed sequentially with one pass through A.
185 *
186  IF (incy.GT.0) THEN
187  jy = 1
188  ELSE
189  jy = 1 - (n-1)*incy
190  END IF
191  IF (incx.EQ.1) THEN
192  DO 20 j = 1,n
193  IF (y(jy).NE.zero) THEN
194  temp = alpha*y(jy)
195  DO 10 i = 1,m
196  a(i,j) = a(i,j) + x(i)*temp
197  10 CONTINUE
198  END IF
199  jy = jy + incy
200  20 CONTINUE
201  ELSE
202  IF (incx.GT.0) THEN
203  kx = 1
204  ELSE
205  kx = 1 - (m-1)*incx
206  END IF
207  DO 40 j = 1,n
208  IF (y(jy).NE.zero) THEN
209  temp = alpha*y(jy)
210  ix = kx
211  DO 30 i = 1,m
212  a(i,j) = a(i,j) + x(ix)*temp
213  ix = ix + incx
214  30 CONTINUE
215  END IF
216  jy = jy + incy
217  40 CONTINUE
218  END IF
219 *
220  RETURN
221 *
222 * End of DGER .
223 *
subroutine xerbla(SRNAME, INFO)
XERBLA
Definition: xerbla.f:60
Here is the call graph for this function:
Here is the caller graph for this function: