problem with dpart



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

>To: maxima at math.utexas.edu
>From: Andreas Eder <aeder at arcor.de>
>Sent by: maxima-bounces at math.utexas.edu
>Date: 05/17/2007 03:53AM
>Subject: problem with dpart
>
>There is a problem somewhere which manifests itself in dpart,
>though I think its roots must be somewhere else.
>
>To begin with, look at the docs to rembox and you will see (among
>other things):
>
>          (%i1) expr: (a*d - b*c)/h^2 + sin(%pi*x);

>but dpart (dpart (expr, 1, 1), 2, 2);
>give an error:
>
>dpart fell off end.
> -- an error.  To debug this try debugmode(true);
>
>which is no wonder, because you will see that somehow in
>(%i4) dpart (expr, 1, 1);
>                          a d - b c         """""""
>(%o4)                     --------- - sin(- "%pi x")
>                              2             """""""
>                             h
>
>we have managed to introduce minus signs and switch from sin(x) to
>- sin(-x).
>
>Where does that come from? Has anybody got an idea?
>
To see how this happens, trace simp-%sin and apply-reflection-simp:

(%i5) dpart (expr, 1, 1);
  1> (SIMP-%SIN ((%SIN) ((MBOX) ((MTIMES) $%PI $X))) 1 NIL)
    2> (APPLY-REFLECTION-SIMP %SIN
           ((MBOX SIMP) ((MTIMES SIMP) $%PI $X)) T)
    <2 (APPLY-REFLECTION-SIMP
           ((MTIMES SIMP) -1
            ((%SIN SIMP)
             ((MTIMES SIMP) -1 ((MBOX SIMP) ((MTIMES SIMP) $%PI $X))))))
  <1 (SIMP-%SIN
         ((MTIMES SIMP) -1
          ((%SIN SIMP)
           ((MTIMES SIMP) -1 ((MBOX SIMP) ((MTIMES SIMP) $%PI $X))))))

You'll also need to look at the source for apply-reflection-simp
(trigi.lisp):

(defun apply-reflection-simp (op x &optional (b t))
  (let ((f (get op 'reflection-rule)))
    (if (and b f (great (neg x) x)) (funcall f op x) nil)))

Options:

(a) tell apply-reflection-simp to ignore mbox
(b) return to the sign based scheme for applying reflection identities
(c) ?

Barton (author of apply-reflection-simp)