예제 #1
0
def test_truediv():
    x=ad.Node(4,2)
    y=ad.Node(2,1)
    temp=x/y
    assert(temp.val==2)
    assert(temp.der==(4-4)/4)
    with pytest.raises(ValueError):
        x/"1"
예제 #2
0
def test_add():
    x = ad.Node(2.0) + ad.Node(1.0)
    assert(x.val==3)
    assert(x.der==2)
    x=ad.Node(2.0)+10
    y=10+ad.Node(2.0)
    assert(x==y)
    with pytest.raises(ValueError):
        x+"1"
예제 #3
0
def test_power():
    x=ad.Node(2.0,2.0)
    x=x**3
    assert(x.val==8)
    assert(x.der==24)
    with pytest.raises(ValueError):
        x**"2"
예제 #4
0
def test_rtruediv():
    x=ad.Node(10,2)
    y=1/x
    assert(y.val==0.1)
    assert (y.der == -1/100*2)
    with pytest.raises(ValueError):
        "1"/x
def test_logb():
    x = ad.Node(2.0, 2.0)
    a = ad.logb(np.exp(1), x)
    b = ad.log(x)
    assert (np.isclose(a.val, b.val) & np.isclose(a.der, b.der))
    x = ad.Node(8.0, 2.0)
    a = ad.logb(2, x)
    assert (np.isclose(a.val, 3))
    assert (np.isclose(a.der, 0.360674))
    x = ad.Node_b(8.0, )
    a = ad.logb(2, x)
    assert (np.isclose(a.val, 3))
    a = ad.logb(3, 27)
    assert (np.isclose(a, 3))
    with pytest.raises(ValueError):
        ad.logb(x, 2)
    with pytest.raises(ValueError):
        ad.logb(2, "1")
def test_arccos():
    x = ad.Node(0.5, 0.5)
    x = ad.arccos(x)
    assert np.isclose(x.val, np.arccos(0.5))
    assert np.isclose(x.der, (-1 / np.sqrt(0.75)) * 0.5)
    x = ad.Node_b(0.5)
    x = ad.arccos(x)
    assert np.isclose(x.val, np.arccos(0.5))
    x = ad.arccos(1)
    assert np.isclose(x, np.arccos(1))

    with pytest.raises(ValueError):
        ad.arccos("1")
    x = ad.Node(2, 0.5)
    with pytest.raises(ValueError):
        ad.arccos(x)
    x = ad.Node_b(2)
    with pytest.raises(ValueError):
        ad.arccos(x)
def test_log():
    x = ad.Node(2, 2)
    x = ad.log(x)
    assert np.isclose(x.val, np.log(2))
    assert np.isclose(x.der, 1)
    x = ad.Node_b(1.0)
    x = ad.log(x)
    assert np.isclose(x.val, 0)
    x = ad.log(1)
    assert np.isclose(x, 0)
    with pytest.raises(ValueError):
        ad.log("1")
def test_sin():
    x = ad.Node(1.0)
    x = ad.sin(x)
    assert np.isclose(x.val, np.sin(1))
    assert np.isclose(x.der, np.cos(1))
    x = ad.Node_b(1.0)
    x = ad.sin(x)
    assert np.isclose(x.val, np.sin(1))
    x = ad.sin(np.pi)
    assert np.isclose(x, np.sin(np.pi))
    with pytest.raises(ValueError):
        ad.sin("1")
def test_exp():
    x = ad.Node(0, 2)
    x = ad.exp(x)
    assert np.isclose(x.val, 1)
    assert np.isclose(x.der, 2)
    x = ad.Node_b(0)
    x = ad.exp(x)
    assert np.isclose(x.val, 1)
    x = ad.exp(0)
    assert np.isclose(x, 1)
    with pytest.raises(ValueError):
        ad.exp("1")
def test_tan():
    x = ad.Node(1.0, 2)
    x = ad.tan(x)
    assert np.isclose(x.val, np.tan(1))
    assert np.isclose(x.der, 2 * 1 / (np.cos(1)**2))
    x = ad.Node_b(1.0)
    x = ad.tan(x)
    assert np.isclose(x.val, np.tan(1))
    x = ad.tan(np.pi)
    assert np.isclose(x, np.tan(np.pi))
    with pytest.raises(ValueError):
        ad.tan("1")
def test_tanh():
    x = ad.Node(2)
    x = ad.tanh(x)
    assert np.isclose(x.val, np.tanh(2))
    assert np.isclose(x.der, 1 / (np.cosh(2)**2))
    x = ad.Node_b(2)
    x = ad.tanh(x)
    assert np.isclose(x.val, np.tanh(2))
    x = ad.tanh(2)
    assert np.isclose(x, np.tanh(2))

    with pytest.raises(ValueError):
        ad.tanh("1")
def test_logistic():
    x = ad.Node(2)
    x = ad.logistic(x)
    assert np.isclose(x.val, np.exp(2) / (np.exp(2) + 1))
    assert np.isclose(x.der, np.exp(-2) / ((1 + np.exp(-2))**2))
    x = ad.Node_b(2)
    x = ad.logistic(x)
    assert np.isclose(x.val, np.exp(2) / (np.exp(2) + 1))
    x = ad.logistic(2)
    assert np.isclose(x, np.exp(2) / (np.exp(2) + 1))

    with pytest.raises(ValueError):
        ad.logistic("1")
def test_sqrt():
    x = ad.Node(4)
    x = ad.sqrt(x)
    assert np.isclose(x.val, 2)
    assert np.isclose(x.der, 0.25)
    x = ad.Node_b(4)
    x = ad.sqrt(x)
    assert np.isclose(x.val, 2)
    x = ad.sqrt(4)
    assert np.isclose(x, np.sqrt(4))

    with pytest.raises(ValueError):
        ad.sqrt("1")
def test_power():
    x = ad.Node(2.0, 2.0)
    a = ad.power(3, x)
    assert (np.isclose(a.val, 9))
    assert (np.isclose(a.der, 3**2 * np.log(3) * x.der))
    x = ad.Node_b(2.0)
    a = ad.power(3, x)
    assert (np.isclose(a.val, 9))
    a = ad.power(2, 5)
    assert (np.isclose(a, 2**5))
    with pytest.raises(ValueError):
        ad.power(x, 2)
    with pytest.raises(ValueError):
        ad.power(2, "1")
def test_arctan():
    x = ad.Node(2)
    x = ad.arctan(x)
    assert np.isclose(x.val, np.arctan(2))
    assert np.isclose(x.der, 0.2)
    x = ad.Node_b(2)
    x = ad.arctan(x)
    assert np.isclose(x.val, np.arctan(2))

    x = ad.arctan(2)
    assert np.isclose(x, np.arctan(2))

    with pytest.raises(ValueError):
        ad.arctan("1")
예제 #16
0
def test_not_equal_num():
    x = ad.Node(2.0) + 2
    y = ad.Node(4.0, 2.0)
    assert x != y
예제 #17
0
def test_not_equal_node():
    x = ad.Node(2.0) + ad.Node(4.0)
    y = ad.Node(1.0, 2.0)
    assert x != y
예제 #18
0
def test_neg():
    x = -ad.Node(5.0)
    assert x.val == -5
    assert x.der == -1
예제 #19
0
def test_truediv_num():
    x = ad.Node(4, 2)
    x=x/2
    assert (x.val == 2)
    assert (x.der == 1)
예제 #20
0
def test_rmul():
    x = 5 * ad.Node(4,2)
    assert x.val == 20
    assert x.der == 10
    with pytest.raises(ValueError):
        "1"*x
예제 #21
0
def test_mul_num():
    x = ad.Node(5.0) * 4
    assert x.val == 20
    assert x.der == 4
예제 #22
0
def test_sub_num():
    x = ad.Node(5.0) - 3
    assert x.val == 2
    assert x.der == 1
    with pytest.raises(ValueError):
        x-"1"
예제 #23
0
def test_mul():
    x = ad.Node(5.0) * ad.Node(4)
    assert x.val == 20
    assert x.der == 9
    with pytest.raises(ValueError):
        x*"1"
예제 #24
0
def test_rsub():
    x = 5 - ad.Node(2.0)
    assert x.val == 3
    assert x.der == -1
    with pytest.raises(ValueError):
        "1"-x
예제 #25
0
def test_equal():
    x = ad.Node(2.0) + ad.Node(1.0)
    y = ad.Node(3.0, 2.0)
    assert x == y
예제 #26
0
def test_sub():
    x = ad.Node(5.0) - ad.Node(3)
    assert x.val == 2
    assert x.der == 0