code: def test_operate(self):
      phi1 = self.phi1 * CanonicalDistribution(
          ["x2", "x4"], [[1, 2], [3, 4]], [0, 4.56], -6.78
      )
      phi2 = self.phi1 / CanonicalDistribution(
          ["x2", "x3"], [[1, 2], [3, 4]], [0, 4.56], -6.78
      )
  
      self.assertEqual(phi1.variables, ["x1", "x2", "x3", "x4"])
      np_test.assert_almost_equal(
          phi1.K,
          np.array(
              [
                  [1.1, -1.0, 0.0, 0.0],
                  [-1.0, 5.0, -2.0, 2.0],
                  [0.0, -2.0, 4.0, 0.0],
                  [0.0, 3.0, 0.0, 4.0],
              ]
          ),
      )
      np_test.assert_almost_equal(
          phi1.h, np.array([[1.0], [4.7], [-1.0], [4.56]])
      )
      np_test.assert_almost_equal(phi1.g, -8.78)
  
      self.assertEqual(phi2.variables, ["x1", "x2", "x3"])
      np_test.assert_almost_equal(
          phi2.K,
          np.array(
              [[1.1, -1.0, 0.0], [-1.0, 3.0, -4.0], [0.0, -5.0, 0.0]]
          ),
      )
      np_test.assert_almost_equal(
          phi2.h, np.array([[1.0], [4.7], [-5.56]])
      )
      np_test.assert_almost_equal(phi2.g, 4.78)
  
file_path: pgmpy/pgmpy/tests/test_factors/test_continuous/test_Canonical_Factor.py
imports: import unittest
  import numpy
  import numpy.testing
  from pgmpy.factors.distributions import GaussianDistribution
  from pgmpy.factors.continuous import CanonicalDistribution
label_desc: Use image node_id 6 for calling the TestJGDMethods obj's underlying member method code with example usage: obj.test_operate() without return types