exp_2

View page source

Second Order Exponential Approximation

Syntax

# include "exp_2.hpp"
y = exp_2 ( x )

Purpose

This is a simple example algorithm that is used to demonstrate Algorithmic Differentiation (see exp_eps for a more complex example).

Mathematical Form

The exponential function can be defined by

\[\exp (x) = 1 + x^1 / 1 ! + x^2 / 2 ! + \cdots\]

The second order approximation for the exponential function is

\[{\rm exp\_2} (x) = 1 + x + x^2 / 2\]

include

The include command in the syntax is relative to

cppad- yyyymmdd / introduction/exp_apx

where cppad- yyyymmdd is the distribution directory created during the beginning steps of the installation of CppAD.

x

The argument x has prototype

const Type & x

(see Type below). It specifies the point at which to evaluate the approximation for the second order exponential approximation.

y

The result y has prototype

Type y

It is the value of the exponential function approximation defined above.

Type

If u and v are Type objects and i is an int :

Operation

Result Type

Description

Type ( i )

Type

construct object with value equal to i

Type u = v

Type

construct u with value equal to 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\)

Contents

Implementation

The file exp_2.hpp contains a C++ implementation of this function.

Test

The file exp_2.cpp contains a test of this implementation.

Exercises

  1. Suppose that we make the call

        double x = .1;
        double y = exp_2(x);
    
    What is the value assigned to
    ``v1`` , ``v2`` , ... ,``v5`` in :ref:`exp_2.hpp-name` ?
    
  2. Extend the routine exp_2.hpp to a routine exp_3.hpp that computes

    \[1 + x^2 / 2 ! + x^3 / 3 !\]

    Do this in a way that only assigns one value to each variable (as exp_2 does).

  3. Suppose that we make the call

        double x = .5;
        double y = exp_3(x);
    
    using ``exp_3`` created in the previous problem.
    What is the value assigned to the new variables in ``exp_3``
    (variables that are in ``exp_3`` and not in ``exp_2`` ) ?