22t: two-factor laws REFUTED by descent (quad Q->0, resrp rp->0 — geometry already in lvl=am/res); real render of sim-optimum 7.6/1.694 = 1.898 with group regressions, canon stays; error budget: dual = 62% of corpus abs-error -> inter-band acc/f6f8 consumer is priority #1
This commit is contained in:
@@ -245,6 +245,17 @@ static void process_band_structural(
|
||||
}
|
||||
}
|
||||
|
||||
// RT_RESPRP=1 (NOTES 22t): keep ONLY the res^rp factor of the warp cascade
|
||||
// while NOWARP skips the full kBand768*kWarp*res^rp blanket. Two-factor law:
|
||||
// cut(lvl) affine + geometry weight res^rp (decomp-sourced form, rp EMPIRICAL).
|
||||
static const int resrp_only = getenv("RT_RESPRP") ? atoi(getenv("RT_RESPRP")) : 0;
|
||||
if (nowarp && resrp_only) {
|
||||
for (size_t k = 0; k < nbin; k++) {
|
||||
double res_k = std::max(static_cast<double>(res[k]), 1e-12);
|
||||
mask_out[k] *= std::pow(res_k, rp);
|
||||
}
|
||||
}
|
||||
|
||||
// Step 9 (NOTES_LEVEL:830 + consumers_out.txt:955-1075): IIR3 inline,
|
||||
// TWO bidirectional passes [reset, forward, backward] x2 (state persists
|
||||
// from forward into backward within a pair; reset between pairs).
|
||||
@@ -330,6 +341,11 @@ void FramedDetector::setParams(const std::vector<DetectorBand>& bands) {
|
||||
res_.clear();
|
||||
track_.clear();
|
||||
|
||||
// RT_DUMPRESPATH=<file> (NOTES 22t): static twin-response spectra per band,
|
||||
// binary {int32 band, int32 nbin, float res[nbin]} records (append).
|
||||
FILE* rp_dump = nullptr;
|
||||
if (const char* dp = getenv("RT_DUMPRESPATH")) rp_dump = fopen(dp, "ab");
|
||||
|
||||
for (const auto& b : bands_) {
|
||||
std::vector<float> r(half + 1, 1.0f);
|
||||
float sens_lin = std::pow(10.0f, b.sens * SENS_SCALE / 20.0f);
|
||||
@@ -348,8 +364,16 @@ void FramedDetector::setParams(const std::vector<DetectorBand>& bands) {
|
||||
r[k] = std::sqrt(out[k].re * out[k].re + out[k].im * out[k].im);
|
||||
r[k] = std::max(r[k], 1e-12f);
|
||||
}
|
||||
if (rp_dump) {
|
||||
int32_t bi = static_cast<int32_t>(res_.size());
|
||||
int32_t nb = static_cast<int32_t>(r.size());
|
||||
fwrite(&bi, sizeof(int32_t), 1, rp_dump);
|
||||
fwrite(&nb, sizeof(int32_t), 1, rp_dump);
|
||||
fwrite(r.data(), sizeof(float), r.size(), rp_dump);
|
||||
}
|
||||
res_.push_back(std::move(r));
|
||||
}
|
||||
if (rp_dump) fclose(rp_dump);
|
||||
track_.assign(bands_.size(), std::vector<float>(half + 1, 1.0f));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user