/* Visualizing Quaternions: Chapter 7: Table 7.1: page 60 Elementary C code implementing the complex operations for multiplication, addition, complex conjugation, and modulus. Identical results can be obtained using C++ classes and alternate methods of passing the results. To ensure completely elementary code, we return multiple values as results only through pointers such as double *x. Copyright 2006, Trustees of Indiana University These files may be freely copied for personal and educational uses provided these lines are included. Full License available at: visualizingquaternions_license.txt */ void ComplexProduct(double x1, double y1, double x2, double y2, double *x, double *y) { *x = x1*x2 - y1*y2; *y = x1*y2 + x2*y1; } void ComplexSum(double x1, double y1, double x2, double y2, double *x, double *y) { *x = x1 + x2; *y = y1 + y2; } void ComplexConjugate(double x1, double y1, double *x, double *y) { *x = x1; *y = -y1; } double ComplexModulus(double x1, double y1) { return(sqrt(x1*x1 + y1*y1)); }