24mm9: FIR-chain decoded = min-phase cepstral sandwich; opB/opC are RFFT twins (plan@548), df0 = complex-mul dst=track; validated 0.0065 dB median over 60 clean frames; gamma = 1+s_F(q), q~0.8 source open
This commit is contained in:
@@ -733,3 +733,60 @@ df0: 18000df0→18000b3c0 ; f70→18000e360 ; финальный combine
|
||||
Все четыре микровопроса 24mm6 закрыты или локализованы до тел-обёрток.
|
||||
Следующий раунд: семантика 4ca80/1a0c0 (кандидаты источника γ=2k−масштаба),
|
||||
затем полный numpy-конвейер.
|
||||
|
||||
## ДОПОЛНЕНИЕ 24mm9: opB/opC = RFFT-близнецы; df0 = complex-mul; цепь валидирована 0.0065 дБ
|
||||
|
||||
### Слой вызовов FIR-секции (уточнение поверх 24l/24mm6)
|
||||
```
|
||||
обёртки: th2180 impl=125e0, th1a90 impl=5560 — только перестановка аргументов:
|
||||
воркер получает (rcx=data, rdx=data, r8=ПЛАН, r9=WORK), ин-плейс.
|
||||
ПЛАН = [ctx+540548] (buf548!): tag=6 [+0], log2n=12 [+4], flag [+8]=0,
|
||||
scale_flag=1 [+0xc], scale=2^-12 [+0x10], workbytes=16384 [+0x18].
|
||||
WORK = [ctx+540598] — рабочая область FFT (заметение «lane-mask» из 23b).
|
||||
th2180 → воркер 4ca80(f)/1d160(d): INVERSE real-RFFT (голова: X[0]±X[Nyq]).
|
||||
th1a90 → воркер 1a0c0(f)/18400(d): FORWARD real-RFFT (хвост: пакинг Nyq).
|
||||
тела: импортные близнецы 181b853e0(inv)/181b81b80(fwd); константы только
|
||||
±0.707107; масштабов нет. ffe0 = ×scale pass (skip при scale∈{0,1}).
|
||||
copy th2210 → 136e0 → 4d900(src,dst,n): pack re=v, im=0 (vunpcklps+zero).
|
||||
df0 18000b3c0: ПОЭЛЕМЕНТНОЕ КОМПЛЕКСНОЕ УМНОЖЕНИЕ dst=[rdx]=arg2:
|
||||
track_i := track_i ⊗ FIR (vfmaddsub213ps; f70/b560 — double версия).
|
||||
EXP 140b30 → 1803831c0: полиномиальная комплексная exp (без таблиц значений):
|
||||
magic 12582912 (=2^23·1.5), guard 87.33654, редукция 184.665≈128/ln2,
|
||||
коэф. {−0.01604,−1.541667(=−37/24), 3.166e-05, 1.008329, −1.65777e-06,
|
||||
−0.01932, 0.00134, 0.00541687, 10000, 4.19179}; AVX-512+FMA.
|
||||
Численно = поточечный комплексный exp (flat-exp проигрывает 8 дБ).
|
||||
```
|
||||
|
||||
### Полная последовательность (52b60c–52b893, все шаги, без пропусков)
|
||||
```
|
||||
design 535a70(scratch@628 ← ln(bands_i)) ; 52b62f, своп аргументов
|
||||
copy 2210(scratch → FIR, 2049 пар (re,im=0)) ; 52b644
|
||||
FIR[4096]=0 ; 52b685 Найквост ДО фолда
|
||||
inv-RFFT opA ; 52b672 th2180
|
||||
fold: float[1..2047]*=2.0 (xmm13@1824c41e0) ; 52d920
|
||||
float[2049..4095]=0 ; 52db50
|
||||
fwd-RFFT opB ; 52b6e1 th1a90
|
||||
EXP in-place, аргумент×q (q≈0.80, источник ОТКРЫТ); 52b716
|
||||
inv-RFFT opC ; 52b74b th2180
|
||||
FIR[4096]=0 ; 52b76d
|
||||
float[0..2047]*=WINfreq[2048..4095] ; 52d990 (падающий Hann)
|
||||
float[2048..4095]=0 ; 52db50
|
||||
fwd-RFFT opD ; 52b7ba th1a90
|
||||
FIR[0]=1.0f; FIR[1]=0 ; 52b7cd
|
||||
(flag f890≠0: pair-scalars 1880/ca0 — live мертво)
|
||||
th2030(FIR, wet=s888, 2n float) ; 52b857, s888=1 no-op
|
||||
df0(FIR, track_i, n): track_i := track_i ⊗ FIR ; 52b893
|
||||
```
|
||||
Смысл: классическое минимально-фазовое ядро через кепстр
|
||||
(IDFT лога → фолдинг ×2 причинной части + усечение → exp → обратный ход).
|
||||
|
||||
### Валидация и γ
|
||||
mask_sim = trk·|F(q)|: 60 ультрачистых кадров, ВСЕ 2049 бина:
|
||||
rms мед 0.0065 дБ / p90 0.0075 / max 0.035 при q=0.80 (порог 0.05 ✓).
|
||||
γ = 1 + s_F(q), s_F = наклон log|F| по log trk в нотче: q=0.8 ⇒ γ_pred=1.7516
|
||||
(точный 1.760561). Открыто: место q в асме (внутренность 1803831c0);
|
||||
unicorn не эмулирует FMA ⇒ нужен статдекод ядра или live-захват входа EXP.
|
||||
Дизасмы: /tmp/opencode/cascade/{wrapA_125e0,wrapB_5560,opB_4ca80,opC_1a0c0,
|
||||
df0_b3c0,h_ffe0,h_136e0*,imp_b8*3e0_full,bk_1803831c0}.dis
|
||||
(*copy: python3 scripts/disasm_func.py 1800136e0 — ВАЖНО: полный VA,
|
||||
короткая форма «125e0» даёт пустой файл!).
|
||||
|
||||
Reference in New Issue
Block a user