3
$\begingroup$

I am attempting to code the Cosmic Microwave Lensed Temperature and Polarisation power spectra from first principles and have been told to code the relevant Wigner 3j symbols using recursion rather than exact forms for special cases. If anyone knows of good recursion relations that can be coded for the following Wigner 3j symbols, it will be greatly appreciated. Currently I have been coding in python, but since python is too slow, I am thinking of doing this in fortran 90.

$\left(\begin{array}{ccc} l_{1} & l_{2} & l_{3}\\ 0 & 0 & 0 \end{array}\right)$ and $\left(\begin{array}{ccc} l_{1} & l_{2} & l_{3}\\ 2 & 0 & -2 \end{array}\right)$

$\endgroup$

2 Answers 2

3
$\begingroup$

Try these references http://scitation.aip.org/content/aip/journal/jmp/16/10/10.1063/1.522426?ver=pdfcov (Exact recursive evaluation of 3j‐ and 6j‐coefficients for quantum‐mechanical coupling of angular momenta, by K. Schulten1 and R.G. Gordon) and http://journals.aps.org/pre/abstract/10.1103/PhysRevE.57.7274 (Simplified recursive algorithm for Wigner 3j and 6j symbols, by J.H. Luscombe and M. Luban) which describe the algorithms you may need.

$\endgroup$
2
  • $\begingroup$ Hi there I can't seem to access the second paper you have suggested. While google searching I found this: brockport.edu/cps/publications/CPC1998.pdf which claims to state the Schulten & Gordon methods. I an confused since I need to calculate a lot of Wigner symbols, as my maximum l is 10,000. I am confused how to use recursion to ensure I calculate all of them. Would you be able to show an example of how one goes about using a recursion relation methodically? The problem with such a high maximum l is that for example python cannot cope with calculating all the l-combinations. $\endgroup$
    – Cosmi
    Sep 16, 2015 at 15:19
  • $\begingroup$ You can download the second paper from here wwwsnd.inp.nsk.su/~silagadz/3j.pdf In this paper mnras.oxfordjournals.org/content/360/4/1262.full (Cosmic microwave background temperature and polarization pseudo-Cℓ estimators and covariances) they mention the Fortran program DRC3JJ.f and provide a link to download it. The program "uses the algorithm of Schulten & Gordon (1975) which makes use of both forward and backward recurrence relations to maintain numerical stability. It is both rapid and accurate, even for large multipole values". Hope this helps. $\endgroup$ Sep 17, 2015 at 4:48
2
$\begingroup$

I work with the CMB myself and I routinely compute 3J symbols.

As it was pointed out in the comments, the recursion relations in Schulten & Gordon are the way to go.

They are implemented in the SLATEC library, which you can find on Netlib; look for the functions DRC3JJ and DRC3JM.

If, like me, you are allergic to Fortran77, I would suggest the F90 port of the Slatec library by John Burkardt.

Furthermore, I have translated the 3J and 6J routines from Fortran to C; you can find my C port on github. I have tested the C functions extensively and they are reliable.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.