At Fri, 12 Mar 2010 11:56:33 +0000, Brian Gough wrote: > At Fri, 5 Mar 2010 20:38:30 -0500 (EST), > Gallego Bonet, Guillermo wrote: > > I think it would be wise to replace, inside function > > intermediate_point(), the condition > > > > if (fb >= fa && stepb > 0.0) > > > > by > > > > if (fb >= fa && stepb > STEP_TOL) > > > > where one could define the tolerance to be any value related to the > > machine precision. I used > > > > #define STEP_TOL 1e-7 > > > > I tested the Fletcher-Reeves and PR algorithms ( > > gsl_multimin_fdfminimizer_conjugate_fr(), ... ) to minimize an > > expensive cost function in R^4 and I was surprised that the function > > gsl_multimin_fdfminimizer_iterate() would take so long to return. I > > found out it was because the line minimization routine was testing > > many smaller and smaller steps (up to 10^-186 !!, which I believe is > > totally unnecessary in any practical situation). > > Thanks for the bug report. I agree the test could be stricter -- I > think the correct approach is to return when the step is small enough > that it does not alter the trial vector.
I've committed a fix for this, the routines now return immediately with GSL_ENOPROG as soon as the trial point does not change (within machine precision). Thanks for the bug report. -- Brian Gough (GSL Maintainer) Network Theory Ltd, Publishing the GSL Manual - http://www.network-theory.co.uk/gsl/manual/ _______________________________________________ Bug-gsl mailing list [email protected] http://lists.gnu.org/mailman/listinfo/bug-gsl
