Exemplo n.º 1
0
class TestLog2(object):
    def setup_class(self):
        self.ops = LogOperations(2)

    def test_add(self):
        X = self.ops.log(np.array([0, 1, 0, 2, 0, 1, 2, 1, 2]))
        Y = self.ops.log(np.array([0, 0, 1, 0, 2, 2, 1, 1, 2]))
        Z = self.ops.log(np.array([0, 1, 1, 2, 2, 3, 3, 2, 4]))
        for x, y, z in zip(X, Y, Z):
            assert np.allclose(self.ops.add(x, y), z)
        assert np.allclose(self.ops.add(X, Y), Z)

    def test_add_inplace(self):
        X = self.ops.log(np.array([0, 1, 0, 2, 0, 1, 2, 1, 2]))
        Y = self.ops.log(np.array([0, 0, 1, 0, 2, 2, 1, 1, 2]))
        Z = self.ops.log(np.array([0, 1, 1, 2, 2, 3, 3, 2, 4]))
        self.ops.add_inplace(X, Y)
        assert np.allclose(X, Z)

    def test_add_reduce(self):
        X = self.ops.log(np.array([[0, 0, 0], [0, 1, 2], [1, 1, 1]]))
        Y = self.ops.log(np.array([0, 3, 3]))
        for x, y in zip(X, Y):
            assert np.allclose(self.ops.add_reduce(x), y)
        assert np.allclose(self.ops.add_reduce(np.array([])), self.ops.zero)

    def test_mult(self):
        X = self.ops.log(np.array([0, 1, 0, 0.5, 0, 1, 0.5, 1, 0.5, 2, 2, 2]))
        Y = self.ops.log(np.array([0, 0, 1, 0, 5, 0.5, 1, 1, 0.5, 1, 2, 0.5]))
        Z = self.ops.log(np.array([0, 0, 0, 0, 0, 0.5, 0.5, 1, 0.25, 2, 4, 1]))
        for x, y, z in zip(X, Y, Z):
            assert np.allclose(self.ops.mult(x, y), z)
        assert np.allclose(self.ops.mult(X, Y), Z)

    def test_mult_inplace(self):
        X = self.ops.log(np.array([0, 1, 0, 0.5, 0, 1, 0.5, 1, 0.5, 2, 2, 2]))
        Y = self.ops.log(np.array([0, 0, 1, 0, 5, 0.5, 1, 1, 0.5, 1, 2, 0.5]))
        Z = self.ops.log(np.array([0, 0, 0, 0, 0, 0.5, 0.5, 1, 0.25, 2, 4, 1]))
        self.ops.mult_inplace(X, Y)
        assert np.allclose(X, Z)

    def test_invert(self):
        X = self.ops.log(np.array([1, 2, 0.5, 10], dtype=float))
        Y = self.ops.log(np.array([1, 1 / 2, 2, 1 / 10]))
        for x, y in zip(X, Y):
            assert np.allclose(self.ops.invert(x), y)

    def test_mult_reduce(self):
        nums = np.arange(1, 5 + 1)
        prods = np.cumprod(nums)
        prods = self.ops.log(prods)
        nums = self.ops.log(nums)
        for i, p in enumerate(prods):
            assert np.allclose(self.ops.mult_reduce(nums[:i + 1]), p)
        assert np.allclose(self.ops.mult_reduce(np.array([])), self.ops.one)

    def test_normalize(self):
        W = np.ones(3)
        X = self.ops.log(W)
        Y = self.ops.normalize(X)
        Z = self.ops.exp(Y)
        Z_ = W / 3
        assert np.allclose(Z, Z_)
Exemplo n.º 2
0
 def setup_class(self):
     self.ops = LogOperations(2)
Exemplo n.º 3
0
def test_exp_func2():
    ops = LogOperations(0.5)
    assert np.allclose([0.5**1, 0.5**2, 0.5**3], ops.exp([1, 2, 3]))
Exemplo n.º 4
0
def test_log_func2():
    ops = LogOperations(2)
    assert np.allclose(
        [np.log2(1), np.log2(2), np.log2(3)], ops.log([1, 2, 3]))
Exemplo n.º 5
0
 def setUp(self):
     self.ops = LogOperations(2)
Exemplo n.º 6
0
class TestLog2(object):
    def setUp(self):
        self.ops = LogOperations(2)

    def test_add(self):
        X = self.ops.log(np.array([0, 1, 0, 2, 0, 1, 2, 1, 2]))
        Y = self.ops.log(np.array([0, 0, 1, 0, 2, 2, 1, 1, 2]))
        Z = self.ops.log(np.array([0, 1, 1, 2, 2, 3, 3, 2, 4]))
        for x, y, z in zip(X, Y, Z):
            npt.assert_allclose(self.ops.add(x, y), z)
        npt.assert_allclose(self.ops.add(X, Y), Z)

    def test_add_inplace(self):
        X = self.ops.log(np.array([0, 1, 0, 2, 0, 1, 2, 1, 2]))
        Y = self.ops.log(np.array([0, 0, 1, 0, 2, 2, 1, 1, 2]))
        Z = self.ops.log(np.array([0, 1, 1, 2, 2, 3, 3, 2, 4]))
        self.ops.add_inplace(X, Y)
        npt.assert_allclose(X, Z)

    def test_add_reduce(self):
        X = self.ops.log(np.array([[0, 0, 0], [0, 1, 2], [1, 1, 1]]))
        Y = self.ops.log(np.array([0, 3, 3]))
        for x, y in zip(X, Y):
            npt.assert_allclose(self.ops.add_reduce(x), y)
        npt.assert_allclose(self.ops.add_reduce(np.array([])), self.ops.zero)

    def test_mult(self):
        X = self.ops.log(np.array([0, 1, 0, 0.5, 0, 1, 0.5, 1, 0.5, 2, 2, 2]))
        Y = self.ops.log(np.array([0, 0, 1, 0, 5, 0.5, 1, 1, 0.5, 1, 2, 0.5]))
        Z = self.ops.log(np.array([0, 0, 0, 0, 0, 0.5, 0.5, 1, 0.25, 2, 4, 1]))
        for x, y, z in zip(X, Y, Z):
            npt.assert_allclose(self.ops.mult(x, y), z)
        npt.assert_allclose(self.ops.mult(X, Y), Z)

    def test_mult_inplace(self):
        X = self.ops.log(np.array([0, 1, 0, 0.5, 0, 1, 0.5, 1, 0.5, 2, 2, 2]))
        Y = self.ops.log(np.array([0, 0, 1, 0, 5, 0.5, 1, 1, 0.5, 1, 2, 0.5]))
        Z = self.ops.log(np.array([0, 0, 0, 0, 0, 0.5, 0.5, 1, 0.25, 2, 4, 1]))
        self.ops.mult_inplace(X, Y)
        npt.assert_allclose(X, Z)

    def test_invert(self):
        X = self.ops.log(np.array([1, 2, 0.5, 10], dtype=float))
        Y = self.ops.log(np.array([1, 1/2, 2, 1/10]))
        for x, y in zip(X, Y):
            npt.assert_allclose(self.ops.invert(x), y)

    def test_mult_reduce(self):
        nums = np.arange(1, 5+1)
        prods = np.cumprod(nums)
        prods = self.ops.log(prods)
        nums = self.ops.log(nums)
        for i, p in enumerate(prods):
            npt.assert_allclose(self.ops.mult_reduce(nums[:i+1]), p)
        npt.assert_allclose(self.ops.mult_reduce(np.array([])), self.ops.one)

    def test_normalize(self):
        W = np.ones(3)
        X = self.ops.log(W)
        Y = self.ops.normalize(X)
        Z = self.ops.exp(Y)
        Z_ = W / 3
        npt.assert_allclose(Z, Z_)
Exemplo n.º 7
0
def test_log_func2():
    ops = LogOperations(2)
    npt.assert_allclose([np.log2(1), np.log2(2), np.log2(3)],
                         ops.log([1, 2, 3]))
Exemplo n.º 8
0
def test_exp_func2():
    ops = LogOperations(0.5)
    npt.assert_allclose([0.5**1, 0.5**2, 0.5**3], ops.exp([1, 2, 3]))
Exemplo n.º 9
0
 def setup_class(self):
     self.ops = LogOperations(2)