Solid angle via Ribando's multivariable hypergeometric series
Source:R/series_hypergeometric.R
hypergeometric_series.RdComputes the normalized solid angle of a simplicial cone using the
multivariable hypergeometric series of Ribando (2006), with the dimension-
specific specialisations of Fitisone & Zhou (2023). Internally dispatches
to a hand-rolled implementation for \(n = 2\), a hand-rolled
implementation for \(n = 3\), and the general recursive enumerator
hypergeometric_series_nd for \(n \geq 4\).
Arguments
- V
A square \(n \times n\) numeric matrix whose columns are the cone generators. Need not be unit-normalized; columns are rescaled internally.
- max_terms
Integer. Hard cap on the number of series terms accumulated before truncation. Default
1000.- tol
Numeric. Per-degree convergence tolerance. The series terminates when the contribution of an entire degree level falls below
tol. Default1e-10.- check_pd
Logical. When
TRUE(default), the function verifies that the associated matrix \(M_n(C)\) is positive definite before iterating, since this is the necessary and sufficient condition for absolute convergence of the series.
Value
A list with components
- solid_angle
Normalized solid angle in \([0, 1]\).
- n_terms
Total number of series terms accumulated.
- converged
Logical,
TRUEwhen the per-degree contribution fell belowtolbeforemax_termswas reached.- associated_matrix
The associated matrix \(M_n(C)\).
Details
The Ribando-Aomoto series (equation 5 of Ribando 2006, equation 1 of Fitisone & Zhou 2023) is $$\Omega(C) = \frac{|\det V|}{(4\pi)^{n/2}} \sum_{a \in \mathbb{N}_0^N} \frac{(-2)^{|a|}}{a!}\, \prod_{i=1}^n \Gamma\!\left(\frac{1 + \deg_i(a)}{2}\right)\, \alpha^{a},$$ where \(N = \binom{n}{2}\), \(a = (a_{ij})_{i<j}\) is a multi-index over pairs of generator indices, \(|a| = \sum_{i<j} a_{ij}\), \(\deg_i(a) = \sum_{k \neq i} a_{ik}\), and \(\alpha_{ij} = v_i \cdot v_j\). The series converges absolutely to \(\Omega(C)\) if and only if the associated matrix \(M_n(C) = (m_{ij})\) with \(m_{ii} = 1\) and \(m_{ij} = -|\alpha_{ij}|\) for \(i \neq j\) is positive definite (Ribando 2006, Theorem 1.5).
The implementation enumerates terms by total degree \(|a|\) so the truncation error after the cut-off can be bounded by the contribution of the next degree level. For \(n = 2, 3\) the dispatcher delegates to specialised implementations that exploit the small number of pair indices.
References
Ribando, J. M. (2006). Measuring solid angles beyond dimension three. Discrete & Computational Geometry, 36(3), 479-487. doi:10.1007/s00454-006-1253-4
Aomoto, K. (1977). Analytic structure of Schlafli function. Nagoya Mathematical Journal, 68, 1-16. https://projecteuclid.org/euclid.nmj/1118786429
Fitisone, A., & Zhou, Y. (2023). Solid angle measure of polyhedral cones. arXiv:2304.11102 (math.CO). https://arxiv.org/abs/2304.11102
See also
hypergeometric_series_nd for the general recursive
enumerator used when \(n \geq 4\); tridiagonal_series
for the simplified \((n-1)\)-variable series available when
\(V^\top V\) is tridiagonal; solid_angle_decomposition
for the decomposition route applicable when \(M_n(C)\) is not positive
definite; compute_solid_angle for the dispatcher.