Function: calc-FitRules
calc-FitRules is an autoloaded and byte-compiled function defined in
calc-rules.el.gz.
Signature
(calc-FitRules)
Documentation
FitRules
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-rules.el.gz
;;(setq var-IntegAfterRules 'calc-IntegAfterRules)
(defun calc-FitRules ()
"FitRules"
(calc-compile-rule-set
"FitRules" "[
schedule(1,2,3,4),
iterations(inf),
phase(1),
e^x := exp(x),
x^y := exp(y ln(x)) :: !istrue(constant(y)),
x/y := x fitinv(y),
fitinv(x y) := fitinv(x) fitinv(y),
exp(a) exp(b) := exp(a + b),
a exp(b) := exp(ln(a) + b) :: !hasfitvars(a),
fitinv(exp(a)) := exp(-a),
ln(a b) := ln(a) + ln(b),
ln(fitinv(a)) := -ln(a),
log10(a b) := log10(a) + log10(b),
log10(fitinv(a)) := -log10(a),
log(a,b) := ln(a)/ln(b),
ln(exp(a)) := a,
a*(b+c) := a*b + a*c,
(a+b)^n := x :: integer(n) :: n >= 2
:: let(x, expandpow(a+b,n))
:: quote(matches(x,y+z)),
phase(1,2),
fitmodel(y = x) := fitmodel(0, y - x),
fitmodel(y, x+c) := fitmodel(y-c, x) :: !hasfitparams(c),
fitmodel(y, x c) := fitmodel(y/c, x) :: !hasfitparams(c),
fitmodel(y, x/(c opt(d))) := fitmodel(y c, x/d) :: !hasfitparams(c),
fitmodel(y, apply(f,[x])) := fitmodel(yy, x)
:: hasfitparams(x)
:: let(FTemp() = yy,
solve(apply(f,[FTemp()]) = y,
FTemp())),
fitmodel(y, apply(f,[x,c])) := fitmodel(yy, x)
:: !hasfitparams(c)
:: let(FTemp() = yy,
solve(apply(f,[FTemp(),c]) = y,
FTemp())),
fitmodel(y, apply(f,[c,x])) := fitmodel(yy, x)
:: !hasfitparams(c)
:: let(FTemp() = yy,
solve(apply(f,[c,FTemp()]) = y,
FTemp())),
phase(2,3),
fitmodel(y, x) := fitsystem(y, [], [], fitpart(1,1,x)),
fitpart(a,b,plain(x + y)) := fitpart(a,b,x) + fitpart(a,b,y),
fitpart(a,b,plain(x - y)) := fitpart(a,b,x) + fitpart(-a,b,y),
fitpart(a,b,plain(-x)) := fitpart(-a,b,x),
fitpart(a,b,x opt(c)) := fitpart(a,x b,c) :: !hasfitvars(x),
fitpart(a,x opt(b),c) := fitpart(x a,b,c) :: !hasfitparams(x),
fitpart(a,x y + x opt(z),c) := fitpart(a,x*(y+z),c),
fitpart(a,b,c) := fitpart2(a,b,c),
phase(3),
fitpart2(a1,b1,x) + fitpart2(a2,b2,x) := fitpart(1, a1 b1 + a2 b2, x),
fitpart2(a1,x,c1) + fitpart2(a2,x,c2) := fitpart2(1, x, a1 c1 + a2 c2),
phase(4),
fitinv(x) := 1 / x,
exp(x + ln(y)) := y exp(x),
exp(x ln(y)) := y^x,
ln(x) + ln(y) := ln(x y),
ln(x) - ln(y) := ln(x/y),
x*y + x*z := x*(y+z),
fitsystem(y, xv, pv, fitpart2(a,fitparam(b),c) + opt(d))
:= fitsystem(y, rcons(xv, a c),
rcons(pv, fitdummy(b) = fitparam(b)), d)
:: b = vlen(pv)+1,
fitsystem(y, xv, pv, fitpart2(a,b,c) + opt(d))
:= fitsystem(y, rcons(xv, a c),
rcons(pv, fitdummy(vlen(pv)+1) = b), d),
fitsystem(y, xv, pv, 0) := fitsystem(y, xv, cons(fvh,fvt))
:: !hasfitparams(xv)
:: let(cons(fvh,fvt),
solve(pv, table(fitparam(j), j, 1,
hasfitparams(pv)))),
fitparam(n) = x := x ]"))