Index Page polyds_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 polyds_c ( ConstSpiceDouble    * coeffs,
                       SpiceInt              deg,
                       SpiceInt              nderiv,
                       SpiceDouble           t,
                       SpiceDouble         * p )
#### Abstract
       Compute the value of a polynomial and it's first
       n 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     contains 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^3 + ... + 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
          simply returns.
#### 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
       Example:

          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

          Suppose 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

          #include <stdio.h>
          #include "SpiceUsr.h"

          int main()
             {

             /.
             Local variables.
             ./
             SpiceDouble      coeffs [] = { 1., 3., 0.5, 1., 0.5, -1., 1. };
             SpiceInt         deg    = 6;
             SpiceInt         nderiv = 3;
             SpiceDouble      t      = 1.;

             /. Dimension p as nderiv + 1. ./
             SpiceDouble      p [ 4 ];

             int              i;

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

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

             return(0);
             }

       The program outputs:

          p = 6.000000
          p = 10.000000
          p = 23.000000
          p = 78.000000
#### Restrictions
        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
        W.L. Taber      (JPL)
        E.D. Wright     (JPL)
#### Version
       -CSPICE Version 1.0.0, 24-AUG-2015 (EDW)
#### Index_Entries
       compute a polynomial and its derivatives
#### Link to routine polyds_c source file polyds_c.c

    Wed Apr  5 17:54:40 2017