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 polyds_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

       polyds_c ( Compute a Polynomial and its Derivatives )

       void polyds_c ( ConstSpiceDouble    * coeffs,
                       SpiceInt              deg,
                       SpiceInt              nderiv,
                       SpiceDouble           t,
                       SpiceDouble         * p )

#### Abstract

       Compute the value of a polynomial and its first
       `nderiv' derivatives at the value `t'.

#### Required_Reading

       None.

#### Keywords

       INTERPOLATION
       MATH
       POLYNOMIAL

#### Brief_I/O

       VARIABLE  I/O  DESCRIPTION
       --------  ---  --------------------------------------------------
       coeffs     I   Coefficients of the polynomial to be evaluated.
       deg        I   Degree of the polynomial to be evaluated.
       nderiv     I   Number of derivatives to compute.
       t          I   Point to evaluate the polynomial and derivatives
       p          O   Value of polynomial and derivatives.

#### Detailed_Input

       coeffs      are the coefficients of the polynomial that is
                   to be evaluated. The first element of this array
                   should be the constant term, the second element the
                   linear coefficient, the third term the quadratic
                   coefficient, and so on. The number of coefficients
                   supplied should be one more than `deg'.

                      f(x) =   coeffs[0] + coeffs[1]*x + coeffs[2]*x^2

                             + coeffs[3]*x^4 + ... + coeffs[deg]*x^deg

       deg         is the degree of the polynomial to be evaluated. `deg'
                   should be one less than the number of coefficients
                   supplied.

       nderiv      is the number of derivatives to compute. If `nderiv'
                   is zero, only the polynomial will be evaluated. If
                   nderiv = 1, then the polynomial and its first
                   derivative will be evaluated, and so on. If the value
                   of `nderiv' is negative, the routine returns
                   immediately.

       t           is the point at which the polynomial and its
                   derivatives should be evaluated.

#### Detailed_Output

       p           is an array containing the value of the polynomial and
                   its derivatives evaluated at `t'. The first element of
                   the array contains the value of `p' at `t'. The second
                   element of the array contains the value of the first
                   derivative of `p' at `t' and so on. The nderiv + 1'st
                   element of the array contains the nderiv'th derivative
                   of `p' evaluated at `t'.

#### Parameters

       None.

#### Exceptions

       Error free.

       1)  If `nderiv' is less than zero, the routine simply returns.

       2)  If the degree of the polynomial is less than 0, the routine
           returns the first nderiv+1 elements of `p' set to 0.

#### Files

       None.

#### Particulars

       This routine uses the user supplied coefficients (coeffs)
       to evaluate a polynomial (having these coefficients) and its
       derivatives at the point `t'. The zero'th derivative of the
       polynomial is regarded as the polynomial itself.

#### 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) For the polynomial

             f(x) = 1 + 3*x + 0.5*x^2 + x^3 + 0.5*x^4 - x^5 + x^6

          the coefficient set

             Degree  coeffs
             ------  ------
             0       1
             1       3
             2       0.5
             3       1
             4       0.5
             5      -1
             6       1

          Compute the value of the polynomial and it's first
          3 derivatives at the value t = 1.0. We expect:

             Derivative Number     t = 1
             ------------------    -----
             f(x)         0        6
             f'(x)        1        10
             f''(x)       2        23
             f'''(x)      3        78

          Example code begins here.

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

          int main( )
          {

             /.
             Local constants.
             ./
             #define NDERIV       3

             /.
             Local variables.
             ./
             SpiceDouble      p      [ NDERIV + 1 ];
             SpiceInt         i;

             SpiceDouble      coeffs [] = { 1., 3., 0.5, 1., 0.5, -1., 1. };
             SpiceDouble      t         = 1.;

             SpiceInt         deg       = 6;

             polyds_c ( coeffs, deg, NDERIV, t, p );

             for ( i = 0; i <= NDERIV; i++ )
             {
                printf( "P = %f\n", p[i] );
             }

             return ( 0 );
          }

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

          P = 6.000000
          P = 10.000000
          P = 23.000000
          P = 78.000000

#### Restrictions

       1)  Depending on the coefficients the user should be careful when
           taking high order derivatives. As the example shows, these
           can get big in a hurry. In general the coefficients of the
           derivatives of a polynomial grow at a rate greater
           than N! (N factorial).

#### Literature_References

       None.

#### Author_and_Institution

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

#### Version

       -CSPICE Version 1.1.0, 04-AUG-2021 (JDR)

           Removed unnecessary Standard SPICE error handling calls to
           register/unregister this routine in the error handling
           subsystem; this routine is Error free.

           Updated the header to comply with NAIF standard.

       -CSPICE Version 1.0.0, 24-AUG-2015 (EDW) (WLT)

#### Index_Entries

       compute a polynomial and its derivatives

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

    Fri Dec 31 18:41:10 2021