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

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

    Fri Dec 31 18:41:14 2021