
Split coordinates into outlier and non-outlier sets, bits allocated apart
Source:R/tqoutl.R
Outsplit.RdThe split is by MAGNITUDE RANK, not an absolute threshold, so the outlier count is exactly ceiling(frac * d) regardless of scale. Ties break on the lower index. The average bit-width comes out non-integer, which is the point of the construction.
Details
Formula: O = the ceiling(frac d) coordinates of largest |x_j|; effective bits = (|O| b_out + (d - |O|) b_in) / d
References
Zandieh et al., arXiv:2504.19874, on splitting channels into outlier and non-outlier sets and applying two independent TurboQuant instances with higher precision for outliers. The paper does not fix the split RULE; magnitude-rank selection is used here and documented as such.
Examples
V <- c(1, 2, 3, 4, 5, 6, 7, 8)
Outsplit(V)
#> $outlier_index
#> [1] 8
#>
#> $n_outlier
#> [1] 1
#>
#> $effective_bits
#> [1] 2.75
#>
#> $outlier_energy
#> [1] 0.3137255
#>
#> $threshold
#> [1] 8
#>
#> $d
#> [1] 8
#>
#> $method
#> [1] "Outlier channel split with per-set bit allocation"
#>
#> attr(,"class")
#> [1] "morie_rich_result" "list"