lssol(num_rows_a.i4.r, num_values_x.i4.r, num_constraints.i4.r, num_rows_c.i4.r, row_length_a.i4.r, constr_coeffs.r8a.r, lower_bounds.r8a.r, upper_bounds.r8a.r, cvec.r8a.r, constr_status.i4a.r, a_column_order.i4a.r, array_x.r8a.r, matrix_a.r8a.r, array_b.r8a.r, status.i4.r, num_iterations.i4.r, objective_value.r8.r, constr_lagrange.r8a.r, workspace.i4a.r, workspace_len.i4.r, real_workspace.r8a.r, real_work_len.i4.r) This routine solves linear least squares and convex quadratic programming problems. num_rows_a number of rows in "array_a" num_values_x number of values in "array_x" num_constraints number of general linear constraints num_rows_c number of rows in "array_c" row_length_a number of values in a row of "array_a" constr_coeffs constraint coefficients (at least "num_values_x" * "num_rows_c" values) lower_bounds lower bounds for constraints (at least "num_values_x" + "num_constraints" values) upper_bounds upper bounds for constraints (at least "num_values_x" + "num_constraints" values) cvec coefficients of the linear term of the objective function (at least "num_values_x" values) constr_status desired status of the constraints at the start of the feasibility phase (at least "num_values_x" + "num_constraints" values) a_column_order order of the columns of "matrix_a" with respect to the ordering of "array_x" (at least "num_values_x" values) array_x contains the initial estimate of the solution (at least "num_values_x" values) matrix_a input/output data matrix (at least "row_length_a" * "num_values_x" values) array_b input/output data array (at least "num_rows_a" values) status returned status value (0 -> "array_x" is a strong local minimum, 1 -> "array_x" is a weak local minimum, 2 -> solution appears to be unbounded, 3 -> no feasible point was found, 4 -> iteration limit was reached, 5 -> algorithm could be cycling, 6 -> invalid input parameter) num_iterations returned number of iterations performed in the feasibility and optimality phases objective_value value of the objective function at "array_x" if "array_x" is feasible or the sum of the infeasibilities otherwise constr_lagrange returned array of Lagrange multipliers for every constraint with respect to the current working set workspace workspace for LSSOL workspace_len length of "workspace" (at least "num_values_x" values) real_workspace workspace for LSSOL real_work_len length of "real_workspace" in double precision floats (at least 2 * ("num_constraints" + 1) ^ 2 + 6 * "num_values_x" + 6 * "num_constraints" values) This function requires the following include files: ul_lssol_h:lssol_h Related functions: lsoptn(_c), lsfile C usage: int num_rows_a = NUM_POSITIONS; int num_values_x = NUM_CORRECTORS; int num_constraints = 0; int num_rows_c = 1; int row_length_a = NUM_POSITIONS; int constr_status[NUM_CORRECTORS]; int a_column_order[NUM_CORRECTORS]; int workspace[NUM_CORRECTORS]; int workspace_len = NUM_CORRECTORS; int real_workspace_len = 9 * NUM_CORRECTORS; double constr_coeffs = 0.0; double lower_bounds[NUM_CORRECTORS]; double upper_bounds[NUM_CORRECTORS]; double cvec = 0.0; double array_x[NUM_CORRECTORS]; double matrix_a[NUM_CORRECTORS][NUM_POSITIONS]; double array_b[NUM_POSITIONS]; double constr_lagrange[NUM_CORRECTORS]; double real_workspace[9*NUM_CORRECTORS]; lssol(&num_rows_a,&num_values_x,&num_constraints,&num_rows_c, &row_length_a,&constr_coeffs,lower_bounds,upper_bounds, &cvec,constr_status,a_column_order,array_x,(double *) matrix_a, array_b,&status,&num_iterations,&objective_value, constr_lagrange,workspace,&workspace_len,real_workspace, &real_work_len);