You will need your function to be quite smooth for the numerical gradient to be precision.
If you provide double precision Tensors using the default orther args to gradcheck, it should pass.
If you get 5000 for the numerical gradient, that would mean that your function is absolutely not smooth!