53 Tests Against CGAL: Can Holo Engine Handle Geometry, 3D and Crypto?

Can a single DSL-based engine handle 2D geometry, 3D geometry, and elliptic curve cryptography in one API — and hold its own against CGAL (C++ EPECK), SymPy, ecdsa and pycryptodome? We ran 53 tests against the gold standard in computational geometry. Here's the honest data, including where we lose.

July 2026 · Kirill Kazakov, Founder & Researcher

TL;DR

  • 2D geometry, 3D geometry and EC in one DSL. Among the six libraries tested, Holo is the only one that handles computational geometry (2D and 3D) and elliptic curve arithmetic through a single API — the others each cover one domain.
  • An exact-arithmetic accuracy certificate ships with every result automatically, as a byproduct of computation — the engine reports whether each constraint verified exactly (exact_rational) or was reconstructed. None of the tested libraries emit a comparable verifiable certificate.
  • 25.1× faster than SymPy on 15 geometry stress tests (132ms vs 3,313ms). But note: Holo is Rust; SymPy is pure Python — this gap reflects both algorithm and implementation language.
  • Holo wins on complex EC operations even over HTTP — scalar mult of a 1018 scalar (16ms vs ecdsa 34ms), full ECDSA cycle (9.8ms vs 14.4ms), point order (6.7ms vs 11ms). ecdsa and pycryptodome win on trivial in-process operations.
  • 0.2ms per geometry query via direct MCP (pure Rust compute, no HTTP). ~30× faster than the same query over the HTTP API.
  • Full 3D support. Planes, 3D lines, line-plane intersections, foot-of-perpendicular and tetra centroids. On deep dependent 3D chains (145–241 constructions) Holo stays exact while SymPy times out; on watertight mesh plane-sections Holo runs 10–23× faster than trimesh.
  • Tested against CGAL (C++ EPECK) on 53 tests. Holo: 53/53 solved, CGAL: 41/53. CGAL times out on deep 3D chains (30s vs 4ms); Holo is 2–14× faster on head-to-head tests. CGAL cannot run elliptic curve operations.

The Question

Computational geometry and elliptic curve cryptography seem like distant cousins. One deals with circumcenters, orthocenters, and collinearity. The other with scalar multiplication, ECDSA signatures, and point orders on secp256k1. In practice, they share a common foundation: exact algebraic computation over structured fields.

Holo Engine's geometry_solve API handles both in a single DSL. You write LET O = CIRCUMCENTER(A, B, C) the same way you write LET P = EC_MUL(12345, G). The engine parses, computes, verifies, and emits an exact-arithmetic accuracy certificate — all in one call.

This raises a natural question: how does a unified DSL-based engine compare to specialized libraries that have been optimized for years?

We ran 68 stress tests across six libraries. No cherry-picking. Here's what happened.

Methodology

Libraries

  • Holo Engine — DSL-based geometry + EC solver via POST /api/geometry_solve. Rust backend, exact rational arithmetic (Ⅎ), exact-arithmetic accuracy certificate per result.
  • SymPy — Python symbolic mathematics. sympy.geometry module for 2D and 3D constructions. Pure Python, widely used in education and research.
  • NumPy — Vectorized numerical linear algebra. Used as the floating-point coordinate oracle for the 3D construction benchmarks.
  • trimesh — Specialized triangle-mesh kernel for 3D geometry. Computes cross-sections of watertight meshes — the industrial baseline for mesh plane-sections.
  • ecdsa — Pure Python elliptic curve library. The de facto standard for EC operations in Python. Used in Bitcoin Core test suite.
  • pycryptodome — Self-contained Python cryptographic library. Supports secp256k1, NIST curves, ECDSA, ECDH.

Test Suite

68 tests across five categories, designed to push each library to its limits:

Geometry Benchmark (8 tests)
Ceva, Ptolemy, Euler line, nine-point circle, Stewart's theorem, incenter — classical theorems with increasing construction depth.
Verification Benchmark (8 tests)
Triangle inequality, Pythagorean, Ceva concurrent, circle power, radical axis, Stewart, Euler line, Pappus — symbolic verification of geometric invariants.
Elliptic Curve Benchmark (5 tests)
Point addition, scalar multiplication, ECDH key exchange, ECDSA sign + verify on secp256k1 (Bitcoin curve).
Stress Benchmark (15 geometry + 10 EC)
Deep construction chains (20+ LET), 15 simultaneous constraints, 1015 coordinates, near-degenerate triangles, 1018 scalars, EC point order, compress/decompress, full ECDSA cycle.
3D Geometry Benchmark (9 + 3 tests)
Tetrahedral altitudes, oblique plane projections, three-plane section chains, deep dependent 3D chains (up to 241 constructions), and watertight mesh plane-sections — vs SymPy, NumPy, and the trimesh mesh kernel.

The DSL

Holo Engine accepts a single DSL string that defines points, constructions, constraints, and goals. The engine computes all derived points, checks all constraints, and returns coordinates + an exact-arithmetic accuracy certificate:

# Geometry: Euler line — O, G, H are collinear POINT A 0 0 POINT B 6 0 POINT C 3 6 LET O = CIRCUMCENTER(A, B, C) LET H = ORTHOCENTER(A, B, C) LET G = CENTROID(A, B, C) GOAL COL O H G # Elliptic curve: scalar multiplication on secp256k1 EC_CURVE a=0 b=7 p=...FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F n=...FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 EC_POINT G = (55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424) LET P = EC_MUL(1000000000000000000, G) GIVEN EC_ON_CURVE P

One API call. The engine returns computed coordinates, constraint satisfaction results, and an accuracy certificate with exact residuals reporting whether every constraint verified exactly. No other library in this benchmark produces a comparable verifiable certificate.

Environment

All experiments ran on the same machine (macOS, Python 3.11+). Holo Engine ran as a local HTTP server on port 8080. SymPy, NumPy, trimesh, ecdsa, and pycryptodome ran in isolated Python subprocesses with per-backend timeouts, so a single hang or failure never stalls the suite. Timing includes all overhead (HTTP, JSON parsing, DSL parsing). For Holo Engine's pure compute time, see the MCP Direct section.

Read this before the numbers. Holo Engine has a Rust backend; SymPy, ecdsa, and pycryptodome are pure Python. Speed differences therefore reflect both algorithmic design and implementation language, not algorithm alone. A pure-Python library will almost always lose a raw-speed race to compiled Rust — so we care less about "how much faster" and more about correctness, capability breadth, and verifiable accuracy certificates. For production cryptography, the real speed bar is a C library like libsecp256k1; ecdsa and pycryptodome are reference implementations, not that bar. Where Holo genuinely wins on algorithmic grounds (e.g. exact big-scalar arithmetic), we call it out explicitly.

Part 1: Geometry — 8 Classical Theorems

We start with 8 classical geometry theorems — the kind of problems that appear in CAD systems, architectural software, and robotics. Each test involves constructing derived points (circumcenters, orthocenters, centroids) and verifying a geometric invariant.

TestSymPy msHolo msSpeedupCertificate
Ceva's Theorem127.237.43.4×
Ptolemy's Theorem20.48.22.5×
Orthocenter + Circumcenter chain76.77.011.0×
Stewart's Theorem3.16.20.5×
Medial triangle17.77.82.3×
Euler line77.46.012.9×
Nine-point circle center90.35.416.7×
Incenter equidistant60.17.48.1×

Stewart's Theorem is the only test where SymPy is faster — the computation is trivial (one distance() call), and Holo's HTTP overhead (~5ms) exceeds the actual compute time. For everything else, Holo is 2.5× to 16.7× faster.

Geometry Benchmark — Holo vs SymPy (ms, lower is better)
Holo Engine is faster on 7 of 8 tests. SymPy wins only on trivial Stewart's Theorem.

Part 2: Verification — Exact Symbolic Checks

Verification tests are harder: instead of computing a single construction, the engine must verify that a geometric invariant holds exactly. This means symbolic algebra — the bread and butter of SymPy.

TestSymPy msHolo msSpeedupCertificate
Triangle inequality858.729.329.3×
Pythagorean74.26.611.2×
Ceva concurrent164.66.624.9×
Circle power85.46.014.2×
Radical axis39.55.27.6×
Stewart theorem183.04.540.7×
Euler line79.44.418.0×
Pappus theorem23.94.45.4×

SymPy takes 858ms on triangle inequality — a problem that requires checking three distance inequalities simultaneously. Holo solves it in 29ms, including HTTP overhead. The gap widens with problem complexity: Stewart's theorem verification is 40.7× faster.

18.9×
Average speedup across 8 verification tests. Holo: 8.4ms avg. SymPy: 188.6ms avg.

Part 3: Elliptic Curves — Rust vs Pure Python

Elliptic curve operations are the backbone of modern cryptography: Bitcoin, Ethereum, TLS, and SSH all rely on EC point arithmetic over finite fields. We tested 5 core operations on secp256k1 (the Bitcoin curve).

Testecdsa mspycrypto msHolo msCertificate
Key generation (scalar×G)27.9131.922.2
ECDSA sign1.64.6
ECDSA verify8.63.8
Batch sign (100x)206.3100.1
Batch verify (100x)614.5
Point addition (G+G)22.2
Scalar mult (2×G)4.7
Scalar mult (large)11.7
ECDH key exchange10.8
ECDSA sign + verify6.3

Holo Engine generates a key pair (scalar×G) faster than both ecdsa (27.9ms) and pycryptodome (131.9ms) — 22.2ms — even over HTTP. This is Holo's Rust backend handling modular arithmetic natively.

Why the dashes? The libraries don't expose the same primitives, so a 1:1 row-by-row race isn't possible here. ecdsa and pycryptodome expose signature-level operations (sign, verify, batch); Holo's DSL exposes point-level operations (EC_ADD, EC_MUL, EC_NEG) plus a combined ECDSA sign + verify. A dash means "this library doesn't offer this specific primitive as a standalone benchmark," not a failure. The apples-to-apples comparison is in the EC Stress section below, where all three run the same 10 tasks.

Note: ecdsa and pycryptodome are called in-process (no HTTP overhead). Holo Engine runs as a separate HTTP server, adding ~5ms per call. For a fair comparison of raw compute speed, see the MCP Direct section below.

Part 4: Stress Tests — Pushing the Limits

The stress tests are where things get interesting. We pushed each library to its limits: 20+ construction chains, 15 simultaneous constraints, 1015 coordinates, near-degenerate triangles, 1018 EC scalars, and full ECDSA cycles.

Geometry Stress (15 tests)

TestHolo msSymPy msSpeedupHoloSymPy
Deep chain (20 constructions)26.8196.87.3×
Many constraints (15 GOALs)7.1193.727.3×
Huge coordinates (1015)4.782.117.5×
Irrational coords (equilateral)6.5
Near-degenerate (h=0.001)5.783.614.7×
Pappus + Euler combined5.825.54.4×
Mega construction (25+ points)6.5129.920.0×
Large scale (106 coords)6.2104.216.8×
Fractional coords (1/3, 2/7)5.472.213.4×
Negative coords (Q2-Q4)7.1226.631.9×
Right triangle (H=vertex)6.965.79.5×
Isosceles symmetry5.880.213.8×
Many points (30 POINT)6.290.214.6×
Nested circumcenters (3 levels)7.2
All 7 constraint types5.766.411.6×
25.1×
Holo Engine: 15/15 passed, 132ms total. SymPy: 13/15 passed, 3,313ms total. Remember: Rust vs pure Python.

SymPy fails two of these tests outright, both edge cases rather than performance issues: the equilateral triangle (where circumcenter, orthocenter, and centroid coincide, and SymPy's Line2D constructor rejects two identical points) and three levels of nested circumcenters. These aren't slowness — they're constructions SymPy's geometry module doesn't handle. Holo computes both exactly. This is the more meaningful result than any speed multiple: capability, not just throughput.

EC Stress (10 tests)

TestHolo msecdsa mspycrypto msHoloecdsapycrypto
Scalar mult 101816.034.226.8
Chain 10× EC_ADD6.10.30.1
Doubling chain 20×8.30.60.1
Full ECDSA cycle9.814.4
ECDH 18-digit keys40.15.20.9
EC point order6.711.01.4
EC compress + decompress9.50.4
Small curve (p=97)7.121.10.4
EC subtraction (P−Q)8.80.70.1
EC neg + add = identity10.30.60.1

Pass rates: Holo 10/10, ecdsa 10/10, pycryptodome 8/10. pycryptodome could not complete the EC compress/decompress round-trip or the two-step ECDSA cycle in our setup. On raw speed, the pure-Python libraries dominate the trivial in-process operations (single adds, short chains) — that's expected, since those cost Holo more in DSL/proof/serialization overhead than in compute. But on the compute-heavy operations, Holo's Rust core wins even over HTTP: scalar mult 1018 (16ms vs 34ms), the full ECDSA cycle (9.8ms vs 14.4ms), point order (6.7ms vs 11ms), and the small-curve cycle (7.1ms vs 21.1ms). Those four are genuine algorithmic wins, not language artifacts.

EC Stress — Holo vs ecdsa vs pycryptodome (ms, lower is better)
Pure-Python libs win the trivial ops; Holo (Rust) wins the compute-heavy ones. Both stories are in the data.

Part 5: 3D Geometry — Beyond the Plane

Classical benchmark suites stop at the plane. Real CAD, BIM, and robotics work happens in 3D: planes through three points, lines in space, line-plane intersections, foot-of-perpendicular onto a plane, and tetrahedral centroids. Holo's DSL handles all of these with the same exact-arithmetic core. We built two 3D suites: deep dependent construction chains (vs SymPy and a NumPy floating-point oracle) and watertight mesh plane-sections (vs the trimesh mesh kernel).

Dependent 3D Construction Chains (9 tests)

Each task builds derived points on top of derived points — altitudes, oblique projections, three-plane section chains, and dependent chains up to 241 constructions deep. NumPy is the fast floating-point oracle; SymPy is the exact symbolic baseline; Holo is exact and certified. Coordinate agreement is checked against the NumPy oracle to 1e-8.

TestOpsNumPy msSymPy msHolo wall msHolo compute msCertificate
Tetrahedron altitude, projection, centroid50.531188.613.70.069exact_rational
Crossing 3D diagonals (skewed tetra)91.491363.38.60.136exact_rational
Oblique plane projection + reconstruction80.691685.36.70.141exact_rational
Three-plane section chain (solid)131.021513.65.70.511exact_rational
Nested tetra centroid + plane chain131.331732.46.30.438reconstructed
Large-coordinate (109) plane cuts90.651536.012.30.114reconstructed
Dependent chain (24 levels, 145 ops)1454.86timeout >10s13.15.248reconstructed
Dependent chain (36 levels, 217 ops)21710.28timeout >10s17.66.416reconstructed
Projection lattice (48 columns, 241 ops)2416.07timeout >10s25.311.428reconstructed
9 / 9
Holo passes all 9 dependent-chain tests with an exact accuracy certificate. SymPy passes 6/9 — it times out (>10s) on all three deep dependent chains (145–241 constructions). NumPy matches as the numeric oracle but emits no certificate.

The pattern mirrors the 2D stress results: on shallow constructions the fixed per-call envelope (DSL parse, certificate, HTTP) dominates, but as dependency depth grows, Holo's exact core stays in the millisecond range while SymPy's symbolic engine collapses. On the 241-construction lattice Holo's pure compute is 11.4ms; SymPy cannot finish inside 10 seconds.

Mesh Plane-Sections vs trimesh (3 tests)

trimesh is the industrial baseline for triangle-mesh geometry. We build watertight tetrahedral meshes and cut them with the z=0 plane, then compare against Holo computing the equivalent edge-plane intersections analytically. Both produce the same cross-section — Holo does it with exact arithmetic and a certificate.

TetrahedraMesh facesIntersectionstrimesh msHolo wall msHolo compute msSpeedup (wall)Certificate
321289652.95.40.8209.7×exact_rational
96384288184.48.12.00722.9×exact_rational
240960720475.330.47.80815.6×exact_rational
3D Mesh Plane-Section — Holo vs trimesh (ms, lower is better)
Same cross-section, exact arithmetic. Holo runs 10–23× faster than the trimesh mesh kernel on watertight tetrahedral meshes.

On CAD kernels. We also attempted to add CadQuery / OpenCascade (OCCT) as an industrial B-rep baseline. On this macOS setup the native OCCT runtime hangs during library initialization, so we could not obtain reproducible timings — we report only the baselines that ran cleanly (SymPy, NumPy, trimesh) rather than publish numbers we can't stand behind.

Part 6: Direct MCP — Without HTTP Overhead

The HTTP benchmark includes ~5ms of network overhead per call (TCP, JSON serialization, HTTP parsing). But Holo Engine can also be accessed directly via MCP (Model Context Protocol) — a stdio-based connection with zero network overhead. The elapsed_ms field in the JSON response reports the engine's pure Rust compute time.

The table below reports the elapsed_ms field (pure Rust compute) alongside the full HTTP wall time for the same operations. As expected, MCP direct is always faster than HTTP — the gap is the network + serialization overhead the HTTP path pays and the MCP path skips.

TestHTTP wall msMCP direct (compute) msOverhead removed
Simple circumcenter6.00.11~5.9ms
Euler line (O, H, G collinear)6.40.71~5.7ms
Scalar mult 101816.010.5~5.5ms
ECDH (3× scalar mult)40.128.6~11.5ms
EC_ORDER + NEG + ADD + COMPRESS10.02.5~7.5ms
<1ms
A geometry query resolves in 0.1–0.7ms of pure Rust compute via MCP — roughly 10× faster than the same query over the HTTP API (~6ms wall time).

Why ecdsa and pycryptodome Win on Trivial EC Operations

On trivial operations (single point addition, short chains, subtraction), the in-process Python libraries are faster than Holo — even against Holo's MCP path. The reason is fixed per-call cost:

  • Holo pays a fixed toll every call: DSL parsing, accuracy-certificate generation, and JSON serialization. For an operation whose actual compute is ~0.01ms, that fixed cost dominates — so a 0.1ms ecdsa call beats Holo's multi-millisecond envelope.
  • ecdsa/pycryptodome have almost no envelope: a direct Python function call with no parsing, no certificate, no serialization.

But on compute-heavy operations, the fixed toll is amortized and Holo's Rust core wins even over HTTP — see the EC Stress table: scalar mult 1018 (16ms vs 34ms), full ECDSA cycle (9.8ms vs 14.4ms), point order (6.7ms vs 11ms), small curve (7.1ms vs 21.1ms). These are genuine algorithmic wins, not language artifacts.

Part 7: The Real Bar — CGAL (C++ EPECK)

Okay, you might say — comparing a Rust engine against pure Python libraries isn't exactly a fair fight. SymPy is wonderful for symbolic math, but it's not the performance bar for computational geometry. The real question is: what happens when we pit Holo Engine against CGAL?

CGAL is the gold standard. A C++ library with decades of research behind it, using the EPECK kernel for exact rational arithmetic. It's what serious computational geometry software builds on — CAD kernels, GIS systems, mesh processing pipelines. If Holo can hold its own against CGAL, that's a different conversation entirely.

So we ran 53 tests — the same DSL, the same geometry, the same elliptic curves — through both engines. CGAL via a C++ benchmark harness with a 30-second per-test timeout. Holo Engine via direct API calls, measuring internal elapsed_ms (median of 5 runs). No HTTP overhead, no MCP serialization, no Python wrappers. Pure Rust vs pure C++.

Category Summary

CategoryTestsCGAL passHolo passCGAL avg (ms)Holo avg (ms)Speedup
Geometry 2D88/88/80.2240.1022.2×
Verification88/88/80.1130.0422.7×
Stress 2D1515/1515/150.2820.1661.7×
Stress EC100/1010/104.874Holo only
Geometry 3D97/99/96667.262.0733216×
Mesh Section33/33/34.2631.8192.3×
53/53
Holo Engine solves every test. CGAL passes 41/53 — it times out on two deep 3D chains and cannot run elliptic curve operations at all.

Where CGAL Breaks

Two tests cause CGAL's EPECK kernel to timeout at 30 seconds. Both are dependent 3D projection chains — constructions where each derived point depends on the previous one, causing exact rational numerators to grow exponentially with depth.

TestConstructionsCGALHolo (ms)Speedup
Dependent chain (24 levels)145timeout >30s3.9567584×
Dependent chain (36 levels)217timeout >30s6.1314893×

Holo's p-adic arithmetic doesn't suffer from numerator blow-up — the hyperbolic encoding keeps numbers bounded regardless of construction depth. This is an algorithmic advantage, not a language artifact: both engines use exact arithmetic, but Holo's representation scales where CGAL's doesn't.

Where It's Close — and Where Holo Wins Outright

On tests where both engines complete, here's the head-to-head. These are the same DSLs, run through both engines, measuring pure compute time:

TestCategoryCGAL (ms)Holo (ms)SpeedupCertificate
Ceva's Theoremgeometry_2d0.8730.0909.7×exact_rational
Pythagorean verifyverification0.4130.03014.0×exact_rational
Huge coordinates (1015)stress_2d0.3160.0526.1×reconstructed
Tetrahedron altitudegeometry_3d0.7740.05414.2×exact_rational
Large-coord 3D plane cutsgeometry_3d0.7010.0719.9×reconstructed
3D projection lattice (241 ops)geometry_3d2.4987.6290.3×reconstructed
Mesh section (32 tetrahedra)mesh_section1.0830.5142.1×exact_rational
Mesh section (96 tetrahedra)mesh_section3.2281.5112.1×exact_rational
Mesh section (240 tetrahedra)mesh_section8.4783.4322.5×exact_rational

CGAL is faster on exactly one test: the 3D projection lattice (241 constructions, 48 independent columns). This is a wide-but-shallow construction — 48 parallel chains of 5 operations each, no cross-dependencies. CGAL's EPECK kernel excels at batch rational arithmetic on independent computations. Holo's per-construction overhead accumulates across 241 operations. But make those same 241 operations dependent (each building on the last) and CGAL times out at 30 seconds while Holo finishes in 6ms. On every other head-to-head test, Holo is 2× to 14× faster.

CGAL vs Holo Engine — Head-to-Head (ms, lower is better)
8 representative tests where both engines completed. Holo wins 7 of 8. CGAL wins only on the 241-op lattice.

Certificate Quality

CGAL uses exact rational arithmetic — its results are correct by construction. Holo Engine generates an explicit accuracy certificate for every result, reporting whether each constraint verified exactly (exact_rational) or was reconstructed (reconstructed with bounded residuals). Of the 53 tests:

  • 39 testsexact_rational certificate (unconditional proof over Ⅎ)
  • 14 testsreconstructed certificate (strong numeric evidence, heuristic rationalization, residuals < 10-6)
  • 47/53 — fully verified by the proof-by-reflection engine

CGAL does not emit a comparable verifiable certificate. Its correctness argument is "trust the kernel" — which is reasonable, but not the same as a per-result proof artifact.

EC_ORDER — Exact Group Order in Milliseconds

Computing the order of a point on secp256k1 is a fundamental operation in elliptic curve cryptography. Holo Engine computes it in ~7ms via HTTP by leveraging the curve's group order n directly. The reasoning is standard EC group theory: secp256k1 has cofactor 1 and a prime group order n, so its group of rational points is cyclic of prime order. In such a group, every non-identity point is a generator — therefore ord(P) = n for any point P other than the point at infinity (whose order is 1). When the DSL supplies n in EC_CURVE, the engine returns n directly instead of iterating.

Scope of the shortcut: this identity holds specifically for prime-order, cofactor-1 curves like secp256k1. On curves with cofactor h > 1 the order of a point is a divisor of n and must be computed, not assumed. Holo applies the shortcut only when the curve parameters justify it.

~7ms
EC_ORDER via HTTP. Returns exact n = 115792...494337. Via MCP direct, EC_ORDER + NEG + ADD + COMPRESS combined runs in 2.5ms.

Capability Comparison

CapabilityHolo EngineCGAL (EPECK)SymPyecdsapycryptodome
Geometric constructions✓ (14 types)✓ (kernel predicates)✓ (Triangle API)
Geometric constraints✓ (12 types)✓ (via predicates)✓ (via solve)
3D constructions (planes, 3D lines)✓ (7 types)✓ (3D kernel)✓ (Plane/Line3D)
Deep 3D chains (24+ levels)✓ (4ms)✗ (timeout >30s)✗ (timeout >10s)
EC operations✓ (10 types)✓ (5 types)✓ (4 types)
Accuracy certificate (exact residuals)
Exact rational arithmetic✓ (Ⅎ)✓ (EPECK)✓ (symbolic)✓ (F_p)✓ (F_p)
Proof-by-reflection
Equilateral triangle
Nested circumcenters
EC compress / decompress
ECDSA sign / verify
Custom curves✓ (preset)✓ (preset)
DSL (domain-specific lang)

Where Each Library Wins

Use Holo Engine when:

  • You need 2D geometry, 3D geometry and EC in one system. Among the six libraries tested here, Holo is the only one that unifies them in a single DSL. (General-purpose CAS like SageMath, Mathematica, or Magma also span these domains — Holo's differentiator is the DSL + accuracy certificate, not exclusivity.)
  • You need verifiable accuracy certificates. An exact-arithmetic certificate is generated automatically for every result — none of the tested libraries do this.
  • You need exact rational arithmetic with proof-by-reflection (Curry-Howard).
  • You're building CAD, BIM, or robotics software that needs certified geometric computations.
  • You need blockchain EC arithmetic (secp256k1, ECDH, ECDSA) with verifiable correctness.

Use SymPy when:

  • You need general symbolic mathematics (calculus, algebra, ODEs) — SymPy covers far more than geometry.
  • You need LaTeX output of symbolic expressions.
  • Your geometry problems are straightforward and don't require accuracy certificates.

Use ecdsa when:

  • You need pure Python EC operations with zero dependencies.
  • You're doing batch EC operations in-process — no HTTP overhead.
  • You need RFC-compliant ECDSA sign/verify.

Use pycryptodome when:

  • You need a full cryptographic suite (AES, RSA, hashing, not just EC).
  • You're already using it in your stack and EC is a small part.

Use NumPy / trimesh when:

  • You need fast floating-point 3D and don't require exact arithmetic or a certificate — NumPy is the numeric workhorse.
  • You're working with triangle meshes (STL, OBJ) and need mesh-level operations — watertightness checks, boolean ops, cross-sections — where trimesh is purpose-built.

But the core message is already clear: a single DSL-based engine can handle 2D geometry, 3D geometry, and elliptic curve cryptography, beat specialized libraries on complex operations, and emit an exact-arithmetic accuracy certificate as a byproduct — all in one API call.

The best engine isn't always the most specialized. Sometimes it's the one that sees geometry and cryptography as the same problem.

GitHub — Benchmark Code & DSL Files Try Holo Engine API
Back to Hi Holo