y_eq_diagAx_Full.F
c**********************************************************************
#include "author.inc"
c* $Id: y_eq_diagAx_Full.F,v 1.2 1995/10/10 05:42:29 turner Exp $
c*
c* Computes y = diag(A)*x.
c*
c* <PARAMETER LIST>
c*
c* Input:
c* idim - leading dimension of a
c* n - number of rows/columns of A
c* x - vector to be multiplied
c* a - matrix
c*
c* Output:
c* y - destination vector
c* status - return status
c*
#include "copyright.inc"
c**********************************************************************
subroutine JT_y_eq_diagAx_Full (idim, n, x, a, y, status)
implicit none
c
c ... Input:
integer idim, n
real a(idim,n), x(n)
c
c ... Output:
integer status
real y(n)
c
c ... Local:
integer i
c
do i=1,n
y(i) = a(i,i)*x(i)
enddo
c
status = 0
return
end
c**********************************************************************
#include "author.inc"
c*
c* Computes y = inv(diag(A))*x.
c*
c* WARNING: This routine does not check to ensure that
c* a(i,i) /= 0.
c*
c* <PARAMETER LIST>
c*
c* Input:
c* idim - leading dimension of a
c* n - number of rows/columns of A
c* a - matrix
c* x - vector to be multiplied
c*
c* Output:
c* y - destination vector
c* status - return status
c*
#include "copyright.inc"
c**********************************************************************
subroutine JT_y_eq_invdiagAx_Full (idim, n, x, a, y, status)
implicit none
c
c ... Input:
integer idim, n
real a(idim,n), x(n)
c
c ... Output:
integer status
real y(n)
c
c ... Local:
integer i
c
do i=1,n
y(i) = x(i) / a(i,i)
enddo
c
status = 0
return
end