sedumipy.symbcholden

Port of symbcholden.m: symbolic forward Cholesky of the dense columns, producing the Lden structure deninfac.py’s dpr1fact-based numeric factorization will (eventually) consume.

dense[“A”]’s columns are ordered [LP-dense (nl), Lorentz-trace placeholders (nq), Lorentz-norm-bound (nden)] (see getdense.py’s module docstring for dense.cols’/dense.q’s differing index conventions, which this same [nl, nq, nden] split mirrors). DAt[“denq”] is the (m, nq) sparse matrix upstream calls DAt.denq – only its sparsity pattern matters here (symbfwblk only reads pattern), so the very first call (before any adendotd() numeric values exist) can pass getdense()’s own Adotdden return value, exactly as sedumi.m does ([dense,DAt.denq] = getdense(…) then later symLden = symbcholden(L,dense,DAt), with the real numeric adendotd() call overwriting DAt.denq’s values only afterwards, inside getDAtm.m).

L is this port’s usual symbchol()-produced dict (L[“perm”]/ L[“xsuper”] 0-indexed, matching symbchol.py/pcg.py’s convention) – _native.symbfwblk expects the raw 1-indexed Octave/MEX convention, so this module adds the +1 offset at the call site rather than changing symbfwblk’s own already oracle-verified interface.

SEE ALSO symbfwblk (_native.py), incorder, finsymbden (_native.py).

Functions

symbcholden(L, dense, DAt)

Lden = symbcholden(L, dense, DAt): see module docstring.