# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
# SPDX-FileCopyrightText: Bradley M. Bell <bradbell@seanet.com>
# SPDX-FileContributor: 2003-22 Bradley M. Bell
# ----------------------------------------------------------------------------

{xrst_begin log_forward}

Logarithm Function Forward Mode Theory
######################################

Derivatives
***********
If :math:`F(x)` is :math:`\R{log} (x)` or :math:`\R{log1p} (x)`
the corresponding derivative satisfies the equation

.. math::

   ( \bar{b} + x ) * F^{(1)} (x) - 0 * F (x)  = 1

where

.. math::

   \bar{b}
   =
   \left\{ \begin{array}{ll}
      0 & \R{if} \; F(x) = \R{log}(x)
      \\
      1 & \R{if} \; F(x) = \R{log1p}(x)
   \end{array} \right.

In the
:ref:`standard math function differential equation<forward_theory@Standard Math Functions@Differential Equation>` ,
:math:`A(x) = 0`,
:math:`B(x) = \bar{b} + x`,
and :math:`D(x) = 1`.
We use :math:`a`, :math:`b`, :math:`d`,
and :math:`z` to denote the
Taylor coefficients for
:math:`A [ X (t) ]`,
:math:`B [ X (t) ]`,
:math:`D [ X (t) ]`,
and :math:`F [ X(t) ]` respectively.

Taylor Coefficients Recursion
*****************************
For orders :math:`j = 0 , 1, \ldots`,

.. math::
   :nowrap:

   \begin{eqnarray}
   z^{(0)} & = & F ( x^{(0)} )
   \\
   e^{(j)}
   & = & d^{(j)} + \sum_{k=0}^{j} a^{(j-k)} * z^{(k)}
   \\
   & = & \left\{ \begin{array}{ll}
      1 & {\rm if} \; j = 0 \\
      0 & {\rm otherwise}
   \end{array} \right.
   \\
   z^{(j+1)} & = & \frac{1}{j+1} \frac{1}{ b^{(0)} }
   \left(
      \sum_{k=1}^{j+1} k x^{(k)} e^{(j+1-k)}
      - \sum_{k=1}^j k z^{(k)}  b^{(j+1-k)}
   \right)
   \\
   & = & \frac{1}{j+1} \frac{1}{ \bar{b} + x^{(0)} }
   \left(
      (j+1) x^{(j+1) }
      - \sum_{k=1}^j k z^{(k)} x^{(j+1-k)}
   \right)
   \end{eqnarray}

{xrst_end log_forward}
