def wallis_product(n_terms):
    """Implement the Wallis product to compute an approximation of pi.

    See:
    https://en.wikipedia.org/wiki/Wallis_product

    Parameters
    ----------
    n_terms : int
        The number of terms in the product. For example 10000.

    Returns
    -------
    estimated_pi : float
        The estimated value of pi using Wallis product

    Raises
    ------
    ValueError
        If the input is not an integer or
        if it's less than 0.

    """
    # XXX : The n_terms is an int that corresponds to the number of
    # terms in the product. For example 10000.
    if not isinstance(n_terms, int):
        raise ValueError("n_terms should be an integer")
    if n_terms < 0:
        raise ValueError("n_terms should be at least 0")

    estimated_pi = 1.0
    for n in range(1, n_terms+1):
        estimated_pi = estimated_pi * 4*n**2/(4*n**2-1)

    return 2*estimated_pi