From: Kris K. <kj...@us...> - 2013-06-22 00:21:21
|
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 CAS". The branch, master has been updated via 9292e26ff577efca477e8a5e4ba0d6d7f62065da (commit) via 9149eda68b4beb0db2b4f0f4c1276d308a1b9ce4 (commit) via f25ba05e6f5e5864aef46baa02afd7c423902e37 (commit) from 7011405d7346e7d0554b327e210b2dcbb8ed77c5 (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 9292e26ff577efca477e8a5e4ba0d6d7f62065da Author: Kris Katterjohn <kat...@gm...> Date: Fri Jun 21 17:40:19 2013 -0500 Give the real-valued property to carg carg not having this property can needlessly clutter up some otherwise simple expressions like (%i2) declare(z,complex)$ realpart(polarform(z)); (%o3) %e^-'imagpart('carg(z))*abs(z)*cos('realpart('carg(z))) The test suite runs without a problem. diff --git a/src/conjugate.lisp b/src/conjugate.lisp index 46a334d..8cd60d3 100644 --- a/src/conjugate.lisp +++ b/src/conjugate.lisp @@ -211,13 +211,14 @@ ;; When a function maps "everything" into the reals, put real-valued on the ;; property list of the function name. This duplicates some knowledge that -;; $rectform has. So it goes. The functions floor, ceiling and carg aren't +;; $rectform has. So it goes. The functions floor and ceiling also aren't ;; defined off the real-axis. I suppose these functions could be given the ;; real-valued property. (setf (get '%imagpart 'real-valued) t) (setf (get 'mabs 'real-valued) t) (setf (get '%realpart 'real-valued) t) +(setf (get '%carg 'real-valued) t) ;; manifestly-real-p isn't a great name, but it's OK. Since (manifestly-real-p '$inf) --> true ;; it might be called manifestly-extended-real-p. A nonscalar isn't real. commit 9149eda68b4beb0db2b4f0f4c1276d308a1b9ce4 Author: Kris Katterjohn <kat...@gm...> Date: Fri Jun 21 16:29:57 2013 -0500 Remove the integer-valued property from signum Along the same lines as commit f25ba05e, signum is not limited to integer return values anymore (since 2010). This property directly affects maxima-integerp and so signum having this property now leads to incorrect and inconsistent results in various places like (%i2) featurep(floor(z),integer); (%o2) true (%i3) floor(signum(cos(%i+1))); (%o3) signum(cos(%i+1)) (%i4) %,numer; (%o4) .6445762522840552-.7645400283774826*%i Removing the integer-valued property from signum caused 3 tests in the test suite to fail, but that was because these tests were bogus (in the same way that %o3 above is). I just corrected the expected results of these tests. diff --git a/src/compar.lisp b/src/compar.lisp index abaf2f4..9afb5e2 100644 --- a/src/compar.lisp +++ b/src/compar.lisp @@ -1872,8 +1872,6 @@ TDNEG TDZERO TDPN) to store it, and also sets SIGN." (setf (get '$floor 'integer-valued) t) (setf (get '$ceiling 'integer-valued) t) -(setf (get '%signum 'integer-valued) t) -(setf (get '$signum 'integer-valued) t) (setf (get '$charfun 'integer-valued) t) (defun maxima-integerp (x) diff --git a/tests/rtest_allnummod.mac b/tests/rtest_allnummod.mac index 665a1cd..c716f23 100644 --- a/tests/rtest_allnummod.mac +++ b/tests/rtest_allnummod.mac @@ -240,10 +240,10 @@ true$ 0$ ceiling(signum(x)); -signum(x)$ +ceiling(signum(x))$ ceiling(5 * signum(x)); -5 * signum(x)$ +ceiling(5 * signum(x))$ ceiling(charfun(x < 5) + 7); charfun(x < 5) + 7$ @@ -926,7 +926,7 @@ featurep(-x,integer); false$ featurep(signum(x),integer); -true$ +false$ featurep(charfun(a < b),integer); true$ commit f25ba05e6f5e5864aef46baa02afd7c423902e37 Author: Kris Katterjohn <kat...@gm...> Date: Fri Jun 21 15:39:11 2013 -0500 Remove the real-valued property from signum It looks like the real-valued property was added to signum in May 2009, but in October 2010 signum was extended to support complex values. signum having the real-valued property now leads to incorrect and inconsistent/surprising results like (%i2) realpart(signum(sin(%i+1))); (%o2) signum(sin(%i+1)) (%i3) %,numer; (%o3) .4393008292940405*%i+.8983400143495605 (%i4) realpart(signum(sin(%i+1))),numer; (%o4) .8983400143495605 and (%i5) imagpart(signum(sin(%i+1))); (%o5) 0 (%i6) imagpart(signum(sin(%i+1))),numer; (%o6) .4393008292940405 The test suite runs without a problem. diff --git a/src/conjugate.lisp b/src/conjugate.lisp index 7d565ef..46a334d 100644 --- a/src/conjugate.lisp +++ b/src/conjugate.lisp @@ -211,14 +211,13 @@ ;; When a function maps "everything" into the reals, put real-valued on the ;; property list of the function name. This duplicates some knowledge that -;; $rectform has. So it goes. The functions floor, ceiling, carg, and signum -;; aren't defined off the real-axis. I suppose these functions could be given the +;; $rectform has. So it goes. The functions floor, ceiling and carg aren't +;; defined off the real-axis. I suppose these functions could be given the ;; real-valued property. (setf (get '%imagpart 'real-valued) t) (setf (get 'mabs 'real-valued) t) (setf (get '%realpart 'real-valued) t) -(setf (get '%signum 'real-valued) t) ;; manifestly-real-p isn't a great name, but it's OK. Since (manifestly-real-p '$inf) --> true ;; it might be called manifestly-extended-real-p. A nonscalar isn't real. ----------------------------------------------------------------------- Summary of changes: src/compar.lisp | 2 -- src/conjugate.lisp | 6 +++--- tests/rtest_allnummod.mac | 6 +++--- 3 files changed, 6 insertions(+), 8 deletions(-) hooks/post-receive -- Maxima CAS |