From: Michael Orlitzky Date: Fri, 13 Nov 2020 15:34:30 +0000 (-0500) Subject: eja: add inner_product() for DirectSumEJA. X-Git-Url: http://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=cbe4ee91e7a2b24ec573ba623b77dfa8a30a1574;p=sage.d.git eja: add inner_product() for DirectSumEJA. --- diff --git a/mjo/eja/eja_algebra.py b/mjo/eja/eja_algebra.py index 183e4cb..def2028 100644 --- a/mjo/eja/eja_algebra.py +++ b/mjo/eja/eja_algebra.py @@ -2440,3 +2440,42 @@ class DirectSumEJA(FiniteDimensionalEuclideanJordanAlgebra): iota_left = lambda x: self.from_vector(I1*x.to_vector()) iota_right = lambda x: self.from_vector(I2*+x.to_vector()) return (iota_left, iota_right) + + def inner_product(self, x, y): + r""" + The standard Cartesian inner-product. + + We project ``x`` and ``y`` onto our factors, and add up the + inner-products from the subalgebras. + + SETUP:: + + + sage: from mjo.eja.eja_algebra import (HadamardEJA, + ....: QuaternionHermitianEJA, + ....: DirectSumEJA) + + EXAMPLE:: + + sage: J1 = HadamardEJA(3) + sage: J2 = QuaternionHermitianEJA(2,QQ,normalize_basis=False) + sage: J = DirectSumEJA(J1,J2) + sage: x1 = J1.one() + sage: x2 = x1 + sage: y1 = J2.one() + sage: y2 = y1 + sage: x1.inner_product(x2) + 3 + sage: y1.inner_product(y2) + 2 + sage: J.one().inner_product(J.one()) + 5 + + """ + (pi_left, pi_right) = self.projections() + x1 = pi_left(x) + x2 = pi_right(x) + y1 = pi_left(y) + y2 = pi_right(y) + + return (x1.inner_product(y1) + x2.inner_product(y2))