def Armijo_Rule(f_next,f_initial,c1,step_size,pg_initial):
    """
    :param f_next: New value of the function to be optimized wrt/ step size
    :param f_initial: Value of the function before line search for optimum step size
    :param c1: 0<c1<c2<1
    :param step_size: step size to be tested
    :param pg: inner product of step direction, p, with the gradient before stepping, g_initial
    :return: True if condition is satisfied
    """
    return (f_next <= f_initial+c1*step_size*pg_initial)