*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
* Brillouin's index by Sterling's approximation
*      H = (1 / N) @ LOG(N! / PRODUCT(n[i]!))
*   and      n! = (2 @ pi @ n)^(1/2) @ (n/e)^n
*
*___Name___Type______In/Out___Description_______________________________
*   N(S)   Integer   In       Species populations
*   S      Integer   In       Number of species
*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      FUNCTION EINDEX (N, S)
       IMPLICIT NONE
       INTEGER N, S
       REAL EINDEX
       DIMENSION N(S)

*          Local variables
       INTEGER I, STRIM
       REAL TOT, SNPHLN, LN2PI, f
       PARAMETER (LN2PI = 1.8378771)

*          Begin
       EINDEX = -999.
       STRIM = S

*           Find SUM n[i] and SUM (n[i]+1/2) @ LOG(n[i])
       TOT = 0.
       SNPHLN = 0.
       DO 10 i = 1, s
         f = FLOAT(N(i))
         IF (f < 0.5) THEN                   ! skip empty groups
           STRIM = STRIM - 1
           GO TO 10
         END IF
         TOT = TOT + f
         SNPHLN = SNPHLN + (f + 0.5) * LOG(f)
  10   CONTINUE

       IF (STRIM .EQ. 0) RETURN             ! return negative if no data
       EINDEX = (1. / TOT) * ( (TOT+0.5) * LOG(TOT)
     &   - SNPHLN - (FLOAT(STRIM-1) / 2.) * LN2PI )
       RETURN
      END  ! of EINDEX
