This report presents a package of robust and easy-to-use C subroutines for solving unconstrained and constrained non-linear optimization problems. The intention is that the routines should use the currently best algorithms available. All routines have standardized calls, and the user does not have to worry about special parameters controlling the iterations. For convenience we include an option for numerical checking of the user s implementation of the gradient. Note that another report  presents a collection of robust subroutines for both unconstrained and constrained optimization but not requiring gradient information. The parameter lists for the subroutines in both collections are similar so it is easy to switch between the gradient and the non-gradient methods. All of the subroutine names in this report start with MI1. The coresponding names of the non-gradient subroutines are obtained by changing 1 to 0. The present report is a new and updated version of a previous report NI-91-03 with the same title, . Both the previous and the present report describe a collection of subroutines, which have been translated from Fortran to C. The reason for writing the present report is that some of the C subroutines have been replaced by more effective and robust versions translated from the original Fortran subroutines to C by the Bandler Group, see . Also the test examples have been modi ed to some extent. For a description of the original Fortran subroutines see the report . The software changes are listed in Section 1.5.