cartan

Geometry Benchmarks

Wall-clock timing for core manifold operations across cartan (Python bindings and native Rust), geomstats (NumPy backend), and geoopt. All times are median over 200 repetitions with 5 warmup calls.

Dimension Sweeps

Each figure shows wall-clock time vs ambient dimension on a log-log scale. Shaded regions represent the interquartile range. The dashed gold line is cartan's native Rust performance (no Python overhead).

Exponential Map

Exponential map wall-clock time vs dimension across four manifolds
Wall-clock time for a single call. cartan's const-generic stack allocation dominates at small dimensions; the gap narrows as BLAS takes over at large .

Logarithmic Map

Logarithmic map wall-clock time vs dimension across four manifolds
Wall-clock time for a single call.

Geodesic Distance

Geodesic distance wall-clock time vs dimension across four manifolds
Wall-clock time for a single call. On the sphere, cartan uses the numerically stable half-chord formula .

Parallel Transport

Parallel transport wall-clock time vs dimension across four manifolds
Wall-clock time for a single parallel transport call along the geodesic from to .

Speedup Summary

Speedup heatmap: cartan Python bindings vs geomstats at dimension 3
Speedup factor (geomstats median / cartan median) at . Higher is better for cartan.

Numerical Accuracy

Numerical accuracy of geodesic distance on the sphere
Maximum absolute error of vs a 50-digit mpmath reference over 1000 random point pairs.
Self-distance accuracy: dist(p, p) should equal zero
Maximum over 1000 random points.

Manifold Coverage

cartan provides manifolds with no equivalent in geomstats or geoopt:

ManifoldDescriptiongeomstatsgeoopt
Special Euclidean group (rigid motions)partialn/a
Correlation matrices (flat Frobenius metric)n/an/a
(QTensor3)Landau-de Gennes Q-tensor for liquid crystalsn/an/a