From: Richard Kreckel Date: Mon, 19 Nov 2001 19:56:46 +0000 (+0000) Subject: * Make zeta1_eval() more lightweight by copying less stuff. X-Git-Tag: release_1-0-1~4 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=24f75d316ba00dcdf32d1623ade26b0c15a01dff;hp=7096725a5c50f4369e2c6c85f1dd6210626abb86 * Make zeta1_eval() more lightweight by copying less stuff. --- diff --git a/ginac/inifcns_zeta.cpp b/ginac/inifcns_zeta.cpp index 28705983..a7b956ae 100644 --- a/ginac/inifcns_zeta.cpp +++ b/ginac/inifcns_zeta.cpp @@ -50,27 +50,27 @@ static ex zeta1_evalf(const ex & x) static ex zeta1_eval(const ex & x) { if (x.info(info_flags::numeric)) { - numeric y = ex_to(x); + const numeric &y = ex_to(x); // trap integer arguments: if (y.is_integer()) { if (y.is_zero()) return _ex_1_2; - if (x.is_equal(_ex1)) + if (y.is_equal(_num1)) throw(std::domain_error("zeta(1): infinity")); - if (x.info(info_flags::posint)) { - if (x.info(info_flags::odd)) + if (y.info(info_flags::posint)) { + if (y.info(info_flags::odd)) return zeta(x).hold(); else - return abs(bernoulli(y))*pow(Pi,x)*pow(_num2,y-_num1)/factorial(y); + return abs(bernoulli(y))*pow(Pi,y)*pow(_num2,y-_num1)/factorial(y); } else { - if (x.info(info_flags::odd)) + if (y.info(info_flags::odd)) return -bernoulli(_num1-y)/(_num1-y); else - return _num0; + return _ex0; } } // zeta(float) - if (x.info(info_flags::numeric) && !x.info(info_flags::crational)) + if (y.info(info_flags::numeric) && !y.info(info_flags::crational)) return zeta1_evalf(x); } return zeta(x).hold();