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