Function: math-neg-fancy
math-neg-fancy is an autoloaded and byte-compiled function defined in
calc-arith.el.gz.
Signature
(math-neg-fancy A)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-arith.el.gz
(defun math-neg-fancy (a)
(cond ((eq (car a) 'polar)
(list 'polar
(nth 1 a)
(if (math-posp (nth 2 a))
(math-sub (nth 2 a) (math-half-circle nil))
(math-add (nth 2 a) (math-half-circle nil)))))
((eq (car a) 'mod)
(if (math-zerop (nth 1 a))
a
(list 'mod (math-sub (nth 2 a) (nth 1 a)) (nth 2 a))))
((eq (car a) 'sdev)
(list 'sdev (math-neg (nth 1 a)) (nth 2 a)))
((eq (car a) 'intv)
(math-make-intv (aref [0 2 1 3] (nth 1 a))
(math-neg (nth 3 a))
(math-neg (nth 2 a))))
((and math-simplify-only
(not (equal a math-simplify-only)))
(list 'neg a))
((eq (car a) '+)
(math-sub (math-neg (nth 1 a)) (nth 2 a)))
((eq (car a) '-)
(math-sub (nth 2 a) (nth 1 a)))
((and (memq (car a) '(* /))
(math-okay-neg (nth 1 a)))
(list (car a) (math-neg (nth 1 a)) (nth 2 a)))
((and (memq (car a) '(* /))
(math-okay-neg (nth 2 a)))
(list (car a) (nth 1 a) (math-neg (nth 2 a))))
((and (memq (car a) '(* /))
(or (math-objectp (nth 1 a))
(and (eq (car (nth 1 a)) '*)
(math-objectp (nth 1 (nth 1 a))))))
(list (car a) (math-neg (nth 1 a)) (nth 2 a)))
((and (eq (car a) '/)
(or (math-objectp (nth 2 a))
(and (eq (car (nth 2 a)) '*)
(math-objectp (nth 1 (nth 2 a))))))
(list (car a) (nth 1 a) (math-neg (nth 2 a))))
((and (eq (car a) 'var) (memq (nth 2 a) '(var-uinf var-nan)))
a)
((eq (car a) 'neg)
(nth 1 a))
(t (list 'neg a))))