Example #1
0
 def test_shannon_entropy(self):
     """Test shannon_entropy function"""
     input_pvec = np.array([0.5, 0.3, 0.07, 0.1, 0.03])
     # Base 2
     self.assertAlmostEqual(1.7736043871504037, shannon_entropy(input_pvec))
     # Base e
     self.assertAlmostEqual(1.229368880382052,
                            shannon_entropy(input_pvec, np.e))
     # Base 10
     self.assertAlmostEqual(0.533908120973504,
                            shannon_entropy(input_pvec, 10))
Example #2
0
 def test_entropy_density_matrix(self):
     """Test entropy function on density matrix inputs"""
     # Density matrix input
     rhos = [DensityMatrix(np.diag([0.5] + (n * [0]) + [0.5])) for n in range(1, 5)]
     for rho in rhos:
         self.assertAlmostEqual(entropy(rho), 1)
         self.assertAlmostEqual(entropy(rho, base=2), 1)
         self.assertAlmostEqual(entropy(rho, base=np.e), -1 * np.log(0.5))
     # Array input
     for prob in [0.001, 0.3, 0.7, 0.999]:
         rho = np.diag([prob, 1 - prob])
         self.assertAlmostEqual(entropy(rho), shannon_entropy([prob, 1 - prob]))
         self.assertAlmostEqual(
             entropy(rho, base=np.e), shannon_entropy([prob, 1 - prob], base=np.e)
         )
         self.assertAlmostEqual(entropy(rho, base=2), shannon_entropy([prob, 1 - prob], base=2))
     # List input
     rho = [[0.5, 0], [0, 0.5]]
     self.assertAlmostEqual(entropy(rho), 1)