tests for nonlinear module : use different slots + misc cleaning

This commit is contained in:
Thomas Capricelli 2010-04-18 03:47:23 +02:00
parent f1deab0e5a
commit 63eaa8948e

View File

@ -16,7 +16,7 @@ int fcn_chkder(const VectorXd &x, VectorXd &fvec, MatrixXd &fjac, int iflag)
assert(15 == fvec.size()); assert(15 == fvec.size());
assert(3 == x.size()); assert(3 == x.size());
double tmp1, tmp2, tmp3, tmp4; double tmp1, tmp2, tmp3, tmp4;
double y[15]={1.4e-1, 1.8e-1, 2.2e-1, 2.5e-1, 2.9e-1, 3.2e-1, 3.5e-1, static const double y[15]={1.4e-1, 1.8e-1, 2.2e-1, 2.5e-1, 2.9e-1, 3.2e-1, 3.5e-1,
3.9e-1, 3.7e-1, 5.8e-1, 7.3e-1, 9.6e-1, 1.34, 2.1, 4.39}; 3.9e-1, 3.7e-1, 5.8e-1, 7.3e-1, 9.6e-1, 1.34, 2.1, 4.39};
@ -109,7 +109,7 @@ struct Functor
typedef Matrix<Scalar,ValuesAtCompileTime,1> ValueType; typedef Matrix<Scalar,ValuesAtCompileTime,1> ValueType;
typedef Matrix<Scalar,ValuesAtCompileTime,InputsAtCompileTime> JacobianType; typedef Matrix<Scalar,ValuesAtCompileTime,InputsAtCompileTime> JacobianType;
int m_inputs, m_values; const int m_inputs, m_values;
Functor() : m_inputs(InputsAtCompileTime), m_values(ValuesAtCompileTime) {} Functor() : m_inputs(InputsAtCompileTime), m_values(ValuesAtCompileTime) {}
Functor(int inputs, int values) : m_inputs(inputs), m_values(values) {} Functor(int inputs, int values) : m_inputs(inputs), m_values(values) {}
@ -127,7 +127,7 @@ struct lmder_functor : Functor<double>
int operator()(const VectorXd &x, VectorXd &fvec) const int operator()(const VectorXd &x, VectorXd &fvec) const
{ {
double tmp1, tmp2, tmp3; double tmp1, tmp2, tmp3;
double y[15] = {1.4e-1, 1.8e-1, 2.2e-1, 2.5e-1, 2.9e-1, 3.2e-1, 3.5e-1, static const double y[15] = {1.4e-1, 1.8e-1, 2.2e-1, 2.5e-1, 2.9e-1, 3.2e-1, 3.5e-1,
3.9e-1, 3.7e-1, 5.8e-1, 7.3e-1, 9.6e-1, 1.34, 2.1, 4.39}; 3.9e-1, 3.7e-1, 5.8e-1, 7.3e-1, 9.6e-1, 1.34, 2.1, 4.39};
for (int i = 0; i < values(); i++) for (int i = 0; i < values(); i++)
@ -428,7 +428,7 @@ struct lmstr_functor : Functor<double>
{ {
/* subroutine fcn for lmstr1 example. */ /* subroutine fcn for lmstr1 example. */
double tmp1, tmp2, tmp3; double tmp1, tmp2, tmp3;
double y[15]={1.4e-1, 1.8e-1, 2.2e-1, 2.5e-1, 2.9e-1, 3.2e-1, 3.5e-1, static const double y[15]={1.4e-1, 1.8e-1, 2.2e-1, 2.5e-1, 2.9e-1, 3.2e-1, 3.5e-1,
3.9e-1, 3.7e-1, 5.8e-1, 7.3e-1, 9.6e-1, 1.34, 2.1, 4.39}; 3.9e-1, 3.7e-1, 5.8e-1, 7.3e-1, 9.6e-1, 1.34, 2.1, 4.39};
assert(15==fvec.size()); assert(15==fvec.size());
@ -528,7 +528,7 @@ struct lmdif_functor : Functor<double>
{ {
int i; int i;
double tmp1,tmp2,tmp3; double tmp1,tmp2,tmp3;
double y[15]={1.4e-1,1.8e-1,2.2e-1,2.5e-1,2.9e-1,3.2e-1,3.5e-1,3.9e-1, static const double y[15]={1.4e-1,1.8e-1,2.2e-1,2.5e-1,2.9e-1,3.2e-1,3.5e-1,3.9e-1,
3.7e-1,5.8e-1,7.3e-1,9.6e-1,1.34e0,2.1e0,4.39e0}; 3.7e-1,5.8e-1,7.3e-1,9.6e-1,1.34e0,2.1e0,4.39e0};
assert(x.size()==3); assert(x.size()==3);
@ -1800,37 +1800,37 @@ void testNistEckerle4(void)
void test_NonLinearOptimization() void test_NonLinearOptimization()
{ {
// Tests using the examples provided by (c)minpack // Tests using the examples provided by (c)minpack
CALL_SUBTEST(testChkder()); CALL_SUBTEST_1(testChkder());
CALL_SUBTEST(testLmder1()); CALL_SUBTEST_1(testLmder1());
CALL_SUBTEST(testLmder()); CALL_SUBTEST_1(testLmder());
CALL_SUBTEST(testHybrj1()); CALL_SUBTEST_2(testHybrj1());
CALL_SUBTEST(testHybrj()); CALL_SUBTEST_2(testHybrj());
CALL_SUBTEST(testHybrd1()); CALL_SUBTEST_2(testHybrd1());
CALL_SUBTEST(testHybrd()); CALL_SUBTEST_2(testHybrd());
CALL_SUBTEST(testLmstr1()); CALL_SUBTEST_3(testLmstr1());
CALL_SUBTEST(testLmstr()); CALL_SUBTEST_3(testLmstr());
CALL_SUBTEST(testLmdif1()); CALL_SUBTEST_3(testLmdif1());
CALL_SUBTEST(testLmdif()); CALL_SUBTEST_3(testLmdif());
// NIST tests, level of difficulty = "Lower" // NIST tests, level of difficulty = "Lower"
CALL_SUBTEST(testNistMisra1a()); CALL_SUBTEST_4(testNistMisra1a());
CALL_SUBTEST(testNistChwirut2()); CALL_SUBTEST_4(testNistChwirut2());
// NIST tests, level of difficulty = "Average" // NIST tests, level of difficulty = "Average"
CALL_SUBTEST(testNistHahn1()); CALL_SUBTEST_5(testNistHahn1());
CALL_SUBTEST(testNistMisra1d()); CALL_SUBTEST_6(testNistMisra1d());
CALL_SUBTEST(testNistMGH17()); CALL_SUBTEST_7(testNistMGH17());
CALL_SUBTEST(testNistLanczos1()); CALL_SUBTEST_8(testNistLanczos1());
// NIST tests, level of difficulty = "Higher" // NIST tests, level of difficulty = "Higher"
CALL_SUBTEST(testNistRat42()); CALL_SUBTEST_9(testNistRat42());
CALL_SUBTEST(testNistMGH10()); CALL_SUBTEST_10(testNistMGH10());
CALL_SUBTEST(testNistBoxBOD()); CALL_SUBTEST_11(testNistBoxBOD());
CALL_SUBTEST(testNistMGH09()); CALL_SUBTEST_12(testNistMGH09());
CALL_SUBTEST(testNistBennett5()); CALL_SUBTEST_13(testNistBennett5());
CALL_SUBTEST(testNistThurber()); CALL_SUBTEST_14(testNistThurber());
CALL_SUBTEST(testNistRat43()); CALL_SUBTEST_15(testNistRat43());
CALL_SUBTEST(testNistEckerle4()); CALL_SUBTEST_16(testNistEckerle4());
} }
/* /*