Efficient Method for Multiplying Angular Momentum Operators

I'm doing a calculation that involves canonical symmetrization of angular momentum.

For example: $H_{\text{classical}} = J_x J_y \rightarrow \hat{H}_{\text{quantum}} = \frac{1}{2}(\hat{J_x}\cdot \hat{J_y} +\hat{J_y}\cdot \hat{J_x})$

I want to compute the matrix elements of $\hat{H}_{\text{quantum}}$ in the $J, J_z$ basis. I'm working in mathematica.

The problem is that $H_{\text{classical}}$ frequently contains terms such as $J_x^2 J_y^3J_z^5$ which gives rise to combinatorically many terms. Mathematica can crank the symmetrization out very quickly, but for large J the amount of matrix multiplications required to get the final answer is a bottleneck on the computation.

Is there any simplication I could make to reduce the number of naive matrix multiplications required?

• Multiply the matrices by hand so you only have one final matrix calculate. That is, if it's possible. I am not familiar enough with the theory, nor mathematica to know if you can do this or not. – M Barbosa Jun 19 '16 at 19:12
• @MBarbosa , multiplying the matrices by hand is not an improvement, but memoizing the multiplications may yield a small improvement, which I think is along the lines of what you're suggesting – Reid Hayes Jun 19 '16 at 19:21
• It's not much of an improvement but I know it it does make the runtime a little faster (if that's what you're going for). I've done it before while writing software for computational electromagnetics. Anyway, if by memorizing you mean saving the answer of multiplications that will be evaluated again, yes that is also something else that saves time. – M Barbosa Jun 19 '16 at 19:29
• If you are ultimately interested in $J_z$ eigenstates, have you considered using the ladder form of the algebra, involving $J_+, J_-, J_z$? – Cosmas Zachos Jun 19 '16 at 20:05