예제 #1
0
def test_dual_channel_kraus1():
    """Test dual_channel on a channel represented as Kraus operators (1d list, CP map)."""
    kraus_1 = np.array([[1, 0, 1j, 0]])
    kraus_2 = np.array([[0, 1, 0, 1j]])

    expected_res = [np.array([[1, 0, -1j, 0]]).T, np.array([[0, 1, 0, -1j]]).T]

    res = dual_channel([kraus_1, kraus_2])

    bool_mat = np.isclose(res, expected_res)
    np.testing.assert_equal(np.all(bool_mat), True)
예제 #2
0
def test_dual_channel_choi_dims():
    """Test dual_channel on a Choi matrix with different input and output dimensions."""
    j = np.array([
        [1, -1j, 0, 0, 0, 1],
        [1j, -1, 0, 0, 0, -1j],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [1, 1j, 0, 0, 0, 1],
    ])

    expected_res = np.array([
        [1, 0, 0, 1j, 0, 1],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [-1j, 0, 0, -1, 0, 1j],
        [0, 0, 0, 0, 0, 0],
        [1, 0, 0, -1j, 0, 1],
    ])

    res = dual_channel(j, [3, 2])

    bool_mat = np.isclose(res, expected_res)
    np.testing.assert_equal(np.all(bool_mat), True)
예제 #3
0
def test_dual_channel_invalid_input():
    """Invalid input"""
    with np.testing.assert_raises(ValueError):
        dual_channel([0])
예제 #4
0
def test_dual_channel_unspecified_dims():
    """If the size of the Choi matrix is not a perfect square,
    the dimensions of the input and output spaces must be specified."""
    with np.testing.assert_raises(ValueError):
        j = np.arange(36).reshape(6, 6)
        dual_channel(j)
예제 #5
0
def test_dual_channel_not_matrix():
    """If the channel is represented as an array, it must be two-dimensional (a matrix)."""
    with np.testing.assert_raises(ValueError):
        j = np.array([1, 2, 3, 4])
        dual_channel(j)
예제 #6
0
def test_dual_channel_nonsquare_matrix():
    """If the channel is represented as a Choi matrix, it must be square."""
    with np.testing.assert_raises(ValueError):
        j = np.array([[1, 2, 3, 4], [4, 3, 2, 1]])
        dual_channel(j)
예제 #7
0
def test_dual_channel_choi_square():
    """Test dual_channel on a 9x9 Choi matrix, inferring dims=[3,3]."""
    res = dual_channel(choi(1, 1, 0))

    bool_mat = np.isclose(res, choi(1, 0, 1))
    np.testing.assert_equal(np.all(bool_mat), True)