declare(A,outative)



I think Maxima doesn't have a way to declare a function to be multioutative. If 
you are willing to experiment, try making a file multioutative.lisp (given below)
and let me know if it works. Example

(%i12) load("multioutative.lisp")$
(%i13) declare(f,multioutative);
(%o13) done

(%i15) f(6*x, 7*y,p-q);
(%o15) 42*(f(x,y,p)-f(x,y,q))

If all is well, I'll commit the multioutative code to the file /share/contrib/multiadditive.lisp

;;---------------start of multioutative.lisp
(setq $opproperties ($cons '$multioutative $opproperties))

(setq opers (cons '$multioutative opers)
      *opers-list (cons '($multioutative . multioutative) *opers-list))

(defun multioutative (e z)
  (let ((op (car e))
	(args (margs e))
	(w 1))
    (setq args (mapcar #'(lambda (s) 
			   (let ((k ($numfactor s)))
			     (setq w (mul w k))
			     (div s k))) args))

    (if (or (eq w 1) ($subvarp e)) (protected-oper-apply e z) 
      (mul w (protected-oper-apply (simplifya (cons op args)) z)))))
;;-----------------end of multioutative.lisp

--Barton

-----maxima-bounces at math.utexas.edu wrote: -----


>Hi,
>I?have?an?operator?F?of?two?arguments.?How?to?declare?in?maxima?that?
>constants?should?be?pulled?out?also?in?the?second?argument??The?command?
>declare(F,outative)?removes?constants?only?from?the?first?one.
>Marek?Pietrow.
>_______________________________________________
>Maxima?mailing?list
>Maxima at math.utexas.edu
>http://www.math.utexas.edu/mailman/listinfo/maxima