lbfgsb 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,122 +1,81 @@
1
1
  #ifndef LBFGSB_RB_LBFGSB_H_
2
2
  #define LBFGSB_RB_LBFGSB_H_
3
3
 
4
- #include <stdio.h>
5
- #include <stdlib.h>
6
4
  #include <float.h>
7
5
  #include <math.h>
6
+ #include <stdio.h>
7
+ #include <stdlib.h>
8
8
  #include <string.h>
9
9
  #include <time.h>
10
10
 
11
11
  #define TRUE_ (1)
12
12
  #define FALSE_ (0)
13
13
 
14
- extern int setulb_(long *n, long *m, double *x,
15
- double *l, double *u, long *nbd, double *f, double *g,
16
- double *factr, double *pgtol, double *wa, long *iwa,
17
- char *task, long *iprint, char *csave, long *lsave,
18
- long *isave, double *dsave);
19
-
20
- extern int mainlb_(long *n, long *m, double *x,
21
- double *l, double *u, long *nbd, double *f, double *g,
22
- double *factr, double *pgtol, double *ws, double *wy,
23
- double *sy, double *ss, double *wt, double *wn,
24
- double *snd, double *z__, double *r__, double *d__,
25
- double *t, double *xp, double *wa, long *index,
26
- long *iwhere, long *indx2, char *task, long *iprint,
27
- char *csave, long *lsave, long *isave, double *dsave);
28
-
29
- extern int active_(long *n, double *l, double *u,
30
- long *nbd, double *x, long *iwhere, long *iprint,
31
- long *prjctd, long *cnstnd, long *boxed);
32
-
33
- extern int bmv_(long *m, double *sy, double *wt, long
34
- *col, double *v, double *p, long *info);
35
-
36
- extern int cauchy_(long *n, double *x, double *l,
37
- double *u, long *nbd, double *g, long *iorder, long *iwhere,
38
- double *t, double *d__, double *xcp, long *m,
39
- double *wy, double *ws, double *sy, double *wt,
40
- double *theta, long *col, long *head, double *p,
41
- double *c__, double *wbp, double *v, long *nseg,
42
- long *iprint, double *sbgnrm, long *info, double *epsmch);
43
-
44
- extern int cmprlb_(long *n, long *m, double *x,
45
- double *g, double *ws, double *wy, double *sy,
46
- double *wt, double *z__, double *r__, double *wa,
47
- long *index, double *theta, long *col, long *head,
48
- long *nfree, long *cnstnd, long *info);
49
-
50
- extern int errclb_(long *n, long *m, double *factr,
51
- double *l, double *u, long *nbd, char *task, long *info, long *k);
52
-
53
- extern int formk_(long *n, long *nsub, long *ind, long *nenter,
54
- long *ileave, long *indx2, long *iupdat, long *updatd,
55
- double *wn, double *wn1, long *m, double *ws,
56
- double *wy, double *sy, double *theta, long *col,
57
- long *head, long *info);
58
-
59
- extern int formt_(long *m, double *wt, double *sy,
60
- double *ss, long *col, double *theta, long *info);
61
-
62
- extern int freev_(long *n, long *nfree, long *index,
63
- long *nenter, long *ileave, long *indx2, long *iwhere,
64
- long *wrk, long *updatd, long *cnstnd, long *iprint,
65
- long *iter);
66
-
67
- extern int hpsolb_(long *n, double *t, long *iorder, long *iheap);
68
-
69
- extern int lnsrlb_(long *n, double *l, double *u,
70
- long *nbd, double *x, double *f, double *fold,
71
- double *gd, double *gdold, double *g, double *d__,
72
- double *r__, double *t, double *z__, double *stp,
73
- double *dnorm, double *dtd, double *xstep, double *stpmx,
74
- long *iter, long *ifun, long *iback, long *nfgv,
75
- long *info, char *task, long *boxed, long *cnstnd,
76
- char *csave, long *isave, double *dsave);
77
-
78
- extern int matupd_(long *n, long *m, double *ws,
79
- double *wy, double *sy, double *ss, double *d__,
80
- double *r__, long *itail, long *iupdat, long *col,
81
- long *head, double *theta, double *rr, double *dr,
82
- double *stp, double *dtd);
83
-
84
- extern int prn1lb_(long *n, long *m, double *l,
85
- double *u, double *x, long *iprint, long *itfile,
86
- double *epsmch);
87
-
88
- extern int prn2lb_(long *n, double *x, double *f,
89
- double *g, long *iprint, long *itfile, long *iter,
90
- long *nfgv, long *nact, double *sbgnrm, long *nseg, char*word,
91
- long *iword, long *iback, double *stp, double *xstep);
92
-
93
- extern int prn3lb_(long *n, double *x, double *f, char *task,
94
- long *iprint, long *info, long *itfile, long *iter,
95
- long *nfgv, long *nintol, long *nskip, long *nact,
96
- double *sbgnrm, double *time, long *nseg, char *word,
97
- long *iback, double *stp, double *xstep, long *k,
98
- double *cachyt, double *sbtime, double *lnscht);
99
-
100
- extern int projgr_(long *n, double *l, double *u,
101
- long *nbd, double *x, double *g, double *sbgnrm);
102
-
103
- extern int subsm_(long *n, long *m, long *nsub, long *ind,
104
- double *l, double *u, long *nbd, double *x,
105
- double *d__, double *xp, double *ws, double *wy,
106
- double *theta, double *xx, double *gg, long *col,
107
- long *head, long *iword, double *wv, double *wn,
108
- long *iprint, long *info);
109
-
110
- extern int dcsrch_(double *f, double *g, double *stp,
111
- double *ftol, double *gtol, double *xtol,
112
- double *stpmin, double *stpmax,
113
- char *task, long *isave, double *dsave);
114
-
115
- extern int dcstep_(double *stx, double *fx, double *dx,
116
- double *sty, double *fy, double *dy, double *stp,
117
- double *fp, double *dp, long *brackt, double *stpmin,
118
- double *stpmax);
119
-
120
- extern int timer_(double *ttime);
14
+ extern int setulb_(long* n, long* m, double* x, double* l, double* u, long* nbd, double* f, double* g, double* factr,
15
+ double* pgtol, double* wa, long* iwa, char* task, long* iprint, char* csave, long* lsave, long* isave,
16
+ double* dsave);
17
+
18
+ extern int mainlb_(long* n, long* m, double* x, double* l, double* u, long* nbd, double* f, double* g, double* factr,
19
+ double* pgtol, double* ws, double* wy, double* sy, double* ss, double* wt, double* wn, double* snd,
20
+ double* z__, double* r__, double* d__, double* t, double* xp, double* wa, long* index, long* iwhere,
21
+ long* indx2, char* task, long* iprint, char* csave, long* lsave, long* isave, double* dsave);
22
+
23
+ extern int active_(long* n, double* l, double* u, long* nbd, double* x, long* iwhere, long* iprint, long* prjctd, long* cnstnd,
24
+ long* boxed);
25
+
26
+ extern int bmv_(long* m, double* sy, double* wt, long* col, double* v, double* p, long* info);
27
+
28
+ extern int cauchy_(long* n, double* x, double* l, double* u, long* nbd, double* g, long* iorder, long* iwhere, double* t,
29
+ double* d__, double* xcp, long* m, double* wy, double* ws, double* sy, double* wt, double* theta, long* col,
30
+ long* head, double* p, double* c__, double* wbp, double* v, long* nseg, long* iprint, double* sbgnrm,
31
+ long* info, double* epsmch);
32
+
33
+ extern int cmprlb_(long* n, long* m, double* x, double* g, double* ws, double* wy, double* sy, double* wt, double* z__,
34
+ double* r__, double* wa, long* index, double* theta, long* col, long* head, long* nfree, long* cnstnd,
35
+ long* info);
36
+
37
+ extern int errclb_(long* n, long* m, double* factr, double* l, double* u, long* nbd, char* task, long* info, long* k);
38
+
39
+ extern int formk_(long* n, long* nsub, long* ind, long* nenter, long* ileave, long* indx2, long* iupdat, long* updatd,
40
+ double* wn, double* wn1, long* m, double* ws, double* wy, double* sy, double* theta, long* col, long* head,
41
+ long* info);
42
+
43
+ extern int formt_(long* m, double* wt, double* sy, double* ss, long* col, double* theta, long* info);
44
+
45
+ extern int freev_(long* n, long* nfree, long* index, long* nenter, long* ileave, long* indx2, long* iwhere, long* wrk,
46
+ long* updatd, long* cnstnd, long* iprint, long* iter);
47
+
48
+ extern int hpsolb_(long* n, double* t, long* iorder, long* iheap);
49
+
50
+ extern int lnsrlb_(long* n, double* l, double* u, long* nbd, double* x, double* f, double* fold, double* gd, double* gdold,
51
+ double* g, double* d__, double* r__, double* t, double* z__, double* stp, double* dnorm, double* dtd,
52
+ double* xstep, double* stpmx, long* iter, long* ifun, long* iback, long* nfgv, long* info, char* task,
53
+ long* boxed, long* cnstnd, char* csave, long* isave, double* dsave);
54
+
55
+ extern int matupd_(long* n, long* m, double* ws, double* wy, double* sy, double* ss, double* d__, double* r__, long* itail,
56
+ long* iupdat, long* col, long* head, double* theta, double* rr, double* dr, double* stp, double* dtd);
57
+
58
+ extern int prn1lb_(long* n, long* m, double* l, double* u, double* x, long* iprint, long* itfile, double* epsmch);
59
+
60
+ extern int prn2lb_(long* n, double* x, double* f, double* g, long* iprint, long* itfile, long* iter, long* nfgv, long* nact,
61
+ double* sbgnrm, long* nseg, char* word, long* iword, long* iback, double* stp, double* xstep);
62
+
63
+ extern int prn3lb_(long* n, double* x, double* f, char* task, long* iprint, long* info, long* itfile, long* iter, long* nfgv,
64
+ long* nintol, long* nskip, long* nact, double* sbgnrm, double* time, long* nseg, char* word, long* iback,
65
+ double* stp, double* xstep, long* k, double* cachyt, double* sbtime, double* lnscht);
66
+
67
+ extern int projgr_(long* n, double* l, double* u, long* nbd, double* x, double* g, double* sbgnrm);
68
+
69
+ extern int subsm_(long* n, long* m, long* nsub, long* ind, double* l, double* u, long* nbd, double* x, double* d__, double* xp,
70
+ double* ws, double* wy, double* theta, double* xx, double* gg, long* col, long* head, long* iword, double* wv,
71
+ double* wn, long* iprint, long* info);
72
+
73
+ extern int dcsrch_(double* f, double* g, double* stp, double* ftol, double* gtol, double* xtol, double* stpmin, double* stpmax,
74
+ char* task, long* isave, double* dsave);
75
+
76
+ extern int dcstep_(double* stx, double* fx, double* dx, double* sty, double* fy, double* dy, double* stp, double* fp,
77
+ double* dp, long* brackt, double* stpmin, double* stpmax);
78
+
79
+ extern int timer_(double* ttime);
121
80
 
122
81
  #endif /* LBFGSB_RB_LBFGSB_H_ */
@@ -4,8 +4,8 @@
4
4
  * Please read attached file License.txt
5
5
  */
6
6
 
7
- #include "blas.h"
8
7
  #include "linpack.h"
8
+ #include "blas.h"
9
9
 
10
10
  static long c__1 = 1;
11
11
 
@@ -44,8 +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 lbfgsb_rb_dpofa_(double *a, long *lda, long *n, long *info)
48
- {
47
+ int lbfgsb_rb_dpofa_(double* a, long* lda, long* n, long* info) {
49
48
  long a_dim1, a_offset, i__1, i__2, i__3;
50
49
  static long j, k;
51
50
  static double s, t;
@@ -57,27 +56,27 @@ int lbfgsb_rb_dpofa_(double *a, long *lda, long *n, long *info)
57
56
 
58
57
  i__1 = *n;
59
58
  for (j = 1; j <= i__1; ++j) {
60
- *info = j;
61
- s = 0.;
62
- jm1 = j - 1;
63
- if (jm1 < 1) {
64
- goto L20;
65
- }
66
- i__2 = jm1;
67
- for (k = 1; k <= i__2; ++k) {
68
- i__3 = k - 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
- t /= a[k + k * a_dim1];
71
- a[k + j * a_dim1] = t;
72
- s += t * t;
73
- }
74
- L20:
75
- s = a[j + j * a_dim1] - s;
59
+ *info = j;
60
+ s = 0.;
61
+ jm1 = j - 1;
62
+ if (jm1 < 1) {
63
+ goto L20;
64
+ }
65
+ i__2 = jm1;
66
+ for (k = 1; k <= i__2; ++k) {
67
+ i__3 = k - 1;
68
+ 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);
69
+ t /= a[k + k * a_dim1];
70
+ a[k + j * a_dim1] = t;
71
+ s += t * t;
72
+ }
73
+ L20:
74
+ s = a[j + j * a_dim1] - s;
76
75
  /* ......exit */
77
- if (s <= 0.) {
78
- goto L40;
79
- }
80
- a[j + j * a_dim1] = sqrt(s);
76
+ if (s <= 0.) {
77
+ goto L40;
78
+ }
79
+ a[j + j * a_dim1] = sqrt(s);
81
80
  }
82
81
  *info = 0;
83
82
  L40:
@@ -133,8 +132,7 @@ L40:
133
132
  * linpack. this version dated 08/14/78 .
134
133
  * g. w. stewart, university of maryland, argonne national lab.
135
134
  */
136
- int lbfgsb_rb_dtrsl_(double *t, long *ldt, long *n, double *b, long *job, long *info)
137
- {
135
+ int lbfgsb_rb_dtrsl_(double* t, long* ldt, long* n, double* b, long* job, long* info) {
138
136
  long t_dim1, t_offset, i__1, i__2;
139
137
  static long j, jj, case__;
140
138
  static double temp;
@@ -148,39 +146,43 @@ int lbfgsb_rb_dtrsl_(double *t, long *ldt, long *n, double *b, long *job, long *
148
146
  i__1 = *n;
149
147
  for (*info = 1; *info <= i__1; ++(*info)) {
150
148
  /* ......exit */
151
- if (t[*info + *info * t_dim1] == 0.) {
152
- goto L150;
153
- }
149
+ if (t[*info + *info * t_dim1] == 0.) {
150
+ goto L150;
151
+ }
154
152
  }
155
153
  *info = 0;
156
154
 
157
155
  /* determine the task and go to it. */
158
156
  case__ = 1;
159
157
  if (*job % 10 != 0) {
160
- case__ = 2;
158
+ case__ = 2;
161
159
  }
162
160
  if (*job % 100 / 10 != 0) {
163
- case__ += 2;
161
+ case__ += 2;
164
162
  }
165
163
  switch (case__) {
166
- case 1: goto L20;
167
- case 2: goto L50;
168
- case 3: goto L80;
169
- case 4: goto L110;
164
+ case 1:
165
+ goto L20;
166
+ case 2:
167
+ goto L50;
168
+ case 3:
169
+ goto L80;
170
+ case 4:
171
+ goto L110;
170
172
  }
171
173
 
172
174
  /* solve t*x=b for t lower triangular */
173
175
  L20:
174
176
  b[1] /= t[t_dim1 + 1];
175
177
  if (*n < 2) {
176
- goto L40;
178
+ goto L40;
177
179
  }
178
180
  i__1 = *n;
179
181
  for (j = 2; j <= i__1; ++j) {
180
- temp = -b[j - 1];
181
- i__2 = *n - j + 1;
182
- lbfgsb_rb_daxpy_(&i__2, &temp, &t[j + (j - 1) * t_dim1], &c__1, &b[j], &c__1);
183
- b[j] /= t[j + j * t_dim1];
182
+ temp = -b[j - 1];
183
+ i__2 = *n - j + 1;
184
+ lbfgsb_rb_daxpy_(&i__2, &temp, &t[j + (j - 1) * t_dim1], &c__1, &b[j], &c__1);
185
+ b[j] /= t[j + j * t_dim1];
184
186
  }
185
187
  L40:
186
188
  goto L140;
@@ -189,14 +191,14 @@ L40:
189
191
  L50:
190
192
  b[*n] /= t[*n + *n * t_dim1];
191
193
  if (*n < 2) {
192
- goto L70;
194
+ goto L70;
193
195
  }
194
196
  i__1 = *n;
195
197
  for (jj = 2; jj <= i__1; ++jj) {
196
- j = *n - jj + 1;
197
- temp = -b[j + 1];
198
- lbfgsb_rb_daxpy_(&j, &temp, &t[(j + 1) * t_dim1 + 1], &c__1, &b[1], &c__1);
199
- b[j] /= t[j + j * t_dim1];
198
+ j = *n - jj + 1;
199
+ temp = -b[j + 1];
200
+ lbfgsb_rb_daxpy_(&j, &temp, &t[(j + 1) * t_dim1 + 1], &c__1, &b[1], &c__1);
201
+ b[j] /= t[j + j * t_dim1];
200
202
  }
201
203
  L70:
202
204
  goto L140;
@@ -205,14 +207,14 @@ L70:
205
207
  L80:
206
208
  b[*n] /= t[*n + *n * t_dim1];
207
209
  if (*n < 2) {
208
- goto L100;
210
+ goto L100;
209
211
  }
210
212
  i__1 = *n;
211
213
  for (jj = 2; jj <= i__1; ++jj) {
212
- j = *n - jj + 1;
213
- i__2 = jj - 1;
214
- b[j] -= lbfgsb_rb_ddot_(&i__2, &t[j + 1 + j * t_dim1], &c__1, &b[j + 1], &c__1);
215
- b[j] /= t[j + j * t_dim1];
214
+ j = *n - jj + 1;
215
+ i__2 = jj - 1;
216
+ b[j] -= lbfgsb_rb_ddot_(&i__2, &t[j + 1 + j * t_dim1], &c__1, &b[j + 1], &c__1);
217
+ b[j] /= t[j + j * t_dim1];
216
218
  }
217
219
  L100:
218
220
  goto L140;
@@ -221,13 +223,13 @@ L100:
221
223
  L110:
222
224
  b[1] /= t[t_dim1 + 1];
223
225
  if (*n < 2) {
224
- goto L130;
226
+ goto L130;
225
227
  }
226
228
  i__1 = *n;
227
229
  for (j = 2; j <= i__1; ++j) {
228
- i__2 = j - 1;
229
- b[j] -= lbfgsb_rb_ddot_(&i__2, &t[j * t_dim1 + 1], &c__1, &b[1], &c__1);
230
- b[j] /= t[j + j * t_dim1];
230
+ i__2 = j - 1;
231
+ b[j] -= lbfgsb_rb_ddot_(&i__2, &t[j * t_dim1 + 1], &c__1, &b[1], &c__1);
232
+ b[j] /= t[j + j * t_dim1];
231
233
  }
232
234
  L130:
233
235
  L140:
@@ -3,7 +3,7 @@
3
3
 
4
4
  #include <math.h>
5
5
 
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);
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.3.2'
6
+ VERSION = '0.4.0'
7
7
  end
data/sig/lbfgsb.rbs ADDED
@@ -0,0 +1,31 @@
1
+ module Lbfgsb
2
+ type result = {
3
+ task: String,
4
+ x: Numo::DFloat,
5
+ fnc: Float,
6
+ jcb: Numo::DFloat,
7
+ n_iter: Integer,
8
+ n_fev: Integer,
9
+ n_jev: Integer,
10
+ success: bool
11
+ }
12
+
13
+ VERSION: String
14
+
15
+ DBL_EPSILON: Float
16
+
17
+ def self?.minimize: (fnc: Method | Proc fnc, x_init: Numo::DFloat x_init, jcb: Method | Proc | bool jcb,
18
+ ?args: untyped args, ?bounds: Numo::DFloat? bounds, ?factr: Float factr, ?pgtol: Float pgtol,
19
+ ?maxcor: Integer maxcor, ?maxiter: Integer maxiter,
20
+ ?verbose: Integer? verbose) -> result
21
+
22
+ private
23
+
24
+ def self?.fnc: (Method | Proc fnc, Numo::DFloat x, untyped args) -> Float
25
+
26
+ def self?.jcb: (Method | Proc jcb, Numo::DFloat x, untyped args) -> Numo::DFloat
27
+
28
+ def self?.min_l_bfgs_b: (Method | Proc fnc, Numo::DFloat x, Method | Proc | bool jcb, untyped args,
29
+ Numo::DFloat l, Numo::DFloat u, Numo::DFloat nbd, Integer maxcor, Float ftol, Float gtol, Integer maxiter,
30
+ Integer? disp) -> result
31
+ end
data/sig/patch.rbs ADDED
@@ -0,0 +1,11 @@
1
+ module Numo
2
+ class NArray
3
+ def self.zeros: (*untyped) -> untyped
4
+ def size: () -> Integer
5
+ end
6
+
7
+ class DFloat < NArray
8
+ def []: (*untyped) -> untyped
9
+ def []=: (*untyped) -> untyped
10
+ end
11
+ 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.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yoshoku
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-23 00:00:00.000000000 Z
11
+ date: 2021-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: numo-narray
@@ -34,6 +34,7 @@ extensions:
34
34
  - ext/lbfgsb/extconf.rb
35
35
  extra_rdoc_files: []
36
36
  files:
37
+ - ".clang-format"
37
38
  - ".github/workflows/build.yml"
38
39
  - ".gitignore"
39
40
  - ".rspec"
@@ -43,6 +44,7 @@ files:
43
44
  - LICENSE.txt
44
45
  - README.md
45
46
  - Rakefile
47
+ - Steepfile
46
48
  - ext/lbfgsb/extconf.rb
47
49
  - ext/lbfgsb/lbfgsbext.c
48
50
  - ext/lbfgsb/lbfgsbext.h
@@ -56,6 +58,8 @@ files:
56
58
  - lbfgsb.gemspec
57
59
  - lib/lbfgsb.rb
58
60
  - lib/lbfgsb/version.rb
61
+ - sig/lbfgsb.rbs
62
+ - sig/patch.rbs
59
63
  homepage: https://github.com/yoshoku/lbfgsb.rb
60
64
  licenses:
61
65
  - BSD-3-Clause
@@ -64,7 +68,7 @@ metadata:
64
68
  source_code_uri: https://github.com/yoshoku/lbfgsb.rb
65
69
  changelog_uri: https://github.com/yoshoku/lbfgsb.rb/blob/main/CHANGELOG.md
66
70
  documentation_uri: https://yoshoku.github.io/lbfgsb.rb/doc/
67
- post_install_message:
71
+ post_install_message:
68
72
  rdoc_options: []
69
73
  require_paths:
70
74
  - lib
@@ -79,8 +83,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
83
  - !ruby/object:Gem::Version
80
84
  version: '0'
81
85
  requirements: []
82
- rubygems_version: 3.2.3
83
- signing_key:
86
+ rubygems_version: 3.1.6
87
+ signing_key:
84
88
  specification_version: 4
85
89
  summary: Lbfgsb.rb is a Ruby binding for L-BFGS-B.
86
90
  test_files: []