Function: math-simplify
math-simplify is an autoloaded and byte-compiled function defined in
calc-alg.el.gz.
Signature
(math-simplify TOP-EXPR)
Aliases
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-alg.el.gz
(defun math-simplify (top-expr)
(let ((math-simplifying t)
(calc-angle-mode (if (calc-input-angle-units top-expr)
'rad
calc-angle-mode))
(math-top-only (consp calc-simplify-mode))
(simp-rules (append (and (calc-has-rules 'var-AlgSimpRules)
'((var AlgSimpRules var-AlgSimpRules)))
(and math-living-dangerously
(calc-has-rules 'var-ExtSimpRules)
'((var ExtSimpRules var-ExtSimpRules)))
(and math-simplifying-units
(calc-has-rules 'var-UnitSimpRules)
'((var UnitSimpRules var-UnitSimpRules)))
(and math-integrating
(calc-has-rules 'var-IntegSimpRules)
'((var IntegSimpRules var-IntegSimpRules)))))
res)
(if math-top-only
(let ((r simp-rules))
(setq res (math-simplify-step (math-normalize top-expr))
calc-simplify-mode '(nil)
top-expr (math-normalize res))
(while r
(setq top-expr (math-rewrite top-expr (car r)
'(neg (var inf var-inf)))
r (cdr r))))
(calc-with-default-simplification
(while (let ((r simp-rules))
(setq res (math-normalize top-expr))
(if (not math-normalize-error)
(progn
(while r
(setq res (math-rewrite res (car r))
r (cdr r)))
(not (equal top-expr (setq res (math-simplify-step res)))))))
(setq top-expr res)))))
top-expr)