Currently no check is performed to ensure consistency of vector types, mainly Vector and SVector (see #207).
I think that the return type of the function should be checked and the input interval should be converted accordingly.
Namely for roots(f, X)
f(X)::T, X::S -> convert X to T (typically T == SVector and X == Vector)
We could also check the jacobian, if it is given explicitly.