From: Dieter K. <cra...@us...> - 2009-11-29 20:40:20
|
Update of /cvsroot/maxima/maxima/src In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv27717/src Modified Files: nummod.lisp Log Message: Adding the property distribute_over for the functions floor, mod, ceiling, fix, entier, round. These functions now maps over lists, matrices, and equations. Related bug report: ID: 1551310 - mod and floor should distribute over matrix and list No problems with the testsuite and share_testsuite. Index: nummod.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/nummod.lisp,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- nummod.lisp 27 Jul 2008 07:04:12 -0000 1.22 +++ nummod.lisp 29 Nov 2009 20:40:10 -0000 1.23 @@ -74,11 +74,18 @@ (defprop $floor tex-matchfix tex) (defprop $floor (("\\left \\lfloor " ) " \\right \\rfloor") texsym) +;; $floor distributes over lists, matrices, and equations +(setf (get '$floor 'distribute_over) '(mlist $matrix mequal)) + ; These defprops for $entier are copied from orthopoly/orthopoly-init.lisp. (defprop $entier tex-matchfix tex) (defprop $entier (("\\lfloor ") " \\rfloor") texsym) +;; $entier and $fix distributes over lists, matrices, and equations +(setf (get '$entier 'distribute_over) '(mlist $matrix mequal)) +(setf (get '$fix 'distribute_over) '(mlist $matrix mequal)) + ;; For an example, see pretty-good-floor-or-ceiling. Code courtesy of Stavros Macrakis. (defmacro bind-fpprec (val &rest exprs) @@ -213,6 +220,9 @@ (defprop $ceiling tex-matchfix tex) (defprop $ceiling (("\\left \\lceil " ) " \\right \\rceil") texsym) +;; $ceiling distributes over lists, matrices, and equations. +(setf (get '$ceiling 'distribute_over) '(mlist $matrix mequal)) + (defun simp-ceiling (e e1 z) (oneargcheck e) (setq e (simplifya (specrepcheck (nth 1 e)) z)) @@ -256,6 +266,9 @@ (defprop $mod 180. tex-rbp) (defprop $mod 180. tex-rbp) +;; $mod distributes over lists, matrices, and equations +(setf (get '$mod 'distribute_over) '(mlist $matrix mequal)) + ;; See "Concrete Mathematics," Section 3.21. (defun simp-nummod (e e1 z) @@ -280,6 +293,9 @@ (setf (get '$round 'verb) '%round) (setf (get '%round 'noun) '$round) +;; $round distributes over lists, matrices, and equations. +(setf (get '$round 'distribute_over) '(mlist $matrix mequal)) + (defun simp-round (e yy z) (oneargcheck e) (setq yy (caar e)) ;; find a use for the otherwise unused YY. |