Index Page
invert_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 invert_c ( ConstSpiceDouble  m1  [3][3],
                   SpiceDouble       mout[3][3] ) 

Abstract

 
   Generate the inverse of a 3x3 matrix. 
 

Required_Reading

 
   None. 
 

Keywords

 
   MATRIX,  MATH 
 

Brief_I/O

 
   VARIABLE  I/O  DESCRIPTION 
   --------  ---  -------------------------------------------------- 
   m1         I   Matrix to be inverted. 
   mout       O   Inverted matrix (m1)**-1.  If m1 is singular, then 
                  mout will be the zero matrix.   mout can 
                  overwrite m1. 
 

Detailed_Input

 
   m1    An arbitrary 3x3 matrix.  The limits on the size of 
         elements of m1 are determined by the process of calculating 
         the cofactors of each element of the matrix.  For a 3x3 
         matrix this amounts to the differencing of two terms, each 
         of which consists of the multiplication of two matrix 
         elements.  This multiplication must not exceed the range 
         of double precision numbers or else an overflow error will 
         occur. 
 

Detailed_Output

 
   mout  is the inverse of m1 and is calculated explicitly using 
         the matrix of cofactors.  mout is set to be the zero matrix 
         if m1 is singular. 
 

Parameters

 
   None. 
 

Exceptions

 
   1) No internal checking on the input matrix m1 is performed except on 
      the size of its determinant.  Thus it is possible to generate a 
      floating point overflow or underflow in the process of 
      calculating the matrix of cofactors.
 
   2) If the determinant is less than 10**-16, the matrix is deemed to 
      be singular and the output matrix is filled with zeros.
      

Files

 
   None 
 

Particulars

 
   A temporary matrix is used to compute the result, so the output 
   matrix may overwrite the input matrix.   
 

Examples

 
   Suppose that m1 is given by the following matrix equation: 
 
           | 0   -1    0 | 
      m1 = | 0.5  0    0 |   
           | 0    0    1 |     
 
   If invert_c is called as shown 
   
      invert_c (m1, m1); 
 
   then m1 will be set to be: 
 
           | 0    2    0 | 
      m1 = |-1    0    0 | 
           | 0    0    1 | 
 

Restrictions

 
   The input matrix must be such that generating the cofactors will 
   not cause a floating point overflow or underflow.  The 
   strictness of this condition depends, of course, on the computer 
   installation and the resultant maximum and minimum values of 
   double precision numbers. 
 

Literature_References

 
   None 
 

Author_and_Institution

 
   W.M. Owen       (JPL) 
 

Version

 
  -CSPICE Version 1.0.0, 13-SEP-1999 (NJB) (WMO)

Index_Entries

 
   invert a 3x3_matrix 
 

Link to routine invert_c source file invert_c.c

Wed Apr  5 17:54:37 2017