mxvg_c

Index Page mxvg_c
A B C D E F G H I J K L M N O P Q R S T U V W X
Procedure Abstract Required_Reading Keywords Brief_I/O Detailed_Input | Detailed_Output Parameters Exceptions Files Particulars Examples | Restrictions Literature_References Author_and_Institution Version Index_Entries
#### Procedure
       void mxvg_c ( const void   * m1,
                     const void   * v2,
                     SpiceInt       nrow1,
                     SpiceInt       nc1r2,
                     void         * vout   )
#### Abstract
       Multiply a matrix and a vector of arbitrary size.
#### Required_Reading
       None.
#### Keywords
       MATRIX,  VECTOR
#### Brief_I/O
       VARIABLE  I/O  DESCRIPTION
       --------  ---  --------------------------------------------------
       m1         I   Left-hand matrix to be multiplied.
       v2         I   Right-hand vector to be multiplied.
       nrow1      I   Row dimension of m1 and length of vout.
       nc1r2      I   Column dimension of m1 and length of v2.
       vout       O   Product vector m1*v2.
#### Detailed_Input
       m1         is a double precision matrix of arbitrary size which
                  forms the left-hand matrix of the multiplication.

       v2         is a double precision vector on the right of the
                  multiplication.

       nrow1      is the row dimension of m1 and length of vout.

       nc1r2      is the column dimension of m1 and length of v2.
#### Detailed_Output
       vout       is the double precision vector which results from
                  the multiplication

                     vout = (m1) x v2

                  vout has length nrow1.

                  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.
#### Parameters
       None.
#### Exceptions
       Error free.
#### Files
       None.
#### Particulars
        The code reflects precisely the following mathematical expression

           For each value of the subscript i from 1 to nrow1,

           vout(i) = Summation from k=1 to nc1r2 of  ( m1(i,k) * v2(k) )
#### Examples
       1)  Suppose that

              M1 = | 1  1  1 |
                   | 2  3  4 |

           and that

                   | 1 |
              V2 = | 2 |
                   | 3 |

           Then calling mxvg_c as shown

              mxvg_c ( m1, v2, 2, 3, vout );

           will yield the following vector value for vout:

              vout = | 6  |
                     | 20 |
#### Restrictions
       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.
#### Literature_References
       None.
#### Author_and_Institution
       N.J. Bachman    (JPL)
       W.M. Owen       (JPL)
#### Version
       -CSPICE Version 1.1.0, 25-JUL-2001   (NJB)

          Changed protoype:  inputs m1 and v2 are now type (const void *).
          Implemented interface macro for casting inputs m1 and v2 to
          const.

       -CSPICE Version 1.0.1, 08-FEB-1998 (NJB)

          Corrected a comment describing the local macro INDEX.   Made
          miscellaneous code format corrections.

       -CSPICE Version 1.0.0, 25-OCT-1997 (NJB)

          Based on SPICELIB Version 1.0.1, 10-MAR-1992 (WLT)
#### Index_Entries
       matrix times n-dimensional vector
#### Link to routine mxvg_c source file mxvg_c.c

    Thu Apr 16 08:58:41 2009