Quaternions can be represented with four (4) real numbers (a,b,c,d). They can be added, subtracted, multiplied and divided. You can multiply a quaternion by a scalar (which produces a quaternion as a result). You can take the absolute value of a quaternion, and the conjugate: the conjugate of a quaternion is itself a quaternion. Write an API for a library that provides for all these operations on Quaternions. Do not write the implementation, just the API.