lines 9-110 of file: include/cppad/core/for_one.hpp

{xrst_begin ForOne}

First Order Partial Derivative: Driver Routine
##############################################

Syntax
******
*dy* = *f* . ``ForOne`` ( *x* , *j* )

Purpose
*******
We use :math:`F : \B{R}^n \rightarrow \B{R}^m` to denote the
:ref:`glossary@AD Function` corresponding to *f* .
The syntax above sets *dy* to the
partial of :math:`F` with respect to :math:`x_j`; i.e.,

.. math::

   dy
   = \D{F}{ x_j } (x)
   = \left[
      \D{ F_0 }{ x_j } (x) , \cdots , \D{ F_{m-1} }{ x_j } (x)
   \right]

f
*
The object *f* has prototype

   ``ADFun`` < *Base* > *f*

Note that the :ref:`ADFun-name` object *f* is not ``const``
(see :ref:`ForOne@ForOne Uses Forward` below).

x
*
The argument *x* has prototype

   ``const`` *Vector* & *x*

(see :ref:`ForOne@Vector` below)
and its size
must be equal to *n* , the dimension of the
:ref:`fun_property@Domain` space for *f* .
It specifies
that point at which to evaluate the partial derivative.

j
*
The argument *j* has prototype

   ``size_t`` *j*

an is less than *n* ,
:ref:`fun_property@Domain` space for *f* .
It specifies the component of *F*
for which we are computing the partial derivative.

dy
**
The result *dy* has prototype

   *Vector* *dy*

(see :ref:`ForOne@Vector` below)
and its size is :math:`m`, the dimension of the
:ref:`fun_property@Range` space for *f* .
The value of *dy* is the partial of :math:`F` with respect to
:math:`x_j` evaluated at *x* ; i.e.,
for :math:`i = 0 , \ldots , m - 1`

.. math::

   dy[i] = \D{ F_i }{ x_j } ( x )

Vector
******
The type *Vector* must be a :ref:`SimpleVector-name` class with
:ref:`elements of type<SimpleVector@Elements of Specified Type>`
*Base* .
The routine :ref:`CheckSimpleVector-name` will generate an error message
if this is not the case.

ForOne Uses Forward
*******************
After each call to :ref:`Forward-name` ,
the object *f* contains the corresponding
:ref:`Taylor coefficients<glossary@Taylor Coefficient>` .
After a call to ``ForOne`` ,
the zero order Taylor coefficients correspond to
*f* . ``Forward`` (0, *x* )
and the other coefficients are unspecified.

Example
*******
{xrst_toc_hidden
   example/general/for_one.cpp
}
The routine
:ref:`ForOne<for_one.cpp-name>` is both an example and test.
It returns ``true`` , if it succeeds and ``false`` otherwise.

{xrst_end ForOne}
