angle(point1, point2) determines the angle between point1 and point2. The smallest angle is returned and
π obtains when the points are oppositely directed:
0 <= angle(p1, p2) <= pi. It does this with more accuracy than the usual way.
angle(p1, p2) expects
p2 to be points in a 2D, 3D … ManyD space, with Cartesian coordinates. To use any given point representation, define its Tuple constructor (unless one already exists).
SVectors already have that.
This package is posted by request. The method is work of Professor Kahan (pg 15).