Function: calcFunc-nrat

calcFunc-nrat is an autoloaded and byte-compiled function defined in calc-poly.el.gz.

Signature

(calcFunc-nrat EXPR)

Source Code

;; Defined in /usr/src/emacs/lisp/calc/calc-poly.el.gz
;;; Merge all quotients and expand/simplify the numerator
(defun calcFunc-nrat (expr)
  (if (math-any-floats expr)
      (setq expr (calcFunc-pfrac expr)))
  (if (or (math-vectorp expr)
	  (assq (car-safe expr) calc-tweak-eqn-table))
      (cons (car expr) (mapcar 'calcFunc-nrat (cdr expr)))
    (let* ((calc-prefer-frac t)
	   (res (math-to-ratpoly expr))
	   (num (math-simplify (math-sort-terms (calcFunc-expand (car res)))))
	   (den (math-simplify (math-sort-terms (calcFunc-expand (cdr res)))))
	   (g (math-poly-gcd num den)))
      (or (eq g 1)
	  (let ((num2 (math-poly-div num g))
		(den2 (math-poly-div den g)))
	    (and (eq (cdr num2) 0) (eq (cdr den2) 0)
		 (setq num (car num2) den (car den2)))))
      (math-simplify (math-div num den)))))