Newer
Older
from b_asic.quantization import Overflow, Quantization, quantize
def test_quantization():
a = 0.3
assert quantize(a, 4) == 0.25
assert quantize(a, 4, quantization=Quantization.TRUNCATION) == 0.25
assert quantize(a, 4, quantization=Quantization.ROUNDING) == 0.3125
assert quantize(a, 4, quantization=Quantization.MAGNITUDE_TRUNCATION) == 0.25
assert quantize(a, 4, quantization=Quantization.JAMMING) == 0.3125
assert quantize(-a, 4, quantization=Quantization.TRUNCATION) == -0.3125
assert quantize(-a, 4, quantization=Quantization.ROUNDING) == -0.3125
assert quantize(-a, 4, quantization=Quantization.MAGNITUDE_TRUNCATION) == -0.25
assert quantize(-a, 4, quantization=Quantization.JAMMING) == -0.3125
assert quantize(complex(a, -a), 4) == complex(0.25, -0.3125)
assert quantize(
complex(a, -a), 4, quantization=Quantization.MAGNITUDE_TRUNCATION
) == complex(0.25, -0.25)
assert quantize(1.3, 4) == -0.75
assert quantize(1.3, 4, overflow=Overflow.SATURATION) == 0.9375
assert quantize(0.97, 4, quantization=Quantization.ROUNDING) == -1.0
assert (
quantize(
0.97, 4, quantization=Quantization.ROUNDING, overflow=Overflow.SATURATION
)
== 0.9375
)