code: def wavenumber(zsrc, zrec, lsrc, lrec, depth, etaH, etaV, zetaH, zetaV, lambd,
                 ab, xdirect, msrc, mrec, use_ne_eval):
      r
      PTM, PTE = greenfct(zsrc, zrec, lsrc, lrec, depth, etaH, etaV, zetaH,
                          zetaV, lambd, ab, xdirect, msrc, mrec, use_ne_eval)
      PJ0 = None
      PJ1 = None
      PJ0b = None
      Ptot = (PTM + PTE)/(4*np.pi)
      if mrec:
          sign = -1
      else:
          sign = 1
      if ab in [11, 12, 21, 22, 14, 24, 15, 25]:
          if ab in [14, 22]:
              sign *= -1
          PJ0b = sign/2*Ptot*lambd
          PJ1 = -sign*Ptot
          if ab in [11, 22, 24, 15]:
              if ab in [22, 24]:
                  sign *= -1
              PJ0 = sign*(PTM - PTE)/(8*np.pi)*lambd
      elif ab in [13, 23, 31, 32, 34, 35, 16, 26]:
          PJ1 = sign*Ptot*lambd*lambd
          if ab in [34, 26]:
              PJ1 *= -1
      elif ab in [33, ]:
          PJ0 = sign*Ptot*lambd*lambd*lambd
      return PJ0, PJ1, PJ0b