def test_right_exp_coincides(self, n, initial_vec): group = SpecialEuclidean(n=n) vector_group = SpecialEuclidean(n=n, point_type="vector") initial_matrix_vec = group.lie_algebra.matrix_representation(initial_vec) vector_exp = vector_group.right_canonical_metric.exp(initial_vec) result = group.right_canonical_metric.exp(initial_matrix_vec, n_steps=25) expected = vector_group.matrix_from_vector(vector_exp) self.assertAllClose(result, expected, atol=1e-6)
def test_right_exp_coincides(self): vector_group = SpecialEuclidean(n=2, point_type="vector") theta = gs.pi / 2 initial_vec = gs.array([theta, 1.0, 1.0]) initial_matrix_vec = self.group.lie_algebra.matrix_representation(initial_vec) vector_exp = vector_group.right_canonical_metric.exp(initial_vec) result = self.group.right_canonical_metric.exp(initial_matrix_vec, n_steps=25) expected = vector_group.matrix_from_vector(vector_exp) self.assertAllClose(result, expected, atol=1e-6)
def test_left_exp_coincides(self): vector_group = SpecialEuclidean(n=2, point_type='vector') theta = gs.pi / 3 initial_vec = gs.array([theta, 2., 2.]) initial_matrix_vec = self.group.lie_algebra.matrix_representation( initial_vec) vector_exp = vector_group.left_canonical_metric.exp(initial_vec) result = self.group.left_canonical_metric.exp(initial_matrix_vec) expected = vector_group.matrix_from_vector(vector_exp) self.assertAllClose(result, expected)
def setUp(self): warnings.simplefilter("ignore", category=ImportWarning) gs.random.seed(1234) group = SpecialEuclidean(n=2, point_type="vector") point_1 = gs.array([0.1, 0.2, 0.3]) point_2 = gs.array([0.5, 5.0, 60.0]) translation_large = gs.array([0.0, 5.0, 6.0]) translation_small = gs.array([0.0, 0.6, 0.7]) elements_all = { "translation_large": translation_large, "translation_small": translation_small, "point_1": point_1, "point_2": point_2, } elements = elements_all if geomstats.tests.tf_backend(): # Tf is extremely slow elements = {"point_1": point_1, "point_2": point_2} elements_matrices_all = { key: group.matrix_from_vector(elements_all[key]) for key in elements_all } elements_matrices = elements_matrices_all self.group = group self.elements_all = elements_all self.elements = elements self.elements_matrices_all = elements_matrices_all self.elements_matrices = elements_matrices self.n_samples = 4
def setUp(self): warnings.simplefilter('ignore', category=ImportWarning) gs.random.seed(1234) group = SpecialEuclidean(n=2, point_type='vector') point_1 = gs.array([0.1, 0.2, 0.3]) point_2 = gs.array([0.5, 5., 60.]) translation_large = gs.array([0., 5., 6.]) translation_small = gs.array([0., 0.6, 0.7]) elements_all = { 'translation_large': translation_large, 'translation_small': translation_small, 'point_1': point_1, 'point_2': point_2 } elements = elements_all if geomstats.tests.tf_backend(): # Tf is extremely slow elements = {'point_1': point_1, 'point_2': point_2} elements_matrices_all = { key: group.matrix_from_vector(elements_all[key]) for key in elements_all } elements_matrices = elements_matrices_all self.group = group self.elements_all = elements_all self.elements = elements self.elements_matrices_all = elements_matrices_all self.elements_matrices = elements_matrices self.n_samples = 4