http://git-wip-us.apache.org/repos/asf/commons-math/blob/b4669aad/src/test/java/org/apache/commons/math4/optimization/general/CircleVectorial.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/math4/optimization/general/CircleVectorial.java
 
b/src/test/java/org/apache/commons/math4/optimization/general/CircleVectorial.java
deleted file mode 100644
index b0f4da5..0000000
--- 
a/src/test/java/org/apache/commons/math4/optimization/general/CircleVectorial.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.math4.optimization.general;
-
-import java.util.ArrayList;
-
-import org.apache.commons.math4.analysis.differentiation.DerivativeStructure;
-import 
org.apache.commons.math4.analysis.differentiation.MultivariateDifferentiableVectorFunction;
-import org.apache.commons.math4.geometry.euclidean.twod.Vector2D;
-
-/**
- * Class used in the tests.
- */
-@Deprecated
-class CircleVectorial implements MultivariateDifferentiableVectorFunction {
-    private ArrayList<Vector2D> points;
-
-    public CircleVectorial() {
-        points  = new ArrayList<Vector2D>();
-    }
-
-    public void addPoint(double px, double py) {
-        points.add(new Vector2D(px, py));
-    }
-
-    public int getN() {
-        return points.size();
-    }
-
-    public double getRadius(Vector2D center) {
-        double r = 0;
-        for (Vector2D point : points) {
-            r += point.distance(center);
-        }
-        return r / points.size();
-    }
-
-    private DerivativeStructure distance(Vector2D point,
-                                         DerivativeStructure cx, 
DerivativeStructure cy) {
-        DerivativeStructure dx = cx.subtract(point.getX());
-        DerivativeStructure dy = cy.subtract(point.getY());
-        return dx.multiply(dx).add(dy.multiply(dy)).sqrt();
-    }
-
-    public DerivativeStructure getRadius(DerivativeStructure cx, 
DerivativeStructure cy) {
-        DerivativeStructure r = cx.getField().getZero();
-        for (Vector2D point : points) {
-            r = r.add(distance(point, cx, cy));
-        }
-        return r.divide(points.size());
-    }
-
-    public double[] value(double[] variables) {
-        Vector2D center = new Vector2D(variables[0], variables[1]);
-        double radius = getRadius(center);
-
-        double[] residuals = new double[points.size()];
-        for (int i = 0; i < residuals.length; ++i) {
-            residuals[i] = points.get(i).distance(center) - radius;
-        }
-
-        return residuals;
-    }
-
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure radius = getRadius(variables[0], variables[1]);
-
-        DerivativeStructure[] residuals = new 
DerivativeStructure[points.size()];
-        for (int i = 0; i < residuals.length; ++i) {
-            residuals[i] = distance(points.get(i), variables[0], 
variables[1]).subtract(radius);
-        }
-
-        return residuals;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/commons-math/blob/b4669aad/src/test/java/org/apache/commons/math4/optimization/general/GaussNewtonOptimizerTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/math4/optimization/general/GaussNewtonOptimizerTest.java
 
b/src/test/java/org/apache/commons/math4/optimization/general/GaussNewtonOptimizerTest.java
deleted file mode 100644
index 88e2f3a..0000000
--- 
a/src/test/java/org/apache/commons/math4/optimization/general/GaussNewtonOptimizerTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.math4.optimization.general;
-
-import java.io.IOException;
-
-import org.apache.commons.math4.exception.ConvergenceException;
-import org.apache.commons.math4.exception.TooManyEvaluationsException;
-import org.apache.commons.math4.optimization.SimpleVectorValueChecker;
-import 
org.apache.commons.math4.optimization.general.AbstractLeastSquaresOptimizer;
-import org.apache.commons.math4.optimization.general.GaussNewtonOptimizer;
-import org.junit.Test;
-
-/**
- * <p>Some of the unit tests are re-implementations of the MINPACK <a
- * href="http://www.netlib.org/minpack/ex/file17";>file17</a> and <a
- * href="http://www.netlib.org/minpack/ex/file22";>file22</a> test files.
- * The redistribution policy for MINPACK is available <a
- * href="http://www.netlib.org/minpack/disclaimer";>here</a>, for
- * convenience, it is reproduced below.</p>
-
- * <table border="0" width="80%" cellpadding="10" align="center" 
bgcolor="#E0E0E0">
- * <tr><td>
- *    Minpack Copyright Notice (1999) University of Chicago.
- *    All rights reserved
- * </td></tr>
- * <tr><td>
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * <ol>
- *  <li>Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.</li>
- * <li>Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the following
- *     disclaimer in the documentation and/or other materials provided
- *     with the distribution.</li>
- * <li>The end-user documentation included with the redistribution, if any,
- *     must include the following acknowledgment:
- *     <code>This product includes software developed by the University of
- *           Chicago, as Operator of Argonne National Laboratory.</code>
- *     Alternately, this acknowledgment may appear in the software itself,
- *     if and wherever such third-party acknowledgments normally appear.</li>
- * <li><strong>WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS"
- *     WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE
- *     UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND
- *     THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR
- *     IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE
- *     OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY
- *     OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
- *     USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF
- *     THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4)
- *     DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION
- *     UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL
- *     BE CORRECTED.</strong></li>
- * <li><strong>LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT
- *     HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF
- *     ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT,
- *     INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF
- *     ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF
- *     PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER
- *     SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT
- *     (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE,
- *     EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE
- *     POSSIBILITY OF SUCH LOSS OR DAMAGES.</strong></li>
- * <ol></td></tr>
- * </table>
-
- * @author Argonne National Laboratory. MINPACK project. March 1980 (original 
fortran minpack tests)
- * @author Burton S. Garbow (original fortran minpack tests)
- * @author Kenneth E. Hillstrom (original fortran minpack tests)
- * @author Jorge J. More (original fortran minpack tests)
- * @author Luc Maisonobe (non-minpack tests and minpack tests Java translation)
- */
-@Deprecated
-public class GaussNewtonOptimizerTest
-    extends AbstractLeastSquaresOptimizerAbstractTest {
-
-    @Override
-    public AbstractLeastSquaresOptimizer createOptimizer() {
-        return new GaussNewtonOptimizer(new SimpleVectorValueChecker(1.0e-6, 
1.0e-6));
-    }
-
-    @Override
-    @Test(expected = ConvergenceException.class)
-    public void testMoreEstimatedParametersSimple() {
-        /*
-         * Exception is expected with this optimizer
-         */
-        super.testMoreEstimatedParametersSimple();
-    }
-
-    @Override
-    @Test(expected=ConvergenceException.class)
-    public void testMoreEstimatedParametersUnsorted() {
-        /*
-         * Exception is expected with this optimizer
-         */
-        super.testMoreEstimatedParametersUnsorted();
-    }
-
-    @Test(expected=TooManyEvaluationsException.class)
-    public void testMaxEvaluations() throws Exception {
-        CircleVectorial circle = new CircleVectorial();
-        circle.addPoint( 30.0,  68.0);
-        circle.addPoint( 50.0,  -6.0);
-        circle.addPoint(110.0, -20.0);
-        circle.addPoint( 35.0,  15.0);
-        circle.addPoint( 45.0,  97.0);
-
-        GaussNewtonOptimizer optimizer
-            = new GaussNewtonOptimizer(new SimpleVectorValueChecker(1.0e-30, 
1.0e-30));
-
-        optimizer.optimize(100, circle, new double[] { 0, 0, 0, 0, 0 },
-                           new double[] { 1, 1, 1, 1, 1 },
-                           new double[] { 98.680, 47.345 });
-    }
-
-    @Override
-    @Test(expected=ConvergenceException.class)
-    public void testCircleFittingBadInit() {
-        /*
-         * This test does not converge with this optimizer.
-         */
-        super.testCircleFittingBadInit();
-    }
-
-    @Override
-    @Test(expected = ConvergenceException.class)
-    public void testHahn1()
-        throws IOException {
-        /*
-         * TODO This test leads to a singular problem with the Gauss-Newton
-         * optimizer. This should be inquired.
-         */
-        super.testHahn1();
-    }
-}

http://git-wip-us.apache.org/repos/asf/commons-math/blob/b4669aad/src/test/java/org/apache/commons/math4/optimization/general/LevenbergMarquardtOptimizerTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/math4/optimization/general/LevenbergMarquardtOptimizerTest.java
 
b/src/test/java/org/apache/commons/math4/optimization/general/LevenbergMarquardtOptimizerTest.java
deleted file mode 100644
index da77546..0000000
--- 
a/src/test/java/org/apache/commons/math4/optimization/general/LevenbergMarquardtOptimizerTest.java
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.math4.optimization.general;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.math4.analysis.differentiation.DerivativeStructure;
-import 
org.apache.commons.math4.analysis.differentiation.MultivariateDifferentiableVectorFunction;
-import org.apache.commons.math4.exception.ConvergenceException;
-import org.apache.commons.math4.exception.DimensionMismatchException;
-import org.apache.commons.math4.exception.TooManyEvaluationsException;
-import org.apache.commons.math4.geometry.euclidean.twod.Vector2D;
-import org.apache.commons.math4.linear.SingularMatrixException;
-import org.apache.commons.math4.optimization.PointVectorValuePair;
-import 
org.apache.commons.math4.optimization.general.AbstractLeastSquaresOptimizer;
-import 
org.apache.commons.math4.optimization.general.LevenbergMarquardtOptimizer;
-import org.apache.commons.math4.util.FastMath;
-import org.apache.commons.math4.util.Precision;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.Ignore;
-
-/**
- * <p>Some of the unit tests are re-implementations of the MINPACK <a
- * href="http://www.netlib.org/minpack/ex/file17";>file17</a> and <a
- * href="http://www.netlib.org/minpack/ex/file22";>file22</a> test files.
- * The redistribution policy for MINPACK is available <a
- * href="http://www.netlib.org/minpack/disclaimer";>here</a>, for
- * convenience, it is reproduced below.</p>
-
- * <table border="0" width="80%" cellpadding="10" align="center" 
bgcolor="#E0E0E0">
- * <tr><td>
- *    Minpack Copyright Notice (1999) University of Chicago.
- *    All rights reserved
- * </td></tr>
- * <tr><td>
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * <ol>
- *  <li>Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.</li>
- * <li>Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the following
- *     disclaimer in the documentation and/or other materials provided
- *     with the distribution.</li>
- * <li>The end-user documentation included with the redistribution, if any,
- *     must include the following acknowledgment:
- *     <code>This product includes software developed by the University of
- *           Chicago, as Operator of Argonne National Laboratory.</code>
- *     Alternately, this acknowledgment may appear in the software itself,
- *     if and wherever such third-party acknowledgments normally appear.</li>
- * <li><strong>WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS"
- *     WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE
- *     UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND
- *     THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR
- *     IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE
- *     OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY
- *     OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
- *     USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF
- *     THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4)
- *     DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION
- *     UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL
- *     BE CORRECTED.</strong></li>
- * <li><strong>LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT
- *     HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF
- *     ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT,
- *     INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF
- *     ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF
- *     PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER
- *     SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT
- *     (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE,
- *     EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE
- *     POSSIBILITY OF SUCH LOSS OR DAMAGES.</strong></li>
- * <ol></td></tr>
- * </table>
-
- * @author Argonne National Laboratory. MINPACK project. March 1980 (original 
fortran minpack tests)
- * @author Burton S. Garbow (original fortran minpack tests)
- * @author Kenneth E. Hillstrom (original fortran minpack tests)
- * @author Jorge J. More (original fortran minpack tests)
- * @author Luc Maisonobe (non-minpack tests and minpack tests Java translation)
- */
-@Deprecated
-public class LevenbergMarquardtOptimizerTest extends 
AbstractLeastSquaresOptimizerAbstractTest {
-
-    @Override
-    public AbstractLeastSquaresOptimizer createOptimizer() {
-        return new LevenbergMarquardtOptimizer();
-    }
-
-    @Override
-    @Test(expected=SingularMatrixException.class)
-    public void testNonInvertible() {
-        /*
-         * Overrides the method from parent class, since the default 
singularity
-         * threshold (1e-14) does not trigger the expected exception.
-         */
-        LinearProblem problem = new LinearProblem(new double[][] {
-                {  1, 2, -3 },
-                {  2, 1,  3 },
-                { -3, 0, -9 }
-        }, new double[] { 1, 1, 1 });
-
-        AbstractLeastSquaresOptimizer optimizer = createOptimizer();
-        PointVectorValuePair optimum = optimizer.optimize(100, problem, 
problem.target, new double[] { 1, 1, 1 }, new double[] { 0, 0, 0 });
-        Assert.assertTrue(FastMath.sqrt(problem.target.length) * 
optimizer.getRMS() > 0.6);
-
-        optimizer.computeCovariances(optimum.getPoint(), 1.5e-14);
-    }
-
-    @Test
-    public void testControlParameters() {
-        CircleVectorial circle = new CircleVectorial();
-        circle.addPoint( 30.0,  68.0);
-        circle.addPoint( 50.0,  -6.0);
-        circle.addPoint(110.0, -20.0);
-        circle.addPoint( 35.0,  15.0);
-        circle.addPoint( 45.0,  97.0);
-        checkEstimate(circle, 0.1, 10, 1.0e-14, 1.0e-16, 1.0e-10, false);
-        checkEstimate(circle, 0.1, 10, 1.0e-15, 1.0e-17, 1.0e-10, true);
-        checkEstimate(circle, 0.1,  5, 1.0e-15, 1.0e-16, 1.0e-10, true);
-        circle.addPoint(300, -300);
-        checkEstimate(circle, 0.1, 20, 1.0e-18, 1.0e-16, 1.0e-10, true);
-    }
-
-    private void checkEstimate(MultivariateDifferentiableVectorFunction 
problem,
-                               double initialStepBoundFactor, int maxCostEval,
-                               double costRelativeTolerance, double 
parRelativeTolerance,
-                               double orthoTolerance, boolean shouldFail) {
-        try {
-            LevenbergMarquardtOptimizer optimizer
-                = new LevenbergMarquardtOptimizer(initialStepBoundFactor,
-                                                  costRelativeTolerance,
-                                                  parRelativeTolerance,
-                                                  orthoTolerance,
-                                                  Precision.SAFE_MIN);
-            optimizer.optimize(maxCostEval, problem, new double[] { 0, 0, 0, 
0, 0 },
-                               new double[] { 1, 1, 1, 1, 1 },
-                               new double[] { 98.680, 47.345 });
-            Assert.assertTrue(!shouldFail);
-        } catch (DimensionMismatchException ee) {
-            Assert.assertTrue(shouldFail);
-        } catch (TooManyEvaluationsException ee) {
-            Assert.assertTrue(shouldFail);
-        }
-    }
-
-    // Test is skipped because it fails with the latest code update.
-    @Ignore@Test
-    public void testMath199() {
-        try {
-            QuadraticProblem problem = new QuadraticProblem();
-            problem.addPoint (0, -3.182591015485607);
-            problem.addPoint (1, -2.5581184967730577);
-            problem.addPoint (2, -2.1488478161387325);
-            problem.addPoint (3, -1.9122489313410047);
-            problem.addPoint (4, 1.7785661310051026);
-            LevenbergMarquardtOptimizer optimizer
-                = new LevenbergMarquardtOptimizer(100, 1e-10, 1e-10, 1e-10, 0);
-            optimizer.optimize(100, problem,
-                               new double[] { 0, 0, 0, 0, 0 },
-                               new double[] { 0.0, 4.4e-323, 1.0, 4.4e-323, 
0.0 },
-                               new double[] { 0, 0, 0 });
-            Assert.fail("an exception should have been thrown");
-        } catch (ConvergenceException ee) {
-            // expected behavior
-        }
-    }
-
-    /**
-     * Non-linear test case: fitting of decay curve (from Chapter 8 of
-     * Bevington's textbook, "Data reduction and analysis for the physical 
sciences").
-     * XXX The expected ("reference") values may not be accurate and the 
tolerance too
-     * relaxed for this test to be currently really useful (the issue is under
-     * investigation).
-     */
-    @Test
-    public void testBevington() {
-        final double[][] dataPoints = {
-            // column 1 = times
-            { 15, 30, 45, 60, 75, 90, 105, 120, 135, 150,
-              165, 180, 195, 210, 225, 240, 255, 270, 285, 300,
-              315, 330, 345, 360, 375, 390, 405, 420, 435, 450,
-              465, 480, 495, 510, 525, 540, 555, 570, 585, 600,
-              615, 630, 645, 660, 675, 690, 705, 720, 735, 750,
-              765, 780, 795, 810, 825, 840, 855, 870, 885, },
-            // column 2 = measured counts
-            { 775, 479, 380, 302, 185, 157, 137, 119, 110, 89,
-              74, 61, 66, 68, 48, 54, 51, 46, 55, 29,
-              28, 37, 49, 26, 35, 29, 31, 24, 25, 35,
-              24, 30, 26, 28, 21, 18, 20, 27, 17, 17,
-              14, 17, 24, 11, 22, 17, 12, 10, 13, 16,
-              9, 9, 14, 21, 17, 13, 12, 18, 10, },
-        };
-
-        final BevingtonProblem problem = new BevingtonProblem();
-
-        final int len = dataPoints[0].length;
-        final double[] weights = new double[len];
-        for (int i = 0; i < len; i++) {
-            problem.addPoint(dataPoints[0][i],
-                             dataPoints[1][i]);
-
-            weights[i] = 1 / dataPoints[1][i];
-        }
-
-        final LevenbergMarquardtOptimizer optimizer
-            = new LevenbergMarquardtOptimizer();
-
-        final PointVectorValuePair optimum
-            = optimizer.optimize(100, problem, dataPoints[1], weights,
-                               new double[] { 10, 900, 80, 27, 225 });
-
-        final double[] solution = optimum.getPoint();
-        final double[] expectedSolution = { 10.4, 958.3, 131.4, 33.9, 205.0 };
-
-        final double[][] covarMatrix = optimizer.computeCovariances(solution, 
1e-14);
-        final double[][] expectedCovarMatrix = {
-            { 3.38, -3.69, 27.98, -2.34, -49.24 },
-            { -3.69, 2492.26, 81.89, -69.21, -8.9 },
-            { 27.98, 81.89, 468.99, -44.22, -615.44 },
-            { -2.34, -69.21, -44.22, 6.39, 53.80 },
-            { -49.24, -8.9, -615.44, 53.8, 929.45 }
-        };
-
-        final int numParams = expectedSolution.length;
-
-        // Check that the computed solution is within the reference error 
range.
-        for (int i = 0; i < numParams; i++) {
-            final double error = FastMath.sqrt(expectedCovarMatrix[i][i]);
-            Assert.assertEquals("Parameter " + i, expectedSolution[i], 
solution[i], error);
-        }
-
-        // Check that each entry of the computed covariance matrix is within 
10%
-        // of the reference matrix entry.
-        for (int i = 0; i < numParams; i++) {
-            for (int j = 0; j < numParams; j++) {
-                Assert.assertEquals("Covariance matrix [" + i + "][" + j + "]",
-                                    expectedCovarMatrix[i][j],
-                                    covarMatrix[i][j],
-                                    FastMath.abs(0.1 * 
expectedCovarMatrix[i][j]));
-            }
-        }
-    }
-
-    @Test
-    public void testCircleFitting2() {
-        final double xCenter = 123.456;
-        final double yCenter = 654.321;
-        final double xSigma = 10;
-        final double ySigma = 15;
-        final double radius = 111.111;
-        // The test is extremely sensitive to the seed.
-        final long seed = 59421061L;
-        final RandomCirclePointGenerator factory
-            = new RandomCirclePointGenerator(xCenter, yCenter, radius,
-                                             xSigma, ySigma,
-                                             seed);
-        final CircleProblem circle = new CircleProblem(xSigma, ySigma);
-
-        final int numPoints = 10;
-        for (Vector2D p : factory.generate(numPoints)) {
-            circle.addPoint(p);
-            // System.out.println(p.x + " " + p.y);
-        }
-
-        // First guess for the center's coordinates and radius.
-        final double[] init = { 90, 659, 115 };
-
-        final LevenbergMarquardtOptimizer optimizer
-            = new LevenbergMarquardtOptimizer();
-        final PointVectorValuePair optimum = optimizer.optimize(100, circle,
-                                                                
circle.target(), circle.weight(),
-                                                                init);
-
-        final double[] paramFound = optimum.getPoint();
-
-        // Retrieve errors estimation.
-        final double[][] covMatrix = optimizer.computeCovariances(paramFound, 
1e-14);
-        final double[] asymptoticStandardErrorFound = 
optimizer.guessParametersErrors();
-        final double[] sigmaFound = new double[covMatrix.length];
-        for (int i = 0; i < covMatrix.length; i++) {
-            sigmaFound[i] = FastMath.sqrt(covMatrix[i][i]);
-//             System.out.println("i=" + i + " value=" + paramFound[i]
-//                                + " sigma=" + sigmaFound[i]
-//                                + " ase=" + asymptoticStandardErrorFound[i]);
-        }
-
-        // System.out.println("chi2=" + optimizer.getChiSquare());
-
-        // Check that the parameters are found within the assumed error bars.
-        Assert.assertEquals(xCenter, paramFound[0], 
asymptoticStandardErrorFound[0]);
-        Assert.assertEquals(yCenter, paramFound[1], 
asymptoticStandardErrorFound[1]);
-        Assert.assertEquals(radius, paramFound[2], 
asymptoticStandardErrorFound[2]);
-    }
-
-    private static class QuadraticProblem implements 
MultivariateDifferentiableVectorFunction, Serializable {
-
-        private static final long serialVersionUID = 7072187082052755854L;
-        private List<Double> x;
-        private List<Double> y;
-
-        public QuadraticProblem() {
-            x = new ArrayList<Double>();
-            y = new ArrayList<Double>();
-        }
-
-        public void addPoint(double x, double y) {
-            this.x.add(x);
-            this.y.add(y);
-        }
-
-        public double[] value(double[] variables) {
-            double[] values = new double[x.size()];
-            for (int i = 0; i < values.length; ++i) {
-                values[i] = (variables[0] * x.get(i) + variables[1]) * 
x.get(i) + variables[2];
-            }
-            return values;
-        }
-
-        public DerivativeStructure[] value(DerivativeStructure[] variables) {
-            DerivativeStructure[] values = new DerivativeStructure[x.size()];
-            for (int i = 0; i < values.length; ++i) {
-                values[i] = 
(variables[0].multiply(x.get(i)).add(variables[1])).multiply(x.get(i)).add(variables[2]);
-            }
-            return values;
-        }
-
-    }
-
-    private static class BevingtonProblem
-        implements MultivariateDifferentiableVectorFunction {
-        private List<Double> time;
-        private List<Double> count;
-
-        public BevingtonProblem() {
-            time = new ArrayList<Double>();
-            count = new ArrayList<Double>();
-        }
-
-        public void addPoint(double t, double c) {
-            time.add(t);
-            count.add(c);
-        }
-
-        public double[] value(double[] params) {
-            double[] values = new double[time.size()];
-            for (int i = 0; i < values.length; ++i) {
-                final double t = time.get(i);
-                values[i] = params[0]
-                    + params[1] * FastMath.exp(-t / params[3])
-                    + params[2] * FastMath.exp(-t / params[4]);
-            }
-            return values;
-        }
-
-        public DerivativeStructure[] value(DerivativeStructure[] params) {
-            DerivativeStructure[] values = new 
DerivativeStructure[time.size()];
-            for (int i = 0; i < values.length; ++i) {
-                final double t = time.get(i);
-                values[i] = params[0].add(
-                    
params[1].multiply(params[3].reciprocal().multiply(-t).exp())).add(
-                    
params[2].multiply(params[4].reciprocal().multiply(-t).exp()));
-            }
-            return values;
-        }
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/commons-math/blob/b4669aad/src/test/java/org/apache/commons/math4/optimization/general/MinpackTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/math4/optimization/general/MinpackTest.java 
b/src/test/java/org/apache/commons/math4/optimization/general/MinpackTest.java
deleted file mode 100644
index 50440c3..0000000
--- 
a/src/test/java/org/apache/commons/math4/optimization/general/MinpackTest.java
+++ /dev/null
@@ -1,1212 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.math4.optimization.general;
-
-import java.io.Serializable;
-import java.util.Arrays;
-
-import org.apache.commons.math4.analysis.differentiation.DerivativeStructure;
-import 
org.apache.commons.math4.analysis.differentiation.MultivariateDifferentiableVectorFunction;
-import org.apache.commons.math4.exception.TooManyEvaluationsException;
-import org.apache.commons.math4.optimization.PointVectorValuePair;
-import 
org.apache.commons.math4.optimization.general.LevenbergMarquardtOptimizer;
-import org.apache.commons.math4.util.FastMath;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * <p>Some of the unit tests are re-implementations of the MINPACK <a
- * href="http://www.netlib.org/minpack/ex/file17";>file17</a> and <a
- * href="http://www.netlib.org/minpack/ex/file22";>file22</a> test files.
- * The redistribution policy for MINPACK is available <a
- * href="http://www.netlib.org/minpack/disclaimer";>here</a>, for
- * convenience, it is reproduced below.</p>
-
- * <table border="0" width="80%" cellpadding="10" align="center" 
bgcolor="#E0E0E0">
- * <tr><td>
- *    Minpack Copyright Notice (1999) University of Chicago.
- *    All rights reserved
- * </td></tr>
- * <tr><td>
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * <ol>
- *  <li>Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.</li>
- * <li>Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the following
- *     disclaimer in the documentation and/or other materials provided
- *     with the distribution.</li>
- * <li>The end-user documentation included with the redistribution, if any,
- *     must include the following acknowledgment:
- *     <code>This product includes software developed by the University of
- *           Chicago, as Operator of Argonne National Laboratory.</code>
- *     Alternately, this acknowledgment may appear in the software itself,
- *     if and wherever such third-party acknowledgments normally appear.</li>
- * <li><strong>WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS"
- *     WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE
- *     UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND
- *     THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR
- *     IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE
- *     OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY
- *     OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
- *     USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF
- *     THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4)
- *     DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION
- *     UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL
- *     BE CORRECTED.</strong></li>
- * <li><strong>LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT
- *     HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF
- *     ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT,
- *     INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF
- *     ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF
- *     PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER
- *     SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT
- *     (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE,
- *     EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE
- *     POSSIBILITY OF SUCH LOSS OR DAMAGES.</strong></li>
- * <ol></td></tr>
- * </table>
-
- * @author Argonne National Laboratory. MINPACK project. March 1980 (original 
fortran minpack tests)
- * @author Burton S. Garbow (original fortran minpack tests)
- * @author Kenneth E. Hillstrom (original fortran minpack tests)
- * @author Jorge J. More (original fortran minpack tests)
- * @author Luc Maisonobe (non-minpack tests and minpack tests Java translation)
- */
-@Deprecated
-public class MinpackTest {
-
-  @Test
-  public void testMinpackLinearFullRank() {
-    minpackTest(new LinearFullRankFunction(10, 5, 1.0,
-                                           5.0, 2.23606797749979), false);
-    minpackTest(new LinearFullRankFunction(50, 5, 1.0,
-                                           8.06225774829855, 
6.70820393249937), false);
-  }
-
-  @Test
-  public void testMinpackLinearRank1() {
-    minpackTest(new LinearRank1Function(10, 5, 1.0,
-                                        291.521868819476, 1.4638501094228), 
false);
-    minpackTest(new LinearRank1Function(50, 5, 1.0,
-                                        3101.60039334535, 3.48263016573496), 
false);
-  }
-
-  @Test
-  public void testMinpackLinearRank1ZeroColsAndRows() {
-    minpackTest(new LinearRank1ZeroColsAndRowsFunction(10, 5, 1.0), false);
-    minpackTest(new LinearRank1ZeroColsAndRowsFunction(50, 5, 1.0), false);
-  }
-
-  @Test
-  public void testMinpackRosenbrok() {
-    minpackTest(new RosenbrockFunction(new double[] { -1.2, 1.0 },
-                                       FastMath.sqrt(24.2)), false);
-    minpackTest(new RosenbrockFunction(new double[] { -12.0, 10.0 },
-                                       FastMath.sqrt(1795769.0)), false);
-    minpackTest(new RosenbrockFunction(new double[] { -120.0, 100.0 },
-                                       11.0 * FastMath.sqrt(169000121.0)), 
false);
-  }
-
-  @Test
-  public void testMinpackHelicalValley() {
-    minpackTest(new HelicalValleyFunction(new double[] { -1.0, 0.0, 0.0 },
-                                          50.0), false);
-    minpackTest(new HelicalValleyFunction(new double[] { -10.0, 0.0, 0.0 },
-                                          102.95630140987), false);
-    minpackTest(new HelicalValleyFunction(new double[] { -100.0, 0.0, 0.0},
-                                          991.261822123701), false);
-  }
-
-  @Test
-  public void testMinpackPowellSingular() {
-    minpackTest(new PowellSingularFunction(new double[] { 3.0, -1.0, 0.0, 1.0 
},
-                                           14.6628782986152), false);
-    minpackTest(new PowellSingularFunction(new double[] { 30.0, -10.0, 0.0, 
10.0 },
-                                           1270.9838708654), false);
-    minpackTest(new PowellSingularFunction(new double[] { 300.0, -100.0, 0.0, 
100.0 },
-                                           126887.903284750), false);
-  }
-
-  @Test
-  public void testMinpackFreudensteinRoth() {
-    minpackTest(new FreudensteinRothFunction(new double[] { 0.5, -2.0 },
-                                             20.0124960961895, 
6.99887517584575,
-                                             new double[] {
-                                               11.4124844654993,
-                                               -0.896827913731509
-                                             }), false);
-    minpackTest(new FreudensteinRothFunction(new double[] { 5.0, -20.0 },
-                                             12432.833948863, 6.9988751744895,
-                                             new double[] {
-                                                11.41300466147456,
-                                                -0.896796038685959
-                                             }), false);
-    minpackTest(new FreudensteinRothFunction(new double[] { 50.0, -200.0 },
-                                             11426454.595762, 6.99887517242903,
-                                             new double[] {
-                                                 11.412781785788564,
-                                                 -0.8968051074920405
-                                             }), false);
-  }
-
-  @Test
-  public void testMinpackBard() {
-    minpackTest(new BardFunction(1.0, 6.45613629515967, 0.0906359603390466,
-                                 new double[] {
-                                   0.0824105765758334,
-                                   1.1330366534715,
-                                   2.34369463894115
-                                 }), false);
-    minpackTest(new BardFunction(10.0, 36.1418531596785, 4.17476870138539,
-                                 new double[] {
-                                   0.840666673818329,
-                                   -158848033.259565,
-                                   -164378671.653535
-                                 }), false);
-    minpackTest(new BardFunction(100.0, 384.114678637399, 4.17476870135969,
-                                 new double[] {
-                                   0.840666673867645,
-                                   -158946167.205518,
-                                   -164464906.857771
-                                 }), false);
-  }
-
-  @Test
-  public void testMinpackKowalikOsborne() {
-    minpackTest(new KowalikOsborneFunction(new double[] { 0.25, 0.39, 0.415, 
0.39 },
-                                           0.0728915102882945,
-                                           0.017535837721129,
-                                           new double[] {
-                                             0.192807810476249,
-                                             0.191262653354071,
-                                             0.123052801046931,
-                                             0.136053221150517
-                                           }), false);
-    minpackTest(new KowalikOsborneFunction(new double[] { 2.5, 3.9, 4.15, 3.9 
},
-                                           2.97937007555202,
-                                           0.032052192917937,
-                                           new double[] {
-                                             728675.473768287,
-                                             -14.0758803129393,
-                                             -32977797.7841797,
-                                             -20571594.1977912
-                                           }), false);
-    minpackTest(new KowalikOsborneFunction(new double[] { 25.0, 39.0, 41.5, 
39.0 },
-                                           29.9590617016037,
-                                           0.0175364017658228,
-                                           new double[] {
-                                             0.192948328597594,
-                                             0.188053165007911,
-                                             0.122430604321144,
-                                             0.134575665392506
-                                           }), false);
-  }
-
-  @Test
-  public void testMinpackMeyer() {
-    minpackTest(new MeyerFunction(new double[] { 0.02, 4000.0, 250.0 },
-                                  41153.4665543031, 9.37794514651874,
-                                  new double[] {
-                                    0.00560963647102661,
-                                    6181.34634628659,
-                                    345.223634624144
-                                  }), false);
-    minpackTest(new MeyerFunction(new double[] { 0.2, 40000.0, 2500.0 },
-                                  4168216.89130846, 792.917871779501,
-                                  new double[] {
-                                    1.42367074157994e-11,
-                                    33695.7133432541,
-                                    901.268527953801
-                                  }), true);
-  }
-
-  @Test
-  public void testMinpackWatson() {
-
-    minpackTest(new WatsonFunction(6, 0.0,
-                                   5.47722557505166, 0.0478295939097601,
-                                   new double[] {
-                                     -0.0157249615083782, 1.01243488232965,
-                                     -0.232991722387673,  1.26043101102818,
-                                     -1.51373031394421,   0.99299727291842
-                                   }), false);
-    minpackTest(new WatsonFunction(6, 10.0,
-                                   6433.12578950026, 0.0478295939096951,
-                                   new double[] {
-                                     -0.0157251901386677, 1.01243485860105,
-                                     -0.232991545843829,  1.26042932089163,
-                                     -1.51372776706575,   0.99299573426328
-                                   }), false);
-    minpackTest(new WatsonFunction(6, 100.0,
-                                   674256.040605213, 0.047829593911544,
-                                   new double[] {
-                                    -0.0157247019712586, 1.01243490925658,
-                                    -0.232991922761641,  1.26043292929555,
-                                    -1.51373320452707,   0.99299901922322
-                                   }), false);
-
-    minpackTest(new WatsonFunction(9, 0.0,
-                                   5.47722557505166, 0.00118311459212420,
-                                   new double[] {
-                                    -0.153070644166722e-4, 0.999789703934597,
-                                     0.0147639634910978,   0.146342330145992,
-                                     1.00082109454817,    -2.61773112070507,
-                                     4.10440313943354,    -3.14361226236241,
-                                     1.05262640378759
-                                   }), false);
-    minpackTest(new WatsonFunction(9, 10.0,
-                                   12088.127069307, 0.00118311459212513,
-                                   new double[] {
-                                   -0.153071334849279e-4, 0.999789703941234,
-                                    0.0147639629786217,   0.146342334818836,
-                                    1.00082107321386,    -2.61773107084722,
-                                    4.10440307655564,    -3.14361222178686,
-                                    1.05262639322589
-                                   }), false);
-    minpackTest(new WatsonFunction(9, 100.0,
-                                   1269109.29043834, 0.00118311459212384,
-                                   new double[] {
-                                    -0.153069523352176e-4, 0.999789703958371,
-                                     0.0147639625185392,   0.146342341096326,
-                                     1.00082104729164,    -2.61773101573645,
-                                     4.10440301427286,    -3.14361218602503,
-                                     1.05262638516774
-                                   }), false);
-
-    minpackTest(new WatsonFunction(12, 0.0,
-                                   5.47722557505166, 0.217310402535861e-4,
-                                   new double[] {
-                                    -0.660266001396382e-8, 1.00000164411833,
-                                    -0.000563932146980154, 0.347820540050756,
-                                    -0.156731500244233,    1.05281515825593,
-                                    -3.24727109519451,     7.2884347837505,
-                                   -10.271848098614,       9.07411353715783,
-                                    -4.54137541918194,     1.01201187975044
-                                   }), false);
-    minpackTest(new WatsonFunction(12, 10.0,
-                                   19220.7589790951, 0.217310402518509e-4,
-                                   new double[] {
-                                    -0.663710223017410e-8, 1.00000164411787,
-                                    -0.000563932208347327, 0.347820540486998,
-                                    -0.156731503955652,    1.05281517654573,
-                                    -3.2472711515214,      7.28843489430665,
-                                   -10.2718482369638,      9.07411364383733,
-                                    -4.54137546533666,     1.01201188830857
-                                   }), false);
-    minpackTest(new WatsonFunction(12, 100.0,
-                                   2018918.04462367, 0.217310402539845e-4,
-                                   new double[] {
-                                    -0.663806046485249e-8, 1.00000164411786,
-                                    -0.000563932210324959, 0.347820540503588,
-                                    -0.156731504091375,    1.05281517718031,
-                                    -3.24727115337025,     7.28843489775302,
-                                   -10.2718482410813,      9.07411364688464,
-                                    -4.54137546660822,     1.0120118885369
-                                   }), false);
-
-  }
-
-  @Test
-  public void testMinpackBox3Dimensional() {
-    minpackTest(new Box3DimensionalFunction(10, new double[] { 0.0, 10.0, 20.0 
},
-                                            32.1115837449572), false);
-  }
-
-  @Test
-  public void testMinpackJennrichSampson() {
-    minpackTest(new JennrichSampsonFunction(10, new double[] { 0.3, 0.4 },
-                                            64.5856498144943, 11.1517793413499,
-                                            new double[] {
- //                                            0.2578330049, 0.257829976764542
-                                               0.2578199266368004, 
0.25782997676455244
-                                            }), false);
-  }
-
-  @Test
-  public void testMinpackBrownDennis() {
-    minpackTest(new BrownDennisFunction(20,
-                                        new double[] { 25.0, 5.0, -5.0, -1.0 },
-                                        2815.43839161816, 292.954288244866,
-                                        new double[] {
-                                         -11.59125141003, 13.2024883984741,
-                                         -0.403574643314272, 0.236736269844604
-                                        }), false);
-    minpackTest(new BrownDennisFunction(20,
-                                        new double[] { 250.0, 50.0, -50.0, 
-10.0 },
-                                        555073.354173069, 292.954270581415,
-                                        new double[] {
-                                         -11.5959274272203, 13.2041866926242,
-                                         -0.403417362841545, 0.236771143410386
-                                       }), false);
-    minpackTest(new BrownDennisFunction(20,
-                                        new double[] { 2500.0, 500.0, -500.0, 
-100.0 },
-                                        61211252.2338581, 292.954306151134,
-                                        new double[] {
-                                         -11.5902596937374, 13.2020628854665,
-                                         -0.403688070279258, 0.236665033746463
-                                        }), false);
-  }
-
-  @Test
-  public void testMinpackChebyquad() {
-    minpackTest(new ChebyquadFunction(1, 8, 1.0,
-                                      1.88623796907732, 1.88623796907732,
-                                      new double[] { 0.5 }), false);
-    minpackTest(new ChebyquadFunction(1, 8, 10.0,
-                                      5383344372.34005, 1.88424820499951,
-                                      new double[] { 0.9817314924684 }), 
false);
-    minpackTest(new ChebyquadFunction(1, 8, 100.0,
-                                      0.118088726698392e19, 1.88424820499347,
-                                      new double[] { 0.9817314852934 }), 
false);
-    minpackTest(new ChebyquadFunction(8, 8, 1.0,
-                                      0.196513862833975, 0.0593032355046727,
-                                      new double[] {
-                                        0.0431536648587336, 0.193091637843267,
-                                        0.266328593812698,  0.499999334628884,
-                                        0.500000665371116,  0.733671406187302,
-                                        0.806908362156733,  0.956846335141266
-                                      }), false);
-    minpackTest(new ChebyquadFunction(9, 9, 1.0,
-                                      0.16994993465202, 0.0,
-                                      new double[] {
-                                        0.0442053461357828, 0.199490672309881,
-                                        0.23561910847106,   0.416046907892598,
-                                        0.5,                0.583953092107402,
-                                        0.764380891528940,  0.800509327690119,
-                                        0.955794653864217
-                                      }), false);
-    minpackTest(new ChebyquadFunction(10, 10, 1.0,
-                                      0.183747831178711, 0.0806471004038253,
-                                      new double[] {
-                                        0.0596202671753563, 0.166708783805937,
-                                        0.239171018813509,  0.398885290346268,
-                                        0.398883667870681,  0.601116332129320,
-                                        0.60111470965373,   0.760828981186491,
-                                        0.833291216194063,  0.940379732824644
-                                      }), false);
-  }
-
-  @Test
-  public void testMinpackBrownAlmostLinear() {
-    minpackTest(new BrownAlmostLinearFunction(10, 0.5,
-                                              16.5302162063499, 0.0,
-                                              new double[] {
-                                                0.979430303349862, 
0.979430303349862,
-                                                0.979430303349862, 
0.979430303349862,
-                                                0.979430303349862, 
0.979430303349862,
-                                                0.979430303349862, 
0.979430303349862,
-                                                0.979430303349862, 
1.20569696650138
-                                              }), false);
-    minpackTest(new BrownAlmostLinearFunction(10, 5.0,
-                                              9765624.00089211, 0.0,
-                                              new double[] {
-                                               0.979430303349865, 
0.979430303349865,
-                                               0.979430303349865, 
0.979430303349865,
-                                               0.979430303349865, 
0.979430303349865,
-                                               0.979430303349865, 
0.979430303349865,
-                                               0.979430303349865, 
1.20569696650135
-                                              }), false);
-    minpackTest(new BrownAlmostLinearFunction(10, 50.0,
-                                              0.9765625e17, 0.0,
-                                              new double[] {
-                                                1.0, 1.0, 1.0, 1.0, 1.0,
-                                                1.0, 1.0, 1.0, 1.0, 1.0
-                                              }), false);
-    minpackTest(new BrownAlmostLinearFunction(30, 0.5,
-                                              83.476044467848, 0.0,
-                                              new double[] {
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
0.997754216442807,
-                                                0.997754216442807, 
1.06737350671578
-                                              }), false);
-    minpackTest(new BrownAlmostLinearFunction(40, 0.5,
-                                              128.026364472323, 0.0,
-                                              new double[] {
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                1.00000000000002, 
1.00000000000002,
-                                                0.999999999999121
-                                              }), false);
-    }
-
-  @Test
-  public void testMinpackOsborne1() {
-      minpackTest(new Osborne1Function(new double[] { 0.5, 1.5, -1.0, 0.01, 
0.02, },
-                                       0.937564021037838, 0.00739249260904843,
-                                       new double[] {
-                                         0.375410049244025, 1.93584654543108,
-                                        -1.46468676748716, 0.0128675339110439,
-                                         0.0221227011813076
-                                       }), false);
-    }
-
-  @Test
-  public void testMinpackOsborne2() {
-
-    minpackTest(new Osborne2Function(new double[] {
-                                       1.3, 0.65, 0.65, 0.7, 0.6,
-                                       3.0, 5.0, 7.0, 2.0, 4.5, 5.5
-                                     },
-                                     1.44686540984712, 0.20034404483314,
-                                     new double[] {
-                                       1.30997663810096,  0.43155248076,
-                                       0.633661261602859, 0.599428560991695,
-                                       0.754179768272449, 0.904300082378518,
-                                       1.36579949521007, 4.82373199748107,
-                                       2.39868475104871, 4.56887554791452,
-                                       5.67534206273052
-                                     }), false);
-  }
-
-  private void minpackTest(MinpackFunction function, boolean 
exceptionExpected) {
-      LevenbergMarquardtOptimizer optimizer
-          = new LevenbergMarquardtOptimizer(FastMath.sqrt(2.22044604926e-16),
-                                            FastMath.sqrt(2.22044604926e-16),
-                                            2.22044604926e-16);
-//      
Assert.assertTrue(function.checkTheoreticalStartCost(optimizer.getRMS()));
-      try {
-          PointVectorValuePair optimum =
-              optimizer.optimize(400 * (function.getN() + 1), function,
-                                 function.getTarget(), function.getWeight(),
-                                 function.getStartPoint());
-          Assert.assertFalse(exceptionExpected);
-          function.checkTheoreticalMinCost(optimizer.getRMS());
-          function.checkTheoreticalMinParams(optimum);
-      } catch (TooManyEvaluationsException e) {
-          Assert.assertTrue(exceptionExpected);
-      }
-  }
-
-  private static abstract class MinpackFunction
-      implements MultivariateDifferentiableVectorFunction, Serializable {
-
-      private static final long serialVersionUID = -6209760235478794233L;
-      protected int      n;
-      protected int      m;
-      protected double[] startParams;
-      protected double   theoreticalMinCost;
-      protected double[] theoreticalMinParams;
-      protected double   costAccuracy;
-      protected double   paramsAccuracy;
-
-      protected MinpackFunction(int m, double[] startParams,
-                                double theoreticalMinCost, double[] 
theoreticalMinParams) {
-          this.m = m;
-          this.n = startParams.length;
-          this.startParams          = startParams.clone();
-          this.theoreticalMinCost   = theoreticalMinCost;
-          this.theoreticalMinParams = theoreticalMinParams;
-          this.costAccuracy         = 1.0e-8;
-          this.paramsAccuracy       = 1.0e-5;
-      }
-
-      protected static double[] buildArray(int n, double x) {
-          double[] array = new double[n];
-          Arrays.fill(array, x);
-          return array;
-      }
-
-      public double[] getTarget() {
-          return buildArray(m, 0.0);
-      }
-
-      public double[] getWeight() {
-          return buildArray(m, 1.0);
-      }
-
-      public double[] getStartPoint() {
-          return startParams.clone();
-      }
-
-      protected void setCostAccuracy(double costAccuracy) {
-          this.costAccuracy = costAccuracy;
-      }
-
-      protected void setParamsAccuracy(double paramsAccuracy) {
-          this.paramsAccuracy = paramsAccuracy;
-      }
-
-      public int getN() {
-          return startParams.length;
-      }
-
-      public void checkTheoreticalMinCost(double rms) {
-          double threshold = costAccuracy * (1.0 + theoreticalMinCost);
-          Assert.assertEquals(theoreticalMinCost, FastMath.sqrt(m) * rms, 
threshold);
-      }
-
-      public void checkTheoreticalMinParams(PointVectorValuePair optimum) {
-          double[] params = optimum.getPointRef();
-          if (theoreticalMinParams != null) {
-              for (int i = 0; i < theoreticalMinParams.length; ++i) {
-                  double mi = theoreticalMinParams[i];
-                  double vi = params[i];
-                  Assert.assertEquals(mi, vi, paramsAccuracy * (1.0 + 
FastMath.abs(mi)));
-              }
-          }
-      }
-
-      public double[] value(double[] variables) {
-          DerivativeStructure[] dsV = new 
DerivativeStructure[variables.length];
-          for (int i = 0; i < variables.length; ++i) {
-              dsV[i] = new DerivativeStructure(0, 0, variables[i]);
-          }
-          DerivativeStructure[] dsY = value(dsV);
-          double[] y = new double[dsY.length];
-          for (int i = 0; i < dsY.length; ++i) {
-              y[i] = dsY[i].getValue();
-          }
-          return y;
-      }
-
-      public abstract DerivativeStructure[] value(DerivativeStructure[] 
variables);
-
-  }
-
-  private static class LinearFullRankFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = -9030323226268039536L;
-
-    public LinearFullRankFunction(int m, int n, double x0,
-                                  double theoreticalStartCost,
-                                  double theoreticalMinCost) {
-      super(m, buildArray(n, x0), theoreticalMinCost,
-            buildArray(n, -1.0));
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-      DerivativeStructure sum = variables[0].getField().getZero();
-      for (int i = 0; i < n; ++i) {
-        sum = sum.add(variables[i]);
-      }
-      DerivativeStructure t  = sum.multiply(2.0 / m).add(1);
-      DerivativeStructure[] f = new DerivativeStructure[m];
-      for (int i = 0; i < n; ++i) {
-        f[i] = variables[i].subtract(t);
-      }
-      Arrays.fill(f, n, m, t.negate());
-      return f;
-    }
-
-  }
-
-  private static class LinearRank1Function extends MinpackFunction {
-
-    private static final long serialVersionUID = 8494863245104608300L;
-
-    public LinearRank1Function(int m, int n, double x0,
-                                  double theoreticalStartCost,
-                                  double theoreticalMinCost) {
-      super(m, buildArray(n, x0), theoreticalMinCost, null);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure[] f = new DerivativeStructure[m];
-        DerivativeStructure sum = variables[0].getField().getZero();
-        for (int i = 0; i < n; ++i) {
-            sum = sum.add(variables[i].multiply(i + 1));
-        }
-        for (int i = 0; i < m; ++i) {
-            f[i] = sum.multiply(i + 1).subtract(1);
-        }
-        return f;
-    }
-
-  }
-
-  private static class LinearRank1ZeroColsAndRowsFunction extends 
MinpackFunction {
-
-    private static final long serialVersionUID = -3316653043091995018L;
-
-    public LinearRank1ZeroColsAndRowsFunction(int m, int n, double x0) {
-      super(m, buildArray(n, x0),
-            FastMath.sqrt((m * (m + 3) - 6) / (2.0 * (2 * m - 3))),
-            null);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure[] f = new DerivativeStructure[m];
-        DerivativeStructure sum = variables[0].getField().getZero();
-      for (int i = 1; i < (n - 1); ++i) {
-          sum = sum.add(variables[i].multiply(i + 1));
-      }
-      for (int i = 0; i < (m - 1); ++i) {
-        f[i] = sum.multiply(i).subtract(1);
-      }
-      f[m - 1] = variables[0].getField().getOne().negate();
-      return f;
-    }
-
-  }
-
-  private static class RosenbrockFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = 2893438180956569134L;
-
-    public RosenbrockFunction(double[] startParams, double 
theoreticalStartCost) {
-      super(2, startParams, 0.0, buildArray(2, 1.0));
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        return new DerivativeStructure[] {
-            x2.subtract(x1.multiply(x1)).multiply(10),
-            x1.negate().add(1)
-        };
-    }
-
-  }
-
-  private static class HelicalValleyFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = 220613787843200102L;
-
-    public HelicalValleyFunction(double[] startParams,
-                                 double theoreticalStartCost) {
-      super(3, startParams, 0.0, new double[] { 1.0, 0.0, 0.0 });
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        DerivativeStructure x3 = variables[2];
-        DerivativeStructure tmp1 = variables[0].getField().getZero();
-        if (x1.getValue() == 0) {
-            tmp1 = tmp1.add((x2.getValue() >= 0) ? 0.25 : -0.25);
-        } else {
-            tmp1 = x2.divide(x1).atan().divide(twoPi);
-            if (x1.getValue() < 0) {
-                tmp1 = tmp1.add(0.5);
-            }
-        }
-        DerivativeStructure tmp2 = x1.multiply(x1).add(x2.multiply(x2)).sqrt();
-        return new DerivativeStructure[] {
-            x3.subtract(tmp1.multiply(10)).multiply(10),
-            tmp2.subtract(1).multiply(10),
-            x3
-        };
-    }
-
-    private static final double twoPi = 2.0 * FastMath.PI;
-
-  }
-
-  private static class PowellSingularFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = 7298364171208142405L;
-
-    public PowellSingularFunction(double[] startParams,
-                                  double theoreticalStartCost) {
-      super(4, startParams, 0.0, buildArray(4, 0.0));
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        DerivativeStructure x3 = variables[2];
-        DerivativeStructure x4 = variables[3];
-      return new DerivativeStructure[] {
-        x1.add(x2.multiply(10)),
-        x3.subtract(x4).multiply(sqrt5),
-        x2.subtract(x3.multiply(2)).multiply(x2.subtract(x3.multiply(2))),
-        x1.subtract(x4).multiply(x1.subtract(x4)).multiply(sqrt10)
-      };
-    }
-
-    private static final double sqrt5  = FastMath.sqrt( 5.0);
-    private static final double sqrt10 = FastMath.sqrt(10.0);
-
-  }
-
-  private static class FreudensteinRothFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = 2892404999344244214L;
-
-    public FreudensteinRothFunction(double[] startParams,
-                                    double theoreticalStartCost,
-                                    double theoreticalMinCost,
-                                    double[] theoreticalMinParams) {
-      super(2, startParams, theoreticalMinCost,
-            theoreticalMinParams);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        return new DerivativeStructure[] {
-            
x1.subtract(13.0).add(x2.negate().add(5.0).multiply(x2).subtract(2).multiply(x2)),
-            
x1.subtract(29.0).add(x2.add(1).multiply(x2).subtract(14).multiply(x2))
-        };
-    }
-
-  }
-
-  private static class BardFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = 5990442612572087668L;
-
-    public BardFunction(double x0,
-                        double theoreticalStartCost,
-                        double theoreticalMinCost,
-                        double[] theoreticalMinParams) {
-      super(15, buildArray(3, x0), theoreticalMinCost,
-            theoreticalMinParams);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure   x1 = variables[0];
-        DerivativeStructure   x2 = variables[1];
-        DerivativeStructure   x3 = variables[2];
-        DerivativeStructure[] f = new DerivativeStructure[m];
-      for (int i = 0; i < m; ++i) {
-        double tmp1 = i + 1;
-        double tmp2 = 15 - i;
-        double tmp3 = (i <= 7) ? tmp1 : tmp2;
-        f[i] = 
x1.add(x2.multiply(tmp2).add(x3.multiply(tmp3)).reciprocal().multiply(tmp1)).negate().add(y[i]);
-      }
-      return f;
-    }
-
-    private static final double[] y = {
-      0.14, 0.18, 0.22, 0.25, 0.29,
-      0.32, 0.35, 0.39, 0.37, 0.58,
-      0.73, 0.96, 1.34, 2.10, 4.39
-    };
-
-  }
-
-  private static class KowalikOsborneFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = -4867445739880495801L;
-
-    public KowalikOsborneFunction(double[] startParams,
-                                  double theoreticalStartCost,
-                                  double theoreticalMinCost,
-                                  double[] theoreticalMinParams) {
-      super(11, startParams, theoreticalMinCost,
-            theoreticalMinParams);
-      if (theoreticalStartCost > 20.0) {
-        setCostAccuracy(2.0e-4);
-        setParamsAccuracy(5.0e-3);
-      }
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        DerivativeStructure x3 = variables[2];
-        DerivativeStructure x4 = variables[3];
-        DerivativeStructure[] f = new DerivativeStructure[m];
-        for (int i = 0; i < m; ++i) {
-            f[i] = 
x1.multiply(x2.add(v[i]).multiply(v[i])).divide(x4.add(x3.add(v[i]).multiply(v[i]))).negate().add(y[i]);
-        }
-        return f;
-    }
-
-    private static final double[] v = {
-      4.0, 2.0, 1.0, 0.5, 0.25, 0.167, 0.125, 0.1, 0.0833, 0.0714, 0.0625
-    };
-
-    private static final double[] y = {
-      0.1957, 0.1947, 0.1735, 0.1600, 0.0844, 0.0627,
-      0.0456, 0.0342, 0.0323, 0.0235, 0.0246
-    };
-
-  }
-
-  private static class MeyerFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = -838060619150131027L;
-
-    public MeyerFunction(double[] startParams,
-                         double theoreticalStartCost,
-                         double theoreticalMinCost,
-                         double[] theoreticalMinParams) {
-      super(16, startParams, theoreticalMinCost,
-            theoreticalMinParams);
-      if (theoreticalStartCost > 1.0e6) {
-        setCostAccuracy(7.0e-3);
-        setParamsAccuracy(2.0e-2);
-      }
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        DerivativeStructure x3 = variables[2];
-        DerivativeStructure[] f = new DerivativeStructure[m];
-      for (int i = 0; i < m; ++i) {
-        f[i] = x1.multiply(x2.divide(x3.add(5.0 * (i + 1) + 
45.0)).exp()).subtract(y[i]);
-      }
-     return f;
-    }
-
-    private static final double[] y = {
-      34780.0, 28610.0, 23650.0, 19630.0,
-      16370.0, 13720.0, 11540.0,  9744.0,
-       8261.0,  7030.0,  6005.0,  5147.0,
-       4427.0,  3820.0,  3307.0,  2872.0
-    };
-
-  }
-
-  private static class WatsonFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = -9034759294980218927L;
-
-    public WatsonFunction(int n, double x0,
-                          double theoreticalStartCost,
-                          double theoreticalMinCost,
-                          double[] theoreticalMinParams) {
-      super(31, buildArray(n, x0), theoreticalMinCost,
-            theoreticalMinParams);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure[] f = new DerivativeStructure[m];
-        for (int i = 0; i < (m - 2); ++i) {
-            double div = (i + 1) / 29.0;
-            DerivativeStructure s1 = variables[0].getField().getZero();
-            DerivativeStructure dx = variables[0].getField().getOne();
-            for (int j = 1; j < n; ++j) {
-                s1 = s1.add(dx.multiply(j).multiply(variables[j]));
-                dx = dx.multiply(div);
-            }
-            DerivativeStructure s2 = variables[0].getField().getZero();
-            dx = variables[0].getField().getOne();
-            for (int j = 0; j < n; ++j) {
-                s2 = s2.add(dx.multiply(variables[j]));
-                dx = dx.multiply(div);
-            }
-            f[i] = s1.subtract(s2.multiply(s2)).subtract(1);
-        }
-
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        f[m - 2] = x1;
-        f[m - 1] = x2.subtract(x1.multiply(x1)).subtract(1);
-
-        return f;
-
-    }
-
-  }
-
-  private static class Box3DimensionalFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = 5511403858142574493L;
-
-    public Box3DimensionalFunction(int m, double[] startParams,
-                                   double theoreticalStartCost) {
-      super(m, startParams, 0.0,
-            new double[] { 1.0, 10.0, 1.0 });
-   }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        DerivativeStructure x3 = variables[2];
-        DerivativeStructure[] f = new DerivativeStructure[m];
-      for (int i = 0; i < m; ++i) {
-        double tmp = (i + 1) / 10.0;
-        f[i] = x1.multiply(-tmp).exp().subtract(x2.multiply(-tmp).exp()).add(
-                  x3.multiply(FastMath.exp(-i - 1) - FastMath.exp(-tmp)));
-      }
-      return f;
-    }
-
-  }
-
-  private static class JennrichSampsonFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = -2489165190443352947L;
-
-    public JennrichSampsonFunction(int m, double[] startParams,
-                                   double theoreticalStartCost,
-                                   double theoreticalMinCost,
-                                   double[] theoreticalMinParams) {
-      super(m, startParams, theoreticalMinCost,
-            theoreticalMinParams);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        DerivativeStructure[] f = new DerivativeStructure[m];
-        for (int i = 0; i < m; ++i) {
-            double temp = i + 1;
-            f[i] = 
x1.multiply(temp).exp().add(x2.multiply(temp).exp()).subtract(2 + 2 * 
temp).negate();
-        }
-        return f;
-    }
-
-  }
-
-  private static class BrownDennisFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = 8340018645694243910L;
-
-    public BrownDennisFunction(int m, double[] startParams,
-                               double theoreticalStartCost,
-                               double theoreticalMinCost,
-                               double[] theoreticalMinParams) {
-      super(m, startParams, theoreticalMinCost,
-            theoreticalMinParams);
-      setCostAccuracy(2.5e-8);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        DerivativeStructure x3 = variables[2];
-        DerivativeStructure x4 = variables[3];
-        DerivativeStructure[] f = new DerivativeStructure[m];
-        for (int i = 0; i < m; ++i) {
-            double temp = (i + 1) / 5.0;
-            DerivativeStructure tmp1 = 
x1.add(x2.multiply(temp)).subtract(FastMath.exp(temp));
-            DerivativeStructure tmp2 = 
x3.add(x4.multiply(FastMath.sin(temp))).subtract(FastMath.cos(temp));
-            f[i] = tmp1.multiply(tmp1).add(tmp2.multiply(tmp2));
-        }
-        return f;
-    }
-
-  }
-
-  private static class ChebyquadFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = -2394877275028008594L;
-
-    private static double[] buildChebyquadArray(int n, double factor) {
-      double[] array = new double[n];
-      double inv = factor / (n + 1);
-      for (int i = 0; i < n; ++i) {
-        array[i] = (i + 1) * inv;
-      }
-      return array;
-    }
-
-    public ChebyquadFunction(int n, int m, double factor,
-                             double theoreticalStartCost,
-                             double theoreticalMinCost,
-                             double[] theoreticalMinParams) {
-      super(m, buildChebyquadArray(n, factor), theoreticalMinCost,
-            theoreticalMinParams);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-
-        DerivativeStructure[] f = new DerivativeStructure[m];
-        Arrays.fill(f, variables[0].getField().getZero());
-
-        for (int j = 0; j < n; ++j) {
-            DerivativeStructure tmp1 = variables[0].getField().getOne();
-            DerivativeStructure tmp2 = variables[j].multiply(2).subtract(1);
-            DerivativeStructure temp = tmp2.multiply(2);
-            for (int i = 0; i < m; ++i) {
-                f[i] = f[i].add(tmp2);
-                DerivativeStructure ti = temp.multiply(tmp2).subtract(tmp1);
-                tmp1 = tmp2;
-                tmp2 = ti;
-            }
-        }
-
-        double dx = 1.0 / n;
-        boolean iev = false;
-        for (int i = 0; i < m; ++i) {
-            f[i] = f[i].multiply(dx);
-            if (iev) {
-                f[i] = f[i].add(1.0 / (i * (i + 2)));
-            }
-            iev = ! iev;
-        }
-
-        return f;
-
-    }
-
-  }
-
-  private static class BrownAlmostLinearFunction extends MinpackFunction {
-
-    private static final long serialVersionUID = 8239594490466964725L;
-
-    public BrownAlmostLinearFunction(int m, double factor,
-                                     double theoreticalStartCost,
-                                     double theoreticalMinCost,
-                                     double[] theoreticalMinParams) {
-      super(m, buildArray(m, factor), theoreticalMinCost,
-            theoreticalMinParams);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure[] f = new DerivativeStructure[m];
-        DerivativeStructure sum  = 
variables[0].getField().getZero().subtract(n + 1);
-        DerivativeStructure prod = variables[0].getField().getOne();
-      for (int j = 0; j < n; ++j) {
-        sum  = sum.add(variables[j]);
-        prod = prod.multiply(variables[j]);
-      }
-      for (int i = 0; i < n; ++i) {
-        f[i] = variables[i].add(sum);
-      }
-      f[n - 1] = prod.subtract(1);
-      return f;
-    }
-
-  }
-
-  private static class Osborne1Function extends MinpackFunction {
-
-    private static final long serialVersionUID = 4006743521149849494L;
-
-    public Osborne1Function(double[] startParams,
-                            double theoreticalStartCost,
-                            double theoreticalMinCost,
-                            double[] theoreticalMinParams) {
-      super(33, startParams, theoreticalMinCost,
-            theoreticalMinParams);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x1 = variables[0];
-        DerivativeStructure x2 = variables[1];
-        DerivativeStructure x3 = variables[2];
-        DerivativeStructure x4 = variables[3];
-        DerivativeStructure x5 = variables[4];
-        DerivativeStructure[] f = new DerivativeStructure[m];
-      for (int i = 0; i < m; ++i) {
-        double temp = 10.0 * i;
-        DerivativeStructure tmp1 = x4.multiply(-temp).exp();
-        DerivativeStructure tmp2 = x5.multiply(-temp).exp();
-        f[i] = 
x1.add(x2.multiply(tmp1)).add(x3.multiply(tmp2)).negate().add(y[i]);
-      }
-      return f;
-    }
-
-    private static final double[] y = {
-      0.844, 0.908, 0.932, 0.936, 0.925, 0.908, 0.881, 0.850, 0.818, 0.784, 
0.751,
-      0.718, 0.685, 0.658, 0.628, 0.603, 0.580, 0.558, 0.538, 0.522, 0.506, 
0.490,
-      0.478, 0.467, 0.457, 0.448, 0.438, 0.431, 0.424, 0.420, 0.414, 0.411, 
0.406
-    };
-
-  }
-
-  private static class Osborne2Function extends MinpackFunction {
-
-    private static final long serialVersionUID = -8418268780389858746L;
-
-    public Osborne2Function(double[] startParams,
-                            double theoreticalStartCost,
-                            double theoreticalMinCost,
-                            double[] theoreticalMinParams) {
-      super(65, startParams, theoreticalMinCost,
-            theoreticalMinParams);
-    }
-
-    @Override
-    public DerivativeStructure[] value(DerivativeStructure[] variables) {
-        DerivativeStructure x01 = variables[0];
-        DerivativeStructure x02 = variables[1];
-        DerivativeStructure x03 = variables[2];
-        DerivativeStructure x04 = variables[3];
-        DerivativeStructure x05 = variables[4];
-        DerivativeStructure x06 = variables[5];
-        DerivativeStructure x07 = variables[6];
-        DerivativeStructure x08 = variables[7];
-        DerivativeStructure x09 = variables[8];
-        DerivativeStructure x10 = variables[9];
-        DerivativeStructure x11 = variables[10];
-        DerivativeStructure[] f = new DerivativeStructure[m];
-        for (int i = 0; i < m; ++i) {
-            double temp = i / 10.0;
-            DerivativeStructure tmp1 = x05.multiply(-temp).exp();
-            DerivativeStructure tmp2 = 
x06.negate().multiply(x09.subtract(temp).multiply(x09.subtract(temp))).exp();
-            DerivativeStructure tmp3 = 
x07.negate().multiply(x10.subtract(temp).multiply(x10.subtract(temp))).exp();
-            DerivativeStructure tmp4 = 
x08.negate().multiply(x11.subtract(temp).multiply(x11.subtract(temp))).exp();
-            f[i] = 
x01.multiply(tmp1).add(x02.multiply(tmp2)).add(x03.multiply(tmp3)).add(x04.multiply(tmp4)).negate().add(y[i]);
-        }
-        return f;
-    }
-
-    private static final double[] y = {
-      1.366, 1.191, 1.112, 1.013, 0.991,
-      0.885, 0.831, 0.847, 0.786, 0.725,
-      0.746, 0.679, 0.608, 0.655, 0.616,
-      0.606, 0.602, 0.626, 0.651, 0.724,
-      0.649, 0.649, 0.694, 0.644, 0.624,
-      0.661, 0.612, 0.558, 0.533, 0.495,
-      0.500, 0.423, 0.395, 0.375, 0.372,
-      0.391, 0.396, 0.405, 0.428, 0.429,
-      0.523, 0.562, 0.607, 0.653, 0.672,
-      0.708, 0.633, 0.668, 0.645, 0.632,
-      0.591, 0.559, 0.597, 0.625, 0.739,
-      0.710, 0.729, 0.720, 0.636, 0.581,
-      0.428, 0.292, 0.162, 0.098, 0.054
-    };
-
-  }
-
-}

Reply via email to