Buggy code:
, new double [ ] { 0.085195 , 0.05682 } , new double [ ] { 0.0298 , - 0.019138 } , new double [ ] { - 0.02752 , - 0.072374 } , new double [ ] { - 0.102268 , - 0.091555 } , new double [ ] { - 0.200299 , - 0.106578 } , new double [ ] { - 0.292731 , - 0.091473 } , new double [ ] { - 0.356288 , - 0.051108 } , new double [ ] { - 0.420561 , 0.014926 } , new double [ ] { - 0.471036 , 0.074716 } , new double [ ] { - 0.488638 , 0.182508 } , new double [ ] { - 0.48599 , 0.254068 } , new double [ ] { - 0.463943 , 0.338438 } , new double [ ] { - 0.406453 , 0.404704 } , new double [ ] { - 0.334287 , 0.466119 } , new double [ ] { - 0.254244 , 0.503188 } , new double [ ] { - 0.161548 , 0.495769 } , new double [ ] { - 0.075733 , 0.49556 } , new double [ ] { 0.001375 , 0.434937 } , new double [ ] { 0.082787 , 0.385806 } , new double [ ] { 0.11549 , 0.323807 } , new double [ ] { 0.141089 , 0.22345 } , new double [ ] { 0.138693 , 0.131703 } , new double [ ] { 0.126415 , 0.049174 } , new double [ ] { 0.066518 , - 0.010217 } , new double [ ] { - 0.005184 , - 0.070647 } , new double [ ] { - 0.080985 , - 0.103635 } , new double [ ] { - 0.177377 , - 0.116887 } , new double [ ] { - 0.260628 , - 0.100258 } , new double [ ] { - 0.335756 , - 0.056251 } , new double [ ] { - 0.405195 , - 8.95E-4 } , new double [ ] { - 0.444937 , 0.085456 } , new double [ ] { - 0.484357 , 0.175597 } , new double [ ] { - 0.472453 , 0.248681 } , new double [ ] { - 0.43858 , 0.347463 } , new double [ ] { - 0.402304 , 0.422428 } , new double [ ] { - 0.326777 , 0.479438 } , new double [ ] { - 0.247797 , 0.505581 } , new double [ ] { - 0.152676 , 0.51938 } , new double [ ] { - 0.071754 , 0.516264 } , new double [ ] { 0.015942 , 0.472802 } , new double [ ] { 0.076608 , 0.419077 } , new double [ ] { 0.127673 , 0.330264 } , new double [ ] { 0.159951 , 0.26215 } , new double [ ] { 0.15353 , 0.172681 } , new double [ ] { 0.140653 , 0.089229 } , new double [ ] { 0.078666 , 0.024981 } , new double [ ] { 0.023807 , - 0.037022 } , new double [ ] { - 0.048837 , - 0.077056 } , new double [ ] { - 0.127729 , - 0.075338 } , new double [ ] { - 0.221271 , - 0.067526 } } ; double [ ] target = new double [ points . length ] ; Arrays . fill ( target , 0.0 ) ; double [ ] weights = new double [ points . length ] ; Arrays . fill ( weights , 2.0 ) ; for ( int i = 0 ; i < ( points . length ) ; ++ i ) { circle . addPoint ( points [ i ] [ 0 ] , points [ i ] [ 1 ] ) ; } LevenbergMarquardtOptimizer optimizer = new LevenbergMarquardtOptimizer ( ) ; <START_BUG> optimizer . setConvergenceChecker ( new SimpleVectorialValueChecker ( 1.0E-10 , 1.0E-10 ) ) ; <END_BUG> VectorialPointValuePair optimum = optimizer . optimize ( circle , target , weights , new double [ ] { - 12 , - 12 } ) ; Point2D . Double center = new Point2D . Double ( optimum . getPointRef ( ) [ 0 ] , optimum . getPointRef ( ) [ 1 ] ) ; assertTrue ( ( ( optimizer . getEvaluations ( ) ) < 25 ) ) ; assertTrue ( ( ( optimizer . getJacobianEvaluations ( ) ) < 20 ) ) ; assertEquals ( 0.043 , optimizer . getRMS ( ) , 0.001 ) ; assertEquals ( 0.292235 , circle . getRadius ( center ) , 1.0E-6 ) ; assertEquals ( ( - 0.151738 ) , center . x , 1.0E-6 ) ; assertEquals ( 0.2075001 , center . y , 1.0E-6 ) ; } public void testMath199 ( ) throws FunctionEvaluationException { } private static class LinearProblem implements Serializable , DifferentiableMultivariateVectorialFunction { private static final long serialVersionUID = 703247177355019415L ; final RealMatrix factors ; final double [ ] target ; public LinearProblem ( double [ ] [ ] factors , double [ ] target ) { } public double [ ] value ( double [ ] variables ) { } public MultivariateMatrixFunction jacobian ( ) { } } private static class Circle implements Serializable , DifferentiableMultivariateVectorialFunction { private static final long serialVersionUID = - 4711170319243817874L ; private ArrayList < Point2D . Double > points ; public Circle ( ) { } public void addPoint ( double px , double py ) { } public int getN ( ) { } public double getRadius ( Point2D . Double center ) { } private double [ ] [ ] jacobian ( double [ ] point ) { } public double [ ] value ( double [ ] variables ) throws IllegalArgumentException , FunctionEvaluationException { } public MultivariateMatrixFunction jacobian ( ) { } } private static class QuadraticProblem implements Serializable , DifferentiableMultivariateVectorialFunction { private static final long serialVersionUID = 7072187082052755854L ; private List < Double > x ;

Fix:
optimizer . setConvergenceChecker ( new SimpleVectorialValueChecker ( 1.0E-8 , 1.0E-8 ) ) ;