![]() |
Prev | Next |
# include "exp_eps.hpp"
y = exp_eps(
x,
epsilon)
\[
\exp (x) = 1 + x^1 / 1 ! + x^2 / 2 ! + \cdots
\]
We define
k ( x, \varepsilon )
as the smallest
non-negative integer such that
\varepsilon \geq x^k / k !
; i.e.,
\[
k( x, \varepsilon ) =
\min \{ k \in {\rm Z}_+ \; | \; \varepsilon \geq x^k / k ! \}
\]
The mathematical form for our approximation of the exponential function is
\[
\begin{array}{rcl}
{\rm exp\_eps} (x , \varepsilon ) & = & \left\{
\begin{array}{ll}
\frac{1}{ {\rm exp\_eps} (-x , \varepsilon ) }
& {\rm if} \; x < 0
\\
1 + x^1 / 1 ! + \cdots + x^{k( x, \varepsilon)} / k( x, \varepsilon ) !
& {\rm otherwise}
\end{array}
\right.
\end{array}
\]
cppad-
yy-
mm-
dd/introduction/exp_apx
where cppad-
yy-
mm-
dd is the distribution directory
created during the beginning steps of the
installation
of CppAD.
const
Type &
x
(see Type below).
It specifies the point at which to evaluate the
approximation for the exponential function.
const
Type &
epsilon
It specifies the accuracy with which
to approximate the exponential function value; i.e.,
it is the value of
\varepsilon
in the
exponential function approximation defined above.
Type
y
It is the value of the exponential function
approximation defined above.
int
:
Operation | Result Type | Description |
Type( i)
| Type | object with value equal to i |
u > v
|
bool
| true, if u greater than v, an false otherwise |
u = v
| Type | new u (and result) is value of v |
u * v
| Type |
result is value of
u * v
|
u / v
| Type |
result is value of
u / v
|
u + v
| Type |
result is value of
u + v
|
- u
| Type |
result is value of
- u
|
k( x, \varepsilon )
above,
what is the value of
k(.5, 1)
,
k(.5, .1)
, and
k(.5, .01)
?
exp_eps
:
double x = 1.;
double epsilon = .01;
double y = exp_eps(x, epsilon);
What is the value assigned to
k
, temp
, term
, and sum
the first time through the while
loop in exp_eps.hpp
?
k
, temp
, term
, and sum
the second time through the while
loop in exp_eps.hpp
?