lbfgsb 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 272abcfabc883d993bd0b9eae08b4e0d590524b4a5aea38bc7b1f8c92fb0a5b5
4
- data.tar.gz: 315ffe16183e0a08d236a9563cc6daa29db0931310b8d0cd2ccbd10810b2353e
3
+ metadata.gz: 38b3fbdad3f3976d24e542cdb86a2a8c2c4fdadf85948526c51e513dc2165343
4
+ data.tar.gz: 3a42da751483bb5b8d3940208b47da081388ba39c44c9cfc9b3eec0f41b6ec67
5
5
  SHA512:
6
- metadata.gz: 73b05d103b55055894fec49d587c78a798b94d7cc3333324a5e1331e1dd8ce30bb0ee0280f190e111cc04e3d31c3c16e06fce51c91fe004a7f59bcc05aa8f1c5
7
- data.tar.gz: 0ebcc71411a6fd7b9339d7c9a335277ba69eb74cb83f301de3c651bc243d1daef396b84e9904a680511d7f5f07ac1ff4af469d344f68b2ad2b41ff003b2c5534
6
+ metadata.gz: 00ca5c403a6871799f94540e91fb8ee8cbdf921ab81510408c6c75465f5db7ea9b911048b78c56933bac7ada91a6264b5f704f6f805ba126bc25c572e7327020
7
+ data.tar.gz: 36e5bfa35fc9bf58bfb5cb008c5c2efa4460a9fc76119d48d7dd9f92f0e4d61b851281e8a752a4dbb89b41bbbb2e8abdcc186f55366d3f115b2c861dad2617f8
@@ -1,3 +1,7 @@
1
+ ## 0.3.0
2
+ - Add library name prefix to functions derived from blas and linpack
3
+ to avoid errors due to collision with the blas functions called by numo-linalg.
4
+
1
5
  ## 0.2.0
2
6
  - Add an option to minimize method for calculating both function value and gradient vector using fnc.
3
7
  If true is given to jcb, fnc is assumed to return the function value and gardient vector as [f, g] array.
@@ -109,6 +109,7 @@ VALUE lbfgsb_min_l_bfgs_b(VALUE self,
109
109
  wa = ALLOC_N(double, (2 * m + 5) * n + 12 * m * m + 12 * m);
110
110
  iwa = ALLOC_N(long, 3 * n);
111
111
 
112
+ g_val = Qnil;
112
113
  f = 0.0;
113
114
  for (i = 0; i < n; g[i++] = 0.0);
114
115
  strcpy(task, "START");
@@ -5,37 +5,7 @@
5
5
  */
6
6
  #include "blas.h"
7
7
 
8
- double dnrm2_(long *n, double *x, long *incx)
9
- {
10
- long i__1, i__2;
11
- double ret_val, d__1, d__2, d__3;
12
- static long i__;
13
- static double scale;
14
-
15
- --x;
16
-
17
- ret_val = 0.;
18
- scale = 0.;
19
- i__1 = *n;
20
- i__2 = *incx;
21
- for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) {
22
- d__2 = scale, d__3 = (d__1 = x[i__], fabs(d__1));
23
- scale = d__2 >= d__3 ? d__2 : d__3;
24
- }
25
- if (scale == 0.) {
26
- return ret_val;
27
- }
28
- i__2 = *n;
29
- i__1 = *incx;
30
- for (i__ = 1; i__1 < 0 ? i__ >= i__2 : i__ <= i__2; i__ += i__1) {
31
- d__1 = x[i__] / scale;
32
- ret_val += d__1 * d__1;
33
- }
34
- ret_val = scale * sqrt(ret_val);
35
- return ret_val;
36
- }
37
-
38
- int daxpy_(long *n, double *da, double *dx, long *incx, double *dy, long *incy)
8
+ int lbfgsb_rb_daxpy_(long *n, double *da, double *dx, long *incx, double *dy, long *incy)
39
9
  {
40
10
  long i__1;
41
11
  static long i__, m, ix, iy, mp1;
@@ -100,7 +70,7 @@ L40:
100
70
  return 0;
101
71
  }
102
72
 
103
- int dcopy_(long *n, double *dx, long *incx, double *dy, long *incy)
73
+ int lbfgsb_rb_dcopy_(long *n, double *dx, long *incx, double *dy, long *incy)
104
74
  {
105
75
  long i__1;
106
76
  static long i__, m, ix, iy, mp1;
@@ -165,7 +135,7 @@ L40:
165
135
  return 0;
166
136
  }
167
137
 
168
- double ddot_(long *n, double *dx, long *incx, double *dy, long *incy)
138
+ double lbfgsb_rb_ddot_(long *n, double *dx, long *incx, double *dy, long *incy)
169
139
  {
170
140
  long i__1;
171
141
  double ret_val;
@@ -232,7 +202,7 @@ L60:
232
202
  return ret_val;
233
203
  }
234
204
 
235
- int dscal_(long *n, double *da, double *dx, long *incx)
205
+ int lbfgsb_rb_dscal_(long *n, double *da, double *dx, long *incx)
236
206
  {
237
207
  long i__1, i__2;
238
208
  static long i__, m, mp1, nincx;
@@ -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_ */
@@ -673,8 +673,8 @@ int mainlb_(long *n, long *m, double *x,
673
673
  if (strncmp(task, "STOP", 4) == 0) {
674
674
  if (strncmp(task + 6, "CPU", 3) == 0) {
675
675
  /* 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);
676
+ lbfgsb_rb_dcopy_(n, &t[1], &c__1, &x[1], &c__1);
677
+ lbfgsb_rb_dcopy_(n, &r__[1], &c__1, &g[1], &c__1);
678
678
  *f = fold;
679
679
  }
680
680
  goto L999;
@@ -709,7 +709,7 @@ L222:
709
709
 
710
710
  if (! cnstnd && col > 0) {
711
711
  /* skip the search for GCP. */
712
- dcopy_(n, &x[1], &c__1, &z__[1], &c__1);
712
+ lbfgsb_rb_dcopy_(n, &x[1], &c__1, &z__[1], &c__1);
713
713
  wrk = updatd;
714
714
  nseg = 0;
715
715
  goto L333;
@@ -834,8 +834,8 @@ L666:
834
834
  csave, &isave[22], &dsave[17]);
835
835
  if (info != 0 || iback >= 20) {
836
836
  /* 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);
837
+ lbfgsb_rb_dcopy_(n, &t[1], &c__1, &x[1], &c__1);
838
+ lbfgsb_rb_dcopy_(n, &r__[1], &c__1, &g[1], &c__1);
839
839
  *f = fold;
840
840
  if (col == 0) {
841
841
  /* abnormal termination. */
@@ -910,13 +910,13 @@ L777:
910
910
  for (i__ = 1; i__ <= i__1; ++i__) {
911
911
  r__[i__] = g[i__] - r__[i__];
912
912
  }
913
- rr = ddot_(n, &r__[1], &c__1, &r__[1], &c__1);
913
+ rr = lbfgsb_rb_ddot_(n, &r__[1], &c__1, &r__[1], &c__1);
914
914
  if (stp == 1.) {
915
915
  dr = gd - gdold;
916
916
  ddum = -gdold;
917
917
  } else {
918
918
  dr = (gd - gdold) * stp;
919
- dscal_(n, &stp, &d__[1], &c__1);
919
+ lbfgsb_rb_dscal_(n, &stp, &d__[1], &c__1);
920
920
  ddum = -gdold * stp;
921
921
  }
922
922
  if (dr <= epsmch * ddum) {
@@ -1193,7 +1193,7 @@ int bmv_(long *m, double *sy, double *wt, long
1193
1193
  p[i2] = v[i2] + sum;
1194
1194
  }
1195
1195
  /* Solve the triangular system */
1196
- dtrsl_(&wt[wt_offset], m, col, &p[*col + 1], &c__11, info);
1196
+ lbfgsb_rb_dtrsl_(&wt[wt_offset], m, col, &p[*col + 1], &c__11, info);
1197
1197
  if (*info != 0) {
1198
1198
  return 0;
1199
1199
  }
@@ -1205,7 +1205,7 @@ int bmv_(long *m, double *sy, double *wt, long
1205
1205
  /* PART II: solve [ -D^(1/2) D^(-1/2)*L' ] [ p1 ] = [ p1 ] */
1206
1206
  /* [ 0 J' ] [ p2 ] [ p2 ]. */
1207
1207
  /* solve J^Tp2=p2. */
1208
- dtrsl_(&wt[wt_offset], m, col, &p[*col + 1], &c__1, info);
1208
+ lbfgsb_rb_dtrsl_(&wt[wt_offset], m, col, &p[*col + 1], &c__1, info);
1209
1209
  if (*info != 0) {
1210
1210
  return 0;
1211
1211
  }
@@ -1463,7 +1463,7 @@ int cauchy_(long *n, double *x, double *l,
1463
1463
  if (*iprint >= 0) {
1464
1464
  fprintf(stdout, " Subgnorm = 0. GCP = X.\n");
1465
1465
  }
1466
- dcopy_(n, &x[1], &c__1, &xcp[1], &c__1);
1466
+ lbfgsb_rb_dcopy_(n, &x[1], &c__1, &xcp[1], &c__1);
1467
1467
  return 0;
1468
1468
  }
1469
1469
  bnded = TRUE_;
@@ -1562,10 +1562,10 @@ int cauchy_(long *n, double *x, double *l,
1562
1562
  /* The smallest of the nbreak breakpoints is in t(ibkmin)=bkmin. */
1563
1563
  if (*theta != 1.) {
1564
1564
  /* complete the initialization of p for theta not= one. */
1565
- dscal_(col, theta, &p[*col + 1], &c__1);
1565
+ lbfgsb_rb_dscal_(col, theta, &p[*col + 1], &c__1);
1566
1566
  }
1567
1567
  /* Initialize GCP xcp = x. */
1568
- dcopy_(n, &x[1], &c__1, &xcp[1], &c__1);
1568
+ lbfgsb_rb_dcopy_(n, &x[1], &c__1, &xcp[1], &c__1);
1569
1569
  if (nbreak == 0 && nfree == *n + 1) {
1570
1570
  /* is a zero vector, return with the initial xcp as GCP. */
1571
1571
  if (*iprint > 100) {
@@ -1596,7 +1596,7 @@ int cauchy_(long *n, double *x, double *l,
1596
1596
  if (*info != 0) {
1597
1597
  return 0;
1598
1598
  }
1599
- f2 -= ddot_(&col2, &v[1], &c__1, &p[1], &c__1);
1599
+ f2 -= lbfgsb_rb_ddot_(&col2, &v[1], &c__1, &p[1], &c__1);
1600
1600
  }
1601
1601
  dtm = -f1 / f2;
1602
1602
  tsum = 0.;
@@ -1685,7 +1685,7 @@ L777:
1685
1685
  f2 -= *theta * dibp2;
1686
1686
  if (*col > 0) {
1687
1687
  /* update c = c + dt*p. */
1688
- daxpy_(&col2, &dt, &p[1], &c__1, &c__[1], &c__1);
1688
+ lbfgsb_rb_daxpy_(&col2, &dt, &p[1], &c__1, &c__[1], &c__1);
1689
1689
  /* choose wbp, */
1690
1690
  /* the row of W corresponding to the breakpoint encountered. */
1691
1691
  pointr = *head;
@@ -1700,12 +1700,12 @@ L777:
1700
1700
  if (*info != 0) {
1701
1701
  return 0;
1702
1702
  }
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);
1703
+ wmc = lbfgsb_rb_ddot_(&col2, &c__[1], &c__1, &v[1], &c__1);
1704
+ wmp = lbfgsb_rb_ddot_(&col2, &p[1], &c__1, &v[1], &c__1);
1705
+ wmw = lbfgsb_rb_ddot_(&col2, &wbp[1], &c__1, &v[1], &c__1);
1706
1706
  /* update p = p - dibp*wbp. */
1707
1707
  d__1 = -dibp;
1708
- daxpy_(&col2, &d__1, &wbp[1], &c__1, &p[1], &c__1);
1708
+ lbfgsb_rb_daxpy_(&col2, &d__1, &wbp[1], &c__1, &p[1], &c__1);
1709
1709
  /* complete updating f1 and f2 while col > 0. */
1710
1710
  f1 += dibp * wmc;
1711
1711
  f2 = f2 + dibp * 2. * wmp - dibp2 * wmw;
@@ -1737,12 +1737,12 @@ L888:
1737
1737
  tsum += dtm;
1738
1738
  /* Move free variables (i.e., the ones w/o breakpoints) and */
1739
1739
  /* the variables whose breakpoints haven't been reached. */
1740
- daxpy_(n, &tsum, &d__[1], &c__1, &xcp[1], &c__1);
1740
+ lbfgsb_rb_daxpy_(n, &tsum, &d__[1], &c__1, &xcp[1], &c__1);
1741
1741
  L999:
1742
1742
  /* Update c = c + dtm*p = W'(x^c - x) */
1743
1743
  /* which will be used in computing r = Z'(B(x^c - x) + g). */
1744
1744
  if (*col > 0) {
1745
- daxpy_(&col2, &dtm, &p[1], &c__1, &c__[1], &c__1);
1745
+ lbfgsb_rb_daxpy_(&col2, &dtm, &p[1], &c__1, &c__[1], &c__1);
1746
1746
  }
1747
1747
  if (*iprint > 100) {
1748
1748
  fprintf(stdout, "Cauchy X = \n");
@@ -2060,11 +2060,11 @@ int formk_(long *n, long *nsub, long *ind, long *nenter,
2060
2060
  for (jy = 1; jy <= i__1; ++jy) {
2061
2061
  js = *m + jy;
2062
2062
  i__2 = *m - jy;
2063
- dcopy_(&i__2, &wn1[jy + 1 + (jy + 1) * wn1_dim1], &c__1, &wn1[jy + jy * wn1_dim1], &c__1);
2063
+ lbfgsb_rb_dcopy_(&i__2, &wn1[jy + 1 + (jy + 1) * wn1_dim1], &c__1, &wn1[jy + jy * wn1_dim1], &c__1);
2064
2064
  i__2 = *m - jy;
2065
- dcopy_(&i__2, &wn1[js + 1 + (js + 1) * wn1_dim1], &c__1, &wn1[js + js * wn1_dim1], &c__1);
2065
+ lbfgsb_rb_dcopy_(&i__2, &wn1[js + 1 + (js + 1) * wn1_dim1], &c__1, &wn1[js + js * wn1_dim1], &c__1);
2066
2066
  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);
2067
+ lbfgsb_rb_dcopy_(&i__2, &wn1[*m + 2 + (jy + 1) * wn1_dim1], &c__1, &wn1[*m + 1 + jy * wn1_dim1], &c__1);
2068
2068
  }
2069
2069
  }
2070
2070
  /* put new rows in blocks (1,1), (2,1) and (2,2). */
@@ -2215,7 +2215,7 @@ int formk_(long *n, long *nsub, long *ind, long *nenter,
2215
2215
  /* [(-L_a +R_z)L'^-1 S'AA'S*theta ] */
2216
2216
  /* first Cholesky factor (1,1) block of wn to get LL' */
2217
2217
  /* with L' stored in the upper triangle of wn. */
2218
- dpofa_(&wn[wn_offset], &m2, col, info);
2218
+ lbfgsb_rb_dpofa_(&wn[wn_offset], &m2, col, info);
2219
2219
  if (*info != 0) {
2220
2220
  *info = -1;
2221
2221
  return 0;
@@ -2224,7 +2224,7 @@ int formk_(long *n, long *nsub, long *ind, long *nenter,
2224
2224
  col2 = *col << 1;
2225
2225
  i__1 = col2;
2226
2226
  for (js = *col + 1; js <= i__1; ++js) {
2227
- dtrsl_(&wn[wn_offset], &m2, col, &wn[js * wn_dim1 + 1], &c__11, info);
2227
+ lbfgsb_rb_dtrsl_(&wn[wn_offset], &m2, col, &wn[js * wn_dim1 + 1], &c__11, info);
2228
2228
  }
2229
2229
  /* Form S'AA'S*theta + (L^-1(-L_a'+R_z'))'L^-1(-L_a'+R_z') in the */
2230
2230
  /* upper triangle of (2,2) block of wn. */
@@ -2232,11 +2232,11 @@ int formk_(long *n, long *nsub, long *ind, long *nenter,
2232
2232
  for (is = *col + 1; is <= i__1; ++is) {
2233
2233
  i__2 = col2;
2234
2234
  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);
2235
+ wn[is + js * wn_dim1] += lbfgsb_rb_ddot_(col, &wn[is * wn_dim1 + 1], &c__1, &wn[js * wn_dim1 + 1], &c__1);
2236
2236
  }
2237
2237
  }
2238
2238
  /* Cholesky factorization of (2,2) block of wn. */
2239
- dpofa_(&wn[*col + 1 + (*col + 1) * wn_dim1], &m2, col, info);
2239
+ lbfgsb_rb_dpofa_(&wn[*col + 1 + (*col + 1) * wn_dim1], &m2, col, info);
2240
2240
  if (*info != 0) {
2241
2241
  *info = -2;
2242
2242
  return 0;
@@ -2303,7 +2303,7 @@ int formt_(long *m, double *wt, double *sy,
2303
2303
  }
2304
2304
  /* Cholesky factorize T to J*J' with */
2305
2305
  /* J' stored in the upper triangle of wt. */
2306
- dpofa_(&wt[wt_offset], m, col, info);
2306
+ lbfgsb_rb_dpofa_(&wt[wt_offset], m, col, info);
2307
2307
  if (*info != 0) {
2308
2308
  *info = -3;
2309
2309
  }
@@ -2563,7 +2563,7 @@ int lnsrlb_(long *n, double *l, double *u,
2563
2563
  if (strncmp(task, "FG_LN", 5) == 0) {
2564
2564
  goto L556;
2565
2565
  }
2566
- *dtd = ddot_(n, &d__[1], &c__1, &d__[1], &c__1);
2566
+ *dtd = lbfgsb_rb_ddot_(n, &d__[1], &c__1, &d__[1], &c__1);
2567
2567
  *dnorm = sqrt(*dtd);
2568
2568
  /* Determine the maximum step length. */
2569
2569
  *stpmx = 1e10;
@@ -2600,14 +2600,14 @@ int lnsrlb_(long *n, double *l, double *u,
2600
2600
  } else {
2601
2601
  *stp = 1.;
2602
2602
  }
2603
- dcopy_(n, &x[1], &c__1, &t[1], &c__1);
2604
- dcopy_(n, &g[1], &c__1, &r__[1], &c__1);
2603
+ lbfgsb_rb_dcopy_(n, &x[1], &c__1, &t[1], &c__1);
2604
+ lbfgsb_rb_dcopy_(n, &g[1], &c__1, &r__[1], &c__1);
2605
2605
  *fold = *f;
2606
2606
  *ifun = 0;
2607
2607
  *iback = 0;
2608
2608
  strcpy(csave, "START");
2609
2609
  L556:
2610
- *gd = ddot_(n, &g[1], &c__1, &d__[1], &c__1);
2610
+ *gd = lbfgsb_rb_ddot_(n, &g[1], &c__1, &d__[1], &c__1);
2611
2611
  if (*ifun == 0) {
2612
2612
  *gdold = *gd;
2613
2613
  if (*gd >= 0.) {
@@ -2626,7 +2626,7 @@ L556:
2626
2626
  ++(*nfgv);
2627
2627
  *iback = *ifun - 1;
2628
2628
  if (*stp == 1.) {
2629
- dcopy_(n, &z__[1], &c__1, &x[1], &c__1);
2629
+ lbfgsb_rb_dcopy_(n, &z__[1], &c__1, &x[1], &c__1);
2630
2630
  } else {
2631
2631
  i__1 = *n;
2632
2632
  for (i__ = 1; i__ <= i__1; ++i__) {
@@ -2693,8 +2693,8 @@ int matupd_(long *n, long *m, double *ws,
2693
2693
  *head = *head % *m + 1;
2694
2694
  }
2695
2695
  /* 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);
2696
+ lbfgsb_rb_dcopy_(n, &d__[1], &c__1, &ws[*itail * ws_dim1 + 1], &c__1);
2697
+ lbfgsb_rb_dcopy_(n, &r__[1], &c__1, &wy[*itail * wy_dim1 + 1], &c__1);
2698
2698
  /* Set theta=yy/ys. */
2699
2699
  *theta = *rr / *dr;
2700
2700
  /* Form the middle matrix in B. */
@@ -2704,9 +2704,9 @@ int matupd_(long *n, long *m, double *ws,
2704
2704
  /* move old information */
2705
2705
  i__1 = *col - 1;
2706
2706
  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);
2707
+ lbfgsb_rb_dcopy_(&j, &ss[(j + 1) * ss_dim1 + 2], &c__1, &ss[j * ss_dim1 + 1], &c__1);
2708
2708
  i__2 = *col - j;
2709
- dcopy_(&i__2, &sy[j + 1 + (j + 1) * sy_dim1], &c__1, &sy[j + j * sy_dim1], &c__1);
2709
+ lbfgsb_rb_dcopy_(&i__2, &sy[j + 1 + (j + 1) * sy_dim1], &c__1, &sy[j + j * sy_dim1], &c__1);
2710
2710
  }
2711
2711
  }
2712
2712
  /* add new information: the last row of SY */
@@ -2714,8 +2714,8 @@ int matupd_(long *n, long *m, double *ws,
2714
2714
  pointr = *head;
2715
2715
  i__1 = *col - 1;
2716
2716
  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);
2717
+ sy[*col + j * sy_dim1] = lbfgsb_rb_ddot_(n, &d__[1], &c__1, &wy[pointr * wy_dim1 + 1], &c__1);
2718
+ ss[j + *col * ss_dim1] = lbfgsb_rb_ddot_(n, &ws[pointr * ws_dim1 + 1], &c__1, &d__[1], &c__1);
2719
2719
  pointr = pointr % *m + 1;
2720
2720
  }
2721
2721
  if (*stp == 1.) {
@@ -3361,7 +3361,7 @@ int subsm_(long *n, long *m, long *nsub, long *ind,
3361
3361
  /* Compute wv:=K^(-1)wv. */
3362
3362
  m2 = *m << 1;
3363
3363
  col2 = *col << 1;
3364
- dtrsl_(&wn[wn_offset], &m2, &col2, &wv[1], &c__11, info);
3364
+ lbfgsb_rb_dtrsl_(&wn[wn_offset], &m2, &col2, &wv[1], &c__11, info);
3365
3365
  if (*info != 0) {
3366
3366
  return 0;
3367
3367
  }
@@ -3369,7 +3369,7 @@ int subsm_(long *n, long *m, long *nsub, long *ind,
3369
3369
  for (i__ = 1; i__ <= i__1; ++i__) {
3370
3370
  wv[i__] = -wv[i__];
3371
3371
  }
3372
- dtrsl_(&wn[wn_offset], &m2, &col2, &wv[1], &c__1, info);
3372
+ lbfgsb_rb_dtrsl_(&wn[wn_offset], &m2, &col2, &wv[1], &c__1, info);
3373
3373
  if (*info != 0) {
3374
3374
  return 0;
3375
3375
  }
@@ -3387,12 +3387,12 @@ int subsm_(long *n, long *m, long *nsub, long *ind,
3387
3387
  pointr = pointr % *m + 1;
3388
3388
  }
3389
3389
  d__1 = 1. / *theta;
3390
- dscal_(nsub, &d__1, &d__[1], &c__1);
3390
+ lbfgsb_rb_dscal_(nsub, &d__1, &d__[1], &c__1);
3391
3391
 
3392
3392
  /* ----------------------------------------------------------------- */
3393
3393
  /* Let us try the projection, d is the Newton direction */
3394
3394
  *iword = 0;
3395
- dcopy_(n, &x[1], &c__1, &xp[1], &c__1);
3395
+ lbfgsb_rb_dcopy_(n, &x[1], &c__1, &xp[1], &c__1);
3396
3396
 
3397
3397
  i__1 = *nsub;
3398
3398
  for (i__ = 1; i__ <= i__1; ++i__) {
@@ -3445,7 +3445,7 @@ int subsm_(long *n, long *m, long *nsub, long *ind,
3445
3445
  dd_p__ += (x[i__] - xx[i__]) * gg[i__];
3446
3446
  }
3447
3447
  if (dd_p__ > 0.) {
3448
- dcopy_(n, &xp[1], &c__1, &x[1], &c__1);
3448
+ lbfgsb_rb_dcopy_(n, &xp[1], &c__1, &x[1], &c__1);
3449
3449
  fprintf(stderr, " Positive dir derivative in projection\n");
3450
3450
  fprintf(stderr, " Using the backtracking step\n");
3451
3451
  } else {
@@ -44,7 +44,7 @@ static long c__1 = 1;
44
44
  * linpack. this version dated 08/14/78 .
45
45
  * cleve moler, university of new mexico, argonne national lab.
46
46
  */
47
- int dpofa_(double *a, long *lda, long *n, long *info)
47
+ int lbfgsb_rb_dpofa_(double *a, long *lda, long *n, long *info)
48
48
  {
49
49
  long a_dim1, a_offset, i__1, i__2, i__3;
50
50
  static long j, k;
@@ -66,7 +66,7 @@ int dpofa_(double *a, long *lda, long *n, long *info)
66
66
  i__2 = jm1;
67
67
  for (k = 1; k <= i__2; ++k) {
68
68
  i__3 = k - 1;
69
- t = a[k + j * a_dim1] - ddot_(&i__3, &a[k * a_dim1 + 1], &c__1, &a[j * a_dim1 + 1], &c__1);
69
+ t = a[k + j * a_dim1] - lbfgsb_rb_ddot_(&i__3, &a[k * a_dim1 + 1], &c__1, &a[j * a_dim1 + 1], &c__1);
70
70
  t /= a[k + k * a_dim1];
71
71
  a[k + j * a_dim1] = t;
72
72
  s += t * t;
@@ -133,7 +133,7 @@ L40:
133
133
  * linpack. this version dated 08/14/78 .
134
134
  * g. w. stewart, university of maryland, argonne national lab.
135
135
  */
136
- int dtrsl_(double *t, long *ldt, long *n, double *b, long *job, long *info)
136
+ int lbfgsb_rb_dtrsl_(double *t, long *ldt, long *n, double *b, long *job, long *info)
137
137
  {
138
138
  long t_dim1, t_offset, i__1, i__2;
139
139
  static long j, jj, case__;
@@ -179,7 +179,7 @@ L20:
179
179
  for (j = 2; j <= i__1; ++j) {
180
180
  temp = -b[j - 1];
181
181
  i__2 = *n - j + 1;
182
- daxpy_(&i__2, &temp, &t[j + (j - 1) * t_dim1], &c__1, &b[j], &c__1);
182
+ lbfgsb_rb_daxpy_(&i__2, &temp, &t[j + (j - 1) * t_dim1], &c__1, &b[j], &c__1);
183
183
  b[j] /= t[j + j * t_dim1];
184
184
  }
185
185
  L40:
@@ -195,7 +195,7 @@ L50:
195
195
  for (jj = 2; jj <= i__1; ++jj) {
196
196
  j = *n - jj + 1;
197
197
  temp = -b[j + 1];
198
- daxpy_(&j, &temp, &t[(j + 1) * t_dim1 + 1], &c__1, &b[1], &c__1);
198
+ lbfgsb_rb_daxpy_(&j, &temp, &t[(j + 1) * t_dim1 + 1], &c__1, &b[1], &c__1);
199
199
  b[j] /= t[j + j * t_dim1];
200
200
  }
201
201
  L70:
@@ -211,7 +211,7 @@ L80:
211
211
  for (jj = 2; jj <= i__1; ++jj) {
212
212
  j = *n - jj + 1;
213
213
  i__2 = jj - 1;
214
- b[j] -= ddot_(&i__2, &t[j + 1 + j * t_dim1], &c__1, &b[j + 1], &c__1);
214
+ b[j] -= lbfgsb_rb_ddot_(&i__2, &t[j + 1 + j * t_dim1], &c__1, &b[j + 1], &c__1);
215
215
  b[j] /= t[j + j * t_dim1];
216
216
  }
217
217
  L100:
@@ -226,7 +226,7 @@ L110:
226
226
  i__1 = *n;
227
227
  for (j = 2; j <= i__1; ++j) {
228
228
  i__2 = j - 1;
229
- b[j] -= ddot_(&i__2, &t[j * t_dim1 + 1], &c__1, &b[1], &c__1);
229
+ b[j] -= lbfgsb_rb_ddot_(&i__2, &t[j * t_dim1 + 1], &c__1, &b[1], &c__1);
230
230
  b[j] /= t[j + j * t_dim1];
231
231
  }
232
232
  L130:
@@ -3,7 +3,7 @@
3
3
 
4
4
  #include <math.h>
5
5
 
6
- extern int dpofa_(double *a, long *lda, long *n, long *info);
7
- extern int dtrsl_(double *t, long *ldt, long *n, double *b, long *job, long *info);
6
+ extern int lbfgsb_rb_dpofa_(double *a, long *lda, long *n, long *info);
7
+ extern int lbfgsb_rb_dtrsl_(double *t, long *ldt, long *n, double *b, long *job, long *info);
8
8
 
9
9
  #endif /* LBFGSB_RB_LINPACK_H_ */
@@ -3,5 +3,5 @@
3
3
  # Lbfgsb.rb is a Ruby binding for L-BFGS-B with Numo::NArray.
4
4
  module Lbfgsb
5
5
  # The version of Lbfgsb.rb you are using.
6
- VERSION = '0.2.0'
6
+ VERSION = '0.3.0'
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lbfgsb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yoshoku
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-14 00:00:00.000000000 Z
11
+ date: 2020-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: numo-narray
@@ -77,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
77
  - !ruby/object:Gem::Version
78
78
  version: '0'
79
79
  requirements: []
80
- rubygems_version: 3.1.2
80
+ rubygems_version: 3.1.4
81
81
  signing_key:
82
82
  specification_version: 4
83
83
  summary: Lbfgsb.rb is a Ruby binding for L-BFGS-B