Index Page
mtxvg_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 mtxvg_c ( const void   * m1,
                  const void   * v2,
                  SpiceInt       ncol1,
                  SpiceInt       nr1r2,
                  void         * vout   )

Abstract

   Multiply the transpose of 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.
   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.

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.

   ncol1      is the column dimension of m1 and length of vout.

   nr1r2      is the row dimension of m1 and length of v2.

Detailed_Output

   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.

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 ncol1,

       vout(i) = Summation from k=1 to nr1r2 of  ( m1(k,i) * v2(k) )

Examples

   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 |

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.2.0, 28-AUG-2001 (NJB)

      Const-qualified input arrays.

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

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

      Based on SPICELIB Version 1.0.1, 10-MAR-1992 (WLT)

Index_Entries

   matrix transpose times n-dimensional vector

Link to routine mtxvg_c source file mtxvg_c.c

Wed Apr  5 17:54:39 2017