class IntQuant {
constructor(b, alpha, beta) {
this.b = b;
this.alpha = alpha;
this.beta = beta;
this.int_low = -Math.pow(2, b - 1);
this.int_high = Math.pow(2, b - 1) - 1;
this.s = (this.int_high - this.int_low) / (this.alpha - this.beta);
this.z = Math.round(this.beta * this.s) - this.int_low;
}
quantize(x) {
const q = x * this.s - this.z;
return Math.min(Math.max(Math.round(q), this.int_low), this.int_high);
}
dequantize(q) {
const x = (q + this.z) / this.s;
return x;
}
}