The module angularmomentum provides routines for computing
Clebsch-Gordan coefficients, Wigner 3jm symbols and Wigner 6j symbols.
This code is primarily intended for practical calculations, not
teaching, which has led to the following design decisions:
- All functions accept numpy arrays as inputs, and do proper numpy
broadcasting over multi-dimensional input arrays.
- All functions compute their results in floating point, not exact
root-rational arithmetic. Note that the use of floating-point
inputs entails no loss of accuracy, since integers and half-integers
up to around a quadrillion are exactly representable in binary
- All functions return 0 when inputs do not satisfy selection rules,
rather than producing an error. This allows the idiom, common in
atomic physics calculations, of summing over a complete set of states
and letting the angular-momentum coefficients select the relevant ones.
The algorithms used are direct implementations of the Racah formulas, given at
The only optimisation is the use of numpy broadcasting and
array-at-a-time functions to avoid executing loops in the python
See https://firstname.lastname@example.org/idleroux/angularmomentum for updates.