Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 
Index Page
trace_c

Table of contents
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

   trace_c ( Trace of a 3x3 matrix ) 

   SpiceDouble trace_c ( ConstSpiceDouble  matrix[3][3] )

Abstract

   Return the trace of a 3x3 matrix.

Required_Reading

   None.

Keywords

   MATRIX


Brief_I/O

   VARIABLE  I/O  DESCRIPTION
   --------  ---  --------------------------------------------------
   matrix     I   3x3 matrix of double precision numbers.

   The function returns the trace of `matrix'.

Detailed_Input

   matrix      is a double precision 3x3 matrix.

Detailed_Output

   The function returns the trace of `matrix', i.e. it is the sum of
   the diagonal elements of `matrix'.

Parameters

   None.

Exceptions

   Error free.

Files

   None.

Particulars

   The code reflects precisely the following mathematical
   expression:

                  2
                .----
                 \
      trace_c =   )  matrix[i][i]
                 /
                '----
                 i=0

   No error detection or correction is implemented within this
   function.

Examples

   The numerical results shown for this example may differ across
   platforms. The results depend on the SPICE kernels used as
   input, the compiler and supporting libraries, and the machine
   specific arithmetic implementation.

   1) Given a 3x3 double precision matrix, compute its trace.


      Example code begins here.


      /.
         Program trace_ex1
      ./
      #include <stdio.h>
      #include "SpiceUsr.h"

      int main( )
      {

         /.
         Local variables.
         ./
         SpiceInt             i;

         /.
         Define `matrix'.
         ./
         SpiceDouble          matrix [3][3] = { {3.0,  5.0,  7.0},
                                                {0.0, -2.0,  8.0},
                                                {4.0,  0.0, -1.0} };

         printf( "MATRIX:\n" );
         for ( i = 0; i < 3; i++ )
         {
            printf( "%6.1f %5.1f %5.1f\n",
                    matrix[i][0], matrix[i][1], matrix[i][2] );
         }

         /.
         Compute the trace of `matrix' and display the result.
         ./
         printf( "\n" );
         printf( "Trace:  %3.1f\n", trace_c ( matrix ) );

         return ( 0 );
      }


      When this program was executed on a Mac/Intel/cc/64-bit
      platform, the output was:


      MATRIX:
         3.0   5.0   7.0
         0.0  -2.0   8.0
         4.0   0.0  -1.0

      Trace:  0.0

Restrictions

   1)  No checking is performed to guard against floating point
       overflow or underflow. This routine should probably not be
       used if the input matrix is expected to have large double
       precision numbers along the diagonal.

Literature_References

   None.

Author_and_Institution

   J. Diaz del Rio     (ODC Space)
   W.L. Taber          (JPL)
   E.D. Wright         (JPL)

Version

   -CSPICE Version 1.0.1, 05-JUL-2021 (JDR)

       Edited the header to comply with NAIF standard. Added complete
       code example based on existing example.

   -CSPICE Version 1.0.0, 29-JUN-1999 (EDW) (WLT)

Index_Entries

   trace of a 3x3_matrix
Fri Dec 31 18:41:14 2021