 
C *** SUBROUTINE NORMP ***
C     SUBROUTINE NORMP(NU, MU1, MU2, ARG, MODE, PN, IPN, ISIG)
C     INTEGER NU, MU1, MU2, MODE, IPN, ISIG
C     DOUBLE PRECISION ARG, PN
C
C        SUBROUTINE TO CALCULATE NORMALIZED LEGENDRE POLYNOMIALS
C        OF VARYING ORDER AND OF FIXED ARGUMENT AND DEGREE.
C        THE ORDER MU AND DEGREE NU ARE NONNEGATIVE INTEGERS AND THE
C        ARGUMENT IS REAL. THE ALGORITHM REQUIRES THE USE OF
C        NUMBERS OUTSIDE THE NORMAL MACHINE RANGE. THEREFORE,
C        THIS SUBROUTINE EMPLOYS A SPECIAL ARITHMETIC CALLED
C        EXTENDED-RANGE ARITHMETIC.  (SEE SMITH, J.M., OLVER,
C        F.W.J., AND LOZIER, D.W., EXTENDED-RANGE ARITHMETIC
C        AND NORMALIZED LEGENDRE POLYNOMIALS, ACM TRANSACTIONS
C        ON MATHEMATICAL SOFTWARE, MARCH 1981).
C
C        IN EXTENDED-RANGE ARITHMETIC EACH NUMBER IS REPRESENTED
C        AS A PAIR (X,IX) WHICH HAS THE VALUE  X*RADIX**IX, WHERE
C        RADIX IS THE BASE IN WHICH CALCULATIONS ARE PERFORMED.  FOR
C        A FULL DESCRIPTION OF EXTENDED-RANGE ARITHMETIC, SEE THE
C        COMMENTS AT THE BEGINNING OF SUBROUTINE SETUP.
C
C        THE NORMALIZED LEGENDRE POLYNOMIAL IS A MULTIPLE OF THE
C        ASSOCIATED LEGENDRE POLYNOMIAL OF THE FIRST KIND
C        WHERE THE NORMALIZING COEFFICIENT IS CHOSEN SO THAT
C        THE INTEGRAL OF THE SQUARE OF THE FUNCTION FROM -1
C        TO +1 IS EQUAL TO 1 (SEE JAHNKE,E. EMDE,F. AND LOSCH,F.,
C        TABLES OF HIGHER FUNCTIONS, MCGRAW HILL, NEW YORK,
C        1960, P. 121).
C
C        THE INPUT VALUES TO NORMP ARE NU, MU1, MU2, ARG, AND MODE.
C        THESE MUST SATISFY:
C          1. NU IS A NON-NEGATIVE INTEGER SPECIFYING THE DEGREE.
C          2. MU1 AND MU2 ARE NON-NEGATIVE INTEGERS, WITH
C             MU1.LE.MU2, SPECIFYING THE RANGE OF ORDERS.
C          3. MODE IS AN INTEGER, RESTRICTED TO 1 OR 2,
C             WHICH INDICATES WHICH OF TWO FORMS OF THE
C             DOUBLE-PRECISION VARIABLE ARG IS INTENDED:
C              A. IF MODE=1 THEN NORMALIZED LEGENDRE(NU,MU,ARG) IS
C                 COMPUTED FOR ALL MU SUCH THAT MU1 .LE. MU .LE. MU2 .
C                 IN THIS CASE, -1 .LE. ARG .LE. 1  MUST BE SATISFIED.
C              B. IF MODE=2 THEN NORMALIZED LEGENDRE(NU,MU,COS ARG) IS
C                 COMPUTED FOR ALL MU SUCH THAT MU1 .LE. MU .LE. MU2 .
C                 IN THIS CASE, -PI .LT. ARG .LT. PI  MUST BE SATISFIED.
C
C        THE OUTPUT OF SUBROUTINE NORMP CONSISTS OF THE TWO
C        ARRAYS PN AND IPN AND THE ERROR ESTIMATE ISIG. THE
C        NORMALIZED LEGENDRE POLYNOMIALS ARE STORED AS EXTENDED-
C        RANGE NUMBERS WITH DOUBLE-PRECISION PRINCIPAL PARTS
C        IN ARRAY PN AND AUXILIARY INDICES IN ARRAY IPN. THUS
C             (PN(1),IPN(1))=NORMALIZED LEGENDRE(NU,MU1,X)
C             (PN(2),IPN(2))=NORMALIZED LEGENDRE(NU,MU1+1,X)
C                .
C                .
C             (PN(K),IPN(K))=NORMALIZED LEGENDRE(NU,MU2,X)
C        WHERE K=MU2-MU1+1 AND X=ARG IF MODE=1, OR X=COS ARG IF MODE=2.
C        FINALLY, ISIG IS AN ESTIMATE OF THE NUMBER OF  DECIMAL DIGITS
C        LOST THROUGH ROUNDING ERRORS IN THE COMPUTATION. IF ARG IS
C        ACCURATE TO N SIGNIFICANT DECIMALS, THEN THE COMPUTED FUNCTION
C        VALUES ARE ACCCURATE TO N-ISIG SIGNIFICANT DECIMALS (EXCEPT IN
C        NEIGHBORHOODS OF ZEROS OF THE FUNCTIONS).
C
C     DOUBLE PRECISION C1, C2, P, P1, P2, P3, S, SX, T, TX, X, DK
C     COMMON /EXR1/ LUERR
C
C        ARRAYS PN AND IPN ARE DIMENSIONED 1 IN NORMP. IN THE
C        CALLING PROGRAM THE DIMENSIONS OF PN AND IPN MUST BE
C        AT LEAST MU2-MU1+1 TO AVOID IMPROPER STORING OF RESULTS.
C
 
 
