Found by phugoid rung 0 (ledgered as phugoid GAPS.md G2).
Mode analysis is intrinsically complex-valued. phugoid represents complex numbers as [re, im] lists with hand-rolled cadd/csub/cmul/cdiv/cmag (modes.eigs) — all five directly unit-checked against hand-computed values, because a differential oracle alone was measured structurally blind to them (a HALVED cdiv survived a full root-finding differential: Durand-Kerner self-corrects under delta scaling).
lib/engineering.eigs's own dft already returns [re, im] pairs with no shared arithmetic on them, so every signal-processing or root-finding consumer will re-roll the same five functions.
Candidate: lib/complex.eigs with the arithmetic + polar helpers, adopted by engineering.dft. phugoid's CU check family (hand-computed values incl. the cdiv case that fooled the differential) is a ready test corpus.
Found by phugoid rung 0 (ledgered as phugoid GAPS.md G2).
Mode analysis is intrinsically complex-valued. phugoid represents complex numbers as [re, im] lists with hand-rolled cadd/csub/cmul/cdiv/cmag (modes.eigs) — all five directly unit-checked against hand-computed values, because a differential oracle alone was measured structurally blind to them (a HALVED cdiv survived a full root-finding differential: Durand-Kerner self-corrects under delta scaling).
lib/engineering.eigs's own dft already returns [re, im] pairs with no shared arithmetic on them, so every signal-processing or root-finding consumer will re-roll the same five functions.
Candidate: lib/complex.eigs with the arithmetic + polar helpers, adopted by engineering.dft. phugoid's CU check family (hand-computed values incl. the cdiv case that fooled the differential) is a ready test corpus.