divide 1803a06a0 proxy + expf bit-exact, keep TOTAL 0.341 chain
This commit is contained in:
+9
-1
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user