I know that quaternions need to be normalized if I want to rotate a vector.
But are there any reasons to not automatically normalize a quaternion? And if there are, what quaternion operations do result in non-normalized quaternions?
Sorry, if this question is a little bit fuzzy. I'm still trying wrap my head around quaternions.
Any operation that produces a quaternion will need to be normalized because floating-point precession errors will cause it to not be unit length.
I would advise against standard routines performing normalization automatically for performance reasons. Any competent programmer should be aware of the precision issues and be able to normalize the quantities when necessary - and it is not always necessary to have a unit length quaternion.
The same is true for vector operations.