Tags: ylucet/CCA2
Tags
CCA2 v0.1
First tagged release. Cut so the SCIP feasibility spike (AI/spike/SCIP) can
run its benchmark testset against a fixed, named commit.
WHAT THIS RELEASE IS FOR
SCIP uses exactly one entry point -- convEnvCPLQ, the convex ENVELOPE of a
bivariate PLQ function over a bounded domain -- reached through the MATLAB
Engine via its own glue, and consumes the returned RatPol's V/E/F/f/den as
plain arrays. That path is the mature part of this toolbox and is what v0.1
is warranted for.
SUPPORTED
convEnvCPLQ convex envelope: full-domain convex quadratic; any convex
face; concave or indefinite quadratic over a BOUNDED
triangle; multi-piece bounded faces by fan triangulation.
conj full-domain strictly convex quadratic -> QuaPol;
single bounded triangle -> QuaPar;
general bounded or unbounded multi-face domain ->
QuaParCPLQ, where every face's convex envelope is affine or
convex.
biconj full-domain quadratic, and any bounded triangle (via Step
1's envelope, not conj-of-conj).
Arithmetic add, scalarMul, addQuadratic, addScaledEnergy, eval;
infConv, moreau, proxAverage, lasryLions.
All results are RatPar; kind() discriminates. See RETURN_TYPE.md.
NOT SUPPORTED -- see SUPPORT_MATRIX.md, which is generated from the actual
error guards and cites each by file and identifier
partialConj for every engine and type.
The 'pqp' and 'graph' engines.
RatPol.conj / biconj / add.
Case C's biconjugate (a chain of latent bugs in conjugateOfPiecePoly).
Step 3's cross-piece maximum drops cells on SOME unbounded assemblies --
caught by conjCPLQ's own cross-check and raised, not returned.
Cross-case composition: QuaParCPLQ.add refuses a QuaPol/QuaPar operand.
KNOWN DEFECTS THAT RETURN A WRONG ANSWER RATHER THAN ERRORING
mergeL / removeTangent at exact symmetric tie points.
QuaPar.eval exactly AT a result vertex: a relative tolerance was added for
the recorded mechanism, but the ~1.4% measurement behind it came from an
uncommitted sweep with no recorded seed and could not be reproduced, so
the defect is OPEN and the fix unproven. Neither defect is on the
convex-envelope path SCIP uses.
PERFORMANCE
General bounded domains route through the symbolic pipeline and are slow:
conjCPLQTest is around an hour, of which one test is ~33 minutes. The
convex-envelope path SCIP uses is fast (sub-second per call, ~7-80 ms warm
across the bridge).
COMPATIBILITY
QuaPoly and PLQVC are retained as aliases of QuaPol. Do not remove them
without checking SUPPORT_MATRIX.md section 0.0 first -- SCIP depends on
QuaPoly, and the earlier assumption that nothing external did was wrong.
Suite at the tag: 292 pass / 1 fail over 25 suites on the last full sweep,
that one failure since fixed and verified (expected 293/0). Runner:
.claude/suite.sh, per-suite timeout, CCA2_TEST_TIMEOUT to override.