\(\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}} }\)
log_reverse¶
Logarithm Function Reverse Mode Theory¶
We use the reverse theory standard math function definition for the functions \(H\) and \(G\).
The zero order forward mode formula for the logarithm is
\[z^{(0)} = F( x^{(0)} )\]
and for \(j > 0\),
\[z^{(j)}
= \frac{1}{ \bar{b} + x^{(0)} } \frac{1}{j}
\left(
j x^{(j)}
- \sum_{k=1}^{j-1} k z^{(k)} x^{(j-k)}
\right)\]
where
\[\begin{split}\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.\end{split}\]
We note that for \(j > 0\)
\begin{eqnarray}
\D{ z^{(j)} } { x^{(0)} }
& = &
-
\frac{1}{ \bar{b} + x^{(0)} }
\frac{1}{ \bar{b} + x^{(0)} }
\frac{1}{j}
\left(
j x^{(j)}
- \sum_{k=1}^{j-1} k z^{(k)} x^{(j-k)}
\right)
\\
& = &
-
\frac{z^{(j)}}{ \bar{b} + x^{(0)} }
\end{eqnarray}
Removing the zero order partials are given by
\begin{eqnarray}
\D{H}{ x^{(0)} } & = &
\D{G}{ x^{(0)} } + \D{G}{ z^{(0)} } \D{ z^{(0)} }{ x^{(0)} }
\\
& = &
\D{G}{ x^{(0)} } + \D{G}{ z^{(0)} } \frac{1}{ \bar{b} + x^{(0)} }
\end{eqnarray}
For orders \(j > 0\) and for \(k = 1 , \ldots , j-1\)
\begin{eqnarray}
\D{H}{ x^{(0)} }
& = &
\D{G}{ x^{(0)} } + \D{G}{ z^{(j)} } \D{ z^{(j)} }{ x^{(0)} }
\\
& = &
\D{G}{ x^{(0)} } - \D{G}{ z^{(j)} } \frac{ z^{(j)} }{ \bar{b} + x^{(0)} }
\\
\D{H}{ x^{(j)} }
& = &
\D{G}{ x^{(j)} } + \D{G}{ z^{(j)} } \D{ z^{(j)} }{ x^{(j)} }
\\
& = &
\D{G}{ x^{(j)} } + \D{G}{ z^{(j)} } \frac{1}{ \bar{b} + x^{(0)} }
\\
\D{H}{ x^{(j-k)} } & = &
\D{G}{ x^{(j-k)} } -
\D{G}{ z^{(j)} } \frac{1}{ \bar{b} + x^{(0)} } \frac{k}{j} z^{(k)}
\\
\D{H}{ z^{(k)} } & = &
\D{G}{ z^{(k)} } -
\D{G}{ z^{(j)} } \frac{1}{ \bar{b} + x^{(0)} } \frac{k}{j} x^{(j-k)}
\end{eqnarray}