def test_subtract(self):
        """Test subtract method."""
        # Random input test state
        rho_init = DensityMatrix(self.rand_rho(2))
        stine1, stine2 = self.rand_matrix(16, 2), self.rand_matrix(16, 2)

        # Random Single-Stinespring maps
        chan1 = Stinespring(stine1, input_dims=2, output_dims=4)
        chan2 = Stinespring(stine2, input_dims=2, output_dims=4)
        rho_targ = (rho_init @ chan1) - (rho_init @ chan2)
        chan = chan1.subtract(chan2)
        self.assertEqual(rho_init.evolve(chan), rho_targ)
        chan = chan1 - chan2
        self.assertEqual(rho_init.evolve(chan), rho_targ)

        # Random Single-Stinespring maps
        chan = Stinespring((stine1, stine2))
        rho_targ = 0 * (rho_init @ chan)
        chan = chan.subtract(chan)
        self.assertEqual(rho_init.evolve(chan), rho_targ)
Exemple #2
0
    def test_subtract(self):
        """Test subtract method."""
        # Random input test state
        rho = self.rand_rho(2)
        stine1, stine2 = self.rand_matrix(16, 2), self.rand_matrix(16, 2)

        # Random Single-Stinespring maps
        chan1 = Stinespring(stine1, input_dim=2, output_dim=4)
        chan2 = Stinespring(stine2, input_dim=2, output_dim=4)
        targ = chan1._evolve(rho) - chan2._evolve(rho)
        chan = chan1.subtract(chan2)
        self.assertAllClose(chan._evolve(rho), targ)
        chan = chan1 - chan2
        self.assertAllClose(chan._evolve(rho), targ)

        # Random Single-Stinespring maps
        chan = Stinespring((stine1, stine2))
        targ = 0 * chan._evolve(rho)
        chan = chan.subtract(chan)
        self.assertAllClose(chan._evolve(rho), targ)