The input array sizes of rowan are not validated. For example, it's possible to input a 3-vector for a function expecting a quaternion:
rowan.exp([1, 0, 0]) returns array([2.71828183, 0. , 0. ]).
This package should probably do some input shape validation, e.g. that q.shape[-1] == 4.
Likewise for inputs expecting 3-vectors, 3x3 matrices, etc.