This should not result in NaN:
julia> f(p) = exp(RotationVecGenerator(p[1], p[2], p[3]));
julia> ForwardDiff.jacobian(f, [0.0, 0.0, 0.0])
9×3 Matrix{Float64}:
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
The correct output is
julia> f2(p) = exp(SMatrix(RotationVecGenerator(p[1], p[2], p[3])));
julia> ForwardDiff.jacobian(f2, [0.0, 0.0, 0.0])
9×3 Matrix{Float64}:
0.0 0.0 0.0
0.0 0.0 1.0
0.0 -1.0 0.0
0.0 0.0 -1.0
0.0 0.0 0.0
1.0 0.0 0.0
0.0 1.0 0.0
-1.0 0.0 0.0
0.0 0.0 0.0