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 floating point. - 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 http://mathworld.wolfram.com/Wigner3j-Symbol.html http://mathworld.wolfram.com/Wigner6j-Symbol.html The only optimisation is the use of numpy broadcasting and array-at-a-time functions to avoid executing loops in the python interpreter. See https://firstname.lastname@example.org/idleroux/angularmomentum for updates.