lbfgsb 0.1.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,10 +3,9 @@
3
3
 
4
4
  #include <math.h>
5
5
 
6
- extern double dnrm2_(long *n, double *x, long *incx);
7
- extern int daxpy_(long *n, double *da, double *dx, long *incx, double *dy, long *incy);
8
- extern int dcopy_(long *n, double *dx, long *incx, double *dy, long *incy);
9
- extern double ddot_(long *n, double *dx, long *incx, double *dy, long *incy);
10
- extern int dscal_(long *n, double *da, double *dx, long *incx);
6
+ extern int lbfgsb_rb_daxpy_(long* n, double* da, double* dx, long* incx, double* dy, long* incy);
7
+ extern int lbfgsb_rb_dcopy_(long* n, double* dx, long* incx, double* dy, long* incy);
8
+ extern double lbfgsb_rb_ddot_(long* n, double* dx, long* incx, double* dy, long* incy);
9
+ extern int lbfgsb_rb_dscal_(long* n, double* da, double* dx, long* incx);
11
10
 
12
11
  #endif /* LBFGSB_RB_BLAS_H_ */
@@ -44,9 +44,9 @@
44
44
  * March 2011
45
45
  */
46
46
 
47
+ #include "lbfgsb.h"
47
48
  #include "blas.h"
48
49
  #include "linpack.h"
49
- #include "lbfgsb.h"
50
50
 
51
51
  static double c_b9 = 0.;
52
52
  static long c__1 = 1;
@@ -232,12 +232,8 @@ static double c_b282 = .1;
232
232
  * Ciyou Zhu
233
233
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
234
234
  */
235
- int setulb_(long *n, long *m, double *x,
236
- double *l, double *u, long *nbd, double *f, double *g,
237
- double *factr, double *pgtol, double *wa, long *iwa,
238
- char *task, long *iprint, char *csave, long *lsave,
239
- long *isave, double *dsave)
240
- {
235
+ int setulb_(long* n, long* m, double* x, double* l, double* u, long* nbd, double* f, double* g, double* factr, double* pgtol,
236
+ double* wa, long* iwa, char* task, long* iprint, char* csave, long* lsave, long* isave, double* dsave) {
241
237
  long i__1;
242
238
 
243
239
  static long ld, lr, lt, lz, lwa, lwn, lss, lxp, lws, lwt, lsy, lwy, lsnd;
@@ -287,11 +283,9 @@ int setulb_(long *n, long *m, double *x,
287
283
  lt = isave[14];
288
284
  lxp = isave[15];
289
285
  lwa = isave[16];
290
- mainlb_(n, m, &x[1], &l[1], &u[1], &nbd[1], f, &g[1], factr, pgtol, &wa[lws],
291
- &wa[lwy], &wa[lsy], &wa[lss], &wa[lwt], &wa[lwn], &wa[lsnd],
292
- &wa[lz], &wa[lr], &wa[ld], &wa[lt], &wa[lxp], &wa[lwa], &iwa[1],
293
- &iwa[*n + 1], &iwa[(*n << 1) + 1], task, iprint, csave, &lsave[1],
294
- &isave[22], &dsave[1]);
286
+ mainlb_(n, m, &x[1], &l[1], &u[1], &nbd[1], f, &g[1], factr, pgtol, &wa[lws], &wa[lwy], &wa[lsy], &wa[lss], &wa[lwt],
287
+ &wa[lwn], &wa[lsnd], &wa[lz], &wa[lr], &wa[ld], &wa[lt], &wa[lxp], &wa[lwa], &iwa[1], &iwa[*n + 1],
288
+ &iwa[(*n << 1) + 1], task, iprint, csave, &lsave[1], &isave[22], &dsave[1]);
295
289
  return 0;
296
290
  }
297
291
 
@@ -471,20 +465,14 @@ int setulb_(long *n, long *m, double *x,
471
465
  * Ciyou Zhu
472
466
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
473
467
  */
474
- int mainlb_(long *n, long *m, double *x,
475
- double *l, double *u, long *nbd, double *f, double *g,
476
- double *factr, double *pgtol, double *ws, double *wy,
477
- double *sy, double *ss, double *wt, double *wn,
478
- double *snd, double *z__, double *r__, double *d__,
479
- double *t, double *xp, double *wa, long *index,
480
- long *iwhere, long *indx2, char *task, long *iprint,
481
- char *csave, long *lsave, long *isave, double *dsave)
482
- {
483
- long ws_dim1, ws_offset, wy_dim1, wy_offset, sy_dim1, sy_offset,
484
- ss_dim1, ss_offset, wt_dim1, wt_offset, wn_dim1, wn_offset,
485
- snd_dim1, snd_offset, i__1;
468
+ int mainlb_(long* n, long* m, double* x, double* l, double* u, long* nbd, double* f, double* g, double* factr, double* pgtol,
469
+ double* ws, double* wy, double* sy, double* ss, double* wt, double* wn, double* snd, double* z__, double* r__,
470
+ double* d__, double* t, double* xp, double* wa, long* index, long* iwhere, long* indx2, char* task, long* iprint,
471
+ char* csave, long* lsave, long* isave, double* dsave) {
472
+ long ws_dim1, ws_offset, wy_dim1, wy_offset, sy_dim1, sy_offset, ss_dim1, ss_offset, wt_dim1, wt_offset, wn_dim1, wn_offset,
473
+ snd_dim1, snd_offset, i__1;
486
474
  double d__1, d__2;
487
- FILE *itfptr;
475
+ FILE* itfptr;
488
476
  static long i__, k;
489
477
  static double gd, dr, rr, dtd;
490
478
  static long col;
@@ -610,9 +598,8 @@ int mainlb_(long *n, long *m, double *x,
610
598
  /* Check the input arguments for errors. */
611
599
  errclb_(n, m, factr, &l[1], &u[1], &nbd[1], task, &info, &k);
612
600
  if (strncmp(task, "ERROR", 5) == 0) {
613
- prn3lb_(n, &x[1], f, task, iprint, &info, &itfile, &iter, &nfgv, &nintol,
614
- &nskip, &nact, &sbgnrm, &c_b9, &nseg, word, &iback,
615
- &stp, &xstep, &k, &cachyt, &sbtime, &lnscht);
601
+ prn3lb_(n, &x[1], f, task, iprint, &info, &itfile, &iter, &nfgv, &nintol, &nskip, &nact, &sbgnrm, &c_b9, &nseg, word,
602
+ &iback, &stp, &xstep, &k, &cachyt, &sbtime, &lnscht);
616
603
  return 0;
617
604
  }
618
605
  prn1lb_(n, m, &l[1], &u[1], &x[1], iprint, &itfile, &epsmch);
@@ -673,8 +660,8 @@ int mainlb_(long *n, long *m, double *x,
673
660
  if (strncmp(task, "STOP", 4) == 0) {
674
661
  if (strncmp(task + 6, "CPU", 3) == 0) {
675
662
  /* restore the previous iterate. */
676
- dcopy_(n, &t[1], &c__1, &x[1], &c__1);
677
- dcopy_(n, &r__[1], &c__1, &g[1], &c__1);
663
+ lbfgsb_rb_dcopy_(n, &t[1], &c__1, &x[1], &c__1);
664
+ lbfgsb_rb_dcopy_(n, &r__[1], &c__1, &g[1], &c__1);
678
665
  *f = fold;
679
666
  }
680
667
  goto L999;
@@ -707,9 +694,9 @@ L222:
707
694
  }
708
695
  iword = -1;
709
696
 
710
- if (! cnstnd && col > 0) {
697
+ if (!cnstnd && col > 0) {
711
698
  /* skip the search for GCP. */
712
- dcopy_(n, &x[1], &c__1, &z__[1], &c__1);
699
+ lbfgsb_rb_dcopy_(n, &x[1], &c__1, &z__[1], &c__1);
713
700
  wrk = updatd;
714
701
  nseg = 0;
715
702
  goto L333;
@@ -718,10 +705,9 @@ L222:
718
705
  * Compute the Generalized Cauchy Point (GCP).
719
706
  */
720
707
  timer_(&cpu1);
721
- cauchy_(n, &x[1], &l[1], &u[1], &nbd[1], &g[1], &indx2[1], &iwhere[1], &t[1],
722
- &d__[1], &z__[1], m, &wy[wy_offset], &ws[ws_offset], &sy[sy_offset],
723
- &wt[wt_offset], &theta, &col, &head, &wa[1], &wa[(*m << 1) + 1],
724
- &wa[(*m << 2) + 1], &wa[*m * 6 + 1], &nseg, iprint, &sbgnrm, &info, &epsmch);
708
+ cauchy_(n, &x[1], &l[1], &u[1], &nbd[1], &g[1], &indx2[1], &iwhere[1], &t[1], &d__[1], &z__[1], m, &wy[wy_offset],
709
+ &ws[ws_offset], &sy[sy_offset], &wt[wt_offset], &theta, &col, &head, &wa[1], &wa[(*m << 1) + 1], &wa[(*m << 2) + 1],
710
+ &wa[*m * 6 + 1], &nseg, iprint, &sbgnrm, &info, &epsmch);
725
711
  if (info != 0) {
726
712
  /* singular triangular system detected; refresh the lbfgs memory. */
727
713
  if (*iprint >= 1) {
@@ -762,9 +748,8 @@ L333:
762
748
  /* where E = [-I 0] */
763
749
  /* [ 0 I] */
764
750
  if (wrk) {
765
- formk_(n, &nfree, &index[1], &nenter, &ileave, &indx2[1], &iupdat, &updatd,
766
- &wn[wn_offset], &snd[snd_offset], m, &ws[ws_offset], &wy[wy_offset],
767
- &sy[sy_offset], &theta, &col, &head, &info);
751
+ formk_(n, &nfree, &index[1], &nenter, &ileave, &indx2[1], &iupdat, &updatd, &wn[wn_offset], &snd[snd_offset], m,
752
+ &ws[ws_offset], &wy[wy_offset], &sy[sy_offset], &theta, &col, &head, &info);
768
753
  }
769
754
  if (info != 0) {
770
755
  /* nonpositive definiteness in Cholesky factorization; */
@@ -786,16 +771,14 @@ L333:
786
771
  }
787
772
  /* compute r=-Z'B(xcp-xk)-Z'g (using wa(2m+1)=W'(xcp-x) */
788
773
  /* from 'cauchy'). */
789
- cmprlb_(n, m, &x[1], &g[1], &ws[ws_offset], &wy[wy_offset], &sy[sy_offset],
790
- &wt[wt_offset], &z__[1], &r__[1], &wa[1], &index[1], &theta, &col,
791
- &head, &nfree, &cnstnd, &info);
774
+ cmprlb_(n, m, &x[1], &g[1], &ws[ws_offset], &wy[wy_offset], &sy[sy_offset], &wt[wt_offset], &z__[1], &r__[1], &wa[1],
775
+ &index[1], &theta, &col, &head, &nfree, &cnstnd, &info);
792
776
  if (info != 0) {
793
777
  goto L444;
794
778
  }
795
779
  /* jlm-jn call the direct method. */
796
- subsm_(n, m, &nfree, &index[1], &l[1], &u[1], &nbd[1], &z__[1], &r__[1], &xp[1],
797
- &ws[ws_offset], &wy[wy_offset], &theta, &x[1], &g[1], &col,
798
- &head, &iword, &wa[1], &wn[wn_offset], iprint, &info);
780
+ subsm_(n, m, &nfree, &index[1], &l[1], &u[1], &nbd[1], &z__[1], &r__[1], &xp[1], &ws[ws_offset], &wy[wy_offset], &theta,
781
+ &x[1], &g[1], &col, &head, &iword, &wa[1], &wn[wn_offset], iprint, &info);
799
782
  L444:
800
783
  if (info != 0) {
801
784
  /* singular triangular system detected; */
@@ -828,14 +811,12 @@ L555:
828
811
  }
829
812
  timer_(&cpu1);
830
813
  L666:
831
- lnsrlb_(n, &l[1], &u[1], &nbd[1], &x[1], f, &fold, &gd, &gdold, &g[1],
832
- &d__[1], &r__[1], &t[1], &z__[1], &stp, &dnorm, &dtd, &xstep,
833
- &stpmx, &iter, &ifun, &iback, &nfgv, &info, task, &boxed, &cnstnd,
834
- csave, &isave[22], &dsave[17]);
814
+ lnsrlb_(n, &l[1], &u[1], &nbd[1], &x[1], f, &fold, &gd, &gdold, &g[1], &d__[1], &r__[1], &t[1], &z__[1], &stp, &dnorm, &dtd,
815
+ &xstep, &stpmx, &iter, &ifun, &iback, &nfgv, &info, task, &boxed, &cnstnd, csave, &isave[22], &dsave[17]);
835
816
  if (info != 0 || iback >= 20) {
836
817
  /* restore the previous iterate. */
837
- dcopy_(n, &t[1], &c__1, &x[1], &c__1);
838
- dcopy_(n, &r__[1], &c__1, &g[1], &c__1);
818
+ lbfgsb_rb_dcopy_(n, &t[1], &c__1, &x[1], &c__1);
819
+ lbfgsb_rb_dcopy_(n, &r__[1], &c__1, &g[1], &c__1);
839
820
  *f = fold;
840
821
  if (col == 0) {
841
822
  /* abnormal termination. */
@@ -881,8 +862,7 @@ L666:
881
862
  /* Compute the infinity norm of the projected (-)gradient. */
882
863
  projgr_(n, &l[1], &u[1], &nbd[1], &x[1], &g[1], &sbgnrm);
883
864
  /* Print iteration information. */
884
- prn2lb_(n, &x[1], f, &g[1], iprint, &itfile, &iter, &nfgv, &nact,
885
- &sbgnrm, &nseg, word, &iword, &iback, &stp, &xstep);
865
+ prn2lb_(n, &x[1], f, &g[1], iprint, &itfile, &iter, &nfgv, &nact, &sbgnrm, &nseg, word, &iword, &iback, &stp, &xstep);
886
866
  goto L1000;
887
867
  }
888
868
  L777:
@@ -910,13 +890,13 @@ L777:
910
890
  for (i__ = 1; i__ <= i__1; ++i__) {
911
891
  r__[i__] = g[i__] - r__[i__];
912
892
  }
913
- rr = ddot_(n, &r__[1], &c__1, &r__[1], &c__1);
893
+ rr = lbfgsb_rb_ddot_(n, &r__[1], &c__1, &r__[1], &c__1);
914
894
  if (stp == 1.) {
915
895
  dr = gd - gdold;
916
896
  ddum = -gdold;
917
897
  } else {
918
898
  dr = (gd - gdold) * stp;
919
- dscal_(n, &stp, &d__[1], &c__1);
899
+ lbfgsb_rb_dscal_(n, &stp, &d__[1], &c__1);
920
900
  ddum = -gdold * stp;
921
901
  }
922
902
  if (dr <= epsmch * ddum) {
@@ -934,9 +914,8 @@ L777:
934
914
  updatd = TRUE_;
935
915
  ++iupdat;
936
916
  /* Update matrices WS and WY and form the middle matrix in B. */
937
- matupd_(n, m, &ws[ws_offset], &wy[wy_offset], &sy[sy_offset],
938
- &ss[ss_offset], &d__[1], &r__[1], &itail, &iupdat, &col, &head,
939
- &theta, &rr, &dr, &stp, &dtd);
917
+ matupd_(n, m, &ws[ws_offset], &wy[wy_offset], &sy[sy_offset], &ss[ss_offset], &d__[1], &r__[1], &itail, &iupdat, &col, &head,
918
+ &theta, &rr, &dr, &stp, &dtd);
940
919
  /* Form the upper half of the pds T = theta*SS + L*D^(-1)*L'; */
941
920
  /* Store T in the upper triangular of the array wt; */
942
921
  /* Cholesky factorize T to J*J' with */
@@ -967,9 +946,8 @@ L888:
967
946
  L999:
968
947
  timer_(&time2);
969
948
  time = time2 - time1;
970
- prn3lb_(n, &x[1], f, task, iprint, &info, &itfile, &iter, &nfgv, &nintol,
971
- &nskip, &nact, &sbgnrm, &time, &nseg, word, &iback, &stp, &xstep,
972
- &k, &cachyt, &sbtime, &lnscht);
949
+ prn3lb_(n, &x[1], f, task, iprint, &info, &itfile, &iter, &nfgv, &nintol, &nskip, &nact, &sbgnrm, &time, &nseg, word, &iback,
950
+ &stp, &xstep, &k, &cachyt, &sbtime, &lnscht);
973
951
  L1000:
974
952
  /* Save local variables. */
975
953
  lsave[1] = prjctd;
@@ -1035,10 +1013,8 @@ L1000:
1035
1013
  * Ciyou Zhu
1036
1014
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
1037
1015
  */
1038
- int active_(long *n, double *l, double *u,
1039
- long *nbd, double *x, long *iwhere, long *iprint,
1040
- long *prjctd, long *cnstnd, long *boxed)
1041
- {
1016
+ int active_(long* n, double* l, double* u, long* nbd, double* x, long* iwhere, long* iprint, long* prjctd, long* cnstnd,
1017
+ long* boxed) {
1042
1018
  long i__1;
1043
1019
  static long i__, nbdd;
1044
1020
  --iwhere;
@@ -1080,7 +1056,7 @@ int active_(long *n, double *l, double *u,
1080
1056
  if (nbd[i__] == 0) {
1081
1057
  /* this variable is always free */
1082
1058
  iwhere[i__] = -1;
1083
- /* otherwise set x(i)=mid(x(i), u(i), l(i)). */
1059
+ /* otherwise set x(i)=mid(x(i), u(i), l(i)). */
1084
1060
  } else {
1085
1061
  *cnstnd = TRUE_;
1086
1062
  if (nbd[i__] == 2 && u[i__] - l[i__] <= 0.) {
@@ -1095,7 +1071,7 @@ int active_(long *n, double *l, double *u,
1095
1071
  if (*prjctd) {
1096
1072
  fprintf(stdout, " The initial X is infeasible. Restart with its projection.\n");
1097
1073
  }
1098
- if (! (*cnstnd)) {
1074
+ if (!(*cnstnd)) {
1099
1075
  fprintf(stdout, " This problem is unconstrained.\n");
1100
1076
  }
1101
1077
  }
@@ -1159,9 +1135,7 @@ int active_(long *n, double *l, double *u,
1159
1135
  * Ciyou Zhu
1160
1136
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
1161
1137
  */
1162
- int bmv_(long *m, double *sy, double *wt, long
1163
- *col, double *v, double *p, long *info)
1164
- {
1138
+ int bmv_(long* m, double* sy, double* wt, long* col, double* v, double* p, long* info) {
1165
1139
  long sy_dim1, sy_offset, wt_dim1, wt_offset, i__1, i__2;
1166
1140
  static long i__, k, i2;
1167
1141
  static double sum;
@@ -1193,7 +1167,7 @@ int bmv_(long *m, double *sy, double *wt, long
1193
1167
  p[i2] = v[i2] + sum;
1194
1168
  }
1195
1169
  /* Solve the triangular system */
1196
- dtrsl_(&wt[wt_offset], m, col, &p[*col + 1], &c__11, info);
1170
+ lbfgsb_rb_dtrsl_(&wt[wt_offset], m, col, &p[*col + 1], &c__11, info);
1197
1171
  if (*info != 0) {
1198
1172
  return 0;
1199
1173
  }
@@ -1205,7 +1179,7 @@ int bmv_(long *m, double *sy, double *wt, long
1205
1179
  /* PART II: solve [ -D^(1/2) D^(-1/2)*L' ] [ p1 ] = [ p1 ] */
1206
1180
  /* [ 0 J' ] [ p2 ] [ p2 ]. */
1207
1181
  /* solve J^Tp2=p2. */
1208
- dtrsl_(&wt[wt_offset], m, col, &p[*col + 1], &c__1, info);
1182
+ lbfgsb_rb_dtrsl_(&wt[wt_offset], m, col, &p[*col + 1], &c__1, info);
1209
1183
  if (*info != 0) {
1210
1184
  return 0;
1211
1185
  }
@@ -1400,14 +1374,10 @@ int bmv_(long *m, double *sy, double *wt, long
1400
1374
  * Ciyou Zhu
1401
1375
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
1402
1376
  */
1403
- int cauchy_(long *n, double *x, double *l,
1404
- double *u, long *nbd, double *g, long *iorder, long *iwhere,
1405
- double *t, double *d__, double *xcp, long *m,
1406
- double *wy, double *ws, double *sy, double *wt,
1407
- double *theta, long *col, long *head, double *p,
1408
- double *c__, double *wbp, double *v, long *nseg,
1409
- long *iprint, double *sbgnrm, long *info, double *epsmch)
1410
- {
1377
+ int cauchy_(long* n, double* x, double* l, double* u, long* nbd, double* g, long* iorder, long* iwhere, double* t, double* d__,
1378
+ double* xcp, long* m, double* wy, double* ws, double* sy, double* wt, double* theta, long* col, long* head,
1379
+ double* p, double* c__, double* wbp, double* v, long* nseg, long* iprint, double* sbgnrm, long* info,
1380
+ double* epsmch) {
1411
1381
  long wy_dim1, wy_offset, ws_dim1, ws_offset, sy_dim1, sy_offset, wt_dim1, wt_offset, i__1, i__2;
1412
1382
  double d__1;
1413
1383
  static long i__, j;
@@ -1463,7 +1433,7 @@ int cauchy_(long *n, double *x, double *l,
1463
1433
  if (*iprint >= 0) {
1464
1434
  fprintf(stdout, " Subgnorm = 0. GCP = X.\n");
1465
1435
  }
1466
- dcopy_(n, &x[1], &c__1, &xcp[1], &c__1);
1436
+ lbfgsb_rb_dcopy_(n, &x[1], &c__1, &xcp[1], &c__1);
1467
1437
  return 0;
1468
1438
  }
1469
1439
  bnded = TRUE_;
@@ -1562,10 +1532,10 @@ int cauchy_(long *n, double *x, double *l,
1562
1532
  /* The smallest of the nbreak breakpoints is in t(ibkmin)=bkmin. */
1563
1533
  if (*theta != 1.) {
1564
1534
  /* complete the initialization of p for theta not= one. */
1565
- dscal_(col, theta, &p[*col + 1], &c__1);
1535
+ lbfgsb_rb_dscal_(col, theta, &p[*col + 1], &c__1);
1566
1536
  }
1567
1537
  /* Initialize GCP xcp = x. */
1568
- dcopy_(n, &x[1], &c__1, &xcp[1], &c__1);
1538
+ lbfgsb_rb_dcopy_(n, &x[1], &c__1, &xcp[1], &c__1);
1569
1539
  if (nbreak == 0 && nfree == *n + 1) {
1570
1540
  /* is a zero vector, return with the initial xcp as GCP. */
1571
1541
  if (*iprint > 100) {
@@ -1596,7 +1566,7 @@ int cauchy_(long *n, double *x, double *l,
1596
1566
  if (*info != 0) {
1597
1567
  return 0;
1598
1568
  }
1599
- f2 -= ddot_(&col2, &v[1], &c__1, &p[1], &c__1);
1569
+ f2 -= lbfgsb_rb_ddot_(&col2, &v[1], &c__1, &p[1], &c__1);
1600
1570
  }
1601
1571
  dtm = -f1 / f2;
1602
1572
  tsum = 0.;
@@ -1685,7 +1655,7 @@ L777:
1685
1655
  f2 -= *theta * dibp2;
1686
1656
  if (*col > 0) {
1687
1657
  /* update c = c + dt*p. */
1688
- daxpy_(&col2, &dt, &p[1], &c__1, &c__[1], &c__1);
1658
+ lbfgsb_rb_daxpy_(&col2, &dt, &p[1], &c__1, &c__[1], &c__1);
1689
1659
  /* choose wbp, */
1690
1660
  /* the row of W corresponding to the breakpoint encountered. */
1691
1661
  pointr = *head;
@@ -1700,12 +1670,12 @@ L777:
1700
1670
  if (*info != 0) {
1701
1671
  return 0;
1702
1672
  }
1703
- wmc = ddot_(&col2, &c__[1], &c__1, &v[1], &c__1);
1704
- wmp = ddot_(&col2, &p[1], &c__1, &v[1], &c__1);
1705
- wmw = ddot_(&col2, &wbp[1], &c__1, &v[1], &c__1);
1673
+ wmc = lbfgsb_rb_ddot_(&col2, &c__[1], &c__1, &v[1], &c__1);
1674
+ wmp = lbfgsb_rb_ddot_(&col2, &p[1], &c__1, &v[1], &c__1);
1675
+ wmw = lbfgsb_rb_ddot_(&col2, &wbp[1], &c__1, &v[1], &c__1);
1706
1676
  /* update p = p - dibp*wbp. */
1707
1677
  d__1 = -dibp;
1708
- daxpy_(&col2, &d__1, &wbp[1], &c__1, &p[1], &c__1);
1678
+ lbfgsb_rb_daxpy_(&col2, &d__1, &wbp[1], &c__1, &p[1], &c__1);
1709
1679
  /* complete updating f1 and f2 while col > 0. */
1710
1680
  f1 += dibp * wmc;
1711
1681
  f2 = f2 + dibp * 2. * wmp - dibp2 * wmw;
@@ -1737,12 +1707,12 @@ L888:
1737
1707
  tsum += dtm;
1738
1708
  /* Move free variables (i.e., the ones w/o breakpoints) and */
1739
1709
  /* the variables whose breakpoints haven't been reached. */
1740
- daxpy_(n, &tsum, &d__[1], &c__1, &xcp[1], &c__1);
1710
+ lbfgsb_rb_daxpy_(n, &tsum, &d__[1], &c__1, &xcp[1], &c__1);
1741
1711
  L999:
1742
1712
  /* Update c = c + dtm*p = W'(x^c - x) */
1743
1713
  /* which will be used in computing r = Z'(B(x^c - x) + g). */
1744
1714
  if (*col > 0) {
1745
- daxpy_(&col2, &dtm, &p[1], &c__1, &c__[1], &c__1);
1715
+ lbfgsb_rb_daxpy_(&col2, &dtm, &p[1], &c__1, &c__[1], &c__1);
1746
1716
  }
1747
1717
  if (*iprint > 100) {
1748
1718
  fprintf(stdout, "Cauchy X = \n");
@@ -1782,12 +1752,8 @@ L999:
1782
1752
  * Ciyou Zhu
1783
1753
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
1784
1754
  */
1785
- int cmprlb_(long *n, long *m, double *x,
1786
- double *g, double *ws, double *wy, double *sy,
1787
- double *wt, double *z__, double *r__, double *wa,
1788
- long *index, double *theta, long *col, long *head,
1789
- long *nfree, long *cnstnd, long *info)
1790
- {
1755
+ int cmprlb_(long* n, long* m, double* x, double* g, double* ws, double* wy, double* sy, double* wt, double* z__, double* r__,
1756
+ double* wa, long* index, double* theta, long* col, long* head, long* nfree, long* cnstnd, long* info) {
1791
1757
  long ws_dim1, ws_offset, wy_dim1, wy_offset, sy_dim1, sy_offset, wt_dim1, wt_offset, i__1, i__2;
1792
1758
  static long i__, j, k;
1793
1759
  static double a1, a2;
@@ -1812,7 +1778,7 @@ int cmprlb_(long *n, long *m, double *x,
1812
1778
  ws_offset = 1 + ws_dim1;
1813
1779
  ws -= ws_offset;
1814
1780
 
1815
- if (! (*cnstnd) && *col > 0) {
1781
+ if (!(*cnstnd) && *col > 0) {
1816
1782
  i__1 = *n;
1817
1783
  for (i__ = 1; i__ <= i__1; ++i__) {
1818
1784
  r__[i__] = -g[i__];
@@ -1858,9 +1824,7 @@ int cmprlb_(long *n, long *m, double *x,
1858
1824
  * Ciyou Zhu
1859
1825
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
1860
1826
  */
1861
- int errclb_(long *n, long *m, double *factr,
1862
- double *l, double *u, long *nbd, char *task, long *info, long *k)
1863
- {
1827
+ int errclb_(long* n, long* m, double* factr, double* l, double* u, long* nbd, char* task, long* info, long* k) {
1864
1828
  long i__1;
1865
1829
  static long i__;
1866
1830
  --nbd;
@@ -2017,14 +1981,9 @@ int errclb_(long *n, long *m, double *factr,
2017
1981
  * Ciyou Zhu
2018
1982
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
2019
1983
  */
2020
- int formk_(long *n, long *nsub, long *ind, long *nenter,
2021
- long *ileave, long *indx2, long *iupdat, long *updatd,
2022
- double *wn, double *wn1, long *m, double *ws,
2023
- double *wy, double *sy, double *theta, long *col,
2024
- long *head, long *info)
2025
- {
2026
- long wn_dim1, wn_offset, wn1_dim1, wn1_offset, ws_dim1, ws_offset,
2027
- wy_dim1, wy_offset, sy_dim1, sy_offset, i__1, i__2, i__3;
1984
+ int formk_(long* n, long* nsub, long* ind, long* nenter, long* ileave, long* indx2, long* iupdat, long* updatd, double* wn,
1985
+ double* wn1, long* m, double* ws, double* wy, double* sy, double* theta, long* col, long* head, long* info) {
1986
+ long wn_dim1, wn_offset, wn1_dim1, wn1_offset, ws_dim1, ws_offset, wy_dim1, wy_offset, sy_dim1, sy_offset, i__1, i__2, i__3;
2028
1987
  static long i__, k, k1, m2, is, js, iy, jy, is1, js1, col2, dend, pend;
2029
1988
  static long upcl;
2030
1989
  static double temp1, temp2, temp3, temp4;
@@ -2060,11 +2019,11 @@ int formk_(long *n, long *nsub, long *ind, long *nenter,
2060
2019
  for (jy = 1; jy <= i__1; ++jy) {
2061
2020
  js = *m + jy;
2062
2021
  i__2 = *m - jy;
2063
- dcopy_(&i__2, &wn1[jy + 1 + (jy + 1) * wn1_dim1], &c__1, &wn1[jy + jy * wn1_dim1], &c__1);
2022
+ lbfgsb_rb_dcopy_(&i__2, &wn1[jy + 1 + (jy + 1) * wn1_dim1], &c__1, &wn1[jy + jy * wn1_dim1], &c__1);
2064
2023
  i__2 = *m - jy;
2065
- dcopy_(&i__2, &wn1[js + 1 + (js + 1) * wn1_dim1], &c__1, &wn1[js + js * wn1_dim1], &c__1);
2024
+ lbfgsb_rb_dcopy_(&i__2, &wn1[js + 1 + (js + 1) * wn1_dim1], &c__1, &wn1[js + js * wn1_dim1], &c__1);
2066
2025
  i__2 = *m - 1;
2067
- dcopy_(&i__2, &wn1[*m + 2 + (jy + 1) * wn1_dim1], &c__1, &wn1[*m + 1 + jy * wn1_dim1], &c__1);
2026
+ lbfgsb_rb_dcopy_(&i__2, &wn1[*m + 2 + (jy + 1) * wn1_dim1], &c__1, &wn1[*m + 1 + jy * wn1_dim1], &c__1);
2068
2027
  }
2069
2028
  }
2070
2029
  /* put new rows in blocks (1,1), (2,1) and (2,2). */
@@ -2215,7 +2174,7 @@ int formk_(long *n, long *nsub, long *ind, long *nenter,
2215
2174
  /* [(-L_a +R_z)L'^-1 S'AA'S*theta ] */
2216
2175
  /* first Cholesky factor (1,1) block of wn to get LL' */
2217
2176
  /* with L' stored in the upper triangle of wn. */
2218
- dpofa_(&wn[wn_offset], &m2, col, info);
2177
+ lbfgsb_rb_dpofa_(&wn[wn_offset], &m2, col, info);
2219
2178
  if (*info != 0) {
2220
2179
  *info = -1;
2221
2180
  return 0;
@@ -2224,7 +2183,7 @@ int formk_(long *n, long *nsub, long *ind, long *nenter,
2224
2183
  col2 = *col << 1;
2225
2184
  i__1 = col2;
2226
2185
  for (js = *col + 1; js <= i__1; ++js) {
2227
- dtrsl_(&wn[wn_offset], &m2, col, &wn[js * wn_dim1 + 1], &c__11, info);
2186
+ lbfgsb_rb_dtrsl_(&wn[wn_offset], &m2, col, &wn[js * wn_dim1 + 1], &c__11, info);
2228
2187
  }
2229
2188
  /* Form S'AA'S*theta + (L^-1(-L_a'+R_z'))'L^-1(-L_a'+R_z') in the */
2230
2189
  /* upper triangle of (2,2) block of wn. */
@@ -2232,11 +2191,11 @@ int formk_(long *n, long *nsub, long *ind, long *nenter,
2232
2191
  for (is = *col + 1; is <= i__1; ++is) {
2233
2192
  i__2 = col2;
2234
2193
  for (js = is; js <= i__2; ++js) {
2235
- wn[is + js * wn_dim1] += ddot_(col, &wn[is * wn_dim1 + 1], &c__1, &wn[js * wn_dim1 + 1], &c__1);
2194
+ wn[is + js * wn_dim1] += lbfgsb_rb_ddot_(col, &wn[is * wn_dim1 + 1], &c__1, &wn[js * wn_dim1 + 1], &c__1);
2236
2195
  }
2237
2196
  }
2238
2197
  /* Cholesky factorization of (2,2) block of wn. */
2239
- dpofa_(&wn[*col + 1 + (*col + 1) * wn_dim1], &m2, col, info);
2198
+ lbfgsb_rb_dpofa_(&wn[*col + 1 + (*col + 1) * wn_dim1], &m2, col, info);
2240
2199
  if (*info != 0) {
2241
2200
  *info = -2;
2242
2201
  return 0;
@@ -2265,9 +2224,7 @@ int formk_(long *n, long *nsub, long *ind, long *nenter,
2265
2224
  * Ciyou Zhu
2266
2225
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
2267
2226
  */
2268
- int formt_(long *m, double *wt, double *sy,
2269
- double *ss, long *col, double *theta, long *info)
2270
- {
2227
+ int formt_(long* m, double* wt, double* sy, double* ss, long* col, double* theta, long* info) {
2271
2228
  long wt_dim1, wt_offset, sy_dim1, sy_offset, ss_dim1, ss_offset, i__1, i__2, i__3;
2272
2229
  static long i__, j, k, k1;
2273
2230
  static double ddum;
@@ -2303,7 +2260,7 @@ int formt_(long *m, double *wt, double *sy,
2303
2260
  }
2304
2261
  /* Cholesky factorize T to J*J' with */
2305
2262
  /* J' stored in the upper triangle of wt. */
2306
- dpofa_(&wt[wt_offset], m, col, info);
2263
+ lbfgsb_rb_dpofa_(&wt[wt_offset], m, col, info);
2307
2264
  if (*info != 0) {
2308
2265
  *info = -3;
2309
2266
  }
@@ -2343,11 +2300,8 @@ int formt_(long *m, double *wt, double *sy,
2343
2300
  * Ciyou Zhu
2344
2301
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
2345
2302
  */
2346
- int freev_(long *n, long *nfree, long *index,
2347
- long *nenter, long *ileave, long *indx2, long *iwhere,
2348
- long *wrk, long *updatd, long *cnstnd, long *iprint,
2349
- long *iter)
2350
- {
2303
+ int freev_(long* n, long* nfree, long* index, long* nenter, long* ileave, long* indx2, long* iwhere, long* wrk, long* updatd,
2304
+ long* cnstnd, long* iprint, long* iter) {
2351
2305
  long i__1;
2352
2306
  static long i__, k, iact;
2353
2307
 
@@ -2385,7 +2339,7 @@ int freev_(long *n, long *nfree, long *index,
2385
2339
  }
2386
2340
  if (*iprint >= 99) {
2387
2341
  i__1 = *n + 1 - *ileave;
2388
- fprintf(stdout, " %2ld variables leave; %2ld variables enter\n", i__1, *nenter);
2342
+ fprintf(stdout, " %2ld variables leave; %2ld variables enter\n", i__1, *nenter);
2389
2343
  }
2390
2344
  }
2391
2345
  *wrk = *ileave < *n + 1 || *nenter > 0 || *updatd;
@@ -2448,8 +2402,7 @@ int freev_(long *n, long *nfree, long *index,
2448
2402
  * Ciyou Zhu
2449
2403
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
2450
2404
  */
2451
- int hpsolb_(long *n, double *t, long *iorder, long *iheap)
2452
- {
2405
+ int hpsolb_(long* n, double* t, long* iorder, long* iheap) {
2453
2406
  long i__1;
2454
2407
  static long i__, j, k;
2455
2408
  static double out, ddum;
@@ -2466,7 +2419,7 @@ int hpsolb_(long *n, double *t, long *iorder, long *iheap)
2466
2419
  indxin = iorder[k];
2467
2420
  /* Add ddum to the heap. */
2468
2421
  i__ = k;
2469
- L10:
2422
+ L10:
2470
2423
  if (i__ > 1) {
2471
2424
  j = i__ / 2;
2472
2425
  if (ddum < t[j]) {
@@ -2490,7 +2443,7 @@ L10:
2490
2443
  ddum = t[*n];
2491
2444
  indxin = iorder[*n];
2492
2445
  /* Restore the heap */
2493
- L30:
2446
+ L30:
2494
2447
  j = i__ + i__;
2495
2448
  if (j <= *n - 1) {
2496
2449
  if (t[j + 1] < t[j]) {
@@ -2534,15 +2487,10 @@ L30:
2534
2487
  * Ciyou Zhu
2535
2488
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
2536
2489
  */
2537
- int lnsrlb_(long *n, double *l, double *u,
2538
- long *nbd, double *x, double *f, double *fold,
2539
- double *gd, double *gdold, double *g, double *d__,
2540
- double *r__, double *t, double *z__, double *stp,
2541
- double *dnorm, double *dtd, double *xstep, double *stpmx,
2542
- long *iter, long *ifun, long *iback, long *nfgv,
2543
- long *info, char *task, long *boxed, long *cnstnd,
2544
- char *csave, long *isave, double *dsave)
2545
- {
2490
+ int lnsrlb_(long* n, double* l, double* u, long* nbd, double* x, double* f, double* fold, double* gd, double* gdold, double* g,
2491
+ double* d__, double* r__, double* t, double* z__, double* stp, double* dnorm, double* dtd, double* xstep,
2492
+ double* stpmx, long* iter, long* ifun, long* iback, long* nfgv, long* info, char* task, long* boxed, long* cnstnd,
2493
+ char* csave, long* isave, double* dsave) {
2546
2494
  long i__1;
2547
2495
  double d__1;
2548
2496
  static long i__;
@@ -2563,7 +2511,7 @@ int lnsrlb_(long *n, double *l, double *u,
2563
2511
  if (strncmp(task, "FG_LN", 5) == 0) {
2564
2512
  goto L556;
2565
2513
  }
2566
- *dtd = ddot_(n, &d__[1], &c__1, &d__[1], &c__1);
2514
+ *dtd = lbfgsb_rb_ddot_(n, &d__[1], &c__1, &d__[1], &c__1);
2567
2515
  *dnorm = sqrt(*dtd);
2568
2516
  /* Determine the maximum step length. */
2569
2517
  *stpmx = 1e10;
@@ -2594,20 +2542,20 @@ int lnsrlb_(long *n, double *l, double *u,
2594
2542
  }
2595
2543
  }
2596
2544
  }
2597
- if (*iter == 0 && ! (*boxed)) {
2545
+ if (*iter == 0 && !(*boxed)) {
2598
2546
  d__1 = 1. / *dnorm;
2599
2547
  *stp = d__1 <= *stpmx ? d__1 : *stpmx;
2600
2548
  } else {
2601
2549
  *stp = 1.;
2602
2550
  }
2603
- dcopy_(n, &x[1], &c__1, &t[1], &c__1);
2604
- dcopy_(n, &g[1], &c__1, &r__[1], &c__1);
2551
+ lbfgsb_rb_dcopy_(n, &x[1], &c__1, &t[1], &c__1);
2552
+ lbfgsb_rb_dcopy_(n, &g[1], &c__1, &r__[1], &c__1);
2605
2553
  *fold = *f;
2606
2554
  *ifun = 0;
2607
2555
  *iback = 0;
2608
2556
  strcpy(csave, "START");
2609
2557
  L556:
2610
- *gd = ddot_(n, &g[1], &c__1, &d__[1], &c__1);
2558
+ *gd = lbfgsb_rb_ddot_(n, &g[1], &c__1, &d__[1], &c__1);
2611
2559
  if (*ifun == 0) {
2612
2560
  *gdold = *gd;
2613
2561
  if (*gd >= 0.) {
@@ -2626,7 +2574,7 @@ L556:
2626
2574
  ++(*nfgv);
2627
2575
  *iback = *ifun - 1;
2628
2576
  if (*stp == 1.) {
2629
- dcopy_(n, &z__[1], &c__1, &x[1], &c__1);
2577
+ lbfgsb_rb_dcopy_(n, &z__[1], &c__1, &x[1], &c__1);
2630
2578
  } else {
2631
2579
  i__1 = *n;
2632
2580
  for (i__ = 1; i__ <= i__1; ++i__) {
@@ -2658,12 +2606,8 @@ L556:
2658
2606
  * Ciyou Zhu
2659
2607
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
2660
2608
  */
2661
- int matupd_(long *n, long *m, double *ws,
2662
- double *wy, double *sy, double *ss, double *d__,
2663
- double *r__, long *itail, long *iupdat, long *col,
2664
- long *head, double *theta, double *rr, double *dr,
2665
- double *stp, double *dtd)
2666
- {
2609
+ int matupd_(long* n, long* m, double* ws, double* wy, double* sy, double* ss, double* d__, double* r__, long* itail,
2610
+ long* iupdat, long* col, long* head, double* theta, double* rr, double* dr, double* stp, double* dtd) {
2667
2611
  long ws_dim1, ws_offset, wy_dim1, wy_offset, sy_dim1, sy_offset, ss_dim1, ss_offset, i__1, i__2;
2668
2612
  static long j;
2669
2613
  static long pointr;
@@ -2693,8 +2637,8 @@ int matupd_(long *n, long *m, double *ws,
2693
2637
  *head = *head % *m + 1;
2694
2638
  }
2695
2639
  /* Update matrices WS and WY. */
2696
- dcopy_(n, &d__[1], &c__1, &ws[*itail * ws_dim1 + 1], &c__1);
2697
- dcopy_(n, &r__[1], &c__1, &wy[*itail * wy_dim1 + 1], &c__1);
2640
+ lbfgsb_rb_dcopy_(n, &d__[1], &c__1, &ws[*itail * ws_dim1 + 1], &c__1);
2641
+ lbfgsb_rb_dcopy_(n, &r__[1], &c__1, &wy[*itail * wy_dim1 + 1], &c__1);
2698
2642
  /* Set theta=yy/ys. */
2699
2643
  *theta = *rr / *dr;
2700
2644
  /* Form the middle matrix in B. */
@@ -2704,9 +2648,9 @@ int matupd_(long *n, long *m, double *ws,
2704
2648
  /* move old information */
2705
2649
  i__1 = *col - 1;
2706
2650
  for (j = 1; j <= i__1; ++j) {
2707
- dcopy_(&j, &ss[(j + 1) * ss_dim1 + 2], &c__1, &ss[j * ss_dim1 + 1], &c__1);
2651
+ lbfgsb_rb_dcopy_(&j, &ss[(j + 1) * ss_dim1 + 2], &c__1, &ss[j * ss_dim1 + 1], &c__1);
2708
2652
  i__2 = *col - j;
2709
- dcopy_(&i__2, &sy[j + 1 + (j + 1) * sy_dim1], &c__1, &sy[j + j * sy_dim1], &c__1);
2653
+ lbfgsb_rb_dcopy_(&i__2, &sy[j + 1 + (j + 1) * sy_dim1], &c__1, &sy[j + j * sy_dim1], &c__1);
2710
2654
  }
2711
2655
  }
2712
2656
  /* add new information: the last row of SY */
@@ -2714,8 +2658,8 @@ int matupd_(long *n, long *m, double *ws,
2714
2658
  pointr = *head;
2715
2659
  i__1 = *col - 1;
2716
2660
  for (j = 1; j <= i__1; ++j) {
2717
- sy[*col + j * sy_dim1] = ddot_(n, &d__[1], &c__1, &wy[pointr * wy_dim1 + 1], &c__1);
2718
- ss[j + *col * ss_dim1] = ddot_(n, &ws[pointr * ws_dim1 + 1], &c__1, &d__[1], &c__1);
2661
+ sy[*col + j * sy_dim1] = lbfgsb_rb_ddot_(n, &d__[1], &c__1, &wy[pointr * wy_dim1 + 1], &c__1);
2662
+ ss[j + *col * ss_dim1] = lbfgsb_rb_ddot_(n, &ws[pointr * ws_dim1 + 1], &c__1, &d__[1], &c__1);
2719
2663
  pointr = pointr % *m + 1;
2720
2664
  }
2721
2665
  if (*stp == 1.) {
@@ -2743,12 +2687,9 @@ int matupd_(long *n, long *m, double *ws,
2743
2687
  * Ciyou Zhu
2744
2688
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
2745
2689
  */
2746
- int prn1lb_(long *n, long *m, double *l,
2747
- double *u, double *x, long *iprint, long *itfile,
2748
- double *epsmch)
2749
- {
2690
+ int prn1lb_(long* n, long* m, double* l, double* u, double* x, long* iprint, long* itfile, double* epsmch) {
2750
2691
  long i__1;
2751
- FILE *itfptr;
2692
+ FILE* itfptr;
2752
2693
  static long i__;
2753
2694
 
2754
2695
  --x;
@@ -2840,14 +2781,11 @@ int prn1lb_(long *n, long *m, double *l,
2840
2781
  * Ciyou Zhu
2841
2782
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
2842
2783
  */
2843
- int prn2lb_(long *n, double *x, double *f,
2844
- double *g, long *iprint, long *itfile, long *iter,
2845
- long *nfgv, long *nact, double *sbgnrm, long *nseg, char*word,
2846
- long *iword, long *iback, double *stp, double *xstep)
2847
- {
2784
+ int prn2lb_(long* n, double* x, double* f, double* g, long* iprint, long* itfile, long* iter, long* nfgv, long* nact,
2785
+ double* sbgnrm, long* nseg, char* word, long* iword, long* iback, double* stp, double* xstep) {
2848
2786
  long i__1;
2849
2787
  static long i__, imod;
2850
- FILE *itfptr;
2788
+ FILE* itfptr;
2851
2789
  --g;
2852
2790
  --x;
2853
2791
 
@@ -2890,8 +2828,8 @@ int prn2lb_(long *n, double *x, double *f,
2890
2828
  }
2891
2829
  if (*iprint >= 1) {
2892
2830
  itfptr = fopen("iterate.dat", "a");
2893
- fprintf(itfptr, " %4ld %4ld %5ld %5ld %3s %4ld %7.1E %7.1E %10.3E %10.3E\n",
2894
- *iter, *nfgv, *nseg, *nact, word, *iback, *stp, *xstep, *sbgnrm, *f);
2831
+ fprintf(itfptr, " %4ld %4ld %5ld %5ld %3s %4ld %7.1E %7.1E %10.3E %10.3E\n", *iter, *nfgv, *nseg, *nact, word, *iback,
2832
+ *stp, *xstep, *sbgnrm, *f);
2895
2833
  fclose(itfptr);
2896
2834
  }
2897
2835
  return 0;
@@ -2913,15 +2851,11 @@ int prn2lb_(long *n, double *x, double *f,
2913
2851
  * Ciyou Zhu
2914
2852
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
2915
2853
  */
2916
- int prn3lb_(long *n, double *x, double *f, char *task,
2917
- long *iprint, long *info, long *itfile, long *iter,
2918
- long *nfgv, long *nintol, long *nskip, long *nact,
2919
- double *sbgnrm, double *time, long *nseg, char *word,
2920
- long *iback, double *stp, double *xstep, long *k,
2921
- double *cachyt, double *sbtime, double *lnscht)
2922
- {
2854
+ int prn3lb_(long* n, double* x, double* f, char* task, long* iprint, long* info, long* itfile, long* iter, long* nfgv,
2855
+ long* nintol, long* nskip, long* nact, double* sbgnrm, double* time, long* nseg, char* word, long* iback,
2856
+ double* stp, double* xstep, long* k, double* cachyt, double* sbtime, double* lnscht) {
2923
2857
  long i__1;
2924
- FILE *itfptr;
2858
+ FILE* itfptr;
2925
2859
  static long i__;
2926
2860
 
2927
2861
  --x;
@@ -3023,8 +2957,8 @@ L999:
3023
2957
  if (*iprint >= 1) {
3024
2958
  itfptr = fopen("iterate.dat", "a");
3025
2959
  if (*info == -4 || *info == -9) {
3026
- fprintf(itfptr, " %4ld %4ld %5ld %5ld %3s %4ld %7.1E %7.1E - -\n",
3027
- *iter, *nfgv, *nseg, *nact, word, *iback, *stp, *xstep);
2960
+ fprintf(itfptr, " %4ld %4ld %5ld %5ld %3s %4ld %7.1E %7.1E - -\n", *iter, *nfgv, *nseg, *nact, word,
2961
+ *iback, *stp, *xstep);
3028
2962
  }
3029
2963
  fprintf(itfptr, "\n");
3030
2964
  fprintf(itfptr, "%s\n", task);
@@ -3090,9 +3024,7 @@ L999:
3090
3024
  * Ciyou Zhu
3091
3025
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal.
3092
3026
  */
3093
- int projgr_(long *n, double *l, double *u,
3094
- long *nbd, double *x, double *g, double *sbgnrm)
3095
- {
3027
+ int projgr_(long* n, double* l, double* u, long* nbd, double* x, double* g, double* sbgnrm) {
3096
3028
  long i__1;
3097
3029
  double d__1, d__2;
3098
3030
  static long i__;
@@ -3299,13 +3231,9 @@ int projgr_(long *n, double *l, double *u,
3299
3231
  * Ciyou Zhu
3300
3232
  * in collaboration with R.H. Byrd, P. Lu-Chen and J. Nocedal
3301
3233
  */
3302
- int subsm_(long *n, long *m, long *nsub, long *ind,
3303
- double *l, double *u, long *nbd, double *x,
3304
- double *d__, double *xp, double *ws, double *wy,
3305
- double *theta, double *xx, double *gg, long *col,
3306
- long *head, long *iword, double *wv, double *wn,
3307
- long *iprint, long *info)
3308
- {
3234
+ int subsm_(long* n, long* m, long* nsub, long* ind, double* l, double* u, long* nbd, double* x, double* d__, double* xp,
3235
+ double* ws, double* wy, double* theta, double* xx, double* gg, long* col, long* head, long* iword, double* wv,
3236
+ double* wn, long* iprint, long* info) {
3309
3237
  long ws_dim1, ws_offset, wy_dim1, wy_offset, wn_dim1, wn_offset, i__1, i__2;
3310
3238
  double d__1, d__2;
3311
3239
  static long i__, j, k, m2;
@@ -3361,7 +3289,7 @@ int subsm_(long *n, long *m, long *nsub, long *ind,
3361
3289
  /* Compute wv:=K^(-1)wv. */
3362
3290
  m2 = *m << 1;
3363
3291
  col2 = *col << 1;
3364
- dtrsl_(&wn[wn_offset], &m2, &col2, &wv[1], &c__11, info);
3292
+ lbfgsb_rb_dtrsl_(&wn[wn_offset], &m2, &col2, &wv[1], &c__11, info);
3365
3293
  if (*info != 0) {
3366
3294
  return 0;
3367
3295
  }
@@ -3369,7 +3297,7 @@ int subsm_(long *n, long *m, long *nsub, long *ind,
3369
3297
  for (i__ = 1; i__ <= i__1; ++i__) {
3370
3298
  wv[i__] = -wv[i__];
3371
3299
  }
3372
- dtrsl_(&wn[wn_offset], &m2, &col2, &wv[1], &c__1, info);
3300
+ lbfgsb_rb_dtrsl_(&wn[wn_offset], &m2, &col2, &wv[1], &c__1, info);
3373
3301
  if (*info != 0) {
3374
3302
  return 0;
3375
3303
  }
@@ -3381,18 +3309,17 @@ int subsm_(long *n, long *m, long *nsub, long *ind,
3381
3309
  i__2 = *nsub;
3382
3310
  for (i__ = 1; i__ <= i__2; ++i__) {
3383
3311
  k = ind[i__];
3384
- d__[i__] = d__[i__] + wy[k + pointr * wy_dim1] * wv[jy] / *theta
3385
- + ws[k + pointr * ws_dim1] * wv[js];
3312
+ d__[i__] = d__[i__] + wy[k + pointr * wy_dim1] * wv[jy] / *theta + ws[k + pointr * ws_dim1] * wv[js];
3386
3313
  }
3387
3314
  pointr = pointr % *m + 1;
3388
3315
  }
3389
3316
  d__1 = 1. / *theta;
3390
- dscal_(nsub, &d__1, &d__[1], &c__1);
3317
+ lbfgsb_rb_dscal_(nsub, &d__1, &d__[1], &c__1);
3391
3318
 
3392
3319
  /* ----------------------------------------------------------------- */
3393
3320
  /* Let us try the projection, d is the Newton direction */
3394
3321
  *iword = 0;
3395
- dcopy_(n, &x[1], &c__1, &xp[1], &c__1);
3322
+ lbfgsb_rb_dcopy_(n, &x[1], &c__1, &xp[1], &c__1);
3396
3323
 
3397
3324
  i__1 = *nsub;
3398
3325
  for (i__ = 1; i__ <= i__1; ++i__) {
@@ -3445,7 +3372,7 @@ int subsm_(long *n, long *m, long *nsub, long *ind,
3445
3372
  dd_p__ += (x[i__] - xx[i__]) * gg[i__];
3446
3373
  }
3447
3374
  if (dd_p__ > 0.) {
3448
- dcopy_(n, &xp[1], &c__1, &x[1], &c__1);
3375
+ lbfgsb_rb_dcopy_(n, &xp[1], &c__1, &x[1], &c__1);
3449
3376
  fprintf(stderr, " Positive dir derivative in projection\n");
3450
3377
  fprintf(stderr, " Using the backtracking step\n");
3451
3378
  } else {
@@ -3637,11 +3564,8 @@ L911:
3637
3564
  * Argonne National Laboratory and University of Minnesota.
3638
3565
  * Brett M. Averick, Richard G. Carter, and Jorge J. More'.
3639
3566
  */
3640
- int dcsrch_(double *f, double *g, double *stp,
3641
- double *ftol, double *gtol, double *xtol,
3642
- double *stpmin, double *stpmax,
3643
- char *task, long *isave, double *dsave)
3644
- {
3567
+ int dcsrch_(double* f, double* g, double* stp, double* ftol, double* gtol, double* xtol, double* stpmin, double* stpmax,
3568
+ char* task, long* isave, double* dsave) {
3645
3569
 
3646
3570
  double d__1;
3647
3571
  static double fm, gm, fx, fy, gx, gy, fxm, fym, gxm, gym, stx, sty;
@@ -3917,11 +3841,8 @@ L1000:
3917
3841
  * Argonne National Laboratory and University of Minnesota.
3918
3842
  * Brett M. Averick and Jorge J. More'.
3919
3843
  */
3920
- int dcstep_(double *stx, double *fx, double *dx,
3921
- double *sty, double *fy, double *dy, double *stp,
3922
- double *fp, double *dp, long *brackt, double *stpmin,
3923
- double *stpmax)
3924
- {
3844
+ int dcstep_(double* stx, double* fx, double* dx, double* sty, double* fy, double* dy, double* stp, double* fp, double* dp,
3845
+ long* brackt, double* stpmin, double* stpmax) {
3925
3846
  double d__1, d__2, d__3;
3926
3847
  static double p, q, r__, s, sgnd, stpc, stpf, stpq, gamma, theta;
3927
3848
 
@@ -3953,10 +3874,10 @@ int dcstep_(double *stx, double *fx, double *dx,
3953
3874
  stpf = stpc + (stpq - stpc) / 2.;
3954
3875
  }
3955
3876
  *brackt = TRUE_;
3956
- /* Second case: A lower function value and derivatives of opposite */
3957
- /* sign. The minimum is bracketed. If the cubic step is farther from */
3958
- /* stp than the secant step, the cubic step is taken, otherwise the */
3959
- /* secant step is taken. */
3877
+ /* Second case: A lower function value and derivatives of opposite */
3878
+ /* sign. The minimum is bracketed. If the cubic step is farther from */
3879
+ /* stp than the secant step, the cubic step is taken, otherwise the */
3880
+ /* secant step is taken. */
3960
3881
  } else if (sgnd < 0.) {
3961
3882
  theta = (*fx - *fp) * 3. / (*stp - *stx) + *dx + *dp;
3962
3883
  d__1 = fabs(theta);
@@ -3980,8 +3901,8 @@ int dcstep_(double *stx, double *fx, double *dx,
3980
3901
  stpf = stpq;
3981
3902
  }
3982
3903
  *brackt = TRUE_;
3983
- /* Third case: A lower function value, derivatives of the same sign, */
3984
- /* and the magnitude of the derivative decreases. */
3904
+ /* Third case: A lower function value, derivatives of the same sign, */
3905
+ /* and the magnitude of the derivative decreases. */
3985
3906
  } else if (fabs(*dp) < fabs(*dx)) {
3986
3907
  /* The cubic step is computed only if the cubic tends to infinity */
3987
3908
  /* in the direction of the step or if the minimum of the cubic */
@@ -4041,10 +3962,10 @@ int dcstep_(double *stx, double *fx, double *dx,
4041
3962
  stpf = *stpmax <= stpf ? *stpmax : stpf;
4042
3963
  stpf = *stpmin >= stpf ? *stpmin : stpf;
4043
3964
  }
4044
- /* Fourth case: A lower function value, derivatives of the same sign, */
4045
- /* and the magnitude of the derivative does not decrease. If the */
4046
- /* minimum is not bracketed, the step is either stpmin or stpmax, */
4047
- /* otherwise the cubic step is taken. */
3965
+ /* Fourth case: A lower function value, derivatives of the same sign, */
3966
+ /* and the magnitude of the derivative does not decrease. If the */
3967
+ /* minimum is not bracketed, the step is either stpmin or stpmax, */
3968
+ /* otherwise the cubic step is taken. */
4048
3969
  } else {
4049
3970
  if (*brackt) {
4050
3971
  theta = (*fp - *fy) * 3. / (*sty - *stp) + *dy + *dp;
@@ -4052,7 +3973,7 @@ int dcstep_(double *stx, double *fx, double *dx,
4052
3973
  d__2 = fabs(*dy);
4053
3974
  d__1 = d__1 >= d__2 ? d__1 : d__2;
4054
3975
  d__2 = fabs(*dp);
4055
- s = d__1 >= d__2 ? d__1: d__2;
3976
+ s = d__1 >= d__2 ? d__1 : d__2;
4056
3977
  d__1 = theta / s;
4057
3978
  gamma = s * sqrt(d__1 * d__1 - *dy / s * (*dp / s));
4058
3979
  if (*stp > *sty) {
@@ -4089,8 +4010,7 @@ int dcstep_(double *stx, double *fx, double *dx,
4089
4010
  return 0;
4090
4011
  }
4091
4012
 
4092
- int timer_(double *ttime)
4093
- {
4013
+ int timer_(double* ttime) {
4094
4014
  *ttime = (double)clock() / CLOCKS_PER_SEC;
4095
4015
  return 0;
4096
4016
  }