## Initializing the Multidimensional Minimizer

The following function initializes a multidimensional minimizer. The minimizer itself depends only on the dimension of the problem and the algorithm and can be reused for different problems.

Function: gsl_multimin_fdfminimizer * gsl_multimin_fdfminimizer_alloc (const gsl_multimin_fdfminimizer_type *T, size_t n)
This function returns a pointer to a a newly allocated instance of a minimizer of type T for an n-dimension function. If there is insufficient memory to create the minimizer then the function returns a null pointer and the error handler is invoked with an error code of GSL_ENOMEM.

Function: int gsl_multimin_fdfminimizer_set (gsl_multimin_fdfminimizer * s, gsl_multimin_function_fdf *fdf, const gsl_vector * x, double step_size, double tol)
This function initializes the minimizer s to minimize the function fdf starting from the initial point x. The size of the first trial step is given by step_size. The accuracy of the line minimization is specified by tol. The precise meaning of this parameter depends on the method used. Typically the line minimization is considered successful if the gradient of the function @math{g} is orthogonal to the current search direction @math{p} to a relative accuracy of tol, where @c{$p\cdot g < tol |p| |g|$} @math{dot(p,g) < tol |p| |g|}.

Function: void gsl_multimin_fdfminimizer_free (gsl_multimin_fdfminimizer *s)
This function frees all the memory associated with the minimizer s.

Function: const char * gsl_multimin_fdfminimizer_name (const gsl_multimin_fdfminimizer * s)
This function returns a pointer to the name of the minimizer. For example,

printf("s is a '%s' minimizer\n",
gsl_multimin_fdfminimizer_name (s));


would print something like s is a 'conjugate_pr' minimizer.