I'm trying to implement Majorana's "stellar representation" of a spin-$j$ system as $2j$ points on the $2$-sphere in python. Consulting papers including Extremal quantum states and their Majorana constellations (Bjork et al., 2015), I convert a complex state vector (nominally indexed from -$j$ to $j$) to its corresponding polynomial with:
def vector_to_polynomial(vector): components = vector.tolist() j = (len(components)-1.)/2. coeffs =  i = 0 for m in numpy.arange(-1*j, j+1, 1): coeff = math.sqrt(math.factorial(2*j)/(math.factorial(j-m)*math.factorial(j+m)))*components[i] coeffs.append(coeff) i += 1 return coeffs[::-1]
I use a polynomial solver to determine the roots, and stereographically project them to the $2$-sphere, taking into account when the degree of the polynomial is less than $2j$ by adjoining some poles (latter code not included).
def root_to_xyz(root): if root == float('inf'): return [0,0,1] x = root.real y = root.imag return [(2*x)/(1.+(x**2)+(y**2)),\ (2*y)/(1.+(x**2)+(y**2)),\ (-1.+(x**2)+(y**2))/(1.+(x**2)+(y**2))]
See Wikipedia. Now QuTiP has an implementation of the Husimi Q function aka
qutip.spin_q_function(state, theta, phi), evaluated at points on the sphere. The zeros of Husimi Q coincide with the Majorana stars. Comparing the results of the above with the QuTiP implementation, however, I find that they only match for integer spins, but not half-integer spins, aka for odd-dimensional systems, but not even dimensional systems. I've tried to code up a few other versions of the Majorana polynomial given in other papers, but the same problem seems to recur. Am I missing something more fundamental? Any advice is welcome!