Skip to content

Misleading Error Information #34

@ZhepeiWang

Description

@ZhepeiWang

As for code block line 1000-1006 in lbfgs.c

    /*
        If an unusual termination is to occur then let
        stp be the lowest point obtained so far.
     */
    if ((brackt && ((*stp <= stmin || stmax <= *stp) || param->max_linesearch <= count + 1 || uinfo != 0)) || (brackt && (stmax - stmin <= param->xtol * stmax))) {
        *stp = stx;
    }

This code block may cause misleading error information. For example, if the max_linesearch is achieved, the *stp is set as stx at line 1005. However, the error at line 1023-1025 can be catched firstly in this case, thus the returned error is LBFGSERR_ROUNDING_ERROR instead of LBFGSERR_MAXIMUMLINESEARCH. I wonder if there is a possibility for this to happen.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions