StructuredMatrices: capacitance fast-path exact-equality test fails on RISC-V GCC 15
The complex (n=9, k=2) fast-path test fails at unsupported/test/structured_dplr.cpp:557. The discrepancy is only 5.12859e-18 relative, but the test demands exact coefficient equality. All three retries also fail (with fresh random inputs).
The implementation materializes dinv = m_d.cwiseInverse() and evaluates m_V.adjoint() * dinv.asDiagonal() * m_U (unsupported/Eigen/src/StructuredMatrices/DiagonalPlusLowRank.h:285). The reference leaves d.cwiseInverse() as a lazy expression. These are different evaluator types and do not by themselves guarantee identical rounding on every backend, especially for complex multiply-adds.
The immediate failure is the exact-reference contract, rather than evidence of a materially inaccurate Woodbury result. The method documentation also promises bit-identical results for moderate inputs, so the test and documented promise should be considered together. Either make the reference/evaluation contract precise enough to support exact equality, or verify that the ordinary path is selected separately and use an epsilon-scaled numerical comparison.
To reproduce on the original native RISC-V GCC 15 configuration, build structured_dplr_4 and run:
.build/unsupported/test/structured_dplr_4 r10 s4249861610The failure is confirmed by all CI attempts. The precise RISC-V instruction/evaluator difference has not been isolated locally; the rounding explanation above is a diagnosis from the source and error magnitude, not a demonstrated compiler defect.
Observed in pipeline 2828210955, commit bd5636800b6837d5bc8f848c58f398ab209f320d. The affected implementation and tests are unchanged at master c93cc5c0b7a14e4a304875bd713e747e52bd2f91 (the intervening change removes benchmark CI).
| Job | Test | Seed / repeats |
|---|---|---|
| test:linux:riscv64:gcc-15:default:unsupported | structured_dplr_4 |
s4249861610 r10 |