X-Git-Url: https://ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=check%2Fexam_inifcns.cpp;h=c222eddf01b575f3f3544b60e9ce541681fa1888;hb=fc15782d51037f2432129a153c47b7d7697c129b;hp=47cc10404c43f45217890a0a0f694a8e91826440;hpb=383d5eb3b0f0506810d9105a268f939125bfc347;p=ginac.git diff --git a/check/exam_inifcns.cpp b/check/exam_inifcns.cpp index 47cc1040..c222eddf 100644 --- a/check/exam_inifcns.cpp +++ b/check/exam_inifcns.cpp @@ -4,7 +4,7 @@ * functions. */ /* - * GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2003 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 @@ -26,6 +26,8 @@ /* Assorted tests on other transcendental functions. */ static unsigned inifcns_consist_trans(void) { + using GiNaC::asin; using GiNaC::acos; + unsigned result = 0; symbol x("x"); ex chk; @@ -90,6 +92,27 @@ 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; } @@ -100,7 +123,7 @@ static unsigned inifcns_consist_gamma(void) 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)) { @@ -142,6 +165,8 @@ static unsigned inifcns_consist_gamma(void) arguments where the result exists in closed form and check if it's ok. */ static unsigned inifcns_consist_psi(void) { + using GiNaC::log; + unsigned result = 0; symbol x; ex e, f;