Skip to content
Snippets Groups Projects
test_quantization.py 1.23 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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
        )