APP-02: a diamond and two boxes

This small two-dimensional example uses the reviewed saved output of the APP-02 numerical report at source commit 8fecba49e34c37e5e01c40218a8f014a179818fd. Coordinates are x and y.

Complete minimal input

The input V polygon has ordered vertices [[0, 2], [2, 0], [0, -2], [-2, 0]], no rays and primitive budget 4. For the rotated outer parallelotope, use orientation rows [[1, 1], [1, -1]]. The inner axis box uses the H diamond with rows [[1, 1], [1, -1], [-1, 1], [-1, -1]], upper bounds [2, 2, 2, 2], and proposed corners [[1, 1], [1, -1], [-1, -1], [-1, 1]].

Diamond vertices, outer axis box, rotated outer bound and inner axis box on labelled x and y axes
The figure draws saved geometric shapes, not intermediate algorithm steps.

Check by hand

Every input vertex satisfies −2 ≤ x ≤ 2 and −2 ≤ y ≤ 2, so the orange axis box contains the diamond. The rotated rows (1,1) and (1,−1) each have extrema ±2 at those vertices, giving the blue bounds |x+y| ≤ 2 and |x−y| ≤ 2. Their intersection is the diamond. Each green corner (±1,±1) satisfies the four input H inequalities at bound 2, so its convex hull lies inside the diamond. CSL's registered path independently checks these stored binary64 inclusion relations before returning an enclosure.

Reproduce

Checkout the linked source commit. Configure with python -m cmake -S . -B build/app02 -DBUILD_TESTING=OFF -DCSL_ENABLE_HIGHS=OFF -DCSL_ENABLE_QHULL=OFF -DCSL_BUILD_APP02_REPORT=ON; build csl_app02_approximation_report in Release; run the executable with smoke. The full authored inputs, literal output rows/corners and hashes are in the saved record; smoke results and the offline bundle are also available.