OSVR-Core
Macros | Functions
newuoa.h File Reference

Header for M.J.D. More...

#include <Eigen/Core>
#include <cassert>
#include <cmath>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <tuple>
#include <type_traits>
#include <utility>

Go to the source code of this file.

Macros

#define DEBUG_LOG(what)
 

Functions

template<class Function >
void newuoa_detail::biglag (long n, long npt, double *xopt, double *xpt, double *bmat, double *zmat, long *idz, long *ndim, long *knew, double *delta, double *d__, double *alpha, double *hcol, double *gc, double *gd, double *s, double *w, Function &&function)
 
void newuoa_detail::bigden (long n, long npt, double *xopt, double *xpt, double *bmat, double *zmat, long *idz, long *ndim, long *kopt, long *knew, double *d__, double *w, double *vlag, double *beta, double *s, double *wvec, double *prod)
 
void newuoa_detail::trsapp (long n, long npt, double *xopt, double *xpt, double *gq, double *hq, double *pq, double *delta, double *step, double *d__, double *g, double *hd, double *hs, double *crvmin)
 
void newuoa_detail::update (long n, long npt, double *bmat, double *zmat, long *idz, long *ndim, double *vlag, double *beta, long *knew, double *w)
 
template<class Function >
double newuoa_detail::newuob (long n, long npt, double *x, double rhobeg, double rhoend, long maxfun, double *xbase, double *xopt, double *xnew, double *xpt, double *fval, double *gq, double *hq, double *pq, double *bmat, double *zmat, long *ndim, double *d__, double *vlag, double *w, Function &&function)
 
template<class Function >
double newuoa_detail::newuoa_impl (Function &&function, long n, long npt, double *x, double rhobeg, double rhoend, long maxfun, double *w)
 
template<typename Function >
double newuoa (Function &&function, long n, long npt, double *x, double rhobeg, double rhoend, long maxfun, double *w)
 
template<typename Derived >
void detail::checkStaticAssertions (Eigen::MatrixBase< Derived > &)
 Checks shared static assertions about vectors to be optimized by NEWUOA.
 
template<typename Derived >
long detail::computeReasonableNPT (Eigen::MatrixBase< Derived > &)
 
template<typename Function , typename Derived >
double ei_newuoa (long npt, Eigen::MatrixBase< Derived > &x, std::pair< double, double > rho, long maxfun, Function &&f)
 Friendly wrapper around newuoa: takes a vector for x. More...
 
template<typename Function , typename Derived >
double ei_newuoa (Eigen::MatrixBase< Derived > &x, std::pair< double, double > rho, long maxfun, Function &&f)
 Overload - default value for npt = 2n + 1 Per Powell 2004, m = 2n+1 should be good for efficiency. More...
 
template<typename Function , typename Derived >
double ei_newuoa_wrapped (long npt, Eigen::MatrixBase< Derived > &x, std::pair< double, double > rho, long maxfun, Function &&f)
 Friendlier wrapper around newuoa: takes a vector for x, and the function takes a reference to const vec. More...
 
template<typename Function , typename Derived >
double ei_newuoa_wrapped (Eigen::MatrixBase< Derived > &x, std::pair< double, double > rho, long maxfun, Function &&f)
 Overload - default value for npt = 2n + 1 Per Powell 2004, m = 2n+1 should be good for efficiency. More...
 

Detailed Description

Header for M.J.D.

Powell's NEWUOA method for unconstrained minimization.

Modified and derived from, in turn:

In this context, the MIT License refers to the MIT license found here: https://opensource.org/licenses/MIT also known as the "Expat" license.

Function Documentation

§ ei_newuoa() [1/2]

template<typename Function , typename Derived >
double ei_newuoa ( long  npt,
Eigen::MatrixBase< Derived > &  x,
std::pair< double, double >  rho,
long  maxfun,
Function &&  f 
)
inline

Friendly wrapper around newuoa: takes a vector for x.

The function still takes a pointer to double * and a long n.

§ ei_newuoa() [2/2]

template<typename Function , typename Derived >
double ei_newuoa ( Eigen::MatrixBase< Derived > &  x,
std::pair< double, double >  rho,
long  maxfun,
Function &&  f 
)
inline

Overload - default value for npt = 2n + 1 Per Powell 2004, m = 2n+1 should be good for efficiency.

§ ei_newuoa_wrapped() [1/2]

template<typename Function , typename Derived >
double ei_newuoa_wrapped ( long  npt,
Eigen::MatrixBase< Derived > &  x,
std::pair< double, double >  rho,
long  maxfun,
Function &&  f 
)
inline

Friendlier wrapper around newuoa: takes a vector for x, and the function takes a reference to const vec.

Making a copy so that functors passed can take in just a normal vector const ref, instead of having to accept a ref, etc (since generic lambdas aren't widespread)

§ ei_newuoa_wrapped() [2/2]

template<typename Function , typename Derived >
double ei_newuoa_wrapped ( Eigen::MatrixBase< Derived > &  x,
std::pair< double, double >  rho,
long  maxfun,
Function &&  f 
)
inline

Overload - default value for npt = 2n + 1 Per Powell 2004, m = 2n+1 should be good for efficiency.