def vector_jacobian_product(fun, argnum=0):
    def vector_dot_fun(*args, **kwargs):
        args, vector = args[:-1], args[-1]
        return np.tensordot(vector, fun(*args, **kwargs), axes=np.ndim(vector))
    return jacobian(vector_dot_fun, argnum)  # Grad wrt original input.
Ignore the reader.  This is necessary because the waker will be
dataset/ETHPy150Open HIPS/autograd/autograd/convenience_wrappers.py/vector_jacobian_product--crossover with--dataset/ETHPy150Open kuri65536/python-for-android/python-modules/twisted/twisted/internet/test/test_posixbase.py/TimeoutReportReactor.addReader