GALAHAD is a threadsafe library of modern Fortran packages for solving nonlinear optimization problems. Many of the packages have C and Matlab interfaces, and extensions to both Python and Julia are underway. At present, the areas covered by the library are unconstrained and boundconstrained optimization, linear and quadratic programming, nonlinear programming, systems of nonlinear equations and inequalities, nonlinear least squares problems and global optimization. GALAHAD contains the following major packages:
LANCELOT B
is the latest release of LANCELOT, and is designed to solve largescale optimization problems involving the minimization of a nonlinear objective, subject (perhaps) to linear or nonlinear equality and box constraints. All functions involved are assumed to be group partially separable, and the minimization is based on a Sequential Augmented Lagrangian algorithm. The new release is coded in Fortran 95, allows for a nonmonotone descent strategy, Moré and Toraldotype projections, optional use of Lin and Moré's ICFS preconditioner, structured trust regions, and more.
LANCELOT_SIMPLE

is a simpleminded interface to LANCELOT for small, dense problems.
 FILTRANE

is a package for finding a feasible point for a set of linear and/or nonlinear equations and inequalities using a multidimensional filter trustregion approach. In the event that the system is inconsistent, a local measure of infeasibility is minimized. Core linear algebraic requirements are handled by an adaptive preconditioned CG/Lanczos iteration.
 NLS

is a package for minimizing an objective function that is expressed as a sum of squares. Advantage can be taken of second derivatives to produce more accurate local models. Both direct and iterative procedures are used to solve core algebraic subproblems.
 TRU

solves the unconstrained optimization problem using a trustregion method. Both direct and iterative solution of core subproblems is possible, and there are many other "bells and whistles".
 ARC

solves the same problem using an adaptive cubic regularization method. Most of the features available with TRU are also present here.
 TRB

solves the boundconstrained optimization problem using a projected trustregion method. Both direct and iterative solution of core subproblems is possible, and again there are many other helpful features".
 QP

provides a unified interface to all the GALAHAD quadratic programs packages and enables optional automatic problem scaling and pre/postsolution.
 QPB

solves quadratic programs using a primaldual interiorpoint method globalized by means of a trust region. The method works in two phases, the first finding a feasible point for the set of constraints, while the second maintaining feasibility while iterating towards optimality. Once again, core linear algebraic requirements are handled by an adaptive preconditioned CG/Lanczos iteration.
 QPA

is an activeset quadratic programming solver which can also treat l_1 quadratic programs. At each iteration, a step is computed along a direction which solves an equalityconstrained quadratic program whose constraints are defined by a working subset of the currently active constraints. Although, in general, QPB is to be preferred, QPA is most useful when warmstarting a perturbation of a previouslysolved problem.
 QPC

is a crossover quadratic programming solver which applies successively QPB and QPA. The former is used to obtain a good estimate of the solution at low cost, while the latter refines the solution. Of particular note, the optimal active set given by QPC is more reliable than that from QPB.
 LSQP

uses a primaldual interiorpoint method to solve a linear or separable convex quadratic program. Alternatively, it may also be used to compute the analytic center of the feasible set, if it exists.
 WCP

uses a primaldual interiorpoint method to find a wellcentered interior point for a region defined by a finite number of linear equality and inequality constraints. If the region is feasible but has no interior, inequality constraints which must always be active are identified.
 CQP

solves convex quadratic programs using a highorder primaldual extrapolation method. The main design feature is to allow fast convergence even when the problem is degenerate using Puiseux rather than Taylor expansions.
 DQP

solves strictlyconvex quadratic programs using a dual gradientprojection method. The simplicity of the dual feasible region allows for fast iterative solution.
 PRESOLVE

is a quadratic program preprocessor. It aims to apply inexpensive transformations to a given quadratic program, so as to simplify it before passing it to one of the other GALAHAD solvers. Once the solver has completed its task, a postprocessing stage may be used to recover the original problem and its solution.
 LPB

solves linear programs using a highorder primaldual extrapolation methd, and is a simplification of QPB.
 LPA

solves linear programs using the simplex method, but in reality is simply a convenient wrapper to the HSL code LA04 that must be obtained separately.
 SCALE

provides a variety of quadratic program scaling schemes that try to remove the effects of poor problem scaling.
 TRS

solves the problem of minimizing a quadratic subject to an ellipsoidal trustregion constraint, by sparsematrix factorizaion. The algorithm may also be used to minimize the quadratic over the boundary of the trust region, and allows additional linear equality constraints
 RQS

solves the problem of minimizing a quadratic subject plus a regularisation term penalising a weighted twonorm of the variables, by sparsematrix factorization. Again, the algorithm permits additional linear equality constraints
 DPS

finds a norm so that the minimizer of the trustregion and regularized quadratic subproblems require a single factorization, and solves the resulting problems
 GLTR

solves the problem of minimizing a quadratic subject to an ellipsoidal trustregion constraint, using a Krylov method. The algorithm does not require any factorization of the Hessian and may also be used to minimize the quadratic over the boundary of the trust region.
 GLRT

solves the problem of minimizing a quadratic subject plus a regularisation term penalising a weighted twonorm of the variables, using a Krylov method. Again, the algorithm does not require any factorization of the Hessian.
 LSTR

solves the problem of minimizing the twonorn of the deviation Axb subject to an ellipsoidal trustregion constraint, using a Krylov method. The algorithm does not require any factorization of A.
 LSRT

solves the problem of minimizing the square of the twonorn of the deviation Axb plus a regularisation term penalising the twonorm of the variables, using a Krylov method. Again, the algorithm does not require any factorization of A.
 L2RT

solves the problem of minimizing the twonorn of the deviation Axb plus a regularisation term penalising the twonorm of the variables, using a Krylov method. Once again, the algorithm does not require any factorization of A.
 BLLS

solves the problem of minimizing the twonorn of the deviation Axb subject to lower and upper bounds on the variables, using a projected Krylov method. The algorithm does not require any factorization of A.
 EQP

solves quadratic programming problems for which all the constraints are equations.
 FDC

determines whether a system of linear equations is of full rank, and identifies a maximal subset which may be removed without changing the rank
 UGO

find the global minimizer of a smooth function of one variable over a specified finite interval.
 BGO

find an approximation to the global minimizer of a smooth function of several bounded variables using a combination of stochastic, deterministic and local optimization techniques.
 DGO

find an approximation to the global minimizer of a smooth function of several bounded variables using an enhanced partitionandbound method.
 SBLS

provides a variety of preconditioners which may be applied when solving saddle point (alternatively augmented, KKT) systems of linear equations.
 PSLS

provides a variety of preconditioners for sparse, unstructured symmetric matrices.
 SLS

provides a generic interface to a variety of external symmetric linear equation solvers (HSL, SPRAL, PARDISO, WSMP), some of which are designed for fast solution on sharedmemory multiprocressing system. Outofcore solution is also supported.
 ULS

provides a generic interface to a variety of external unsymmetric linear equation solvers from HSL. Future support for other solvers is planned.