]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
eja: add cartesian_jordan_product() method to CartesianProductEJA.
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 21 Feb 2021 13:47:04 +0000 (08:47 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 21 Feb 2021 13:47:04 +0000 (08:47 -0500)
mjo/eja/eja_algebra.py

index 99d89c4ab461de5b33861737499e3afca0a51d90..e82e74171f05ffd2c3a6da36fdfdb481f7945c8f 100644 (file)
@@ -2894,16 +2894,55 @@ class CartesianProductEJA(CombinatorialFreeModule_CartesianProduct,
         return FiniteDimensionalEJAOperator(Ji,self,Ei.matrix())
 
 
+    def cartesian_jordan_product(self, x, y):
+        r"""
+        The componentwise Jordan product.
+
+        We project ``x`` and ``y`` onto our factors, and add up the
+        Jordan products from the subalgebras. This may still be useful
+        after (if) the default Jordan product in the Cartesian product
+        algebra is overridden.
+
+        SETUP::
+
+            sage: from mjo.eja.eja_algebra import (HadamardEJA,
+            ....:                                  JordanSpinEJA)
+
+        EXAMPLE::
+
+            sage: J1 = HadamardEJA(3)
+            sage: J2 = JordanSpinEJA(3)
+            sage: J = cartesian_product([J1,J2])
+            sage: x1 = J1.from_vector(vector(QQ,(1,2,1)))
+            sage: y1 = J1.from_vector(vector(QQ,(1,0,2)))
+            sage: x2 = J2.from_vector(vector(QQ,(1,2,3)))
+            sage: y2 = J2.from_vector(vector(QQ,(1,1,1)))
+            sage: z1 = J.from_vector(vector(QQ,(1,2,1,1,2,3)))
+            sage: z2 = J.from_vector(vector(QQ,(1,0,2,1,1,1)))
+            sage: (x1*y1).to_vector()
+            (1, 0, 2)
+            sage: (x2*y2).to_vector()
+            (6, 3, 4)
+            sage: J.cartesian_jordan_product(z1,z2).to_vector()
+            (1, 0, 2, 6, 3, 4)
+
+        """
+        m = len(self.cartesian_factors())
+        projections = ( self.cartesian_projection(i) for i in range(m) )
+        products = ( P(x)*P(y) for P in projections )
+        return self._cartesian_product_of_elements(tuple(products))
+
     def cartesian_inner_product(self, x, y):
         r"""
         The standard componentwise Cartesian inner-product.
 
         We project ``x`` and ``y`` onto our factors, and add up the
-        inner-products from the subalgebras.
+        inner-products from the subalgebras. This may still be useful
+        after (if) the default inner product in the Cartesian product
+        algebra is overridden.
 
         SETUP::
 
-
             sage: from mjo.eja.eja_algebra import (HadamardEJA,
             ....:                                  QuaternionHermitianEJA)