4f66fc666b02553d74521a732948f80fe6cfe0c2,geomstats/special_orthogonal_group.py,SpecialOrthogonalGroup,jacobian_translation,#SpecialOrthogonalGroup#Any#Any#,520
 
Before Change
        :param rot_vec: 3D rotation vector
        :returns jacobian: 3x3 matrix
        
        if self.n != 3:
            raise NotImplementedError(
                "jacobian_translation not implemented for n != 3.")
        assert self.belongs(point)
        assert left_or_right in ("left", "right")
        point = self.regularize(point)
        n_points, _ = point.shape
After Change
        assert self.belongs(point)
        assert left_or_right in ("left", "right")
        if self.n == 3:
            point = self.regularize(point)
            n_points, _ = point.shape
            angle = np.linalg.norm(point, axis=1)
            angle = np.expand_dims(angle, axis=1)
            coef_1 = np.zeros([n_points, 1])
            coef_2 = np.zeros([n_points, 1])
            mask_0 = np.isclose(angle, 0)
            mask_0 = np.squeeze(mask_0, axis=1)
            coef_1[mask_0] = (1 - angle[mask_0] ** 2 / 12
                              - angle[mask_0] ** 4 / 720
                              - angle[mask_0] ** 6 / 30240)
            coef_2[mask_0] = (1 / 12 + angle[mask_0] ** 2 / 720
                              + angle[mask_0] ** 4 / 30240
                              + angle[mask_0] ** 6 / 1209600)
            mask_pi = np.isclose(angle, np.pi)
            mask_pi = np.squeeze(mask_pi, axis=1)
            delta_angle = angle[mask_pi] - np.pi
            coef_1[mask_pi] = (- np.pi * delta_angle / 4
                               - delta_angle ** 2 / 4
                               - np.pi * delta_angle ** 3 / 48
                               - delta_angle ** 4 / 48
                               - np.pi * delta_angle ** 5 / 480
                               - delta_angle ** 6 / 480)
            coef_2[mask_pi] = (1 - coef_1[mask_pi]) / angle[mask_pi] ** 2
            mask_else = ~mask_0 & ~mask_pi
            coef_1[mask_else] = ((angle[mask_else] / 2)
                                 / np.tan(angle[mask_else] / 2))
            coef_2[mask_else] = (1 - coef_1[mask_else]) / angle[mask_else] ** 2
            jacobian = np.zeros((n_points, self.dimension, self.dimension))
            for i in range(n_points):
                if left_or_right == "left":
                    jacobian[i] = (coef_1[i] * np.identity(self.dimension)
                                   + coef_2[i] * np.outer(point[i], point[i])
                                   + skew_matrix_from_vector(point[i]) / 2)
                else:
                    jacobian[i] = (coef_1[i] * np.identity(self.dimension)
                                   + coef_2[i] * np.outer(point[i], point[i])
                                   - skew_matrix_from_vector(point[i]) / 2)
        else:
            if left_or_right == "right":
                raise NotImplementedError(
                    "The jacobian of the right translation"
                    " is not implemented.")
            jacobian = self.matrix_from_rotation_vector(point)
        assert jacobian.ndim == 3
        return jacobian
    def random_uniform(self, n_samples=1):

In pattern: SUPERPATTERN
Frequency: 3
Non-data size: 6
Instances
 Project Name: geomstats/geomstats
 Commit Name: 4f66fc666b02553d74521a732948f80fe6cfe0c2
 Time: 2018-04-25
 Author: ninamio78@gmail.com
 File Name: geomstats/special_orthogonal_group.py
 Class Name: SpecialOrthogonalGroup
 Method Name: jacobian_translation
 Project Name: geomstats/geomstats
 Commit Name: bfc0419ebc68ef4b9b53c8aad509d76a0a61bcea
 Time: 2018-04-27
 Author: ninamio78@gmail.com
 File Name: geomstats/special_orthogonal_group.py
 Class Name: SpecialOrthogonalGroup
 Method Name: jacobian_translation
 Project Name: geomstats/geomstats
 Commit Name: 6f24156319db9e6a65af826b0aa817647ccef577
 Time: 2018-07-24
 Author: ninamio78@gmail.com
 File Name: geomstats/special_orthogonal_group.py
 Class Name: SpecialOrthogonalGroup
 Method Name: group_exponential_barycenter