One bit per coordinate is spent on the sign sketch of the RESIDUAL, so the scalar stage gets only b - 1 and b must be at least 2.
Details
Formula: idx <- Quant_mse(x) at b - 1 bits; r <- x - DeQuant_mse(idx); qjl <- sign(S . r); xtilde <- DeQuant_mse(idx) + (sqrt(pi/2)/d) ||r|| S' qjl
Examples
V <- c(1, 2, 3, 4, 5, 6, 7, 8)
Vcquant(V)
#> $reconstruction
#> [,1]
#> [1,] -0.9930481
#> [2,] -1.9860963
#> [3,] -2.9791444
#> [4,] -3.9721926
#> [5,] -4.9652407
#> [6,] -5.9582889
#> [7,] -6.9513370
#> [8,] -7.9443852
#>
#> $mse
#> [1] 3.972241 15.888964 35.750168 63.555855 99.306023 143.000673 194.639805
#> [8] 254.223419
#>
#> $residual_norm
#> [1] 0.5099427 1.0198855 1.5298282 2.0397710 2.5497137 3.0596564 3.5695992
#> [8] 4.0795419
#>
#> $mean_mse
#> [1] 101.2921
#>
#> $n
#> [1] 8
#>
#> $d
#> [1] 1
#>
#> $b
#> [1] 3
#>
#> $method
#> [1] "TurboQuant_prod on a value cache, arXiv:2504.19874"
#>
#> attr(,"class")
#> [1] "morie_rich_result" "list"
