• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/emacs-93/emacs/lisp/calc/

Lines Matching +defs:calcFunc +defs:solve

40    (let ((func (if (calc-is-hyperbolic) 'calcFunc-tderiv 'calcFunc-deriv))
58 (calc-tabular-command 'calcFunc-integ "Integration" "intg" nil var nil nil)
61 (calc-enter-result 2 "intg" (list 'calcFunc-integ
67 (calc-enter-result 1 "intg" (list 'calcFunc-integ
73 (calc-tabular-command 'calcFunc-ninteg "Integration" "nint"
78 (calc-tabular-command 'calcFunc-sum "Summation" "sum"
83 (calc-tabular-command 'calcFunc-asum "Summation" "asum"
88 (calc-tabular-command 'calcFunc-prod "Index" "prod"
93 (calc-tabular-command 'calcFunc-table "Index" "tabl"
154 (defun calc-solve-for (var)
155 (interactive "sVariable(s) to solve for: ")
158 (if (calc-is-hyperbolic) 'calcFunc-ffinv 'calcFunc-finv)
159 (if (calc-is-hyperbolic) 'calcFunc-fsolve 'calcFunc-solve))))
175 (interactive "sVariable to solve for: ")
178 (calc-enter-result 2 "prts" (list 'calcFunc-roots
187 (calc-enter-result 1 "prts" (list 'calcFunc-roots
197 (calc-enter-result 1 "tylr" (list 'calcFunc-taylor
231 ((memq (car expr) '(calcFunc-eq calcFunc-neq calcFunc-lt
232 calcFunc-gt calcFunc-leq calcFunc-geq))
261 (list 'calcFunc-ln (nth 1 expr)))
268 ((and (memq (car expr) '(calcFunc-conj calcFunc-re calcFunc-im))
271 ((and (memq (car expr) '(calcFunc-subscr calcFunc-mrow calcFunc-mcol))
300 (list (if math-deriv-total 'calcFunc-tderiv 'calcFunc-deriv)
340 (defun calcFunc-deriv (expr math-deriv-var &optional deriv-value math-deriv-symb)
343 (or (eq (car-safe res) 'calcFunc-deriv)
351 (defun calcFunc-tderiv (expr math-deriv-var &optional deriv-value math-deriv-symb)
355 (or (eq (car-safe res) 'calcFunc-tderiv)
363 (put 'calcFunc-inv\' 'math-derivative-1
366 (put 'calcFunc-sqrt\' 'math-derivative-1
367 (function (lambda (u) (math-div 1 (math-mul 2 (list 'calcFunc-sqrt u))))))
369 (put 'calcFunc-deg\' 'math-derivative-1
372 (put 'calcFunc-rad\' 'math-derivative-1
375 (put 'calcFunc-ln\' 'math-derivative-1
378 (put 'calcFunc-log10\' 'math-derivative-1
380 (math-div (math-div 1 (math-normalize '(calcFunc-ln 10)))
383 (put 'calcFunc-lnp1\' 'math-derivative-1
386 (put 'calcFunc-log\' 'math-derivative-2
390 (list 'calcFunc-ln b))))
393 (put 'calcFunc-log\'2 'math-derivative-2
395 (let ((lnv (list 'calcFunc-ln b)))
396 (math-neg (math-div (list 'calcFunc-log x b)
399 (put 'calcFunc-exp\' 'math-derivative-1
400 (function (lambda (u) (math-normalize (list 'calcFunc-exp u)))))
402 (put 'calcFunc-expm1\' 'math-derivative-1
403 (function (lambda (u) (math-normalize (list 'calcFunc-expm1 u)))))
405 (put 'calcFunc-sin\' 'math-derivative-1
407 (list 'calcFunc-cos u))))))
409 (put 'calcFunc-cos\' 'math-derivative-1
412 (list 'calcFunc-sin u)))))))
414 (put 'calcFunc-tan\' 'math-derivative-1
418 (list 'calcFunc-sec u)))))))
420 (put 'calcFunc-sec\' 'math-derivative-1
424 (list 'calcFunc-sec u))
426 (list 'calcFunc-tan u)))))))
428 (put 'calcFunc-csc\' 'math-derivative-1
433 (list 'calcFunc-csc u))
435 (list 'calcFunc-cot u))))))))
437 (put 'calcFunc-cot\' 'math-derivative-1
442 (list 'calcFunc-csc u))))))))
444 (put 'calcFunc-arcsin\' 'math-derivative-1
448 (list 'calcFunc-sqrt
451 (put 'calcFunc-arccos\' 'math-derivative-1
455 (list 'calcFunc-sqrt
458 (put 'calcFunc-arctan\' 'math-derivative-1
462 (put 'calcFunc-sinh\' 'math-derivative-1
463 (function (lambda (u) (math-normalize (list 'calcFunc-cosh u)))))
465 (put 'calcFunc-cosh\' 'math-derivative-1
466 (function (lambda (u) (math-normalize (list 'calcFunc-sinh u)))))
468 (put 'calcFunc-tanh\' 'math-derivative-1
471 (list 'calcFunc-sech u))))))
473 (put 'calcFunc-sech\' 'math-derivative-1
476 (math-normalize (list 'calcFunc-sech u))
477 (math-normalize (list 'calcFunc-tanh u)))))))
479 (put 'calcFunc-csch\' 'math-derivative-1
482 (math-normalize (list 'calcFunc-csch u))
483 (math-normalize (list 'calcFunc-coth u)))))))
485 (put 'calcFunc-coth\' 'math-derivative-1
489 (list 'calcFunc-csch u)))))))
491 (put 'calcFunc-arcsinh\' 'math-derivative-1
494 (list 'calcFunc-sqrt
497 (put 'calcFunc-arccosh\' 'math-derivative-1
500 (list 'calcFunc-sqrt
503 (put 'calcFunc-arctanh\' 'math-derivative-1
506 (put 'calcFunc-bern\'2 'math-derivative-2
508 (math-mul n (list 'calcFunc-bern (math-add n -1) x)))))
510 (put 'calcFunc-euler\'2 'math-derivative-2
512 (math-mul n (list 'calcFunc-euler (math-add n -1) x)))))
514 (put 'calcFunc-gammag\'2 'math-derivative-2
517 (put 'calcFunc-gammaG\'2 'math-derivative-2
520 (put 'calcFunc-gammaP\'2 'math-derivative-2
524 (list 'calcFunc-gamma
527 (put 'calcFunc-gammaQ\'2 'math-derivative-2
531 (list 'calcFunc-gamma
537 (list 'calcFunc-exp (math-neg x)))))
539 (put 'calcFunc-betaB\' 'math-derivative-3
542 (put 'calcFunc-betaI\' 'math-derivative-3
545 1 (list 'calcFunc-beta
553 (put 'calcFunc-erf\' 'math-derivative-1
555 (math-mul (list 'calcFunc-exp
558 '(calcFunc-sqrt
562 (put 'calcFunc-erfc\' 'math-derivative-1
564 (math-mul (list 'calcFunc-exp
567 '(calcFunc-sqrt
571 (put 'calcFunc-besJ\'2 'math-derivative-2
572 (function (lambda (v z) (math-div (math-sub (list 'calcFunc-besJ
575 (list 'calcFunc-besJ
580 (put 'calcFunc-besY\'2 'math-derivative-2
581 (function (lambda (v z) (math-div (math-sub (list 'calcFunc-besY
584 (list 'calcFunc-besY
589 (put 'calcFunc-sum 'math-derivative-n
594 (cons 'calcFunc-sum
598 (put 'calcFunc-prod 'math-derivative-n
604 (cons 'calcFunc-sum
609 (put 'calcFunc-integ 'math-derivative-n
616 (list 'calcFunc-integ
631 (list 'calcFunc-integ
635 (put 'calcFunc-if 'math-derivative-n
639 (list 'calcFunc-if (nth 1 expr)
643 (put 'calcFunc-subscr 'math-derivative-n
647 (list 'calcFunc-subscr (nth 1 expr)
667 ;; math-integral-limit is a local variable for calcFunc-integ, but is
704 ;; calcFunc-integ, but are used by math-integral and math-try-integral.
834 ;; math-do-integral, math-try-solve-for and math-decompose-poly, but
837 ;; math-try-solve-for calls math-try-solve-prod,
838 ;; math-solve-find-root-term and math-solve-find-root-in-prod;
839 ;; math-decompose-poly calls math-solve-poly-funny-powers and
840 ;; math-solve-crunch-poly.
921 ((eq (car-safe (nth 2 expr)) 'calcFunc-exp)
924 (list 'calcFunc-exp
933 (list 'calcFunc-ln
936 (list 'calcFunc-exp
939 (list 'calcFunc-ln
1000 (setq math-t1 (calcFunc-apart expr math-integ-var))
1006 (let ((math-old-integ (symbol-function 'calcFunc-integ))
1007 (input (list 'calcFunc-integtry expr math-integ-var))
1011 (fset 'calcFunc-integ 'math-sub-integration)
1015 (fset 'calcFunc-integ math-old-integ)
1018 res '(calcFunc-integsubst)))
1030 (list 'calcFunc-integfailed
1034 '(calcFunc-integtry
1035 calcFunc-integfailed)))
1037 (fset 'calcFunc-integ math-old-integ))))
1075 (not (math-expr-calls res 'calcFunc-integ)))
1077 (list 'calcFunc-integfailed expr)))
1101 (memq (car (car p)) '(calcFunc-sin
1102 calcFunc-cos
1103 calcFunc-tan
1104 calcFunc-sec
1105 calcFunc-csc
1106 calcFunc-cot))
1113 math-integ-expr (list 'calcFunc-tan (math-div math-integ-var 2)))))
1118 (memq (car (car p)) '(calcFunc-sinh
1119 calcFunc-cosh
1120 calcFunc-tanh
1121 calcFunc-sech
1122 calcFunc-csch
1123 calcFunc-coth
1124 calcFunc-exp))
1131 math-integ-expr (list 'calcFunc-tanh (math-div math-integ-var 2)))))
1138 (and (eq (car (car p)) 'calcFunc-sqrt)
1150 math-integ-expr (list 'calcFunc-arcsin
1162 math-integ-expr (list 'calcFunc-arccosh
1168 math-integ-expr (list 'calcFunc-arcsinh
1196 ;; math-prev-parts-v is local to calcFunc-integ (as well as
1200 ;; math-good-parts is local to calcFunc-integ (as well as
1209 (or (let ((exp (calcFunc-expand expr)))
1248 (setq temp (calcFunc-deriv u math-integ-var nil t))
1253 (calcFunc-expand temp)
1257 (math-solve-for (math-sub v temp) 0 v nil)))
1278 (math-solve-for u
1285 (or (and (setq deriv (calcFunc-deriv u
1300 (calcFunc-deriv uinv
1391 (math-expr-rational-in-rec (list 'calcFunc-sqrt (nth 1 expr))))
1400 (and (eq (car expr) '^) (eq (car funcs) 'calcFunc-sqrt)
1446 ;; The variable math-max-integral-limit is local to calcFunc-integ,
1470 (defun calcFunc-integ (expr var &optional low high)
1474 (math-add (calcFunc-integ (nth 1 expr) var low high)
1475 (calcFunc-integ (nth 2 expr) var low high)))
1477 (math-sub (calcFunc-integ (nth 1 expr) var low high)
1478 (calcFunc-integ (nth 2 expr) var low high)))
1480 (math-neg (calcFunc-integ (nth 1 expr) var low high)))
1483 (math-mul (nth 1 expr) (calcFunc-integ (nth 2 expr) var low high)))
1486 (math-mul (calcFunc-integ (nth 1 expr) var low high) (nth 2 expr)))
1491 (calcFunc-integ (math-div 1 (nth 2 expr)) var low high)))
1494 (math-div (calcFunc-integ (nth 1 expr) var low high) (nth 2 expr)))
1499 (calcFunc-integ (math-div (nth 2 (nth 1 expr)) (nth 2 expr))
1505 (calcFunc-integ (math-div (nth 1 (nth 1 expr)) (nth 2 expr))
1510 (math-div (calcFunc-integ (math-div (nth 1 expr) (nth 2 (nth 2 expr)))
1516 (math-div (calcFunc-integ (math-div (nth 1 expr) (nth 1 (nth 2 expr)))
1520 (cons 'vec (mapcar (function (lambda (x) (calcFunc-integ x var low high)))
1577 (append (list 'calcFunc-integ expr var)
1582 (math-defintegral calcFunc-inv
1585 (math-defintegral calcFunc-conj
1588 (list 'calcFunc-conj int))))
1590 (math-defintegral calcFunc-deg
1593 (list 'calcFunc-deg int))))
1595 (math-defintegral calcFunc-rad
1598 (list 'calcFunc-rad int))))
1600 (math-defintegral calcFunc-re
1603 (list 'calcFunc-re int))))
1605 (math-defintegral calcFunc-im
1608 (list 'calcFunc-im int))))
1610 (math-defintegral calcFunc-sqrt
1613 (list 'calcFunc-sqrt (math-pow u 3)))))
1615 (math-defintegral calcFunc-exp
1617 (list 'calcFunc-exp u))
1623 (math-mul (math-div (list 'calcFunc-sqrt '(var pi var-pi))
1626 (list 'calcFunc-exp
1633 (list 'calcFunc-erf
1638 (math-defintegral calcFunc-ln
1640 (math-sub (math-mul u (list 'calcFunc-ln u)) u))
1642 (math-integral (math-add (list 'calcFunc-ln (nth 1 u))
1643 (list 'calcFunc-ln (nth 2 u)))))
1645 (math-integral (math-sub (list 'calcFunc-ln (nth 1 u))
1646 (list 'calcFunc-ln (nth 2 u)))))
1649 (list 'calcFunc-ln (nth 1 u)))))))
1651 (math-defintegral calcFunc-log10
1653 (math-sub (math-mul u (list 'calcFunc-ln u))
1654 (math-div u (list 'calcFunc-ln 10)))))
1656 (math-defintegral-2 calcFunc-log
1657 (math-integral (math-div (list 'calcFunc-ln u)
1658 (list 'calcFunc-ln v))))
1660 (math-defintegral calcFunc-sin
1662 (math-neg (math-from-radians-2 (list 'calcFunc-cos u))))
1664 (math-integral (math-to-exponentials (list 'calcFunc-sin u))))))
1666 (math-defintegral calcFunc-cos
1668 (math-from-radians-2 (list 'calcFunc-sin u)))
1670 (math-integral (math-to-exponentials (list 'calcFunc-cos u))))))
1672 (math-defintegral calcFunc-tan
1675 (list 'calcFunc-ln (list 'calcFunc-sec u)))))
1677 (math-defintegral calcFunc-sec
1680 (list 'calcFunc-ln
1682 (list 'calcFunc-sec u)
1683 (list 'calcFunc-tan u))))))
1685 (math-defintegral calcFunc-csc
1688 (list 'calcFunc-ln
1690 (list 'calcFunc-csc u)
1691 (list 'calcFunc-cot u))))))
1693 (math-defintegral calcFunc-cot
1696 (list 'calcFunc-ln (list 'calcFunc-sin u)))))
1698 (math-defintegral calcFunc-arcsin
1700 (math-add (math-mul u (list 'calcFunc-arcsin u))
1702 (list 'calcFunc-sqrt (math-sub 1 (math-sqr u)))))))
1704 (math-defintegral calcFunc-arccos
1706 (math-sub (math-mul u (list 'calcFunc-arccos u))
1708 (list 'calcFunc-sqrt (math-sub 1 (math-sqr u)))))))
1710 (math-defintegral calcFunc-arctan
1712 (math-sub (math-mul u (list 'calcFunc-arctan u))
1714 (math-div (list 'calcFunc-ln (math-add 1 (math-sqr u)))
1717 (math-defintegral calcFunc-sinh
1719 (list 'calcFunc-cosh u)))
1721 (math-defintegral calcFunc-cosh
1723 (list 'calcFunc-sinh u)))
1725 (math-defintegral calcFunc-tanh
1727 (list 'calcFunc-ln (list 'calcFunc-cosh u))))
1729 (math-defintegral calcFunc-sech
1731 (list 'calcFunc-arctan (list 'calcFunc-sinh u))))
1733 (math-defintegral calcFunc-csch
1735 (list 'calcFunc-ln (list 'calcFunc-tanh (math-div u 2)))))
1737 (math-defintegral calcFunc-coth
1739 (list 'calcFunc-ln (list 'calcFunc-sinh u))))
1741 (math-defintegral calcFunc-arcsinh
1743 (math-sub (math-mul u (list 'calcFunc-arcsinh u))
1744 (list 'calcFunc-sqrt (math-add (math-sqr u) 1)))))
1746 (math-defintegral calcFunc-arccosh
1748 (math-sub (math-mul u (list 'calcFunc-arccosh u))
1749 (list 'calcFunc-sqrt (math-sub 1 (math-sqr u))))))
1751 (math-defintegral calcFunc-arctanh
1753 (math-sub (math-mul u (list 'calcFunc-arctan u))
1754 (math-div (list 'calcFunc-ln
1790 (list 'calcFunc-ln v))))
1792 (math-div (math-add (list 'calcFunc-ln v)
1813 (throw 'int-rat nil)) ; should have used calcFunc-apart first
1814 (math-sub (math-div (list 'calcFunc-ln v) (math-mul 2 c))
1831 (math-div (list 'calcFunc-ln v) b))
1851 (setq rq (list 'calcFunc-sqrt (math-neg q)))
1852 ;;(math-div-thru (list 'calcFunc-ln
1856 (math-div (math-mul -2 (list 'calcFunc-arctanh
1860 (setq rq (list 'calcFunc-sqrt q))
1862 (list 'calcFunc-arctan
1867 (math-defintegral calcFunc-erf
1869 (math-add (math-mul u (list 'calcFunc-erf u))
1870 (math-div 1 (math-mul (list 'calcFunc-exp (math-sqr u))
1871 (list 'calcFunc-sqrt
1874 (math-defintegral calcFunc-erfc
1876 (math-sub (math-mul u (list 'calcFunc-erfc u))
1877 (math-div 1 (math-mul (list 'calcFunc-exp (math-sqr u))
1878 (list 'calcFunc-sqrt
1887 ;; The variables calc-low and calc-high are local to calcFunc-table,
1892 (defun calcFunc-table (expr var &optional calc-low calc-high step)
1925 vec (cond ((eq math-tabulate-function 'calcFunc-sum)
1927 ((eq math-tabulate-function 'calcFunc-prod)
1943 (append (list (or math-tabulate-function 'calcFunc-table)
1952 ((and (eq (car x) 'calcFunc-subscr)
1956 (low-val (math-solve-for (nth 2 x) 1 var nil))
1957 (high-val (math-solve-for (nth 2 x) (1- (length (nth 1 x)))
1972 (defun calcFunc-sum (expr var &optional low high step)
2024 (not (and (math-expr-calls t1 '(calcFunc-sum))
2025 (math-expr-calls t2 '(calcFunc-sum)))))
2067 (not (math-expr-calls t1 '(calcFunc-sum))))
2069 ((memq (car expr) '(calcFunc-ln calcFunc-log10))
2070 (list (car expr) (calcFunc-prod (nth 1 expr) var low high)))
2071 ((and (eq (car expr) 'calcFunc-log)
2074 (list 'calcFunc-log
2075 (calcFunc-prod (nth 1 expr) var low high)
2080 (math-tabulate-function 'calcFunc-sum))
2081 (calcFunc-table expr var low high)))))
2083 (defun calcFunc-asum (expr var low &optional high step no-mul-flag)
2088 (calcFunc-asum expr var high low (math-neg step) t))
2091 (calcFunc-asum (math-normalize
2095 (calcFunc-asum (math-normalize
2103 (calcFunc-sum (math-mul (math-pow -1 var) expr) var low high))))
2157 (cond ((eq (car expr) 'calcFunc-exp)
2159 ((eq (car expr) 'calcFunc-sin)
2167 ((eq (car expr) 'calcFunc-cos)
2176 ((eq (car expr) 'calcFunc-sinh)
2181 ((eq (car expr) 'calcFunc-cosh)
2194 (list 'calcFunc-exp (nth 2 expr)))
2200 (defun calcFunc-prod (expr var &optional low high step)
2236 (not (and (math-expr-calls t1 '(calcFunc-prod))
2237 (math-expr-calls t2 '(calcFunc-prod)))))
2246 (calcFunc-sum (nth 2 expr) var low high)))
2248 (math-normalize (list 'calcFunc-sqrt
2249 (list 'calcFunc-prod (nth 1 expr)
2254 ((eq (car expr) 'calcFunc-exp)
2255 (list 'calcFunc-exp (calcFunc-sum (nth 1 expr) var low high)))
2281 (list 'calcFunc-fact
2283 (list 'calcFunc-fact
2286 (list 'calcFunc-fact high)
2287 (list 'calcFunc-fact (math-sub low 1))))))
2316 (list 'calcFunc-dfact
2318 (list 'calcFunc-dfact
2321 (list 'calcFunc-dfact t3)
2322 (list 'calcFunc-dfact
2331 (list 'calcFunc-dfact
2333 (list 'calcFunc-dfact
2337 (list 'calcFunc-dfact t3)
2338 (list 'calcFunc-dfact
2345 (math-tabulate-function 'calcFunc-prod))
2346 (calcFunc-table expr var low high)))))
2351 (defvar math-solve-ranges nil)
2352 (defvar math-solve-sign)
2353 ;;; Attempt to reduce math-solve-lhs = math-solve-rhs to
2354 ;;; math-solve-var = math-solve-rhs', where math-solve-var appears
2355 ;;; in math-solve-lhs but not in math-solve-rhs or math-solve-rhs';
2356 ;;; return math-solve-rhs'.
2357 ;;; Uses global values: math-solve-var, math-solve-full.
2358 (defvar math-solve-var)
2359 (defvar math-solve-full)
2361 ;; The variables math-solve-lhs, math-solve-rhs and math-try-solve-sign
2362 ;; are local to math-try-solve-for, but are used by math-try-solve-prod.
2363 ;; (math-solve-lhs and math-solve-rhs are is also local to
2364 ;; math-decompose-poly, but used by math-solve-poly-funny-powers.)
2365 (defvar math-solve-lhs)
2366 (defvar math-solve-rhs)
2367 (defvar math-try-solve-sign)
2369 (defun math-try-solve-for
2370 (math-solve-lhs math-solve-rhs &optional math-try-solve-sign no-poly)
2372 (cond ((equal math-solve-lhs math-solve-var)
2373 (setq math-solve-sign math-try-solve-sign)
2374 (if (eq math-solve-full 'all)
2375 (let ((vec (list 'vec (math-evaluate-expr math-solve-rhs)))
2377 (while math-solve-ranges
2378 (setq p (car math-solve-ranges)
2386 math-solve-ranges (cdr math-solve-ranges)))
2388 math-solve-rhs))
2389 ((Math-primp math-solve-lhs)
2391 ((and (eq (car math-solve-lhs) '-)
2392 (eq (car-safe (nth 1 math-solve-lhs)) (car-safe (nth 2 math-solve-lhs)))
2393 (Math-zerop math-solve-rhs)
2394 (= (length (nth 1 math-solve-lhs)) 2)
2395 (= (length (nth 2 math-solve-lhs)) 2)
2396 (setq math-t1 (get (car (nth 1 math-solve-lhs)) 'math-inverse))
2399 (setq math-t3 (math-solve-above-dummy math-t2))
2400 (setq math-t1 (math-try-solve-for
2401 (math-sub (nth 1 (nth 1 math-solve-lhs))
2404 (nth 1 (nth 2 math-solve-lhs))))
2407 ((eq (car math-solve-lhs) 'neg)
2408 (math-try-solve-for (nth 1 math-solve-lhs) (math-neg math-solve-rhs)
2409 (and math-try-solve-sign (- math-try-solve-sign))))
2410 ((and (not (eq math-solve-full 't)) (math-try-solve-prod)))
2413 (math-decompose-poly math-solve-lhs
2414 math-solve-var 15 math-solve-rhs)))
2416 math-t1 (let ((math-solve-ranges math-solve-ranges))
2418 (apply 'math-solve-quartic (car math-t2) math-t1))
2420 (apply 'math-solve-cubic (car math-t2) math-t1))
2422 (apply 'math-solve-quadratic (car math-t2) math-t1))
2424 (apply 'math-solve-linear
2425 (car math-t2) math-try-solve-sign math-t1))
2426 (math-solve-full
2430 (math-try-solve-for
2437 (math-solve-prod math-t1 (math-try-solve-for (nth 2 math-t2) 0 nil t)))
2440 ((and (math-solve-find-root-term math-solve-lhs nil)
2441 (eq (math-expr-contains-count math-solve-lhs math-t1) 1)) ; just in case
2442 (math-try-solve-for (math-simplify
2449 math-solve-lhs math-t1 0))
2450 math-solve-rhs)
2451 math-t2 math-solve-var)))
2453 ((eq (car math-solve-lhs) '+)
2454 (cond ((not (math-expr-contains (nth 1 math-solve-lhs) math-solve-var))
2455 (math-try-solve-for (nth 2 math-solve-lhs)
2456 (math-sub math-solve-rhs (nth 1 math-solve-lhs))
2457 math-try-solve-sign))
2458 ((not (math-expr-contains (nth 2 math-solve-lhs) math-solve-var))
2459 (math-try-solve-for (nth 1 math-solve-lhs)
2460 (math-sub math-solve-rhs (nth 2 math-solve-lhs))
2461 math-try-solve-sign))))
2462 ((eq (car math-solve-lhs) 'calcFunc-eq)
2463 (math-try-solve-for (math-sub (nth 1 math-solve-lhs) (nth 2 math-solve-lhs))
2464 math-solve-rhs math-try-solve-sign no-poly))
2465 ((eq (car math-solve-lhs) '-)
2466 (cond ((or (and (eq (car-safe (nth 1 math-solve-lhs)) 'calcFunc-sin)
2467 (eq (car-safe (nth 2 math-solve-lhs)) 'calcFunc-cos))
2468 (and (eq (car-safe (nth 1 math-solve-lhs)) 'calcFunc-cos)
2469 (eq (car-safe (nth 2 math-solve-lhs)) 'calcFunc-sin)))
2470 (math-try-solve-for (math-sub (nth 1 math-solve-lhs)
2471 (list (car (nth 1 math-solve-lhs))
2474 (nth 1 (nth 2 math-solve-lhs)))))
2475 math-solve-rhs))
2476 ((not (math-expr-contains (nth 1 math-solve-lhs) math-solve-var))
2477 (math-try-solve-for (nth 2 math-solve-lhs)
2478 (math-sub (nth 1 math-solve-lhs) math-solve-rhs)
2479 (and math-try-solve-sign
2480 (- math-try-solve-sign))))
2481 ((not (math-expr-contains (nth 2 math-solve-lhs) math-solve-var))
2482 (math-try-solve-for (nth 1 math-solve-lhs)
2483 (math-add math-solve-rhs (nth 2 math-solve-lhs))
2484 math-try-solve-sign))))
2485 ((and (eq math-solve-full 't) (math-try-solve-prod)))
2486 ((and (eq (car math-solve-lhs) '%)
2487 (not (math-expr-contains (nth 2 math-solve-lhs) math-solve-var)))
2488 (math-try-solve-for (nth 1 math-solve-lhs) (math-add math-solve-rhs
2489 (math-solve-get-int
2490 (nth 2 math-solve-lhs)))))
2491 ((eq (car math-solve-lhs) 'calcFunc-log)
2492 (cond ((not (math-expr-contains (nth 2 math-solve-lhs) math-solve-var))
2493 (math-try-solve-for (nth 1 math-solve-lhs)
2494 (math-pow (nth 2 math-solve-lhs) math-solve-rhs)))
2495 ((not (math-expr-contains (nth 1 math-solve-lhs) math-solve-var))
2496 (math-try-solve-for (nth 2 math-solve-lhs) (math-pow
2497 (nth 1 math-solve-lhs)
2498 (math-div 1 math-solve-rhs))))))
2499 ((and (= (length math-solve-lhs) 2)
2500 (symbolp (car math-solve-lhs))
2501 (setq math-t1 (get (car math-solve-lhs) 'math-inverse))
2502 (setq math-t2 (funcall math-t1 math-solve-rhs)))
2503 (setq math-t1 (get (car math-solve-lhs) 'math-inverse-sign))
2504 (math-try-solve-for (nth 1 math-solve-lhs) (math-normalize math-t2)
2505 (and math-try-solve-sign math-t1
2507 (* math-t1 math-try-solve-sign)
2508 (funcall math-t1 math-solve-lhs
2509 math-try-solve-sign)))))
2510 ((and (symbolp (car math-solve-lhs))
2511 (setq math-t1 (get (car math-solve-lhs) 'math-inverse-n))
2512 (setq math-t2 (funcall math-t1 math-solve-lhs math-solve-rhs)))
2514 ((setq math-t1 (math-expand-formula math-solve-lhs))
2515 (math-try-solve-for math-t1 math-solve-rhs math-try-solve-sign))
2517 (calc-record-why "*No inverse known" math-solve-lhs)
2521 (defun math-try-solve-prod ()
2522 (cond ((eq (car math-solve-lhs) '*)
2523 (cond ((not (math-expr-contains (nth 1 math-solve-lhs) math-solve-var))
2524 (math-try-solve-for (nth 2 math-solve-lhs)
2525 (math-div math-solve-rhs (nth 1 math-solve-lhs))
2526 (math-solve-sign math-try-solve-sign
2527 (nth 1 math-solve-lhs))))
2528 ((not (math-expr-contains (nth 2 math-solve-lhs) math-solve-var))
2529 (math-try-solve-for (nth 1 math-solve-lhs)
2530 (math-div math-solve-rhs (nth 2 math-solve-lhs))
2531 (math-solve-sign math-try-solve-sign
2532 (nth 2 math-solve-lhs))))
2533 ((Math-zerop math-solve-rhs)
2534 (math-solve-prod (let ((math-solve-ranges math-solve-ranges))
2535 (math-try-solve-for (nth 2 math-solve-lhs) 0))
2536 (math-try-solve-for (nth 1 math-solve-lhs) 0)))))
2537 ((eq (car math-solve-lhs) '/)
2538 (cond ((not (math-expr-contains (nth 1 math-solve-lhs) math-solve-var))
2539 (math-try-solve-for (nth 2 math-solve-lhs)
2540 (math-div (nth 1 math-solve-lhs) math-solve-rhs)
2541 (math-solve-sign math-try-solve-sign
2542 (nth 1 math-solve-lhs))))
2543 ((not (math-expr-contains (nth 2 math-solve-lhs) math-solve-var))
2544 (math-try-solve-for (nth 1 math-solve-lhs)
2545 (math-mul math-solve-rhs (nth 2 math-solve-lhs))
2546 (math-solve-sign math-try-solve-sign
2547 (nth 2 math-solve-lhs))))
2548 ((setq math-t1 (math-try-solve-for (math-sub (nth 1 math-solve-lhs)
2549 (math-mul (nth 2 math-solve-lhs)
2550 math-solve-rhs))
2553 ((eq (car math-solve-lhs) '^)
2554 (cond ((not (math-expr-contains (nth 1 math-solve-lhs) math-solve-var))
2555 (math-try-solve-for
2556 (nth 2 math-solve-lhs)
2558 (list 'calcFunc-log math-solve-rhs (nth 1 math-solve-lhs)))
2562 (math-solve-get-int
2565 (list 'calcFunc-ln (nth 1 math-solve-lhs)))))))
2566 ((not (math-expr-contains (nth 2 math-solve-lhs) math-solve-var))
2567 (cond ((and (integerp (nth 2 math-solve-lhs))
2568 (>= (nth 2 math-solve-lhs) 2)
2569 (setq math-t1 (math-integer-log2 (nth 2 math-solve-lhs))))
2570 (setq math-t2 math-solve-rhs)
2571 (if (and (eq math-solve-full t)
2572 (math-known-realp (nth 1 math-solve-lhs)))
2575 (setq math-t2 (list 'calcFunc-sqrt math-t2)))
2576 (setq math-t2 (math-solve-get-sign math-t2)))
2578 (setq math-t2 (math-solve-get-sign
2580 (list 'calcFunc-sqrt math-t2))))))
2581 (math-try-solve-for
2582 (nth 1 math-solve-lhs)
2584 ((math-looks-negp (nth 2 math-solve-lhs))
2585 (math-try-solve-for
2586 (list '^ (nth 1 math-solve-lhs)
2587 (math-neg (nth 2 math-solve-lhs)))
2588 (math-div 1 math-solve-rhs)))
2589 ((and (eq math-solve-full t)
2590 (Math-integerp (nth 2 math-solve-lhs))
2591 (math-known-realp (nth 1 math-solve-lhs)))
2593 (list 'calcFunc-nroot math-solve-rhs
2594 (nth 2 math-solve-lhs))))
2595 (if (math-evenp (nth 2 math-solve-lhs))
2596 (setq math-t1 (math-solve-get-sign math-t1)))
2597 (math-try-solve-for
2598 (nth 1 math-solve-lhs) math-t1
2599 (and math-try-solve-sign
2600 (math-oddp (nth 2 math-solve-lhs))
2601 (math-solve-sign math-try-solve-sign
2602 (nth 2 math-solve-lhs)))))
2603 (t (math-try-solve-for
2604 (nth 1 math-solve-lhs)
2607 (list 'calcFunc-exp
2608 (if (Math-realp (nth 2 math-solve-lhs))
2611 (math-solve-get-int
2613 (and (integerp (nth 2 math-solve-lhs))
2615 (nth 2 math-solve-lhs)))))
2616 (math-div (nth 2 math-solve-lhs) 2))
2621 (math-solve-get-int
2623 (and (integerp (nth 2 math-solve-lhs))
2625 (nth 2 math-solve-lhs))))))
2626 (nth 2 math-solve-lhs)))))
2628 (list 'calcFunc-nroot
2629 math-solve-rhs
2630 (nth 2 math-solve-lhs))))
2631 (and math-try-solve-sign
2632 (math-oddp (nth 2 math-solve-lhs))
2633 (math-solve-sign math-try-solve-sign
2634 (nth 2 math-solve-lhs)))))))))
2637 (defun math-solve-prod (lsoln rsoln)
2642 ((eq math-solve-full 'all)
2644 (math-solve-full
2645 (list 'calcFunc-if
2646 (list 'calcFunc-gt (math-solve-get-sign 1) 0)
2652 ;; The variable math-solve-b is local to math-decompose-poly,
2653 ;; but is used by math-solve-poly-funny-powers.
2654 (defvar math-solve-b)
2656 (defun math-solve-poly-funny-powers (sub-rhs) ; uses "t1", "t2"
2657 (setq math-t1 math-solve-lhs)
2663 math-solve-rhs (math-mul math-solve-rhs fac)
2665 (if sub-rhs (setq math-t1 (math-sub math-t1 math-solve-rhs)))
2671 (math-simplify (calcFunc-expand math-t1)) math-solve-b 50))))
2674 (defun math-solve-crunch-poly (max-degree) ; uses "t1", "t3"
2703 (defun calcFunc-poly (expr var &optional degree)
2714 (defun calcFunc-gpoly (expr var &optional degree)
2724 (defun math-decompose-poly (math-solve-lhs math-solve-var degree sub-rhs)
2725 (let ((math-solve-rhs (or sub-rhs 1))
2728 math-solve-lhs
2730 (lambda (math-solve-b)
2735 (and (not (equal math-solve-b math-solve-lhs))
2736 (or (not (memq (car-safe math-solve-b) '(+ -))) sub-rhs)
2738 math-t1 (math-is-polynomial math-solve-lhs
2739 math-solve-b 50))
2744 (setq math-t1 (cons (math-sub (car math-t1) math-solve-rhs)
2746 (math-solve-poly-funny-powers sub-rhs))
2747 (math-solve-crunch-poly degree)
2748 (or (math-expr-contains math-solve-b math-solve-var)
2749 (math-expr-contains (car math-t3) math-solve-var))))))))
2755 (math-div (math-pow math-t2 (nth 1 math-t3)) math-solve-rhs))))))
2757 (defun math-solve-linear (var sign b a)
2758 (math-try-solve-for var
2760 (math-solve-sign sign a)
2763 (defun math-solve-quadratic (var c b a)
2764 (math-try-solve-for
2771 (math-solve-get-sign
2773 (list 'calcFunc-sqrt
2780 (math-solve-get-sign
2782 (list 'calcFunc-sqrt
2788 (defun math-solve-cubic (var d c b a)
2800 (math-try-solve-for (math-pow (math-add var (math-div p 3)) 3)
2803 (math-try-solve-for
2808 (setq m (math-mul 2 (list 'calcFunc-sqrt (math-div aa -3))))
2809 (math-try-solve-for
2815 (list 'calcFunc-cos
2817 (math-sub (list 'calcFunc-arccos
2822 (math-add 1 (math-solve-get-int
2830 (defun math-solve-quartic (var d c b a aa)
2835 (math-try-solve-for
2839 (y (let ((math-solve-full nil)
2841 (math-solve-cubic math-solve-var
2851 (r (list 'calcFunc-sqrt rsqr))
2852 (sign1 (math-solve-get-sign 1))
2853 (de (list 'calcFunc-sqrt
2861 (list 'calcFunc-sqrt
2875 (math-solve-get-sign (math-div de 2)))
2879 (defvar math-symbolic-solve nil)
2893 (let* ((math-symbolic-solve calc-symbolic-mode)
2907 (if (or math-factoring math-symbolic-solve)
2924 (while (> deg (if math-symbolic-solve 2 4))
2929 (setq x (calcFunc-re x)))
2944 (let ((math-solve-var '(var DUMMY var-DUMMY))
2945 (math-solve-sign nil)
2946 (math-solve-ranges nil)
2947 (math-solve-full 'all))
2951 'math-solve-quadratic)
2953 'math-solve-cubic)
2955 'math-solve-quartic))
2956 math-solve-var p))
2970 (math-solve-full (and math-solve-full 'all)))
2974 (cdr (or (math-try-solve-for var root nil t)
2978 (if math-symbolic-solve
2980 (if (eq math-solve-full t)
2981 (list 'calcFunc-subscr
2983 (math-solve-get-int 1 (1- (length orig-p)) 1))
2990 (setq den (calcFunc-lcm den (nth 2 (car fracs)))))
3006 (and math-symbolic-solve (math-floatp res)
3041 (and (math-lessp (calcFunc-xpon (math-abs-approx x)) calc-internal-prec)
3044 (xre (calcFunc-re x))
3045 (xim (calcFunc-im x))
3048 (if (math-lessp ximsq (calcFunc-scf xresq -1))
3100 (let ((calc-symbolic-mode math-symbolic-solve))
3127 (math-lessp (calcFunc-scf err (- -2 calc-internal-prec))
3141 (if (math-lessp (calcFunc-abssqr gp) (calcFunc-abssqr gm))
3147 (calcFunc-scf (math-abs-approx x) -3)))
3169 (let ((digs (calcFunc-xpon
3179 (math-lessp (calcFunc-scf (math-abs-approx x)
3186 (defun math-solve-above-dummy (x)
3193 (not (setq res (math-solve-above-dummy (car x))))))
3196 (defun math-solve-find-root-term (x neg) ; sets "t2", "t3"
3197 (if (math-solve-find-root-in-prod x)
3201 (or (math-solve-find-root-term (nth 1 x) neg)
3202 (math-solve-find-root-term (nth 2 x)
3205 (defun math-solve-find-root-in-prod (x)
3207 (math-expr-contains x math-solve-var)
3208 (or (and (eq (car x) 'calcFunc-sqrt)
3217 (or (and (not (math-expr-contains (nth 1 x) math-solve-var))
3218 (math-solve-find-root-in-prod (nth 2 x)))
3219 (and (not (math-expr-contains (nth 2 x) math-solve-var))
3220 (math-solve-find-root-in-prod (nth 1 x))))))))
3222 ;; The variable math-solve-vars is local to math-solve-system,
3223 ;; but is used by math-solve-system-rec.
3224 (defvar math-solve-vars)
3226 ;; The variable math-solve-simplifying is local to math-solve-system
3227 ;; and math-solve-system-rec, but is used by math-solve-system-subst.
3228 (defvar math-solve-simplifying)
3230 (defun math-solve-system (exprs math-solve-vars math-solve-full)
3234 math-solve-vars (if (Math-vectorp math-solve-vars)
3235 (cdr math-solve-vars)
3236 (list math-solve-vars)))
3237 (or (let ((math-solve-simplifying nil))
3238 (math-solve-system-rec exprs math-solve-vars nil))
3239 (let ((math-solve-simplifying t))
3240 (math-solve-system-rec exprs math-solve-vars nil))))
3243 ;;; and equation, and trying to solve the equation for the variable.
3250 ;;; To support calcFunc-roots, entries in eqn-list and solns are
3253 ;; The variables math-solve-system-res and math-solve-system-vv are
3254 ;; local to math-solve-system-rec, but are used by math-solve-system-subst.
3255 (defvar math-solve-system-vv)
3256 (defvar math-solve-system-res)
3259 (defun math-solve-system-rec (eqn-list var-list solns)
3262 (math-solve-system-res nil))
3268 (let* ((math-solve-system-vv (car v))
3270 (elim (eq (car-safe math-solve-system-vv) 'calcFunc-elim)))
3272 (setq math-solve-system-vv (nth 1 math-solve-system-vv)))
3281 (setq math-solve-system-res nil)
3283 ;; Try to solve for math-solve-system-vv the list of equations e2.
3287 (math-solve-for (car e2) 0
3288 math-solve-system-vv
3289 math-solve-full))))
3291 math-solve-system-res (cons (if (eq math-solve-full 'all)
3294 math-solve-system-res)
3297 (setq math-solve-system-res nil)
3300 (setq math-solve-system-res (nreverse math-solve-system-res)
3301 math-solve-system-res (math-solve-system-rec
3303 'math-solve-system-subst
3307 (let ((math-solve-simplifying nil)
3313 (math-solve-system-subst
3319 math-solve-system-vv
3320 (apply 'append math-solve-system-res))
3322 (not math-solve-system-res))))
3324 (not math-solve-system-res)))
3326 math-solve-system-res)
3332 (not (memq (car x) (memq (car y) math-solve-vars)))))))
3333 (if (eq math-solve-full 'all)
3343 (mapcar (function (lambda (x) (cons 'calcFunc-eq x))) solns)
3346 (defun math-solve-system-subst (x) ; uses "res" and "v"
3348 (res2 math-solve-system-res))
3353 (if math-solve-simplifying
3356 (car x) math-solve-system-vv r))
3358 (car x) math-solve-system-vv r))))
3378 (defun math-solve-get-sign (val)
3382 (list '* (nth 1 val) (math-solve-get-sign (nth 2 val)))
3383 (and (eq (car-safe val) 'calcFunc-sqrt)
3388 (if math-solve-full
3391 (not (eq math-solve-full 'all)))
3393 (math-mul (list 'calcFunc-as var-GenCount) val)
3396 (let* ((var (concat "s" (int-to-string (math-get-from-counter 'solve-sign))))
3398 (if (eq math-solve-full 'all)
3399 (setq math-solve-ranges (cons (list var2 1 -1)
3400 math-solve-ranges)))
3405 (defun math-solve-get-int (val &optional range first)
3406 (if math-solve-full
3409 (not (eq math-solve-full 'all)))
3411 (math-mul val (list 'calcFunc-an var-GenCount))
3415 (math-get-from-counter 'solve-int))))
3417 (if (and range (eq math-solve-full 'all))
3418 (setq math-solve-ranges (cons (cons var2
3419 (cdr (calcFunc-index
3421 math-solve-ranges)))
3426 (defun math-solve-sign (sign expr)
3440 (defun math-solve-for (lhs rhs math-solve-var math-solve-full &optional sign)
3441 (if (math-expr-contains rhs math-solve-var)
3442 (math-solve-for (math-sub lhs rhs) 0 math-solve-var math-solve-full)
3443 (and (math-expr-contains lhs math-solve-var)
3445 (let* ((math-poly-base-variable math-solve-var)
3446 (res (math-try-solve-for lhs rhs sign)))
3447 (if (and (eq math-solve-full 'all)
3448 (math-known-realp math-solve-var))
3467 (defun math-solve-eqn (expr var full)
3468 (if (memq (car-safe expr) '(calcFunc-neq calcFunc-lt calcFunc-gt
3469 calcFunc-leq calcFunc-geq))
3470 (let ((res (math-solve-for (cons '- (cdr expr))
3472 (if (eq (car expr) 'calcFunc-neq) nil 1))))
3474 (if (eq math-solve-sign 1)
3476 (if (eq math-solve-sign -1)
3478 (or (eq (car expr) 'calcFunc-neq)
3481 (and (memq (car expr) '(calcFunc-neq calcFunc-lt calcFunc-gt))
3482 (list 'calcFunc-neq var res))))))
3483 (let ((res (math-solve-for expr 0 var full)))
3485 (list 'calcFunc-eq var res)))))
3493 (defun calcFunc-solve (expr var)
3495 (math-solve-system expr var nil)
3496 (math-solve-eqn expr var nil))
3497 (math-reject-solution expr var 'calcFunc-solve)))
3499 (defun calcFunc-fsolve (expr var)
3501 (math-solve-system expr var t)
3502 (math-solve-eqn expr var t))
3503 (math-reject-solution expr var 'calcFunc-fsolve)))
3505 (defun calcFunc-roots (expr var)
3506 (let ((math-solve-ranges nil))
3508 (math-solve-system expr var 'all)
3509 (math-solve-for expr 0 var 'all))
3510 (math-reject-solution expr var 'calcFunc-roots))))
3512 (defun calcFunc-finv (expr var)
3513 (let ((res (math-solve-for expr math-integ-var var nil)))
3516 (math-reject-solution expr var 'calcFunc-finv))))
3518 (defun calcFunc-ffinv (expr var)
3519 (let ((res (math-solve-for expr math-integ-var var t)))
3522 (math-reject-solution expr var 'calcFunc-finv))))
3525 (put 'calcFunc-inv 'math-inverse
3527 (put 'calcFunc-inv 'math-inverse-sign -1)
3529 (put 'calcFunc-sqrt 'math-inverse
3532 (put 'calcFunc-conj 'math-inverse
3533 (function (lambda (x) (list 'calcFunc-conj x))))
3535 (put 'calcFunc-abs 'math-inverse
3536 (function (lambda (x) (math-solve-get-sign x))))
3538 (put 'calcFunc-deg 'math-inverse
3539 (function (lambda (x) (list 'calcFunc-rad x))))
3540 (put 'calcFunc-deg 'math-inverse-sign 1)
3542 (put 'calcFunc-rad 'math-inverse
3543 (function (lambda (x) (list 'calcFunc-deg x))))
3544 (put 'calcFunc-rad 'math-inverse-sign 1)
3546 (put 'calcFunc-ln 'math-inverse
3547 (function (lambda (x) (list 'calcFunc-exp x))))
3548 (put 'calcFunc-ln 'math-inverse-sign 1)
3550 (put 'calcFunc-log10 'math-inverse
3551 (function (lambda (x) (list 'calcFunc-exp10 x))))
3552 (put 'calcFunc-log10 'math-inverse-sign 1)
3554 (put 'calcFunc-lnp1 'math-inverse
3555 (function (lambda (x) (list 'calcFunc-expm1 x))))
3556 (put 'calcFunc-lnp1 'math-inverse-sign 1)
3558 (put 'calcFunc-exp 'math-inverse
3559 (function (lambda (x) (math-add (math-normalize (list 'calcFunc-ln x))
3562 (math-solve-get-int
3564 (put 'calcFunc-exp 'math-inverse-sign 1)
3566 (put 'calcFunc-expm1 'math-inverse
3567 (function (lambda (x) (math-add (math-normalize (list 'calcFunc-lnp1 x))
3570 (math-solve-get-int
3572 (put 'calcFunc-expm1 'math-inverse-sign 1)
3574 (put 'calcFunc-sin 'math-inverse
3575 (function (lambda (x) (let ((n (math-solve-get-int 1)))
3577 (list 'calcFunc-arcsin x))
3582 (put 'calcFunc-cos 'math-inverse
3583 (function (lambda (x) (math-add (math-solve-get-sign
3585 (list 'calcFunc-arccos x)))
3586 (math-solve-get-int
3589 (put 'calcFunc-tan 'math-inverse
3590 (function (lambda (x) (math-add (math-normalize (list 'calcFunc-arctan x))
3591 (math-solve-get-int
3594 (put 'calcFunc-arcsin 'math-inverse
3595 (function (lambda (x) (math-normalize (list 'calcFunc-sin x)))))
3597 (put 'calcFunc-arccos 'math-inverse
3598 (function (lambda (x) (math-normalize (list 'calcFunc-cos x)))))
3600 (put 'calcFunc-arctan 'math-inverse
3601 (function (lambda (x) (math-normalize (list 'calcFunc-tan x)))))
3603 (put 'calcFunc-sinh 'math-inverse
3604 (function (lambda (x) (let ((n (math-solve-get-int 1)))
3606 (list 'calcFunc-arcsinh x))
3612 (put 'calcFunc-sinh 'math-inverse-sign 1)
3614 (put 'calcFunc-cosh 'math-inverse
3615 (function (lambda (x) (math-add (math-solve-get-sign
3617 (list 'calcFunc-arccosh x)))
3619 (math-solve-get-int
3622 (put 'calcFunc-tanh 'math-inverse
3624 (list 'calcFunc-arctanh x))
3626 (math-solve-get-int
3628 (put 'calcFunc-tanh 'math-inverse-sign 1)
3630 (put 'calcFunc-arcsinh 'math-inverse
3631 (function (lambda (x) (math-normalize (list 'calcFunc-sinh x)))))
3632 (put 'calcFunc-arcsinh 'math-inverse-sign 1)
3634 (put 'calcFunc-arccosh 'math-inverse
3635 (function (lambda (x) (math-normalize (list 'calcFunc-cosh x)))))
3637 (put 'calcFunc-arctanh 'math-inverse
3638 (function (lambda (x) (math-normalize (list 'calcFunc-tanh x)))))
3639 (put 'calcFunc-arctanh 'math-inverse-sign 1)
3643 (defun calcFunc-taylor (expr var num)
3645 (if (memq (car-safe var) '(+ - calcFunc-eq))
3652 (var2 (if (eq (car var) 'calcFunc-eq)
3659 (setq fprime (calcFunc-deriv fprime v nil t)))
3669 (list 'calcFunc-taylor expr var num))))