print("i*i = {0}".format(i*i)) print("j*j = {0}".format(j*j)) print("k*k = {0}".format(k*k)) print() print("Products of components:") print("o*i = {0}\ti*o = {1}".format(o*i, i*o)) print("o*j = {0}\tj*o = {1}".format(o*j, j*o)) print("o*k = {0}\tk*o = {1}".format(o*k, k*o)) print("i*j = {0}\tj*i = {1}".format(i*j, j*i)) print("i*k = {0}\tk*i = {1}".format(i*k, k*i)) print("j*k = {0}\tk*j = {1}".format(j*k, k*j)) print() p = Quaternion(i) p.setScalar(-3).setJ(2).setK(-1) print("p=({0}, {1}, {2}, {3})".format(p.getScalar(), p.getI(), p.getJ(), p.getK())) # sqrt(15) = 3.87298 print("||p|| = {0} (correct: 3.87298)".format(p.norm())) q = p.reciprocal() qc = "-0.2-0.0666666666667i-0.133333333333j+0.0666666666667k" print("p**(-1) = {0}\n(correct: {1})".format(q, qc)) print("p*p**(-1) = {0}".format(p*q)) print("p**(-1)*p = {0}".format(q*p)) print() q = Quaternion(1, -2, 3, -4) print("q = {0}".format(q)) print("p+q = {0}".format(p+q))