def METHOD_NAME(f, starting_point, direction, armijo_condition=None, grad=None, initial_value=None,
                       alpha_init=1.0, tau=0.5, beta=0.0001, maxiter=10):
    """Constrained Armijo line search algorithm.
    This method computes a step size such that the given constrained Armijo condition
    is fulfilled.
    Parameters
    ----------
    f
        Real-valued function that can be evaluated for its value.
    starting_point
        A |VectorArray| of length 1 containing the starting point of the line search.
    direction
        Descent direction along which the line search is performed.
    armijo_condition
        A `callable` used as the Armijo termination condition during the step length computation.
    grad
        Gradient of `f` in the point `starting_point` as either a |VectorArray| or a |NumPy array|.
    initial_value
        Value of `f` in the point `starting_point`.
    tau
        The fraction by which the step size is reduced in each iteration.
    beta
        Control parameter to adjust the required decrease of the function value of `f`.
    maxiter
        Use `alpha_init` as default if the iteration count reaches this value without
        finding a point fulfilling the Armijo condition.
    Returns
    -------
    alpha
        Step size computed according to the Armijo condition.
    iterations
        Number of total Armijo line search iterations.
    """
    assert armijo_condition is not None, 'Please provide a callable Armijo condition!'
    return _armijo(f, starting_point, direction, armijo_condition=armijo_condition, grad=grad,
                   initial_value=initial_value, alpha_init=alpha_init, tau=tau, beta=beta, maxiter=maxiter)