Orthogonal polynomials, simple code for Legendre polynomials

The following simple function implements the above recursion relation of Eq. (11). for computing Legendre polynomials of order \( N \).

//  This function computes the Legendre polynomial of degree N

double Legendre( int n, double x) 
{
       double r, s, t;
       int m;
       r = 0; s = 1.;
       //  Use recursion relation to generate p1 and p2
       for (m=0; m < n; m++ )  
       {
          t = r; r = s; 
          s = (2*m+1)*x*r - m*t;
          s /= (m+1);
	} // end of do loop 
        return s;
}   // end of function Legendre

The variable \( s \) represents \( L_{j+1}(x) \), while \( r \) holds \( L_j(x) \) and \( t \) the value \( L_{j-1}(x) \).