Function: calc-rewrite
calc-rewrite is an autoloaded, interactive and byte-compiled function
defined in calc-rewr.el.gz.
Signature
(calc-rewrite RULES-STR MANY)
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-rewr.el.gz
(defun calc-rewrite (rules-str many)
(interactive "sRewrite rule(s): \nP")
(calc-slow-wrapper
(let (n rules expr)
(if (or (null rules-str) (equal rules-str "") (equal rules-str "$"))
(setq expr (calc-top-n 2)
rules (calc-top-n 1 t)
n 2)
(setq rules (if (stringp rules-str)
(math-read-exprs rules-str) rules-str))
(if (eq (car-safe rules) 'error)
(error "Bad format in expression: %s" (nth 1 rules)))
(if (= (length rules) 1)
(setq rules (car rules))
(setq rules (cons 'vec rules)))
(or (memq (car-safe rules) '(vec var calcFunc-assign
calcFunc-condition))
(let ((rhs (math-read-expr
(read-string (concat "Rewrite from: " rules-str
" to: ")))))
(if (eq (car-safe rhs) 'error)
(error "Bad format in expression: %s" (nth 1 rhs)))
(setq rules (list 'calcFunc-assign rules rhs))))
(or (eq (car-safe rules) 'var)
(calc-record rules "rule"))
(setq expr (calc-top-n 1)
n 1))
(if (eq many 0)
(setq many '(var inf var-inf))
(if many (setq many (prefix-numeric-value many))))
(setq expr (calc-normalize (math-rewrite expr rules many)))
(let (calc-rewr-sel)
(setq expr (calc-locate-select-marker expr)))
(calc-pop-push-record-list n "rwrt" (list expr)))
(calc-handle-whys)))