This manual relates to an old release of the Library.
The documentation for the current release is also available on this site.

NAG AD Library
e04ab (one_var_func)

Settings help

AD Name Style:


AD Specification Language:

1 Purpose

e04ab is the AD Library version of the primal routine e04abf. Based (in the C++ interface) on overload resolution, e04ab can be used for primal, tangent and adjoint evaluation. It supports tangents and adjoints of first order.

2 Specification

C++ Interface
#include <dco.hpp>
#include <nagad.h>
namespace nag {
namespace ad {
template <typename FUNCT_T>
void e04ab ( handle_t &ad_handle, FUNCT_T &&funct, ADTYPE &e1, ADTYPE &e2, ADTYPE &a, ADTYPE &b, Integer &maxcal, ADTYPE &x, ADTYPE &f, Integer &ifail)
}
}
The function is overloaded on ADTYPE which represents the type of active arguments. ADTYPE may be any of the following types:
double,
dco::ga1s<double>::type,
dco::gt1s<double>::type
Note: this function can be used with AD tools other than dco/c++. For details, please contact NAG.

3 Description

e04ab is the AD Library version of the primal routine e04abf.
e04abf searches for a minimum, in a given finite interval, of a continuous function of a single variable, using function values only. The method (based on quadratic interpolation) is intended for functions which have a continuous first derivative (although it will usually work if the derivative has occasional discontinuities). For further information see Section 3 in the documentation for e04abf.

4 References

Gill P E and Murray W (1973) Safeguarded steplength algorithms for optimization using descent methods NPL Report NAC 37 National Physical Laboratory

5 Arguments

In addition to the arguments present in the interface of the primal routine, e04ab includes some arguments specific to AD.
A brief summary of the AD specific arguments is given below. For the remainder, links are provided to the corresponding argument from the primal routine. A tooltip popup for all arguments can be found by hovering over the argument name in Section 2 and in this section.
1: ad_handlenag::ad::handle_t Input/Output
On entry: a configuration object that holds information on the differentiation strategy. Details on setting the AD strategy are described in AD handle object in the NAG AD Library Introduction.
2: funct – Callable Input
funct needs to be callable with the specification listed below. This can be a C++ lambda, a functor or a (static member) function pointer. If using a lambda, parameters can be captured safely by reference. No copies of the callable are made internally.
The specification of funct is:
C++ Interface
auto funct = [&]( const handle_t &ad_handle, const ADTYPE &xc, ADTYPE &fc)
1: ad_handlenag::ad::handle_t Input/Output
On entry: a handle to the AD handle object.
2: xcADTYPE Input
3: fcADTYPE Output
3: e1ADTYPE Input/Output
Please consult Overwriting of Inputs in the NAG AD Library Introduction.
4: e2ADTYPE Input/Output
Please consult Overwriting of Inputs in the NAG AD Library Introduction.
5: aADTYPE Input/Output
Please consult Overwriting of Inputs in the NAG AD Library Introduction.
6: bADTYPE Input/Output
Please consult Overwriting of Inputs in the NAG AD Library Introduction.
7: maxcal – Integer Input/Output
8: xADTYPE Output
9: fADTYPE Output
10: ifail – Integer Input/Output

6 Error Indicators and Warnings

e04ab preserves all error codes from e04abf and in addition can return:
ifail=-89
An unexpected AD error has been triggered by this routine. Please contact NAG.
See Error Handling in the NAG AD Library Introduction for further information.
ifail=-199
The routine was called using a strategy that has not yet been implemented.
See AD Strategies in the NAG AD Library Introduction for further information.
ifail=-444
A C++ exception was thrown.
The error message will show the details of the C++ exception text.
ifail=-899
Dynamic memory allocation failed for AD.
See Error Handling in the NAG AD Library Introduction for further information.

7 Accuracy

Not applicable.

8 Parallelism and Performance

e04ab is not threaded in any implementation.

9 Further Comments

None.

10 Example

The following examples are variants of the example for e04abf, modified to demonstrate calling the NAG AD Library.
Description of the primal example.
A sketch of the function
F(x)=sinxx  
shows that it has a minimum somewhere in the range [3.5,5.0]. The following program shows how e04ab can be used to obtain a good approximation to the position of a minimum.

10.1 Adjoint modes

Language Source File Data Results
C++ e04ab_a1w_hcppe.cpp None e04ab_a1w_hcppe.r

10.2 Tangent modes

Language Source File Data Results
C++ e04ab_t1w_hcppe.cpp None e04ab_t1w_hcppe.r

10.3 Passive mode

Language Source File Data Results
C++ e04ab_p0w_hcppe.cpp None e04ab_p0w_hcppe.r