From 6bc012028618d1bde20a6d7844e6d68a5332554b Mon Sep 17 00:00:00 2001 From: Matiq Date: Wed, 26 Aug 2026 13:09:33 +0300 Subject: [PATCH] 24mm10-bis: twins = radix-4 complex FFT-2048, raw normalization (INV+ffe0(2^-12), FWD none); twiddles inline in plan capture; q-paradox not in normalizations -> need live intermediate states --- handoff/NOTES_LEVEL.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/handoff/NOTES_LEVEL.md b/handoff/NOTES_LEVEL.md index 9986f77..7daec42 100644 --- a/handoff/NOTES_LEVEL.md +++ b/handoff/NOTES_LEVEL.md @@ -4160,4 +4160,37 @@ q=1 → rms 0.022 дБ; q=0.8 → 0.0065 дБ (медиана, 60 кадров). 3. Windows/x64dbg-MCP (если доступен хост): брейкпоинт на 52b644..52b893, дамп FIR после каждого из 6 шагов для одного кадра — закрывает всё. +## 24mm10-бис: итог статического разбора близнецов (раунд «добить q») +``` +Ядра 181b853e0(INV-core)/181b81b80(FWD-core): 3130 строк почти развёрнутого +AVX2-кода (60 jcc, 4 боевых петли), БЕЗ внутренних вызовов; единственные +float-константы ±0.707107 (+ знак-маска 0x80000000) в собственном статике +@0x186ee7dxx (в дампе есть). Это radix-4/split-radix КОМПЛЕКСНЫЙ FFT +половинного размера (count=N/2=2048 от воркера), специфицированный под +размер (jump-table по log2n в воркере выбирает ядро). +Нормировок внутри НЕТ (ни одной vmulps на константу ≠±1/√2). +INV-воркер добавляет ffe0(2^-12) ([obj+0xc]=1), FWD-воркер НЕ добавляет +([obj+8]=0). Твидлы плана лежат инлайн после заголовка плана (захват buf548: +квады cos(π/8)-класса @f32-индекс 560+, пары sin|cos дальше); +указатели plan[+0x30]/[+0x38]/[+0x50]/[+0x58] — кучные адреса этих таблиц +(вне дампа), разность [+0x38]−[+0x30]=0x230Б=140 f32. +Инструмент: /tmp/opencode/avx_interp.py (мини-интерпретатор AVX/FMA- +подмножества; баги cmp-as-sub и RIP-rel исправлены; довести до прогона — +упёрлось в управление потоком на таблицах, см. probe2/probe3.py). +``` +ВЫВОД: пара INV/FWD == пара numpy.irfft/rfft (подтверждено трижды). +Парадокс q (модель требует аргумент×0.8, все масштабы зафиксированы) +⇒ причина НЕ в нормировках ядер, а в том, ЧТО реально лежит в FIR-буфере +в момент γ-кадров: офлайн-гипотезы о стадиях исчерпаны, кадры полиморфны. +Необходимо наблюдение ЖИВОГО состояния (варианты 2/3 выше), либо полный +декод управления потоком близнеца (петли по стадиям, r13/r14 walk — +частично картирован: r13=work, add/sub rbp, add 0x40/0x100). + +### Скорректированные мелочи dataflow этого раунда +- Порядок: copy → opA(INV) → FIR[n]=0 → fold×2 → zero[2049..] → opB(FWD) + (FIR[n]=0 стоит ПОСЛЕ opA, обнуляет временной отсчёт t[N/2], не вход!) +- В модели убрать h[-1]=0 перед irfft (Найквост входа НЕ обнулялся). +``` + +