[Maxima] "horner([...],x)/FIX" - ID: 631216.
Dieter Kaiser
drdieterkaiser at web.de
Tue Jun 30 13:07:57 CDT 2009
I had a look at the bug report "horner([...],x)/FIX" - ID: 631216.
As suggested in the bug report I have tried the following
implementations of the functions $ratnumer, $ratdenom and taych2rat:
(defmfun $ratnumer (x)
(cond ((mbagp x)
(cons (car x) (mapcar '$ratnumer (cdr x))))
(t
(setq x (taychk2rat x))
(cons (car x) (cons (cadr x) 1)))))
(defmfun $ratdenom (x)
(cond ((mbagp x)
(cons (car x) (mapcar '$ratdenom (cdr x))))
(t
(setq x (taychk2rat x))
(cons (car x) (cons (cddr x) 1)))))
(defun taychk2rat (x)
(cond ((and ($ratp x)
(member 'trunc (cdar x) :test #'eq))
($taytorat x))
(t ($rat x))))
With this changes $ratnumer and $ratdenom map over lists, matrices and
equations. The function $horner will map over these bags too.
We get the expected mapping over lists and equations:
(%i4) horner(x^2+x=a*x^2+b*x);
(%o4) x*(x+1) = x*(a*x+b)
(%i5) horner([x^2+x,x^3+x,x^4+x]);
(%o5) [x*(x+1),x*(x^2+1),x*(x^3+1)]
In addition ratnumer and ratdenom map over lists too:
(%i6) ratnumer([x^2/y^2+x,(x^3+x)/(y^2+y),(x^4+x)/(y^3+y^2)]);
(%o6) [x*y^2+x^2,x^3+x,x^4+x]
(%i7) ratdenom([x^2/y^2+x,(x^3+x)/(y^2+y),(x^4+x)/(y^3+y^2)]);
(%o7) [y^2,y^2+y,y^3+y^2]
The testsuite and share_testsuite has no problems.
I think it is useful to implement the mapping over lists and equations.
This can be done at more places too.
Any comments?
Dieter Kaiser
More information about the Maxima
mailing list