lbfgsb 0.3.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,122 +1,83 @@
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
+ #include "common.h"
12
+
11
13
  #define TRUE_ (1)
12
14
  #define FALSE_ (0)
13
15
 
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);
16
+ extern void setulb_(F77_int* n, F77_int* m, double* x, double* l, double* u, F77_int* nbd, double* f, double* g, double* factr,
17
+ double* pgtol, double* wa, F77_int* iwa, char* task, F77_int* iprint, char* csave, F77_int* lsave, F77_int* isave,
18
+ double* dsave);
19
+
20
+ extern void mainlb_(F77_int* n, F77_int* m, double* x, double* l, double* u, F77_int* nbd, double* f, double* g, double* factr,
21
+ double* pgtol, double* ws, double* wy, double* sy, double* ss, double* wt, double* wn, double* snd,
22
+ double* z__, double* r__, double* d__, double* t, double* xp, double* wa, F77_int* index, F77_int* iwhere,
23
+ F77_int* indx2, char* task, F77_int* iprint, char* csave, F77_int* lsave, F77_int* isave, double* dsave);
24
+
25
+ extern void active_(F77_int* n, double* l, double* u, F77_int* nbd, double* x, F77_int* iwhere, F77_int* iprint, F77_int* prjctd, F77_int* cnstnd,
26
+ F77_int* boxed);
27
+
28
+ extern void bmv_(F77_int* m, double* sy, double* wt, F77_int* col, double* v, double* p, F77_int* info);
29
+
30
+ extern void cauchy_(F77_int* n, double* x, double* l, double* u, F77_int* nbd, double* g, F77_int* iorder, F77_int* iwhere, double* t,
31
+ double* d__, double* xcp, F77_int* m, double* wy, double* ws, double* sy, double* wt, double* theta, F77_int* col,
32
+ F77_int* head, double* p, double* c__, double* wbp, double* v, F77_int* nseg, F77_int* iprint, double* sbgnrm,
33
+ F77_int* info, double* epsmch);
34
+
35
+ extern void cmprlb_(F77_int* n, F77_int* m, double* x, double* g, double* ws, double* wy, double* sy, double* wt, double* z__,
36
+ double* r__, double* wa, F77_int* index, double* theta, F77_int* col, F77_int* head, F77_int* nfree, F77_int* cnstnd,
37
+ F77_int* info);
38
+
39
+ extern void errclb_(F77_int* n, F77_int* m, double* factr, double* l, double* u, F77_int* nbd, char* task, F77_int* info, F77_int* k);
40
+
41
+ extern void formk_(F77_int* n, F77_int* nsub, F77_int* ind, F77_int* nenter, F77_int* ileave, F77_int* indx2, F77_int* iupdat, F77_int* updatd,
42
+ double* wn, double* wn1, F77_int* m, double* ws, double* wy, double* sy, double* theta, F77_int* col, F77_int* head,
43
+ F77_int* info);
44
+
45
+ extern void formt_(F77_int* m, double* wt, double* sy, double* ss, F77_int* col, double* theta, F77_int* info);
46
+
47
+ extern void freev_(F77_int* n, F77_int* nfree, F77_int* index, F77_int* nenter, F77_int* ileave, F77_int* indx2, F77_int* iwhere, F77_int* wrk,
48
+ F77_int* updatd, F77_int* cnstnd, F77_int* iprint, F77_int* iter);
49
+
50
+ extern void hpsolb_(F77_int* n, double* t, F77_int* iorder, F77_int* iheap);
51
+
52
+ extern void lnsrlb_(F77_int* n, double* l, double* u, F77_int* nbd, double* x, double* f, double* fold, double* gd, double* gdold,
53
+ double* g, double* d__, double* r__, double* t, double* z__, double* stp, double* dnorm, double* dtd,
54
+ double* xstep, double* stpmx, F77_int* iter, F77_int* ifun, F77_int* iback, F77_int* nfgv, F77_int* info, char* task,
55
+ F77_int* boxed, F77_int* cnstnd, char* csave, F77_int* isave, double* dsave);
56
+
57
+ extern void matupd_(F77_int* n, F77_int* m, double* ws, double* wy, double* sy, double* ss, double* d__, double* r__, F77_int* itail,
58
+ F77_int* iupdat, F77_int* col, F77_int* head, double* theta, double* rr, double* dr, double* stp, double* dtd);
59
+
60
+ extern void prn1lb_(F77_int* n, F77_int* m, double* l, double* u, double* x, F77_int* iprint, F77_int* itfile, double* epsmch);
61
+
62
+ extern void prn2lb_(F77_int* n, double* x, double* f, double* g, F77_int* iprint, F77_int* itfile, F77_int* iter, F77_int* nfgv, F77_int* nact,
63
+ double* sbgnrm, F77_int* nseg, char* word, F77_int* iword, F77_int* iback, double* stp, double* xstep);
64
+
65
+ extern void prn3lb_(F77_int* n, double* x, double* f, char* task, F77_int* iprint, F77_int* info, F77_int* itfile, F77_int* iter, F77_int* nfgv,
66
+ F77_int* nintol, F77_int* nskip, F77_int* nact, double* sbgnrm, double* time, F77_int* nseg, char* word, F77_int* iback,
67
+ double* stp, double* xstep, F77_int* k, double* cachyt, double* sbtime, double* lnscht);
68
+
69
+ extern void projgr_(F77_int* n, double* l, double* u, F77_int* nbd, double* x, double* g, double* sbgnrm);
70
+
71
+ extern void subsm_(F77_int* n, F77_int* m, F77_int* nsub, F77_int* ind, double* l, double* u, F77_int* nbd, double* x, double* d__, double* xp,
72
+ double* ws, double* wy, double* theta, double* xx, double* gg, F77_int* col, F77_int* head, F77_int* iword, double* wv,
73
+ double* wn, F77_int* iprint, F77_int* info);
74
+
75
+ extern void dcsrch_(double* f, double* g, double* stp, double* ftol, double* gtol, double* xtol, double* stpmin, double* stpmax,
76
+ char* task, F77_int* isave, double* dsave);
77
+
78
+ extern void dcstep_(double* stx, double* fx, double* dx, double* sty, double* fy, double* dy, double* stp, double* fp,
79
+ double* dp, F77_int* brackt, double* stpmin, double* stpmax);
80
+
81
+ extern void timer_(double* ttime);
121
82
 
122
83
  #endif /* LBFGSB_RB_LBFGSB_H_ */
@@ -3,11 +3,10 @@
3
3
  * or “3-clause license”)
4
4
  * Please read attached file License.txt
5
5
  */
6
-
7
6
  #include "blas.h"
8
7
  #include "linpack.h"
9
8
 
10
- static long c__1 = 1;
9
+ static F77_int c__1 = 1;
11
10
 
12
11
  /**
13
12
  * dpofa factors a double precision symmetric positive definite
@@ -23,10 +22,10 @@ static long c__1 = 1;
23
22
  * the symmetric matrix to be factored. only the
24
23
  * diagonal and upper triangle are used.
25
24
  *
26
- * lda long
25
+ * lda integer
27
26
  * the leading dimension of the array a .
28
27
  *
29
- * n long
28
+ * n integer
30
29
  * the order of the matrix a .
31
30
  *
32
31
  * on return
@@ -36,7 +35,7 @@ static long c__1 = 1;
36
35
  * the strict lower triangle is unaltered.
37
36
  * if info .ne. 0 , the factorization is not complete.
38
37
  *
39
- * info long
38
+ * info integer
40
39
  * = 0 for normal return.
41
40
  * = k signals an error condition. the leading minor
42
41
  * of order k is not positive definite.
@@ -44,12 +43,11 @@ static long c__1 = 1;
44
43
  * linpack. this version dated 08/14/78 .
45
44
  * cleve moler, university of new mexico, argonne national lab.
46
45
  */
47
- int lbfgsb_rb_dpofa_(double *a, long *lda, long *n, long *info)
48
- {
49
- long a_dim1, a_offset, i__1, i__2, i__3;
50
- static long j, k;
46
+ void dpofa_(double* a, F77_int* lda, F77_int* n, F77_int* info) {
47
+ F77_int a_dim1, a_offset, i__1, i__2, i__3;
48
+ static F77_int j, k;
51
49
  static double s, t;
52
- static long jm1;
50
+ static F77_int jm1;
53
51
 
54
52
  a_dim1 = *lda;
55
53
  a_offset = 1 + a_dim1;
@@ -57,31 +55,31 @@ int lbfgsb_rb_dpofa_(double *a, long *lda, long *n, long *info)
57
55
 
58
56
  i__1 = *n;
59
57
  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;
58
+ *info = j;
59
+ s = 0.;
60
+ jm1 = j - 1;
61
+ if (jm1 < 1) {
62
+ goto L20;
63
+ }
64
+ i__2 = jm1;
65
+ for (k = 1; k <= i__2; ++k) {
66
+ i__3 = k - 1;
67
+ t = a[k + j * a_dim1] - ddot_(&i__3, &a[k * a_dim1 + 1], &c__1, &a[j * a_dim1 + 1], &c__1);
68
+ t /= a[k + k * a_dim1];
69
+ a[k + j * a_dim1] = t;
70
+ s += t * t;
71
+ }
72
+ L20:
73
+ s = a[j + j * a_dim1] - s;
76
74
  /* ......exit */
77
- if (s <= 0.) {
78
- goto L40;
79
- }
80
- a[j + j * a_dim1] = sqrt(s);
75
+ if (s <= 0.) {
76
+ goto L40;
77
+ }
78
+ a[j + j * a_dim1] = sqrt(s);
81
79
  }
82
80
  *info = 0;
83
81
  L40:
84
- return 0;
82
+ return;
85
83
  }
86
84
 
87
85
  /**
@@ -102,16 +100,16 @@ L40:
102
100
  * the corresponding elements of the array can be
103
101
  * used to store other information.
104
102
  *
105
- * ldt long
103
+ * ldt integer
106
104
  * ldt is the leading dimension of the array t.
107
105
  *
108
- * n long
106
+ * n integer
109
107
  * n is the order of the system.
110
108
  *
111
109
  * b double precision(n).
112
110
  * b contains the right hand side of the system.
113
111
  *
114
- * job long
112
+ * job integer
115
113
  * job specifies what kind of system is to be solved.
116
114
  * if job is
117
115
  *
@@ -125,7 +123,7 @@ L40:
125
123
  * b b contains the solution, if info .eq. 0.
126
124
  * otherwise b is unaltered.
127
125
  *
128
- * info long
126
+ * info integer
129
127
  * info contains zero if the system is nonsingular.
130
128
  * otherwise info contains the index of
131
129
  * the first zero diagonal element of t.
@@ -133,10 +131,9 @@ L40:
133
131
  * linpack. this version dated 08/14/78 .
134
132
  * g. w. stewart, university of maryland, argonne national lab.
135
133
  */
136
- int lbfgsb_rb_dtrsl_(double *t, long *ldt, long *n, double *b, long *job, long *info)
137
- {
138
- long t_dim1, t_offset, i__1, i__2;
139
- static long j, jj, case__;
134
+ void dtrsl_(double* t, F77_int* ldt, F77_int* n, double* b, F77_int* job, F77_int* info) {
135
+ F77_int t_dim1, t_offset, i__1, i__2;
136
+ static F77_int j, jj, case__;
140
137
  static double temp;
141
138
 
142
139
  /* check for zero diagonal elements. */
@@ -148,39 +145,43 @@ int lbfgsb_rb_dtrsl_(double *t, long *ldt, long *n, double *b, long *job, long *
148
145
  i__1 = *n;
149
146
  for (*info = 1; *info <= i__1; ++(*info)) {
150
147
  /* ......exit */
151
- if (t[*info + *info * t_dim1] == 0.) {
152
- goto L150;
153
- }
148
+ if (t[*info + *info * t_dim1] == 0.) {
149
+ goto L150;
150
+ }
154
151
  }
155
152
  *info = 0;
156
153
 
157
154
  /* determine the task and go to it. */
158
155
  case__ = 1;
159
156
  if (*job % 10 != 0) {
160
- case__ = 2;
157
+ case__ = 2;
161
158
  }
162
159
  if (*job % 100 / 10 != 0) {
163
- case__ += 2;
160
+ case__ += 2;
164
161
  }
165
162
  switch (case__) {
166
- case 1: goto L20;
167
- case 2: goto L50;
168
- case 3: goto L80;
169
- case 4: goto L110;
163
+ case 1:
164
+ goto L20;
165
+ case 2:
166
+ goto L50;
167
+ case 3:
168
+ goto L80;
169
+ case 4:
170
+ goto L110;
170
171
  }
171
172
 
172
173
  /* solve t*x=b for t lower triangular */
173
174
  L20:
174
175
  b[1] /= t[t_dim1 + 1];
175
176
  if (*n < 2) {
176
- goto L40;
177
+ goto L40;
177
178
  }
178
179
  i__1 = *n;
179
180
  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];
181
+ temp = -b[j - 1];
182
+ i__2 = *n - j + 1;
183
+ daxpy_(&i__2, &temp, &t[j + (j - 1) * t_dim1], &c__1, &b[j], &c__1);
184
+ b[j] /= t[j + j * t_dim1];
184
185
  }
185
186
  L40:
186
187
  goto L140;
@@ -189,14 +190,14 @@ L40:
189
190
  L50:
190
191
  b[*n] /= t[*n + *n * t_dim1];
191
192
  if (*n < 2) {
192
- goto L70;
193
+ goto L70;
193
194
  }
194
195
  i__1 = *n;
195
196
  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];
197
+ j = *n - jj + 1;
198
+ temp = -b[j + 1];
199
+ daxpy_(&j, &temp, &t[(j + 1) * t_dim1 + 1], &c__1, &b[1], &c__1);
200
+ b[j] /= t[j + j * t_dim1];
200
201
  }
201
202
  L70:
202
203
  goto L140;
@@ -205,14 +206,14 @@ L70:
205
206
  L80:
206
207
  b[*n] /= t[*n + *n * t_dim1];
207
208
  if (*n < 2) {
208
- goto L100;
209
+ goto L100;
209
210
  }
210
211
  i__1 = *n;
211
212
  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];
213
+ j = *n - jj + 1;
214
+ i__2 = jj - 1;
215
+ b[j] -= ddot_(&i__2, &t[j + 1 + j * t_dim1], &c__1, &b[j + 1], &c__1);
216
+ b[j] /= t[j + j * t_dim1];
216
217
  }
217
218
  L100:
218
219
  goto L140;
@@ -221,16 +222,16 @@ L100:
221
222
  L110:
222
223
  b[1] /= t[t_dim1 + 1];
223
224
  if (*n < 2) {
224
- goto L130;
225
+ goto L130;
225
226
  }
226
227
  i__1 = *n;
227
228
  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];
229
+ i__2 = j - 1;
230
+ b[j] -= ddot_(&i__2, &t[j * t_dim1 + 1], &c__1, &b[1], &c__1);
231
+ b[j] /= t[j + j * t_dim1];
231
232
  }
232
233
  L130:
233
234
  L140:
234
235
  L150:
235
- return 0;
236
+ return;
236
237
  }
@@ -1,9 +1,9 @@
1
1
  #ifndef LBFGSB_RB_LINPACK_H_
2
2
  #define LBFGSB_RB_LINPACK_H_
3
3
 
4
- #include <math.h>
4
+ #include "common.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 void dpofa_(double* a, F77_int* lda, F77_int* n, F77_int* info);
7
+ extern void dtrsl_(double* t, F77_int* ldt, F77_int* n, double* b, F77_int* job, F77_int* 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.1'
6
+ VERSION = '0.5.0'
7
7
  end
data/lib/lbfgsb.rb CHANGED
@@ -43,7 +43,7 @@ module Lbfgsb
43
43
  n_elements = x_init.size
44
44
  l = Numo::DFloat.zeros(n_elements)
45
45
  u = Numo::DFloat.zeros(n_elements)
46
- nbd = Numo::Int64.zeros(n_elements)
46
+ nbd = SZ_F77_INTEGER == 64 ? Numo::Int64.zeros(n_elements) : Numo::Int32.zeros(n_elements)
47
47
 
48
48
  unless bounds.nil?
49
49
  n_elements.times do |n|
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
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.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yoshoku
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-16 00:00:00.000000000 Z
11
+ date: 2022-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: numo-narray
@@ -24,7 +24,9 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.9.1
27
- description: Lbfgsb.rb is a Ruby binding for L-BFGS-B
27
+ description: |
28
+ Lbfgsb.rb is a Ruby binding for L-BFGS-B that is a limited-memory algorithm for
29
+ solving large nonlinear optimization problems subject to simple bounds on the variables.
28
30
  email:
29
31
  - yoshoku@outlook.com
30
32
  executables: []
@@ -32,28 +34,23 @@ extensions:
32
34
  - ext/lbfgsb/extconf.rb
33
35
  extra_rdoc_files: []
34
36
  files:
35
- - ".github/workflows/build.yml"
36
- - ".gitignore"
37
- - ".rspec"
38
- - ".yardopts"
39
37
  - CHANGELOG.md
40
- - Gemfile
41
38
  - LICENSE.txt
42
39
  - README.md
43
- - Rakefile
44
40
  - ext/lbfgsb/extconf.rb
45
41
  - ext/lbfgsb/lbfgsbext.c
46
42
  - ext/lbfgsb/lbfgsbext.h
47
43
  - ext/lbfgsb/src/License.txt
48
44
  - ext/lbfgsb/src/blas.c
49
45
  - ext/lbfgsb/src/blas.h
46
+ - ext/lbfgsb/src/common.h
50
47
  - ext/lbfgsb/src/lbfgsb.c
51
48
  - ext/lbfgsb/src/lbfgsb.h
52
49
  - ext/lbfgsb/src/linpack.c
53
50
  - ext/lbfgsb/src/linpack.h
54
- - lbfgsb.gemspec
55
51
  - lib/lbfgsb.rb
56
52
  - lib/lbfgsb/version.rb
53
+ - sig/lbfgsb.rbs
57
54
  homepage: https://github.com/yoshoku/lbfgsb.rb
58
55
  licenses:
59
56
  - BSD-3-Clause
@@ -77,8 +74,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
74
  - !ruby/object:Gem::Version
78
75
  version: '0'
79
76
  requirements: []
80
- rubygems_version: 3.1.4
77
+ rubygems_version: 3.3.7
81
78
  signing_key:
82
79
  specification_version: 4
83
- summary: Lbfgsb.rb is a Ruby binding for L-BFGS-B
80
+ summary: Lbfgsb.rb is a Ruby binding for L-BFGS-B.
84
81
  test_files: []
@@ -1,21 +0,0 @@
1
- name: build
2
-
3
- on: [push, pull_request]
4
-
5
- jobs:
6
- build:
7
- runs-on: ubuntu-latest
8
- strategy:
9
- matrix:
10
- ruby: [ '2.5', '2.6', '2.7' ]
11
- steps:
12
- - uses: actions/checkout@v2
13
- - name: Set up Ruby ${{ matrix.ruby }}
14
- uses: actions/setup-ruby@v1
15
- with:
16
- ruby-version: ${{ matrix.ruby }}
17
- - name: Build and test with Rake
18
- run: |
19
- gem install bundler
20
- bundle install --jobs 4 --retry 3
21
- bundle exec rake
data/.gitignore DELETED
@@ -1,17 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
- *.bundle
10
- *.so
11
- *.o
12
- *.a
13
- mkmf.log
14
- iterate.dat
15
-
16
- # rspec failure tracking
17
- .rspec_status
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
data/.yardopts DELETED
@@ -1 +0,0 @@
1
- --exclude ext/lbfgsb/src/
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in lbfgsb.gemspec
4
- gemspec
5
-
6
- gem "rake", "~> 12.0"
7
- gem "rake-compiler"
8
- gem "rspec", "~> 3.0"