Index Page invort_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 invort_c ( ConstSpiceDouble   m  [3][3],
                       SpiceDouble        mit[3][3] )

#### 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.

#### Required_Reading

       None.

#### Keywords

       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.

#### Parameters

       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.

#### Files

       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.

#### Restrictions

       None.

#### Literature_References

       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

#### Link to routine invort_c source file invort_c.c

    Wed Apr  5 17:54:37 2017