import math


def round_up(number, ndigits=0):
    """Round a floating point number *upward* to a given precision.

    Unlike the builtin `round`, the return value `round_up` is always
    the smallest float *greater than or equal to* the given number
    matching the specified precision.

    Parameters
    ----------
    number : float
        Number to be rounded up.
    ndigits : int, optional
        Number of decimal digits in the result. Default is 0.

    Returns
    -------
    float

    Examples
    --------
    >>> round_up(math.pi)
    4.0
    >>> round_up(math.pi, ndigits=1)
    3.2
    >>> round_up(math.pi, ndigits=2)
    3.15
    >>> round_up(-math.pi, ndigits=4)
    -3.1415

    """

    multiplier = 10 ** ndigits
    return math.ceil(number * multiplier) / multiplier