def METHOD_NAME(
    vector: np.ndarray,
    basis_size: int,
    inprod: Union[
        np.ndarray,
        linops.LinearOperator,
        Callable[[np.ndarray, np.ndarray], np.ndarray],
    ],
    orthogonalization_fn: Callable[[np.ndarray, np.ndarray], np.ndarray],
):
    # Compute orthogonal basis
    seed = abs(32 + hash(basis_size))
    basis = np.random.default_rng(seed).normal(size=(vector.shape[0], basis_size))
    orthogonal_basis, _ = np.linalg.qr(basis)
    orthogonal_basis = orthogonal_basis.T
    # Orthogonalize vector
    ortho_vector = orthogonalization_fn(
        v=vector, orthogonal_basis=orthogonal_basis, inner_product=inprod
    )
    np.testing.assert_allclose(
        orthogonal_basis @ ortho_vector,
        np.zeros((basis_size,)),
        atol=1e-12,
        rtol=1e-12,
    )