The thread on duplicated things finding there way into physics got me
thinking about what could get replaced/moved, and I remembered one thing I
did in implementing the angular momentum coupling/uncoupling algorithm that
I figured should fall under something I'm not aware of. Basically, at one
point, it iterates over all multi-indices of a given dimension and order.
The total number of such indices is found as ``binomial(order+dimension-1,
order)`` (basically n balls in m boxes) and the multi-indices are generated
by _confignum_to_difflist (terrible name in general, but makes sense in the
context of the algorithm). It works something like this:

In [1]: from sympy.physics.quantum.spin import _confignum_to_difflist

In [2]: order = 2

In [3]: dimension = 3

In [4]: for n in range(binomial(order+dimension-1, order)):
   ...:     print _confignum_to_difflist(n, order, dimension)
   ...:
[0, 0, 2]
[0, 1, 1]
[0, 2, 0]
[1, 0, 1]
[1, 1, 0]
[2, 0, 0]

Ideally, there'd be some nice construct able represent symbolic sums over
such multi-indices, the above behavior is only triggered when the given
states are all numerical.

The coupling/uncoupling stuff starts at L1671 and this function is at L2008
in sympy/physics/quantum/spin.py. I keep looking back at the
coupling/uncoupling algorithms, thinking "my god what a mess" and trying to
fix it, this time being no different, so a) sorry if it looks horrendous,
b) if you find something so egregious that it warrants fixing, let me know
(or better submit a PR for it).

Sean

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to