예제 #1
0
def test_wrap():
    x = Fxp(3.75, False, 4, 2, overflow='wrap')
    assert x() == 3.75
    assert x.status['overflow'] == False
    assert x.status['underflow'] == False

    x(4.0)
    assert x() == 0.0
    assert x.status['overflow'] == True
    assert x.status['underflow'] == False

    x.reset()
    x(-0.25)
    assert x() == 3.75
    assert x.status['overflow'] == False
    assert x.status['underflow'] == True

    x = Fxp(3.75, True, 5, 2, overflow='wrap')
    assert x() == 3.75
    assert x.status['overflow'] == False
    assert x.status['underflow'] == False

    x(4.0)
    assert x() == -4.0
    assert x.status['overflow'] == True
    assert x.status['underflow'] == False

    x.reset()
    x(-4.25)
    assert x() == 3.75
    assert x.status['overflow'] == False
    assert x.status['underflow'] == True
예제 #2
0
def test_saturate():
    x = Fxp(0.0, True, 8, 2)
    assert x.upper == 31.75
    assert x.lower == -32.00
    assert x.status['overflow'] == False
    assert x.status['underflow'] == False

    assert x(32.00) == 31.75
    assert x.status['overflow'] == True
    assert x.status['underflow'] == False

    x.reset()
    assert x.status['overflow'] == False
    assert x.status['underflow'] == False

    assert x(-32.25) == -32.00
    assert x.status['overflow'] == False
    assert x.status['underflow'] == True

    assert x(32.00) == 31.75
    assert x.status['overflow'] == True
    assert x.status['underflow'] == True