code: def _Nroot(self, L, M=None):
          
          if M is None: M =L
          NN = nu.zeros((L,M),float)
          l = nu.arange(0,L)[:,nu.newaxis]
          m = nu.arange(0,M)[nu.newaxis, :]
          nLn = gammaln(l-m+1) - gammaln(l+m+1)
          NN[:,:] = ((2*l+1.)/(4.*nu.pi) * nu.e**nLn)**.5 * 2
          NN[:,0] /= 2.
          NN = nu.tril(NN)
          return NN
docs: NAME:
             _Nroot
          PURPOSE:
             Evaluate the square root of equation (3.15) with the (2 - del_m,0) term outside the square root
          INPUT:
             L - evaluate Nroot for 0 <= l <= L 
             M - evaluate Nroot for 0 <= m <= M 
          OUTPUT:
             The square root of equation (3.15) with the (2 - del_m,0) outside
          HISTORY:
             2016-05-16 - Written - Aladdin