sign(zeta(x))
- Subject: sign(zeta(x))
- From: Alexey Beshenov
- Date: Sun, 18 Jan 2009 01:41:02 +0300
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/