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
|
/* mvmpy.c
*
* Matrix times vector
*
*
*
* SYNOPSIS:
*
* int r, c;
* double A[r*c], V[c], Y[r];
*
* mvmpy( r, c, A, V, Y );
*
*
*
* DESCRIPTION:
*
* c-1
* --
* Y[j] = > A[j][k] V[k] , j = 1, ..., r
* --
* k=0
*
* Multiplies the r (rows) by c (columns) matrix A on the left
* by column vector V of dimension c on the right
* to produce a (column) vector Y output of dimension r.
*
*
*
*
*/
void
mvmpy( r, c, A, V, Y )
int r, c;
double *A, *V, *Y;
{
register double s;
double *pA, *pV, *pY;
int i, j;
pA = A;
pY = Y;
for( i=0; i<r; i++ )
{
pV = V;
s = 0.0;
for( j=0; j<c; j++ )
{
s += *pA++ * *pV++;
}
*pY++ = s;
}
}
|