documentation + move "namespace eigen" to the main file, as others do.

This commit is contained in:
Thomas Capricelli 2009-11-09 03:25:21 +01:00
parent cddc83752c
commit 09cb27c587
2 changed files with 31 additions and 9 deletions

View File

@ -42,12 +42,10 @@ namespace Eigen {
*/ */
//@{ //@{
}
#include "src/NumericalDiff/NumericalDiff.h" #include "src/NumericalDiff/NumericalDiff.h"
namespace Eigen {
//@} //@}
} }
#endif // EIGEN_NUMERICALDIFF_MODULE #endif // EIGEN_NUMERICALDIFF_MODULE

View File

@ -25,16 +25,42 @@
#ifndef EIGEN_NUMERICAL_DIFF_H #ifndef EIGEN_NUMERICAL_DIFF_H
#define EIGEN_NUMERICAL_DIFF_H #define EIGEN_NUMERICAL_DIFF_H
namespace Eigen
{
enum NumericalDiffMode { enum NumericalDiffMode {
Forward, Forward,
Central Central
}; };
template<typename Functor, NumericalDiffMode mode=Forward> class NumericalDiff : public Functor /**
* \brief asdf
*
* This class allows you to add a method df() to your functor, which will
* use numerical differentiation to compute an approximate of the
* derivative for the functor. Of course, if you have an analytical form
* for the derivative, you should rather implement df() using it.
*
* More information on
* http://en.wikipedia.org/wiki/Numerical_differentiation
*
* Currently only "Forward" and "Central" scheme are implemented. Those
* are basic methods, and there exist some more elaborated way of
* computing such approximates. They are implemented using both
* proprietary and free software, and usually requires linking to an
* external library. It is very easy for you to write a functor
* using such software, and the purpose is quite orthogonal to what we
* want to achieve with Eigen.
*
* This is why we will not provide wrappers for every great numerical
* differenciation software that exist, but should rather stick with those
* basic ones, that still are useful for testing.
*
* Also, the module "Non linear optimization" needs this in order to
* provide full features compatibility with the original (c)minpack
* package.
*
*/
template<typename Functor, NumericalDiffMode mode=Forward>
class NumericalDiff : public Functor
{ {
public: public:
typedef typename Functor::Scalar Scalar; typedef typename Functor::Scalar Scalar;
@ -119,6 +145,4 @@ private:
Scalar epsfcn; Scalar epsfcn;
}; };
} // namespace
#endif // EIGEN_NUMERICAL_DIFF_H #endif // EIGEN_NUMERICAL_DIFF_H