private Results performTest( FunctionStoS func , FunctionStoS deriv , 
								 double initStep , double minStep , double maxStep )
	{
		CallCounterStoS f = new CallCounterStoS(func);
		CallCounterStoS d = new CallCounterStoS(deriv);

		LineSearch alg = createSearch();
		alg.setFunction(new Individual_to_CoupledDerivative(f,d),0);

		double valueZero = func.process(0);
		double derivZero = deriv.process(0);
		double valueInit = func.process(initStep);

		alg.init(valueZero,derivZero,valueInit,initStep,minStep,maxStep);
		
		for( int i = 0; i < 50 && !alg.iterate() ; i++ ){}
		double found = alg.getStep();
		double foundDeriv = deriv.process(found);

		if( verbose ) {
		System.out.printf("step{ init %4.1e final = %6.3f} deriv %9.2e  count f = %2d d = %2d\n", 
				initStep, found,foundDeriv, f.count, d.count);
		}

		Results ret = new Results();
		ret.numIterations = d.count;
		ret.deriv = foundDeriv;
		ret.f = func.process(found);
		ret.deriv = foundDeriv;
		ret.x = found;
		
		return ret;
	}
private Results performTest ( FunctionStoS func , FunctionStoS deriv , double initStep , double minStep , double maxStep ) { CallCounterStoS f = new CallCounterStoS ( func ) ; CallCounterStoS d = new CallCounterStoS ( deriv ) ; LineSearch alg = createSearch ( ) ; alg . setFunction ( new Individual_to_CoupledDerivative ( f , d ) , 0 ) ; double valueZero = func . process ( 0 ) ; double derivZero = deriv . process ( 0 ) ; double valueInit = func . process ( initStep ) ; alg . init ( valueZero , derivZero , valueInit , initStep , minStep , maxStep ) ; for ( int i = 0 ; i < 50 && ! alg . iterate ( ) ; i ++ ) { } double found = alg . getStep ( ) ; double foundDeriv = deriv . process ( found ) ; if ( verbose ) { System . out . printf ( "step{ init %4.1e final = %6.3f} deriv %9.2e  count f = %2d d = %2d\n" , initStep , found , foundDeriv , f . count , d . count ) ; } Results ret = new Results ( ) ; ret . numIterations = d . count ; ret . deriv = foundDeriv ; ret . f = func . process ( found ) ; ret . deriv = foundDeriv ; ret . x = found ; return ret ; }
Run the line search algorithm on the two inputs and compute statistics

@param func Function being searched
@param deriv Derivative being searched
@param initStep Initial step
@return statics