@classmethod
def default_options(cls):
    """
        Return a dictionary of the default options for the LBFGS
        optimization algorithm

        Stopping criteria based on tolerance of objective function
        and its gradient:

        1) ``(f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr * eps``
            where ``eps`` is the machine precision
        2) ``max(abs(G_k)) <= gtol``

        Parameters
        ----------
        factr : float
            The iteration stops when ``(f^k -
            f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr * eps``, where ``eps``
            is the machine precision, which is automatically generated by
            the code. Typical values for `factr` are: 1e12 for low
            accuracy; 1e7 for moderate accuracy; 10.0 for extremely high
            accuracy. Default is 1e5
        gtol : float
            the absolute tolerance of the gradient norm required for
            convergence; default is 1e-5
        max_iter : int
            the maximum number of steps to run; default is `500`
        display : int
            the level of logging desired; default is second to highest, `2`
        record : list of str
            the names of variables to track per iteration; default
            is `F` and `Gnorm`
        """
    default = {}
    default['factr'] = 100000.0
    default['gtol'] = 1e-05
    default['max_iter'] = 500
    default['display'] = 2
    default['record'] = ['F', 'Gnorm']
    default['test_convergence'] = True
    return default
