extending limit
- Subject: extending limit
- From: Barton Willis
- Date: Mon, 25 Jan 2010 12:54:01 -0600
I know little to nothing about the limit code; nevertheless, how about:
(setf (get '%signum 'simplim%function) 'simplim%signum)
(defun simplim%signum (e x pt)
(let ((sgn))
(setq e (limit (cadr e) x pt 'think))
(setq sgn ($csign e))
(cond ((eq sgn '$zero) '$ind)
((memq sgn '($neg $pn $pos))
(take '(%signum) e)) ;; OK, this does sign(e) twice,...
(t (throw 'limit ())))))
Examples:
(%i2) limit(signum(x^2-3),x,5);
(%o2) 1
(%i3) limit(signum(x),x,a);
(%o3) 'limit(signum(x+a),x,0)
(%i4) assume(a > 0);
(%o4) [a > 0]
(%i5) limit(signum(x),x,a);
(%o5) 1
(%i6) limit(signum(x^3-1),x,inf);
(%o6) 1
(%i7) limit(signum(x^3-7),x,minf);
(%o7) -1
(%i8) limit(x * signum(x),x,0);
(%o8) 0
Barton