def jv(v, x): """Bessel function J_v(x).""" if isint(v): if isinstance(x, mpf): return make_mpf(libhyper.mpf_besseljn(int(v), x._mpf_, mp.prec)) if isinstance(x, mpc): return make_mpc(libhyper.mpc_besseljn(int(v), x._mpc_, mp.prec)) hx = x/2 return hx**v * hyp0f1(v+1, -hx**2) / factorial(v)
def jv(v, x): """Bessel function J_v(x).""" if isint(v): if isinstance(x, mpf): return make_mpf(libhyper.mpf_besseljn(int(v), x._mpf_, mp.prec)) if isinstance(x, mpc): return make_mpc(libhyper.mpc_besseljn(int(v), x._mpc_, mp.prec)) hx = x / 2 return hx**v * hyp0f1(v + 1, -hx**2) / factorial(v)
def legendre(n, x): """Legendre polynomial P_n(x).""" if isint(n): n = int(n) if x == -1: # TODO: hyp2f1 should handle this if x == int(x): return (-1)**(n + (n>=0)) * mpf(-1) return inf return hyp2f1(-n,n+1,1,(1-x)/2)
def legendre(n, x): """Legendre polynomial P_n(x).""" if isint(n): n = int(n) if x == -1: # TODO: hyp2f1 should handle this if x == int(x): return (-1)**(n + (n >= 0)) * mpf(-1) return inf return hyp2f1(-n, n + 1, 1, (1 - x) / 2)