I recently had an interesting assignment in which I had to create a LambertW solution in Fortran95. While it isn’t the hardest thing to code once you understand how to do it, it still took a little to figure this one out. Here’s a piece of code in Fortran and this is newtons method. There are links below describing exactly how it works, and an example of Newtons method in Python as well. enjoy.
subroutine Lambert(n,a,finalp) implicit none real :: n, a, y, z, firstW, lastW, CurrentW, expW real :: eps = 0.00000000001 integer :: finalp firstW=1 LastW=FirstW CurrentW=0 loop:do expW = exp(lastW) z = (-a)*(exp(-a)) CurrentW = LastW - ((LastW * expW - z) / ((expW * (LastW + 1)) - ((LastW + 2) * (LastW * expW) / (2 * LastW + 2 -z)))) if(lastW - CurrentW < eps) exit loop lastW = CurrentW end do loop end subroutine Lambert
and here are some useful Links: