// tgamma(x) == tgamma(x+1) / x
// from which follows
// series(tgamma(x),x==-m,order) ==
- // series(tgamma(x+m+1)/(x*(x+1)*...*(x+m)),x==-m,order+1);
+ // series(tgamma(x+m+1)/(x*(x+1)*...*(x+m)),x==-m,order);
const ex arg_pt = arg.subs(rel, subs_options::no_pattern);
if (!arg_pt.info(info_flags::integer) || arg_pt.info(info_flags::positive))
throw do_taylor(); // caught by function::series()
ex ser_denom = _ex1;
for (numeric p; p<=m; ++p)
ser_denom *= arg+p;
- return (tgamma(arg+m+_ex1)/ser_denom).series(rel, order+1, options);
+ return (tgamma(arg+m+_ex1)/ser_denom).series(rel, order, options);
}
throw do_taylor(); // caught by function::series()
// trap the case where arg1 is on a pole:
if (arg1.info(info_flags::integer) && !arg1.info(info_flags::positive))
- arg1_ser = tgamma(arg1+s).series(rel, order, options);
+ arg1_ser = tgamma(arg1+s);
else
- arg1_ser = tgamma(arg1).series(rel,order);
+ arg1_ser = tgamma(arg1);
// trap the case where arg2 is on a pole:
if (arg2.info(info_flags::integer) && !arg2.info(info_flags::positive))
- arg2_ser = tgamma(arg2+s).series(rel, order, options);
+ arg2_ser = tgamma(arg2+s);
else
- arg2_ser = tgamma(arg2).series(rel,order);
+ arg2_ser = tgamma(arg2);
// trap the case where arg1+arg2 is on a pole:
if ((arg1+arg2).info(info_flags::integer) && !(arg1+arg2).info(info_flags::positive))
- arg1arg2_ser = tgamma(arg2+arg1+s).series(rel, order, options);
+ arg1arg2_ser = tgamma(arg2+arg1+s);
else
- arg1arg2_ser = tgamma(arg2+arg1).series(rel,order);
+ arg1arg2_ser = tgamma(arg2+arg1);
// compose the result (expanding all the terms):
return (arg1_ser*arg2_ser/arg1arg2_ser).series(rel, order, options).expand();
}
}
unsigned psi1_SERIAL::serial =
- function::register_new(function_options("psi").
+ function::register_new(function_options("psi", 1).
eval_func(psi1_eval).
evalf_func(psi1_evalf).
derivative_func(psi1_deriv).
}
unsigned psi2_SERIAL::serial =
- function::register_new(function_options("psi").
+ function::register_new(function_options("psi", 2).
eval_func(psi2_eval).
evalf_func(psi2_evalf).
derivative_func(psi2_deriv).