X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=check%2Fexam_inifcns.cpp;h=93d3de37977443cf202c9bb2dce13f551dbf970a;hb=43287525116c2265404f224bbf0311d9fec4b516;hp=91307518eb3b9156b8c7d6648a60d8c1381bfb8c;hpb=ae3044935ddf13dd325f6e11770357b99bbe6095;p=ginac.git diff --git a/check/exam_inifcns.cpp b/check/exam_inifcns.cpp index 91307518..93d3de37 100644 --- a/check/exam_inifcns.cpp +++ b/check/exam_inifcns.cpp @@ -4,7 +4,7 @@ * functions. */ /* - * GiNaC Copyright (C) 1999-2000 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2005 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,14 +18,16 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "exams.h" /* Assorted tests on other transcendental functions. */ -static unsigned inifcns_consist_trans(void) +static unsigned inifcns_consist_trans() { + using GiNaC::asin; using GiNaC::acos; + unsigned result = 0; symbol x("x"); ex chk; @@ -90,17 +92,38 @@ static unsigned inifcns_consist_trans(void) ++result; } + // check consistency of log and eta phases: + for (int r1=-1; r1<=1; ++r1) { + for (int i1=-1; i1<=1; ++i1) { + ex x1 = r1+I*i1; + if (x1.is_zero()) + continue; + for (int r2=-1; r2<=1; ++r2) { + for (int i2=-1; i2<=1; ++i2) { + ex x2 = r2+I*i2; + if (x2.is_zero()) + continue; + if (abs(evalf(eta(x1,x2)-log(x1*x2)+log(x1)+log(x2)))>.1e-12) { + clog << "either eta(x,y), log(x), log(y) or log(x*y) is wrong" + << " at x==" << x1 << ", y==" << x2 << endl; + ++result; + } + } + } + } + } + return result; } /* Simple tests on the tgamma function. We stuff in arguments where the results * exists in closed form and check if it's ok. */ -static unsigned inifcns_consist_gamma(void) +static unsigned inifcns_consist_gamma() { unsigned result = 0; ex e; - e = tgamma(ex(1)); + e = tgamma(1); for (int i=2; i<8; ++i) e += tgamma(ex(i)); if (e != numeric(874)) { @@ -109,7 +132,7 @@ static unsigned inifcns_consist_gamma(void) ++result; } - e = tgamma(ex(1)); + e = tgamma(1); for (int i=2; i<8; ++i) e *= tgamma(ex(i)); if (e != numeric(24883200)) { @@ -140,8 +163,10 @@ static unsigned inifcns_consist_gamma(void) /* Simple tests on the Psi-function (aka polygamma-function). We stuff in arguments where the result exists in closed form and check if it's ok. */ -static unsigned inifcns_consist_psi(void) +static unsigned inifcns_consist_psi() { + using GiNaC::log; + unsigned result = 0; symbol x; ex e, f; @@ -162,7 +187,7 @@ static unsigned inifcns_consist_psi(void) /* Simple tests on the Riemann Zeta function. We stuff in arguments where the * result exists in closed form and check if it's ok. Of course, this checks * the Bernoulli numbers as a side effect. */ -static unsigned inifcns_consist_zeta(void) +static unsigned inifcns_consist_zeta() { unsigned result = 0; ex e; @@ -187,7 +212,7 @@ static unsigned inifcns_consist_zeta(void) return result; } -unsigned exam_inifcns(void) +unsigned exam_inifcns() { unsigned result = 0;