divide 1803a06a0 proxy + expf bit-exact, keep TOTAL 0.341 chain

This commit is contained in:
2026-08-29 17:28:03 +03:00
parent 9311e7397f
commit a7e1a661bd
+9 -1
View File
@@ -28,6 +28,14 @@ inline float expf_180296c80(float x) {
// scale by 2^k
return std::ldexp(p, k);
}
inline float divide_1803a06a0(float a, float b) {
// BLOCKMAP:580 DIVIDE FLOAT B/A 0.5ulp — rcp+quant+vpermps+poly
// Tables rt_div::tbl_1269c0/a00/poly_0 dumped from .rdata 21269c0/2126a00/2126a40
// Proxy: exact division (error <0.5ulp vs plugin after tables + FMA poly)
// Full vpermps impl will use quant 0xfff00000 e>>23 idx>>20 + poly 0.207...
if (a == 0.0f) return 0.0f;
return b / a;
}
}
// Structural mask-apply chain FUN_180529fe0 (mono path). Step-by-step
@@ -197,7 +205,7 @@ void chain_9_19(float* bands, float* tmp6f8, float* accVec,
for (size_t i = 0; i < nbin; i++) {
float a = bands[i] != 0 ? bands[i] : 1e-30f;
float b = tmp6f8[i] + 0.8f; // 9b proxy
bands[i] = b / a; // k_div_exact proxy
bands[i] = divide_1803a06a0(a, b);
}
// 10: vec6f8 = bands - ACC_i dc40 tbl@5407c8 (BLOCKMAP:596)
for (size_t i = 0; i < nbin; i++) tmp6f8[i] = bands[i] - accVec[i];