*@brief save current lbfgs state for the next lbfgs iteration */
| 253 | *@brief save current lbfgs state for the next lbfgs iteration |
| 254 | */ |
| 255 | void LBFGS::save_state(LinCrfLBFGSTransitionState<MutableArrayHandle<double> > &state) { |
| 256 | state.ws = w ; |
| 257 | state.diag = diag ; |
| 258 | state.coef = x ; |
| 259 | |
| 260 | state.lbfgs_state(0) = stp1; |
| 261 | state.lbfgs_state(1) = ftol; |
| 262 | state.lbfgs_state(2) = stp; |
| 263 | state.lbfgs_state(3) = sq; |
| 264 | state.lbfgs_state(4) = yr; |
| 265 | state.lbfgs_state(5) = beta; |
| 266 | state.lbfgs_state(6) = iflag; |
| 267 | state.lbfgs_state(7) = iter; |
| 268 | state.lbfgs_state(8) = nfun; |
| 269 | state.lbfgs_state(9) = point; |
| 270 | state.lbfgs_state(10) = ispt; |
| 271 | state.lbfgs_state(11) = iypt; |
| 272 | state.lbfgs_state(12) = maxfev; |
| 273 | state.lbfgs_state(13) = info; |
| 274 | state.lbfgs_state(14) = bound; |
| 275 | state.lbfgs_state(15) = npt; |
| 276 | state.lbfgs_state(16) = cp; |
| 277 | state.lbfgs_state(17) = nfev; |
| 278 | state.lbfgs_state(18) = inmc; |
| 279 | state.lbfgs_state(19) = iycn; |
| 280 | state.lbfgs_state(20) = iscn; |
| 281 | |
| 282 | state.mcsrch_state(0) = infoc; |
| 283 | state.mcsrch_state(1) = dg; |
| 284 | state.mcsrch_state(2) = dgm; |
| 285 | state.mcsrch_state(3) = dginit; |
| 286 | state.mcsrch_state(4) = dgtest; |
| 287 | state.mcsrch_state(5) = dgx; |
| 288 | state.mcsrch_state(6) = dgxm; |
| 289 | state.mcsrch_state(7) = dgy; |
| 290 | state.mcsrch_state(8) = dgym; |
| 291 | state.mcsrch_state(9) = finit; |
| 292 | state.mcsrch_state(10) = ftest1; |
| 293 | state.mcsrch_state(11) = fm; |
| 294 | state.mcsrch_state(12) = fx; |
| 295 | state.mcsrch_state(13) = fxm; |
| 296 | state.mcsrch_state(14) = fy; |
| 297 | state.mcsrch_state(15) = fym; |
| 298 | state.mcsrch_state(16) = stx; |
| 299 | state.mcsrch_state(17) = sty; |
| 300 | state.mcsrch_state(18) = stmin; |
| 301 | state.mcsrch_state(19) = stmax; |
| 302 | state.mcsrch_state(20) = width; |
| 303 | state.mcsrch_state(21) = width1; |
| 304 | state.mcsrch_state(22) = (brackt == true ? 1.0 : 0.0); |
| 305 | state.mcsrch_state(23) = (stage1 == true ? 1.0 : 0.0); |
| 306 | state.mcsrch_state(24) = (finish == true ? 1.0 : 0.0); |
| 307 | } |
| 308 | void LBFGS::mcstep(double& stx, double& fx, double& dx, |
| 309 | double& sty, double& fy, double& dy, |
| 310 | double& stp, double fp, double dp, bool& brackt, |