From: Dieter K. <cra...@us...> - 2011-08-03 20:42:31
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Maxima, A Computer Algebra System". The branch, master has been updated via 02b28522e5d16032b3a773dcb6b18b7d3578e5e7 (commit) via 79780f68028038c8079cf6c5a5a2d53f96266eaf (commit) via 12bc8385c1a28c2481476ea7f6df84c4a4b3a623 (commit) via 342f77841d5653cca399d033ad7f61be93642179 (commit) from e3badfc76b3bef34cf9dd14076061270313e1661 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 02b28522e5d16032b3a773dcb6b18b7d3578e5e7 Author: crategus <cra...@us...> Date: Wed Aug 3 22:40:21 2011 +0200 Adding an example related to the bug report ID: 3376603 - sign of declared imaginary diff --git a/tests/rtest_sign.mac b/tests/rtest_sign.mac index 4b68387..b90b5e2 100644 --- a/tests/rtest_sign.mac +++ b/tests/rtest_sign.mac @@ -968,3 +968,13 @@ map(askinteger, [a, b, 2*b, 2+b, c, d, e]); (forget(equal(a,0), equal(b,2), equal(c,1/3), equal(d,1.5), equal(e,3.0b0)), done); done; + +/* Bug ID: 3376603 - sign of declared imaginary */ +declare(f,imaginary, g,complex); +done$ +csign(f(x)); +imaginary$ +csign(g(x)); +complex$ +kill(f,g); +done$ commit 79780f68028038c8079cf6c5a5a2d53f96266eaf Author: crategus <cra...@us...> Date: Wed Aug 3 22:39:23 2011 +0200 Adding an example related to the bug report ID: 3377347 - log(1/(1+%i)) gives error. diff --git a/tests/rtest_log.mac b/tests/rtest_log.mac index 3eb0132..69414e2 100755 --- a/tests/rtest_log.mac +++ b/tests/rtest_log.mac @@ -284,6 +284,12 @@ log(2/3*((x-1)^3)^(a/b)*(2*y-3)^(b/a)), domain:complex, logexpand:all; log(2/3*((x-1)^3)^(a/b)*(2*y-3)^(b/a)), domain:complex, logexpand:super; 3*a*log(x-1)/b + b*log(2*y-3)/a+log(2)-log(3)$ +/* Bug ID: 3377347 - log(1/(1+%i)) gives error + * Check this case. + */ +log(1/(1+%i)),logexpand:false; +-log(1+%i); + /* ----- Complex characteristics -------------------------------------------- */ realpart(log(x+%i*y)); commit 12bc8385c1a28c2481476ea7f6df84c4a4b3a623 Author: crategus <cra...@us...> Date: Wed Aug 3 22:38:13 2011 +0200 Checking more carefully for a function which is declared to be imaginary. Related bug report: ID: 3376603 - sign of declared imaginary diff --git a/src/compar.lisp b/src/compar.lisp index 01e5c04..14f6cba 100644 --- a/src/compar.lisp +++ b/src/compar.lisp @@ -1251,14 +1251,19 @@ relational knowledge is contained in the default context GLOBAL.") (defun sign-any (x) (cond ((and *complexsign* - (or (and (atom x) (decl-complexp x)) - (and (not (atom x)) (decl-complexp (caar x))))) - ;; In Complex Mode look for symbols declared to be complex. - (when *debug-compar* - (format t "~&SIGN-ANY with ~A~& Symbol declared to be complex found.~%" x)) - (if (and (atom x) ($featurep x '$imaginary)) - (setq sign '$imaginary) - (setq sign '$complex))) + (symbolp x) + (decl-complexp x)) + ;; In Complex Mode look for symbols declared to be complex. + (if ($featurep x '$imaginary) + (setq sign '$imaginary) + (setq sign '$complex))) + ((and *complexsign* + (not (atom x)) + (decl-complexp (caar x))) + ;; A function f(x), where f is declared to be imaginary or complex. + (if ($featurep (caar x) '$imaginary) + (setq sign '$imaginary) + (setq sign '$complex))) (t (dcompare x 0) (if (and $assume_pos commit 342f77841d5653cca399d033ad7f61be93642179 Author: crategus <cra...@us...> Date: Wed Aug 3 22:36:39 2011 +0200 Replacing a call of $sign with $csign in simpln. Related bug report: ID: 3377347 - log(1/(1+%i)) gives error diff --git a/src/simp.lisp b/src/simp.lisp index 254cd69..02e0862 100644 --- a/src/simp.lisp +++ b/src/simp.lisp @@ -1392,7 +1392,7 @@ ((mexptp y) (cond ((or (and $logexpand (eq $domain '$real)) (member $logexpand '($all $super)) - (and (eq ($sign (cadr y)) '$pos) + (and (eq ($csign (cadr y)) '$pos) (not (member ($csign (caddr y)) '($complex $imaginary))))) ;; Simplify log(x^a) -> a*log(x), where x > 0 and a is real ----------------------------------------------------------------------- Summary of changes: src/compar.lisp | 21 +++++++++++++-------- src/simp.lisp | 2 +- tests/rtest_log.mac | 6 ++++++ tests/rtest_sign.mac | 10 ++++++++++ 4 files changed, 30 insertions(+), 9 deletions(-) hooks/post-receive -- Maxima, A Computer Algebra System |