invort_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 invort_c ( ConstSpiceDouble   m  ,
SpiceDouble        mit )

```

#### Abstract

```
Given a matrix, construct the matrix whose rows are the
columns of the first divided by the length squared of the
the corresponding columns of the input matrix.
```

```
None.
```

```
MATRIX

```

#### Brief_I/O

```
Variable  I/O  Description
--------  ---  --------------------------------------------------
m          I   A 3x3 matrix.
mit        I   m after transposition and scaling of rows.
```

#### Detailed_Input

```
m          is a 3x3 matrix.
```

#### Detailed_Output

```
mit        is the matrix obtained by transposing m and dividing
the rows by squares of their norms.
```

```
None.
```

#### Exceptions

```
1) If any of the columns of m have zero length, the error
SPICE(ZEROLENGTHCOLUMN) will be signaled.

2) If any column is too short to allow computation of the
reciprocal of its length without causing a floating
point overflow, the error SPICE(COLUMNTOOSMALL) will
be signalled.
```

```
None.
```

#### Particulars

```
Suppose that m is the matrix

-                      -
|   A*u    B*v     C*w   |
|      1      1       1  |
|                        |
|   A*u    B*v     C*w   |
|      2      2       2  |
|                        |
|   A*u    B*v     C*w   |
|      3      3       3  |
-                      -

where the vectors (u , u , u ),  (v , v , v ),  and (w , w , w )
1   2   3      1   2   3          1   2   3

are unit vectors. This routine produces the matrix:

-                      -
|   a*u    a*u     a*u   |
|      1      2       3  |
|                        |
|   b*v    b*v     b*v   |
|      1      2       3  |
|                        |
|   c*w    c*w     c*w   |
|      1      2       3  |
-                      -

where a = 1/A, b = 1/B, and c = 1/C.
```

#### Examples

```
Suppose that you have a matrix m whose columns are orthogonal
and have non-zero norm (but not necessarily norm 1).  Then the
routine invort_c can be used to construct the inverse of m:

#include "SpiceUsr.h"
.
.
.
invort_c ( m, invers );

This method is numerically more robust than calling the
routine invert_c.
```

```
None.
```

```
None.
```

#### Author_and_Institution

```
W.L. Taber     (JPL)
N.J. Bachman   (JPL)
```

#### Version

```
-CSPICE Version 1.0.0, 02-JAN-2002 (WLT) (NJB)
```

#### Index_Entries

```
Transpose a matrix and invert the lengths of the rows
Invert a pseudo orthogonal matrix
```
`Wed Apr  5 17:54:37 2017`