changeset 30019:593796903cf4

glpk: prefer passing variables by reference where possible * __glpk__.cc (glpk): Pass time, status, fmin, and par variables by reference instead of using pointers.
author John W. Eaton <jwe@octave.org>
date Thu, 19 Aug 2021 23:01:40 -0400
parents 09d97b7bc904
children 5ac6440c053d
files libinterp/dldfcn/__glpk__.cc
diffstat 1 files changed, 42 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/dldfcn/__glpk__.cc	Thu Aug 19 22:57:36 2021 -0400
+++ b/libinterp/dldfcn/__glpk__.cc	Thu Aug 19 23:01:40 2021 -0400
@@ -82,15 +82,15 @@
 glpk (int sense, int n, int m, double *c, int nz, int *rn, int *cn,
       double *a, double *b, char *ctype, int *freeLB, double *lb,
       int *freeUB, double *ub, int *vartype, int isMIP, int lpsolver,
-      int save_pb, int scale, const control_params *par,
-      double *xmin, double *fmin, int *status,
-      double *lambda, double *redcosts, double *time)
+      int save_pb, int scale, const control_params& par,
+      double *xmin, double& fmin, int& status,
+      double *lambda, double *redcosts, double& time)
 {
   int typx = 0;
   int errnum = 0;
 
-  *time = 0.0;
-  *status = -1;    // Initialize status to "bad" value
+  time = 0.0;
+  status = -1;    // Initialize status to "bad" value
 
   clock_t t_start = clock ();
 
@@ -181,34 +181,34 @@
     }
 
   // scale the problem data
-  if (! par->presol || lpsolver != 1)
+  if (! par.presol || lpsolver != 1)
     glp_scale_prob (lp, scale);
 
   // build advanced initial basis (if required)
-  if (lpsolver == 1 && ! par->presol)
+  if (lpsolver == 1 && ! par.presol)
     glp_adv_basis (lp, 0);
 
   // For MIP problems without a presolver, a first pass with glp_simplex
   // is required
   if ((! isMIP && lpsolver == 1)
-      || (isMIP && ! par->presol))
+      || (isMIP && ! par.presol))
     {
       glp_smcp smcp;
       glp_init_smcp (&smcp);
-      smcp.msg_lev = par->msglev;
-      smcp.meth = par->dual;
-      smcp.pricing = par->price;
-      smcp.r_test = par->rtest;
-      smcp.tol_bnd = par->tolbnd;
-      smcp.tol_dj = par->toldj;
-      smcp.tol_piv = par->tolpiv;
-      smcp.obj_ll = par->objll;
-      smcp.obj_ul = par->objul;
-      smcp.it_lim = par->itlim;
-      smcp.tm_lim = par->tmlim;
-      smcp.out_frq = par->outfrq;
-      smcp.out_dly = par->outdly;
-      smcp.presolve = par->presol;
+      smcp.msg_lev = par.msglev;
+      smcp.meth = par.dual;
+      smcp.pricing = par.price;
+      smcp.r_test = par.rtest;
+      smcp.tol_bnd = par.tolbnd;
+      smcp.tol_dj = par.toldj;
+      smcp.tol_piv = par.tolpiv;
+      smcp.obj_ll = par.objll;
+      smcp.obj_ul = par.objul;
+      smcp.it_lim = par.itlim;
+      smcp.tm_lim = par.tmlim;
+      smcp.out_frq = par.outfrq;
+      smcp.out_dly = par.outdly;
+      smcp.presolve = par.presol;
       errnum = glp_simplex (lp, &smcp);
     }
 
@@ -216,15 +216,15 @@
     {
       glp_iocp iocp;
       glp_init_iocp (&iocp);
-      iocp.msg_lev = par->msglev;
-      iocp.br_tech = par->branch;
-      iocp.bt_tech = par->btrack;
-      iocp.tol_int = par->tolint;
-      iocp.tol_obj = par->tolobj;
-      iocp.tm_lim = par->tmlim;
-      iocp.out_frq = par->outfrq;
-      iocp.out_dly = par->outdly;
-      iocp.presolve = par->presol;
+      iocp.msg_lev = par.msglev;
+      iocp.br_tech = par.branch;
+      iocp.bt_tech = par.btrack;
+      iocp.tol_int = par.tolint;
+      iocp.tol_obj = par.tolobj;
+      iocp.tm_lim = par.tmlim;
+      iocp.out_frq = par.outfrq;
+      iocp.out_dly = par.outdly;
+      iocp.presolve = par.presol;
       errnum = glp_intopt (lp, &iocp);
     }
 
@@ -232,7 +232,7 @@
     {
       glp_iptcp iptcp;
       glp_init_iptcp (&iptcp);
-      iptcp.msg_lev = par->msglev;
+      iptcp.msg_lev = par.msglev;
       errnum = glp_interior (lp, &iptcp);
     }
 
@@ -240,20 +240,20 @@
     {
       if (isMIP)
         {
-          *status = glp_mip_status (lp);
-          *fmin = glp_mip_obj_val (lp);
+          status = glp_mip_status (lp);
+          fmin = glp_mip_obj_val (lp);
         }
       else
         {
           if (lpsolver == 1)
             {
-              *status = glp_get_status (lp);
-              *fmin = glp_get_obj_val (lp);
+              status = glp_get_status (lp);
+              fmin = glp_get_obj_val (lp);
             }
           else
             {
-              *status = glp_ipt_status (lp);
-              *fmin = glp_ipt_obj_val (lp);
+              status = glp_ipt_status (lp);
+              fmin = glp_ipt_obj_val (lp);
             }
         }
 
@@ -293,7 +293,7 @@
         }
     }
 
-  *time = (clock () - t_start) / CLOCKS_PER_SEC;
+  time = (clock () - t_start) / CLOCKS_PER_SEC;
 
   glp_delete_prob (lp);
   // Request that GLPK free all memory resources.
@@ -615,9 +615,9 @@
                      cn.fortran_vec (), a.fortran_vec (), b, ctype,
                      freeLB.fortran_vec (), lb, freeUB.fortran_vec (),
                      ub, vartype.fortran_vec (), isMIP, lpsolver,
-                     save_pb, scale, &par, xmin.fortran_vec (), &fmin,
-                     &status, lambda.fortran_vec (),
-                     redcosts.fortran_vec (), &time);
+                     save_pb, scale, par, xmin.fortran_vec (), fmin,
+                     status, lambda.fortran_vec (),
+                     redcosts.fortran_vec (), time);
 
   octave_scalar_map extra;