Beispiel #1
0
    def test_norm(self):
        # Test calculating notm of a quaternion
        q = [0.1, 0.2, 0.3, 0.4]
        x = QuaternionTensor(q)
        y = pyquaternion.Quaternion(*q)

        self.assertTrue(torch.allclose(x.norm(), torch.Tensor([y.norm])))
Beispiel #2
0
    def test_exp(self):
        # Test quaternion exponential
        q = [0.1, 0.2, 0.3, 0.4]
        x = QuaternionTensor(q)
        y = pyquaternion.Quaternion(*q)

        self.assertTrue(
            torch.allclose(x.exp(),
                           torch.Tensor((pyquaternion.Quaternion.exp(y).q))))
Beispiel #3
0
    def test_div(self):
        # Test dividing two quaternions
        q1 = [0.1, 0.2, 0.3, 0.4]
        q2 = [1, 2, 3, 4]

        x1 = QuaternionTensor(q1)
        x2 = QuaternionTensor(q2)

        y1 = pyquaternion.Quaternion(*q1)
        y2 = pyquaternion.Quaternion(*q2)
        self.assertTrue(torch.allclose(x1 / x2, torch.Tensor((y1 / y2).q)))
Beispiel #4
0
    def test_mul(self):
        # Test multiplying two quaternions
        q1 = [0.1, 0.2, 0.3, 0.4]
        q2 = [1, 2, 3, 4]

        x1 = QuaternionTensor(q1)
        x2 = QuaternionTensor(q2)

        y1 = pyquaternion.Quaternion(*q1)
        y2 = pyquaternion.Quaternion(*q2)
        self.assertTrue(torch.allclose(x1 * x2, torch.Tensor((y1 * y2).q)))
Beispiel #5
0
    def test_pow(self):
        # Test raising quaternion to power
        q = [0.1, 0.2, 0.3, 0.4]
        x = QuaternionTensor(q)
        y = pyquaternion.Quaternion(*q)

        self.assertTrue(torch.allclose(x**2, torch.Tensor((y**2).q)))
Beispiel #6
0
 def test_torch_casting(self):
     # Test casting to standard PyTorch tensor
     x = QuaternionTensor([0.1, 0.2, 0.3, 0.4])
     print(x.torch())
     self.assertTrue(
         torch.equal(x.torch(), torch.tensor([0.1, 0.2, 0.3, 0.4])))
Beispiel #7
0
 def test_scalar_add(self):
     # Test adding a quaternion and a scalar
     q = [0.1, 0.2, 0.3, 0.4]
     x = QuaternionTensor(q)
     y = pyquaternion.Quaternion(*q)
     self.assertTrue(torch.allclose(x + 1, torch.Tensor((y + 1).q)))
Beispiel #8
0
 def test_add(self):
     # Test adding two quaternions
     q = [0.1, 0.2, 0.3, 0.4]
     x = QuaternionTensor(q)
     y = pyquaternion.Quaternion(*q)
     self.assertTrue(torch.allclose(x + x, torch.Tensor((y + y).q)))