mtxv_c

 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 mtxv_c ( ConstSpiceDouble     m1  ,
ConstSpiceDouble     vin ,
SpiceDouble          vout   )

```

#### Abstract

```   mtxv_c multiplies the transpose of a 3x3 matrix on the left with
a vector on the right.
```

```   None.
```

#### Keywords

```   VECTOR,  MATRIX

```

#### Brief_I/O

```   VARIABLE  I/O              DESCRIPTION
--------  ---  --------------------------------------------------
m1         I   3x3 double precision matrix.
vin        I   3-dimensional double precision vector.
vout       O   3-dimensional double precision vector. vout is
the product m1**t * vin.
```

#### Detailed_Input

```   m1         is an arbitrary 3x3 double precision matrix.
typically, m1 will be a rotation matrix since
then its transpose is its inverse (but this is NOT
a requirement).

vin        is an arbitrary 3-dimensional double precision
vector.
```

#### Detailed_Output

```   vout       is a 3-dimensional double precision vector. vout is
the product vout = (m1**t)  x (vin). vout can
overwrite vin.
```

#### Parameters

```   None.
```

#### Exceptions

```   Error free.
```

#### Files

```   None.
```

#### Particulars

```   The intermediate results of the operation performed by this routine
are buffered in a temporary vector which is later moved to the output
vector.  Thus vout can be actually vin if desired without
interfering with the computation.
```

#### Examples

```   Typically the matrix m1 will be a rotation matrix.  Because
the transpose of an orthogonal matrix is equivalent to its
inverse, applying the rotation to the vector is accomplished by
multiplying the vector by the transpose of the matrix.

-1
let  m1   * vin = vout. If m1 is an orthogonal matrix,
then  (m1**t) * vin = vout.

If m1 = |  1.  1.  0. |   and  vin = |  5. |
|             |              |     |
| -1.  1.  0. |              | 10. |
|             |              |     |
|  0.  0.  1. |              | 15. |

then the call

mtxv_c ( m1, vin, vout )

produces the vector

vout = | -5. |
|     |
| 15. |
|     |
| 15. |
```

#### Restrictions

```   The user is responsible for checking the magnitudes of the
elements of m1 and vin so that a floating point overflow does
not occur.
```

#### Literature_References

```   None.
```

#### Author_and_Institution

```   E.D. Wright     (JPL)
W.M. Owen       (JPL)
```

#### Version

```   -CSPICE Version 1.0.1, 10-NOV-2006   (EDW)

```   matrix_transpose times 3-dimensional vector
`Wed Apr  5 17:54:39 2017`