I have a program to calculate the primary branch of the Lambert W function, how do I calculate the other branches (based off of the first one if possible)?
Example:
$$W(\ln(2)) = 0.44443609101$$
But (using 1st branch)
$$W_1(\ln(2)) = -1.91415552885386478373 + 4.2929649070568775i$$
How can I calculate $W_1(\ln(2))$ based off $W(\ln(2)?)$
And The real question: How can I calculate $W_n(x)$ based off $Wx$), Where $W_n(x)$ is the nth branch of $W(x)$
See https://en.wikipedia.org/wiki/Lambertw and get the first reference: Corless et. al. "On the Lambert W function" http://www.apmaths.uwo.ca/~djeffrey/Offprints/W-adv-cm.pdf. In this basic paper the branch $W_k(z)$ is computed in formula 4.20, but I guess in practice the function is calculated with iterations.
You find C++ code for computing all branches at the link given in note [32], it is a bit suboptimal but seems OK (I successfully tested a Pascal port with Maple).