sign(zeta(x))



Hello Alexey,

do you have implemented a general mechanism to give $sign more support for new
functions?

Such a mechanism would be interessting and is availabe for the conjugate
function. It is possible to put a CONJUGATE-FUNCTION on the property list which
is called by the algorithm of $conjugate.

The advantage would be that it is possible to add new functions without changing
the code of compar.lisp. 

I have used this mechanism to support mirror symmetry for the functions in the
file gamma.lisp. No change of the code in the file conjugate.lisp was necessary.

Dieter Kaiser

-----Urspr?ngliche Nachricht-----
Von: maxima-bounces at math.utexas.edu [mailto:maxima-bounces at math.utexas.edu] Im
Auftrag von Alexey Beshenov
Gesendet: Samstag, 17. Januar 2009 23:41
An: maxima at math.utexas.edu
Betreff: [Maxima] sign(zeta(x))

I found that Maxima doesn't know how to find sign(zeta(x))
for non-integer or positive odd x:

  integrate (t^3/(exp(t)-1), t, 0, inf)
  Is  zeta(3)  positive, negative, or zero?

It happens because zeta(3) is not evaluated, so sign(zeta(3))=pnz.

Other examples:

  sign (zeta(5/6)) => pnz
  sign (zeta(-5/2)) => pnz

Maybe we can extend compar.lisp by the following stuff:

  ;; for real x, zeta(x) has
  ;; trivial negative even roots
  ;; and a pole at x=1
  (defun sign-zeta (x)
    (let ((arg (cadr x)))
      (cond
        ((eq (mgqp arg 1) t) '$pos)
        ((eq (mgqp arg 0) t) '$neg)
        ((eq (mgrp 0 arg) t)
          (if (integerp arg)
            (let ((m (mod arg 4)))
              (cond
                ((= m 3) '$neg)
                ((= m 1) '$pos)
                (t '$zero)))
            (let ((fl (take '($floor) arg)))
            (if (integerp fl)
              (if (= (mod (if (evenp fl) fl (1- fl)) 4) 0)
                '$pos
                '$neg)
              '$pnz))))
        (t '$pnz))))

Examples:

  (sign-zeta '(($zeta) -23)) => $pos
  (sign-zeta '(($zeta) -22)) => $zero
  (sign-zeta '(($zeta) -21)) => $neg
  (sign-zeta '(($zeta) 0) => $neg
  (sign-zeta '(($zeta) 23)) => $pos
  (sign-zeta '(($zeta) ((rat) 5 6))) => $neg
  (sign-zeta '(($zeta) ((rat) -5 2))) => $pos
  (sign-zeta '(($zeta) $%pi))) => $pos
  (sign-zeta '(($zeta) ((mtimes) 23 $%i))) => $pnz
  (sign-zeta '(($zeta) $x)) => $pnz

-- 
Boomtime, Chaos 17 YOLD 3175
Alexey Beshenov  http://beshenov.ru/

_______________________________________________
Maxima mailing list
Maxima at math.utexas.edu
http://www.math.utexas.edu/mailman/listinfo/maxima