<?xml version="1.0"?>
<CD>
<!-- $Id: orthpoly1.tfb,v 1.5 2003/11/30 13:10:52 taka Exp $ -->
<CDName> orthpoly </CDName>
<CDURL> http://www.openxm.org/... </CDURL>
<CDReviewDate> 2003-08-11 </CDReviewDate>
<CDDate> 2002-08-11, 2003-11-30 </CDDate>
<CDVersion> 0 </CDVersion>
<CDRevision> 1 </CDRevision>
<CDStatus> experimental </CDStatus>
<CDUses>
  <CDName>arith1</CDName>
  <CDName>relation1</CDName>
  <CDName>calculus1</CDName>
  <CDName>alg1</CDName>
  <CDName>interval1</CDName>
  <CDName>nums1</CDName>
  <CDName>hypergeo0</CDName>
  <CDName>hypergeo1</CDName>
</CDUses>
<Description>
 This CD defines orthogonal polynomials which are hypergeometric polynomials.
 These functions are described in the following books.
 (1) Handbook of Mathematical Functions, Abramowitz, Stegun
 (2) Higher transcendental functions. Krieger Publishing Co., Inc., Melbourne, Fla., 1981, Erdlyi, Arthur; Magnus, Wilhelm; Oberhettinger, Fritz; Tricomi, Francesco G. 
</Description>

<CDDefinition>
<Name> legendreP </Name>
<Description>
	The first Legendre function.
	This function is one of the two famous solutions of Legendre
	differential equation.
</Description>
<FunctorClass> Binary </FunctorClass>
<CMP>
	legendreP(v;z) = hypergeo1.hypergeometric2F1(-v,v+1,1;(1-z)/2)
</CMP>

<FMP>
<tfb>
	orthpoly1.legendreP(v,z) ~relation1.eq~
	hypergeo1.hypergeometric2F1(arith1.unary_minus(v),
	  v ~arith1.plus~ 1, 1, 1 ~arith1.minus~ z ~arith1.divide~ 2);
</tfb>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> legendreQ </Name>
<Description>
	The second Legendre function.
	This function is the another one of the famous two solutions of Legendre
	differential equation.
</Description>
<FunctorClass> Binary </FunctorClass>
<CMP>
	legendreQ(v;z) = \frac{\sqrt{\pi}\Gamma(v+1)}{\Gamma(v+3/2)}
	  /(2z)^{v+1}
	  hypergeo1.hypergeometric2F1((v+1)/2,v/2+1,v+3/2;1/z^2)
</CMP>

<FMP>
<tfb>
	orthpoly1.legendreQ(v,z) ~relation1.eq~
	( arith1.root(nums1.pi,2) ~arith1.times~
	  hypergeo0.gamma(v ~arith1.plus~ 1) ~arith1.divide~
	  hypergeo0.gamma(v ~arith1.plus~ (3 ~arith1.divide~ 2))
	  ~arith1.divide~ (2 ~arith1.times~ z ~arith1.power~
	    (v ~arith1.plus~ 1)) ~arith1.times~
	  hypergeo1.hypergeometric2F1(v ~arith1.plus~ 1 ~arith1.divide~ 2,
	    v ~arith1.divide~ 2 ~arith1.plus~ 1,
	    v ~arith1.plus~ (3 ~arith1.divide~ 2),
	    1 ~arith1.divide~ z ~arith1.power~ 2));
</tfb>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> jacobiG </Name>
<Description>
	The Jacobi polynomial.
</Description>
<FunctorClass> 4ary </FunctorClass>
<CMP>
	jacobiG(n,a,c;z)
	= hypergeometric2F1(-n,a+n,c,z) (c \not\in Z_{&lt;=0})
</CMP>

<FMP>
<tfb>
  arith1.unary_minus(c) ~set1.notin~ setname1.N ~logic1.implies~
  (orthpoly1.jacobiG(n,a,c,z) ~relation1.eq~
    hypergeo1.hypergeometric2F1(arith1.unary_minus(n), a ~arith1.plus~ n, c, z));
</tfb>
</FMP>
</CDDefinition>

</CD>

