Prev Next

@(@\newcommand{\W}[1]{ \; #1 \; } \newcommand{\R}[1]{ {\rm #1} } \newcommand{\B}[1]{ {\bf #1} } \newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} } \newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} } \newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} } \newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }@)@
Evaluate a Polynomial or its Derivative

# include <cppad/utility/poly.hpp>
p = Poly(kaz)

Computes the k-th derivative of the polynomial @[@ P(z) = a_0 + a_1 z^1 + \cdots + a_d z^d @]@ If k is equal to zero, the return value is @(@ P(z) @)@.

The file cppad/poly.hpp is included by cppad/cppad.hpp but it can also be included separately with out the rest of the CppAD routines. Including this file defines Poly within the CppAD namespace.

The argument k has prototype
It specifies the order of the derivative to calculate.

The argument a has prototype
Vector &a
(see Vector below). It specifies the vector corresponding to the polynomial @(@ P(z) @)@.

The argument z has prototype
Type &z
(see Type below). It specifies the point at which to evaluate the polynomial

The result p has prototype
Type p
(see Type below) and it is equal to the k-th derivative of @(@ P(z) @)@; i.e., @[@ p = \frac{k !}{0 !} a_k + \frac{(k+1) !}{1 !} a_{k+1} z^1 + \ldots + \frac{d !}{(d - k) !} a_d z^{d - k} @]@ If @(@ k > d @)@, p = Type(0) .

The type Type is determined by the argument z . It is assumed that multiplication and addition of Type objects are commutative.

The following operations must be supported where x and y are objects of type Type and i is an int:
x  = i assignment
x  = y assignment
x *= y multiplication compound assignment
x += y addition compound assignment

The type Vector must be a SimpleVector class with elements of type Type . The routine CheckSimpleVector will generate an error message if this is not the case.

Operation Sequence
The Type operation sequence used to calculate p is independent of z and the elements of a (it does depend on the size of the vector a ).

The file poly.cpp contains an example and test of this routine. It returns true if it succeeds and false otherwise.

The file poly.hpp contains the current source code that implements these specifications.
Input File: cppad/utility/poly.hpp