chain: wire IIR4 generator (RT_IIR4_GEN) + add chain smoke test
- iir4_bidir: env-gated generate_iir4_coefs (C/tau/p/mult/sr) vs proxy kIIR - fix exp sign: up=exp(-c*g*tau/mult) → down=1-up in 0..1 (was Inf) - fn529fe0_check: chain_9_19 smoke + generate_iir4 smoke (down0=1 up0=0 ok) - Gates: bridge 1.594, structural 2.689 (RT_CASC=0) unchanged
This commit is contained in:
@@ -195,6 +195,26 @@ int main() {
|
||||
if (!ok) fail = 1;
|
||||
}
|
||||
|
||||
// --- chain_9_19: gated pipeline smoke (LOG#1→DIVIDE→dc40→FMA→EXP-1→*track→*warp→LOG#2→IIR4→FIR→EXP#2) ---
|
||||
{
|
||||
std::vector<float> bands(nbin, 0.5f), tmp(nbin, 0.1f), acc(nbin, 0.0f);
|
||||
std::vector<float> warp(nbin, 1.0f), att(nbin, 0.0f), rel(nbin, 0.0f);
|
||||
std::vector<float> bands0 = bands;
|
||||
fn529fe0::chain_9_19(bands.data(), tmp.data(), acc.data(), nullptr, warp.data(), att.data(), rel.data(), nbin);
|
||||
bool ok = true;
|
||||
for (size_t i = 0; i < nbin; i++) if (!std::isfinite(bands[i]) || bands[i] < 0.0f || bands[i] > 5.0f) ok = false;
|
||||
std::printf("chain_9_19 smoke: in0=%.3f out0=%.3f outmid=%.3f finite=%d (%s)\n",
|
||||
bands0[0], bands[0], bands[nbin/2], ok, ok ? "OK" : "MISMATCH");
|
||||
if (!ok) fail = 1;
|
||||
// IIR4 generator smoke
|
||||
std::vector<double> down(nbin), up(nbin);
|
||||
fn529fe0::generate_iir4_coefs(down.data(), up.data(), (int)nbin, 1000.0, 1200.0, 48000.0, 0.5, 360.0);
|
||||
bool gok = std::fabs(down[0]-1.0)<1e-9 && std::fabs(up[0])<1e-9 && down[1] < 1.0 && down[1] > 0.0;
|
||||
std::printf("generate_iir4: down0=%.3f up0=%.3f down1=%.4f up1=%.4f (%s)\n",
|
||||
down[0], up[0], down[1], up[1], gok ? "OK" : "MISMATCH");
|
||||
if (!gok) fail = 1;
|
||||
}
|
||||
|
||||
std::printf("fn529fe0 check %s\n", fail ? "FAIL" : "PASS");
|
||||
return fail;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user