def hermite_basis_poly(x_values, index):
    lag_basis = langrange_basis_poly(x_values, index)
    value = lag_basis.deriv()(x_values[index])
    poly = 1 - 2 * value * poly1d(x_values[index], True)
    herm_basis = (lag_basis ** 2) * poly

    return herm_basis
def hermite_basis_deriv_poly(x_values, index):
    lag_basis = langrange_basis_poly(x_values, index)
    poly = poly1d(x_values[index], True)
    herm_basis_deriv = (lag_basis ** 2) * poly

    return herm_basis_deriv