1 |
;; Calculator for GNU Emacs, part II [calc-rules.el] |
;; Calculator for GNU Emacs, part II [calc-rules.el] |
2 |
;; Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc. |
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. |
3 |
;; Written by Dave Gillespie, daveg@synaptics.com. |
;; Written by Dave Gillespie, daveg@synaptics.com. |
4 |
|
|
5 |
;; This file is part of GNU Emacs. |
;; This file is part of GNU Emacs. |
33 |
(prog2 |
(prog2 |
34 |
(message "Preparing rule set %s..." name) |
(message "Preparing rule set %s..." name) |
35 |
(math-read-plain-expr rules t) |
(math-read-plain-expr rules t) |
36 |
(message "Preparing rule set %s...done" name)) |
(message "Preparing rule set %s...done" name))) |
|
) |
|
37 |
|
|
38 |
(defun calc-CommuteRules () |
(defun calc-CommuteRules () |
39 |
"CommuteRules" |
"CommuteRules" |
55 |
select(a < b) := select(b > a), |
select(a < b) := select(b > a), |
56 |
select(a > b) := select(b < a), |
select(a > b) := select(b < a), |
57 |
select(a <= b) := select(b >= a), |
select(a <= b) := select(b >= a), |
58 |
select(a >= b) := select(b <= a) ]") |
select(a >= b) := select(b <= a) ]")) |
|
) |
|
59 |
|
|
60 |
(defun calc-JumpRules () |
(defun calc-JumpRules () |
61 |
"JumpRules" |
"JumpRules" |
85 |
plain(y = a ^ select(x)) := y ^ select(1/x) = a, |
plain(y = a ^ select(x)) := y ^ select(1/x) = a, |
86 |
plain(y = select(x) ^ a) := log(y, select(x)) = a, |
plain(y = select(x) ^ a) := log(y, select(x)) = a, |
87 |
plain(y = log(a, select(x))) := select(x) ^ y = a, |
plain(y = log(a, select(x))) := select(x) ^ y = a, |
88 |
plain(y = log(select(x), a)) := select(x) ^ (1/y) = a ]") |
plain(y = log(select(x), a)) := select(x) ^ (1/y) = a ]")) |
|
) |
|
89 |
|
|
90 |
(defun calc-DistribRules () |
(defun calc-DistribRules () |
91 |
"DistribRules" |
"DistribRules" |
158 |
x && select(a || b) := (x && select(a)) || (x && b), |
x && select(a || b) := (x && select(a)) || (x && b), |
159 |
select(a || b) && x := (select(a) && x) || (b && x), |
select(a || b) && x := (select(a) && x) || (b && x), |
160 |
! select(a && b) := (!a) || (!b), |
! select(a && b) := (!a) || (!b), |
161 |
! select(a || b) := (!a) && (!b) ]") |
! select(a || b) := (!a) && (!b) ]")) |
|
) |
|
162 |
|
|
163 |
(defun calc-MergeRules () |
(defun calc-MergeRules () |
164 |
"MergeRules" |
"MergeRules" |
231 |
log(a,x) / select(log(b,x)) := select(log(a, b)), |
log(a,x) / select(log(b,x)) := select(log(a, b)), |
232 |
select(log(a,x)) / b := select(log(a ^ (1/b),x)), |
select(log(a,x)) / b := select(log(a ^ (1/b),x)), |
233 |
log(a,x) / select(b) := select(log(a ^ (1/b),x)), |
log(a,x) / select(b) := select(log(a ^ (1/b),x)), |
234 |
select(x && a) || (x && opt(b)) := x && (select(a) || b) ]") |
select(x && a) || (x && opt(b)) := x && (select(a) || b) ]")) |
|
) |
|
235 |
|
|
236 |
(defun calc-NegateRules () |
(defun calc-NegateRules () |
237 |
"NegateRules" |
"NegateRules" |
285 |
a > select(x) := -a < select(-x), |
a > select(x) := -a < select(-x), |
286 |
a <= select(x) := -a >= select(-x), |
a <= select(x) := -a >= select(-x), |
287 |
a >= select(x) := -a <= select(-x), |
a >= select(x) := -a <= select(-x), |
288 |
select(x) := -select(-x) ]") |
select(x) := -select(-x) ]")) |
|
) |
|
289 |
|
|
290 |
(defun calc-InvertRules () |
(defun calc-InvertRules () |
291 |
"InvertRules" |
"InvertRules" |
313 |
a > select(x) := 1/a < select(1/x), |
a > select(x) := 1/a < select(1/x), |
314 |
a <= select(x) := 1/a >= select(1/x), |
a <= select(x) := 1/a >= select(1/x), |
315 |
a >= select(x) := 1/a <= select(1/x), |
a >= select(x) := 1/a <= select(1/x), |
316 |
select(x) := 1 / select(1/x) ]") |
select(x) := 1 / select(1/x) ]")) |
|
) |
|
317 |
|
|
318 |
|
|
319 |
(defun calc-FactorRules () |
(defun calc-FactorRules () |
333 |
:: negative(c) |
:: negative(c) |
334 |
:: let(rz := esimplify(sqrt(z))) :: !matches(rz, sqrt(rzz)) |
:: let(rz := esimplify(sqrt(z))) :: !matches(rz, sqrt(rzz)) |
335 |
:: let(rc := esimplify(sqrt(-c))) :: !matches(rc, sqrt(rcc)) |
:: let(rc := esimplify(sqrt(-c))) :: !matches(rc, sqrt(rcc)) |
336 |
]") |
]")) |
|
) |
|
337 |
;;(setq var-FactorRules 'calc-FactorRules) |
;;(setq var-FactorRules 'calc-FactorRules) |
338 |
|
|
339 |
|
|
344 |
opt(a) ln(x) + opt(b) ln(y) := 2 a esimplify(arctanh(x-1)) |
opt(a) ln(x) + opt(b) ln(y) := 2 a esimplify(arctanh(x-1)) |
345 |
:: a + b = 0 :: nrat(x + y) = 2 || nrat(x - y) = 2, |
:: a + b = 0 :: nrat(x + y) = 2 || nrat(x - y) = 2, |
346 |
a * (b + c) := a b + a c :: constant(a) |
a * (b + c) := a b + a c :: constant(a) |
347 |
]") |
]")) |
|
) |
|
348 |
|
|
349 |
;;(setq var-IntegAfterRules 'calc-IntegAfterRules) |
;;(setq var-IntegAfterRules 'calc-IntegAfterRules) |
350 |
|
|
430 |
:: let(cons(fvh,fvt), |
:: let(cons(fvh,fvt), |
431 |
solve(pv, table(fitparam(j), j, 1, |
solve(pv, table(fitparam(j), j, 1, |
432 |
hasfitparams(pv)))), |
hasfitparams(pv)))), |
433 |
fitparam(n) = x := x ]") |
fitparam(n) = x := x ]")) |
|
) |
|
434 |
|
|
435 |
|
;;; calc-rules.el ends here |