void mtxvg_c ( const void * m1,
const void * v2,
SpiceInt ncol1,
SpiceInt nr1r2,
void * vout )
Multiply the transpose of a matrix and a vector of arbitrary size.
None.
MATRIX, VECTOR
VARIABLE I/O DESCRIPTION
  
m1 I Lefthand matrix to be multiplied.
v2 I Righthand vector to be multiplied.
ncol1 I Column dimension of m1 and length of vout.
nr1r2 I Row dimension of m1 and length of v2.
vout O Product vector m1 transpose * v2.
m1 is a double precision matrix of arbitrary size which
forms the lefthand matrix of the multiplication.
v2 is a double precision vector on the right of the
multiplication.
ncol1 is the column dimension of m1 and length of vout.
nr1r2 is the row dimension of m1 and length of v2.
vout is the double precision vector which results from
the multiplication
t
vout = (m1) x v2
where the superscript t denotes the transpose of a matrix.
vout has length ncol1.
vout may overwrite m1 or v2. Note that this capability
does not exist in the Fortran version of SPICELIB; in the
Fortran version, the output must not overwrite either
input.
None.
Error free.
None.
The code reflects precisely the following mathematical expression
For each value of the subscript i from 1 to ncol1,
vout(i) = Summation from k=1 to nr1r2 of ( m1(k,i) * v2(k) )
1) Suppose that
 1 2 
m1 =  1 3 
 1 4 
and that
 1 
v2 =  2 
 3 
Then calling mxvg_c as shown
mtxvg_c ( m1, v2, 2, 3, vout );
will yield the following vector value for vout:
vout =  6 
 20 
1) The user is responsible for checking the magnitudes of the
elements of m1 and v2 so that a floating point overflow does
not occur.
None.
N.J. Bachman (JPL)
W.M. Owen (JPL)
CSPICE Version 1.2.0, 28AUG2001 (NJB)
Constqualified input arrays.
CSPICE Version 1.1.0, 08FEB1998 (NJB)
Corrected a comment describing the local macro INDEX. Made
miscellaneous code format corrections.
Based on SPICELIB Version 1.0.1, 10MAR1992 (WLT)
matrix transpose times ndimensional vector
