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))
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)