1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-22 10:26:20 +00:00

Change all toplevel setq' forms to defvar' forms, and move them

before their first use.  Use `when', `unless'.  Remove trailing
periods from error forms.  Add description and headers suggested by
Emacs Lisp coding conventions.
This commit is contained in:
Colin Walters 2001-11-19 07:44:56 +00:00
parent f269b73e3e
commit 3132f345bc
35 changed files with 1004 additions and 842 deletions

View File

@ -1,3 +1,54 @@
2001-11-19 Colin Walters <walters@verbum.org>
* calc/calc-macs.el (calc-wrapper, calc-slow-wrapper)
(math-showing-full-precision, math-with-extra-prec, math-working)
(calc-with-default-simplification)
(calc-with-trail-buffer): Use backtick.
(Math-zerop, Math-integer-negp, Math-integer-posp, Math-negp)
(Math-looks-negp, Math-posp, Math-integerp, Math-natnump)
(Math-ratp, Math-realp, Math-anglep, Math-numberp, Math-scalarp)
(Math-vectorp, Math-messy-integerp, Math-objectp, Math-objvecp)
(Math-integer-neg, Math-equal, Math-lessp, Math-primp)
(Math-num-integerp, Math-bignum-test, Math-equal-int)
(Math-natnum-lessp, math-format-radix-digit): Change to `defsubst'.
(calc-record-compilation-date-macro): Deleted. Callers updated.
(math-format-radix-digit): Move to calc-bin.el.
* calc/calc.el (calc-record-compilation-date): Remove.
(calc-bug-address): Update.
(calc-settings-file): Use `user-init-file'.
* calc/calc-mode.el (calc-settings-file-name, calc-save-modes):
Handle null `calc-settings-file'.
* calc/calc-frac.el (calc-over-notation): Use `completing-read'.
* calc/calc-keypd.el (calc-keypad-mode): New.
(calc-do-keypad): Use it.
(calc-keypad-map): Move into `calc-keypad-mode'.
* calc-math.el (calcFunc-sqrt, calcFunc-hypot): Add missing quote
to defalias argument.
* calc-misc.el (math-fixnump, math-fixnatnump, calcFunc-trunc)
(calcFunc-floor): Ditto.
* calc-units.el (calcFunc-usimplify): Ditto.
* calc-aent.el, calc-ext.el, calc-incom.el, calc-misc.el
* calc-sel.el, calc-vec.el, calc-alg.el, calc-fin.el
* calc-keypd.el, calc-mode.el, calc-stat.el, calc-yank.el
* calc-arith.el, calc-forms.el, calc-lang.el, calc-mtx.el
* calc-store.el, calc.el, calc-bin.el, calc-frac.el, calc-macs.el
* calc-poly.el, calc-stuff.el, calcalg2.el, calc-comb.el
* calc-funcs.el, calc-maint.el, calc-prog.el, calc-trail.el
* calcalg3.el, calc-cplx.el, calc-graph.el, calc-map.el
* calc-rewr.el, calc-undo.el, calccomp.el, calc-embed.el
* calc-help.el, calc-math.el, calc-rules.el, calc-units.el
* calcsel2.el: Change all toplevel `setq' forms to `defvar' forms,
and move them before their first use. Use `when', `unless'.
Remove trailing periods from error forms. Add description and
headers suggested by Emacs Lisp coding conventions.
2001-11-19 Stefan Monnier <monnier@cs.yale.edu>
* newcomment.el (comment-indent):

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part I [calc-aent.el]
;;; calc-aent.el --- algebraic entry functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: Dave Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc.el.
(require 'calc)
@ -55,15 +60,14 @@
(calc-extensions)
(math-evaluate-expr x))))
entry)))
(if (and (= (length alg-exp) 1)
(eq (car-safe (car alg-exp)) 'calcFunc-assign)
(= (length (car alg-exp)) 3)
(eq (car-safe (nth 1 (car alg-exp))) 'var))
(progn
(calc-extensions)
(set (nth 2 (nth 1 (car alg-exp))) (nth 2 (car alg-exp)))
(calc-refresh-evaltos (nth 2 (nth 1 (car alg-exp))))
(setq alg-exp (list (nth 2 (car alg-exp))))))
(when (and (= (length alg-exp) 1)
(eq (car-safe (car alg-exp)) 'calcFunc-assign)
(= (length (car alg-exp)) 3)
(eq (car-safe (nth 1 (car alg-exp))) 'var))
(calc-extensions)
(set (nth 2 (nth 1 (car alg-exp))) (nth 2 (car alg-exp)))
(calc-refresh-evaltos (nth 2 (nth 1 (car alg-exp))))
(setq alg-exp (list (nth 2 (car alg-exp)))))
(setq calc-quick-prev-results alg-exp
buf (mapconcat (function (lambda (x)
(math-format-value x 1000)))
@ -97,8 +101,8 @@
(if (eq last-command-char 10)
(insert shortbuf)
(setq kill-ring (cons shortbuf kill-ring))
(if (> (length kill-ring) kill-ring-max)
(setcdr (nthcdr (1- kill-ring-max) kill-ring) nil))
(when (> (length kill-ring) kill-ring-max)
(setcdr (nthcdr (1- kill-ring-max) kill-ring) nil))
(setq kill-ring-yank-pointer kill-ring)))))
(defun calc-do-calc-eval (str separator args)
@ -294,8 +298,7 @@
(let* ((calc-buffer (current-buffer))
(blink-paren-function 'calcAlg-blink-matching-open)
(alg-exp 'error))
(if (boundp 'calc-alg-ent-map)
()
(unless (boundp 'calc-alg-ent-map)
(setq calc-alg-ent-map (copy-keymap minibuffer-local-map))
(define-key calc-alg-ent-map "'" 'calcAlg-previous)
(define-key calc-alg-ent-map "`" 'calcAlg-edit)
@ -307,8 +310,8 @@
(while (< i 127)
(aset calc-alg-ent-esc-map i 'calcAlg-escape)
(setq i (1+ i))))))
(or calc-emacs-type-19
(define-key calc-alg-ent-map "\e" nil))
(unless calc-emacs-type-19
(define-key calc-alg-ent-map "\e" nil))
(if (eq calc-algebraic-mode 'total)
(define-key calc-alg-ent-map "\e" calc-alg-ent-esc-map)
(define-key calc-alg-ent-map "\ep" 'calcAlg-plus-minus)
@ -320,9 +323,9 @@
(let ((buf (read-from-minibuffer (or prompt "Algebraic: ")
(or initial "")
calc-alg-ent-map nil)))
(if (eq alg-exp 'error)
(if (eq (car-safe (setq alg-exp (math-read-exprs buf))) 'error)
(setq alg-exp nil)))
(when (eq alg-exp 'error)
(when (eq (car-safe (setq alg-exp (math-read-exprs buf))) 'error)
(setq alg-exp nil)))
(setq calc-aborted-prefix "alg'")
(or no-normalize
(and alg-exp (setq alg-exp (mapcar 'calc-normalize alg-exp))))
@ -368,6 +371,7 @@
(use-local-map calc-mode-map))
(calcAlg-enter))
(defvar calc-plain-entry nil)
(defun calcAlg-edit ()
(interactive)
(if (or (not calc-plain-entry)
@ -377,7 +381,6 @@
(setq alg-exp (minibuffer-contents))
(and (> (length alg-exp) 0) (setq calc-previous-alg-entry alg-exp))
(exit-minibuffer)))
(setq calc-plain-entry nil)
(defun calcAlg-enter ()
(interactive)
@ -482,11 +485,11 @@
(setq last rest)))
val))
(setq calc-user-parse-table nil)
(setq calc-last-main-parse-table nil)
(setq calc-last-lang-parse-table nil)
(setq calc-user-tokens nil)
(setq calc-user-token-chars nil)
(defvar calc-user-parse-table nil)
(defvar calc-last-main-parse-table nil)
(defvar calc-last-lang-parse-table nil)
(defvar calc-user-tokens nil)
(defvar calc-user-token-chars nil)
(defun math-build-parse-table ()
(let ((mtab (cdr (assq nil calc-user-parse-tables)))

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-alg.el]
;;; calc-alg.el --- algebraic functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -28,7 +33,6 @@
(defun calc-Need-calc-alg () nil)
;;; Algebra commands.
(defun calc-alg-evaluate (arg)
@ -169,7 +173,7 @@
(if (eq (car-safe old) 'error)
(error "Bad format in expression: %s" (nth 1 old)))
(or (math-expr-contains expr old)
(error "No occurrences found.")))
(error "No occurrences found")))
(calc-enter-result num "sbst" (math-expr-subst expr old new)))))

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-arith.el]
;;; calc-arith.el --- arithmetic functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -148,9 +153,9 @@
;;;; Declarations.
(setq math-decls-cache-tag nil)
(setq math-decls-cache nil)
(setq math-decls-all nil)
(defvar math-decls-cache-tag nil)
(defvar math-decls-cache nil)
(defvar math-decls-all nil)
;;; Math-decls-cache is an a-list where each entry is a list of the form:
;;; (VAR TYPES RANGE)
@ -880,7 +885,7 @@
;;;; Arithmetic.
(defun calcFunc-neg (a)
(defsubst calcFunc-neg (a)
(math-normalize (list 'neg a)))
(defun math-neg-fancy (a)
@ -2351,7 +2356,7 @@
a
(math-float (math-ceiling a prec))))
(setq math-rounding-mode nil)
(defvar math-rounding-mode nil)
;;; Coerce A to be an integer (by rounding to nearest integer). [I N] [Public]
(defun math-round (a &optional prec)
@ -2620,6 +2625,8 @@
(math-normalize (list '+ a b))
(math-add a b)))
(defvar math-combine-prod-e '(var e var-e))
;;; The following is expanded out four ways for speed.
(defun math-combine-prod (a b inva invb scalar-okay)
(cond
@ -2734,7 +2741,6 @@
(condition-case err
(math-pow a apow)
(inexact-result (list '^ a apow)))))))))))
(setq math-combine-prod-e '(var e var-e))
(defun math-mul-or-div (a b ainv binv)
(if (or (Math-vectorp a) (Math-vectorp b))

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-bin.el]
;;; calc-bin.el --- binary functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -143,8 +148,8 @@
(list n (math-power-of-2 (math-abs n)))
calc-leading-zeros)))
(if (< n 0)
(message "Binary word size is %d bits (2's complement)." (- n))
(message "Binary word size is %d bits." n))))
(message "Binary word size is %d bits (2's complement)" (- n))
(message "Binary word size is %d bits" n))))
@ -161,7 +166,7 @@
;; also change global value so minibuffer sees it
(setq-default calc-number-radix calc-number-radix))
(setq n calc-number-radix))
(message "Number radix is %d." n)))
(message "Number radix is %d" n)))
(defun calc-decimal-radix ()
(interactive)
@ -183,12 +188,12 @@
(interactive "P")
(calc-wrapper
(if (calc-change-mode 'calc-leading-zeros n t t)
(message "Zero-padding integers to %d digits (assuming radix %d)."
(message "Zero-padding integers to %d digits (assuming radix %d)"
(let* ((calc-internal-prec 6))
(math-compute-max-digits (math-abs calc-word-size)
calc-number-radix))
calc-number-radix)
(message "Omitting leading zeros on integers."))))
(message "Omitting leading zeros on integers"))))
(defvar math-power-of-2-cache (list 1 2 4 8 16 32 64 128 256 512 1024))
@ -562,6 +567,9 @@
"K" "L" "M" "N" "O" "P" "Q" "R" "S" "T"
"U" "V" "W" "X" "Y" "Z"])
(defsubst math-format-radix-digit (a) ; [X D]
(aref math-radix-digits a))
(defun math-format-radix (a) ; [X S]
(if (< a calc-number-radix)
(if (< a 0)
@ -750,6 +758,8 @@
(format "%se%s" str estr)))))))
str))
(defvar math-radix-digits-cache nil)
(defun math-convert-radix-digits (n &optional to-dec)
(let ((key (cons n (cons to-dec calc-number-radix))))
(or (cdr (assoc key math-radix-digits-cache))
@ -762,7 +772,7 @@
(math-div n log))))
math-radix-digits-cache))))))))
(setq math-radix-digits-cache nil)
(defvar math-radix-float-cache-tag nil)
(defun math-radix-float-power (n)
(if (eq n 0)
@ -792,6 +802,5 @@
calc-number-radix))))))
math-radix-float-cache))))))))
(setq math-radix-float-cache-tag nil)
;;; calc-bin.el ends here

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-comb.el]
;;; calc-comb.el --- combinatoric functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -28,6 +33,53 @@
(defun calc-Need-calc-comb () nil)
(defconst math-primes-table
[2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89
97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181
191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277
281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383
389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487
491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601
607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709
719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827
829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947
953 967 971 977 983 991 997 1009 1013 1019 1021 1031 1033 1039 1049
1051 1061 1063 1069 1087 1091 1093 1097 1103 1109 1117 1123 1129 1151
1153 1163 1171 1181 1187 1193 1201 1213 1217 1223 1229 1231 1237 1249
1259 1277 1279 1283 1289 1291 1297 1301 1303 1307 1319 1321 1327 1361
1367 1373 1381 1399 1409 1423 1427 1429 1433 1439 1447 1451 1453 1459
1471 1481 1483 1487 1489 1493 1499 1511 1523 1531 1543 1549 1553 1559
1567 1571 1579 1583 1597 1601 1607 1609 1613 1619 1621 1627 1637 1657
1663 1667 1669 1693 1697 1699 1709 1721 1723 1733 1741 1747 1753 1759
1777 1783 1787 1789 1801 1811 1823 1831 1847 1861 1867 1871 1873 1877
1879 1889 1901 1907 1913 1931 1933 1949 1951 1973 1979 1987 1993 1997
1999 2003 2011 2017 2027 2029 2039 2053 2063 2069 2081 2083 2087 2089
2099 2111 2113 2129 2131 2137 2141 2143 2153 2161 2179 2203 2207 2213
2221 2237 2239 2243 2251 2267 2269 2273 2281 2287 2293 2297 2309 2311
2333 2339 2341 2347 2351 2357 2371 2377 2381 2383 2389 2393 2399 2411
2417 2423 2437 2441 2447 2459 2467 2473 2477 2503 2521 2531 2539 2543
2549 2551 2557 2579 2591 2593 2609 2617 2621 2633 2647 2657 2659 2663
2671 2677 2683 2687 2689 2693 2699 2707 2711 2713 2719 2729 2731 2741
2749 2753 2767 2777 2789 2791 2797 2801 2803 2819 2833 2837 2843 2851
2857 2861 2879 2887 2897 2903 2909 2917 2927 2939 2953 2957 2963 2969
2971 2999 3001 3011 3019 3023 3037 3041 3049 3061 3067 3079 3083 3089
3109 3119 3121 3137 3163 3167 3169 3181 3187 3191 3203 3209 3217 3221
3229 3251 3253 3257 3259 3271 3299 3301 3307 3313 3319 3323 3329 3331
3343 3347 3359 3361 3371 3373 3389 3391 3407 3413 3433 3449 3457 3461
3463 3467 3469 3491 3499 3511 3517 3527 3529 3533 3539 3541 3547 3557
3559 3571 3581 3583 3593 3607 3613 3617 3623 3631 3637 3643 3659 3671
3673 3677 3691 3697 3701 3709 3719 3727 3733 3739 3761 3767 3769 3779
3793 3797 3803 3821 3823 3833 3847 3851 3853 3863 3877 3881 3889 3907
3911 3917 3919 3923 3929 3931 3943 3947 3967 3989 4001 4003 4007 4013
4019 4021 4027 4049 4051 4057 4073 4079 4091 4093 4099 4111 4127 4129
4133 4139 4153 4157 4159 4177 4201 4211 4217 4219 4229 4231 4241 4243
4253 4259 4261 4271 4273 4283 4289 4297 4327 4337 4339 4349 4357 4363
4373 4391 4397 4409 4421 4423 4441 4447 4451 4457 4463 4481 4483 4493
4507 4513 4517 4519 4523 4547 4549 4561 4567 4583 4591 4597 4603 4621
4637 4639 4643 4649 4651 4657 4663 4673 4679 4691 4703 4721 4723 4729
4733 4751 4759 4783 4787 4789 4793 4799 4801 4813 4817 4831 4861 4871
4877 4889 4903 4909 4919 4931 4933 4937 4943 4951 4957 4967 4969 4973
4987 4993 4999 5003])
;;; Combinatorics
@ -430,6 +482,7 @@
(defun calcFunc-stir2 (n m)
(math-stirling-number n m 0))
(defvar math-stirling-cache (vector [[1]] [[1]]))
(defun math-stirling-number (n m k)
(or (math-num-natnump n) (math-reject-arg n 'natnump))
(or (math-num-natnump m) (math-reject-arg m 'natnump))
@ -452,7 +505,6 @@
(if (= k 1)
(math-stirling-1 n m)
(math-stirling-2 n m)))))
(setq math-stirling-cache (vector [[1]] [[1]]))
(defun math-stirling-1 (n m)
(or (aref (aref cache n) m)
@ -466,6 +518,11 @@
(math-add (math-stirling-2 (1- n) (1- m))
(math-mul m (math-stirling-2 (1- n) m))))))
(defvar math-random-table nil)
(defvar math-last-RandSeed nil)
(defvar math-random-ptr1 nil)
(defvar math-random-ptr2 nil)
(defvar math-random-shift nil)
;;; Produce a random 10-bit integer, with (random) if no seed provided,
;;; or else with Numerical Recipes algorithm ran3 / Knuth 3.2.2-A.
@ -519,11 +576,6 @@
(car math-random-ptr2)) 524287))
-6) 1023))
(logand (lsh (random) math-random-shift) 1023)))
(setq math-random-table nil)
(setq math-last-RandSeed nil)
(setq math-random-ptr1 nil)
(setq math-random-ptr2 nil)
(setq math-random-shift nil)
;;; Produce a random digit in the range 0..999.
@ -945,53 +997,7 @@
(aref math-primes-table hi))
2))
(defconst math-primes-table
[2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89
97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181
191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277
281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383
389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487
491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601
607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709
719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827
829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947
953 967 971 977 983 991 997 1009 1013 1019 1021 1031 1033 1039 1049
1051 1061 1063 1069 1087 1091 1093 1097 1103 1109 1117 1123 1129 1151
1153 1163 1171 1181 1187 1193 1201 1213 1217 1223 1229 1231 1237 1249
1259 1277 1279 1283 1289 1291 1297 1301 1303 1307 1319 1321 1327 1361
1367 1373 1381 1399 1409 1423 1427 1429 1433 1439 1447 1451 1453 1459
1471 1481 1483 1487 1489 1493 1499 1511 1523 1531 1543 1549 1553 1559
1567 1571 1579 1583 1597 1601 1607 1609 1613 1619 1621 1627 1637 1657
1663 1667 1669 1693 1697 1699 1709 1721 1723 1733 1741 1747 1753 1759
1777 1783 1787 1789 1801 1811 1823 1831 1847 1861 1867 1871 1873 1877
1879 1889 1901 1907 1913 1931 1933 1949 1951 1973 1979 1987 1993 1997
1999 2003 2011 2017 2027 2029 2039 2053 2063 2069 2081 2083 2087 2089
2099 2111 2113 2129 2131 2137 2141 2143 2153 2161 2179 2203 2207 2213
2221 2237 2239 2243 2251 2267 2269 2273 2281 2287 2293 2297 2309 2311
2333 2339 2341 2347 2351 2357 2371 2377 2381 2383 2389 2393 2399 2411
2417 2423 2437 2441 2447 2459 2467 2473 2477 2503 2521 2531 2539 2543
2549 2551 2557 2579 2591 2593 2609 2617 2621 2633 2647 2657 2659 2663
2671 2677 2683 2687 2689 2693 2699 2707 2711 2713 2719 2729 2731 2741
2749 2753 2767 2777 2789 2791 2797 2801 2803 2819 2833 2837 2843 2851
2857 2861 2879 2887 2897 2903 2909 2917 2927 2939 2953 2957 2963 2969
2971 2999 3001 3011 3019 3023 3037 3041 3049 3061 3067 3079 3083 3089
3109 3119 3121 3137 3163 3167 3169 3181 3187 3191 3203 3209 3217 3221
3229 3251 3253 3257 3259 3271 3299 3301 3307 3313 3319 3323 3329 3331
3343 3347 3359 3361 3371 3373 3389 3391 3407 3413 3433 3449 3457 3461
3463 3467 3469 3491 3499 3511 3517 3527 3529 3533 3539 3541 3547 3557
3559 3571 3581 3583 3593 3607 3613 3617 3623 3631 3637 3643 3659 3671
3673 3677 3691 3697 3701 3709 3719 3727 3733 3739 3761 3767 3769 3779
3793 3797 3803 3821 3823 3833 3847 3851 3853 3863 3877 3881 3889 3907
3911 3917 3919 3923 3929 3931 3943 3947 3967 3989 4001 4003 4007 4013
4019 4021 4027 4049 4051 4057 4073 4079 4091 4093 4099 4111 4127 4129
4133 4139 4153 4157 4159 4177 4201 4211 4217 4219 4229 4231 4241 4243
4253 4259 4261 4271 4273 4283 4289 4297 4327 4337 4339 4349 4357 4363
4373 4391 4397 4409 4421 4423 4441 4447 4451 4457 4463 4481 4483 4493
4507 4513 4517 4519 4523 4547 4549 4561 4567 4583 4591 4597 4603 4621
4637 4639 4643 4649 4651 4657 4663 4673 4679 4691 4703 4721 4723 4729
4733 4751 4759 4783 4787 4789 4793 4799 4801 4813 4817 4831 4861 4871
4877 4889 4903 4909 4919 4931 4933 4937 4943 4951 4957 4967 4969 4973
4987 4993 4999 5003])
;;; calc-comb.el ends here

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-cplx.el]
;;; calc-cplx.el --- Complex number functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -61,19 +66,19 @@
(interactive)
(calc-wrapper
(calc-change-mode 'calc-complex-format nil t)
(message "Displaying complex numbers in (X,Y) format.")))
(message "Displaying complex numbers in (X,Y) format")))
(defun calc-i-notation ()
(interactive)
(calc-wrapper
(calc-change-mode 'calc-complex-format 'i t)
(message "Displaying complex numbers in X+Yi format.")))
(message "Displaying complex numbers in X+Yi format")))
(defun calc-j-notation ()
(interactive)
(calc-wrapper
(calc-change-mode 'calc-complex-format 'j t)
(message "Displaying complex numbers in X+Yj format.")))
(message "Displaying complex numbers in X+Yj format")))
(defun calc-polar-mode (n)
@ -84,9 +89,9 @@
(eq calc-complex-mode 'cplx))
(progn
(calc-change-mode 'calc-complex-mode 'polar)
(message "Preferred complex form is polar."))
(message "Preferred complex form is polar"))
(calc-change-mode 'calc-complex-mode 'cplx)
(message "Preferred complex form is rectangular."))))
(message "Preferred complex form is rectangular"))))
;;;; Complex numbers.

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-embed.el]
;;; calc-embed.el --- embed Calc in a buffer
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -28,38 +33,23 @@
(defun calc-Need-calc-embed () nil)
(defun calc-show-plain (n)
(interactive "P")
(calc-wrapper
(calc-set-command-flag 'renum-stack)
(message (if (calc-change-mode 'calc-show-plain n nil t)
"Including \"plain\" formulas in Calc Embedded mode."
"Omitting \"plain\" formulas in Calc Embedded mode."))))
;;; Things to do for Embedded Mode:
;;;
;;; Detect and strip off unexpected labels during reading.
;;;
;;; Get calc-grab-region to use math-read-big-expr.
;;; If calc-show-plain, main body should have only righthand side of => expr.
;;; Handle tabs that have crept into embedded formulas.
;;; After "switching to new formula", home cursor to that formula.
;;; Do something like \evalto ... \to for \gets operators.
;;;
"Including \"plain\" formulas in Calc Embedded mode"
"Omitting \"plain\" formulas in Calc Embedded mode"))))
(defvar calc-embedded-modes nil)
(defvar calc-embedded-globals nil)
(defvar calc-embedded-active nil)
(defvar calc-embedded-all-active nil)
(make-variable-buffer-local 'calc-embedded-all-active)
(defvar calc-embedded-some-active nil)
(make-variable-buffer-local 'calc-embedded-some-active)
(defvar calc-embedded-open-formula "\\`\\|^\n\\|\\$\\$?\\|\\\\\\[\\|^\\\\begin.*\n\\|^@.*\n\\|^\\.EQ.*\n\\|\\\\(\\|^%\n\\|^\\.\\\\\"\n"
"*A regular expression for the opening delimiter of a formula used by
calc-embedded.")
@ -162,6 +152,7 @@ This is not required to be present for user-written mode annotations.")
;;; thrown away when a buffer changes major modes.
(defvar calc-embedded-quiet nil)
(defun calc-do-embedded (arg end obeg oend)
(if calc-embedded-info
@ -195,7 +186,7 @@ This is not required to be present for user-written mode annotations.")
(use-local-map (nth 1 mode))
(set-buffer-modified-p (buffer-modified-p))
(or calc-embedded-quiet
(message "Back to %s mode." mode-name))))
(message "Back to %s mode" mode-name))))
(t
(if (buffer-name (aref calc-embedded-info 0))
@ -246,12 +237,11 @@ This is not required to be present for user-written mode annotations.")
(setq calc-no-refresh-evaltos nil)
(and chg calc-any-evaltos (calc-wrapper (calc-refresh-evaltos)))
(or (eq calc-embedded-quiet t)
(message "Embedded Calc mode enabled. %s to return to normal."
(message "Embedded Calc mode enabled; %s to return to normal"
(if calc-embedded-quiet
"Type `M-# x'"
"Give this command again")))))
(scroll-down 0)) ; fix a bug which occurs when truncate-lines is changed.
(setq calc-embedded-quiet nil)
(defun calc-embedded-select (arg)
@ -335,7 +325,7 @@ This is not required to be present for user-written mode annotations.")
(calc-embedded-forget))
(calc-find-globals)
(if (< (prefix-numeric-value arg) 0)
(message "Deactivating %s for Calc Embedded mode." (buffer-name))
(message "Deactivating %s for Calc Embedded mode" (buffer-name))
(message "Activating %s for Calc Embedded mode..." (buffer-name))
(save-excursion
(let* ((active (assq (current-buffer) calc-embedded-active))
@ -1002,6 +992,7 @@ The command \\[yank] can retrieve it from there."
;;; These are hooks called by the main part of Calc.
(defvar calc-embedded-no-reselect nil)
(defun calc-embedded-select-buffer ()
(if (eq (current-buffer) (aref calc-embedded-info 0))
(let ((info calc-embedded-info)
@ -1031,7 +1022,6 @@ The command \\[yank] can retrieve it from there."
(forward-char (min horiz
(- (point-max) (point)))))
(calc-select-buffer)))
(setq calc-embedded-no-reselect nil)
(defun calc-embedded-finish-command ()
(let ((buf (current-buffer))
@ -1206,12 +1196,9 @@ The command \\[yank] can retrieve it from there."
(calc-embedded-update (car p) 14 t nil)))
(setcdr (car bp) (delq (car p) (cdr (car bp))))
(message
"(Tried to recompute but formula was changed or missing.)"))))
"(Tried to recompute but formula was changed or missing)"))))
(setq p (cdr p))))
(setq bp (if buf nil (cdr bp))))
(or first calc-embedded-quiet (message "")))))
;;; calc-embed.el ends here

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II
;;; calc-ext.el --- various extension functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
(provide 'calc-ext)
(require 'calc)
@ -39,15 +44,27 @@
(if (fboundp 'calc)
(and (eq (car-safe (symbol-function 'calc)) 'autoload)
(load (nth 1 (symbol-function 'calc))))
(error "Main part of Calc must be present in order to load this file.")))
(error "Main part of Calc must be present in order to load this file")))
(require 'calc-macs)
(defvar math-simplifying nil)
(defvar math-living-dangerously nil) ; true if unsafe simplifications are okay.
(defvar math-integrating nil)
(defvar math-rewrite-selections nil)
(defvar math-compose-level 0)
(defvar math-comp-selected nil)
(defvar math-comp-tagged nil)
(defvar math-comp-sel-hpos nil)
(defvar math-comp-sel-vpos nil)
(defvar math-comp-sel-cpos nil)
(defvar math-compose-hash-args nil)
;;; The following was made a function so that it could be byte-compiled.
(defun calc-init-extensions ()
(setq gc-cons-threshold (max gc-cons-threshold 250000))
(define-key calc-mode-map ":" 'calc-fdiv)
(define-key calc-mode-map "\\" 'calc-idiv)
(define-key calc-mode-map "|" 'calc-concat)
@ -1129,10 +1146,7 @@ calc-unpack calc-unpack-bits calc-vector-find calc-vlength)
("calc-yank" calc-copy-as-kill calc-copy-region-as-kill
calc-copy-to-buffer calc-edit calc-edit-cancel calc-edit-mode
calc-kill calc-kill-region calc-yank)
))
)
calc-kill calc-kill-region calc-yank))))
(defun calc-init-prefixes ()
(if calc-shift-prefix
@ -1220,7 +1234,7 @@ calc-kill calc-kill-region calc-yank)
(define-key calc-help-map "?" 'calc-help-for-help)
(define-key calc-help-map "\C-h" 'calc-help-for-help))
(defvar calc-prefix-help-phase 0)
(defun calc-do-prefix-help (msgs group key)
(if calc-full-help-flag
(list msgs group key)
@ -1249,10 +1263,6 @@ calc-kill calc-kill-region calc-yank)
(message "%s: (none) %c-" group (car msgs) key))
(message "%s: %s" group (car msgs))))
(and key (calc-unread-command key))))
(defvar calc-prefix-help-phase 0)
;;;; Commands.
@ -1327,13 +1337,13 @@ calc-kill calc-kill-region calc-yank)
(interactive "NPrecision: ")
(calc-wrapper
(if (< (prefix-numeric-value n) 3)
(error "Precision must be at least 3 digits.")
(error "Precision must be at least 3 digits")
(calc-change-mode 'calc-internal-prec (prefix-numeric-value n)
(and (memq (car calc-float-format) '(float sci eng))
(< (nth 1 calc-float-format)
(if (= calc-number-radix 10) 0 1))))
(calc-record calc-internal-prec "prec"))
(message "Floating-point precision is %d digits." calc-internal-prec)))
(message "Floating-point precision is %d digits" calc-internal-prec)))
(defun calc-inverse (&optional n)
@ -1359,6 +1369,7 @@ calc-kill calc-kill-region calc-yank)
map)
"Keymap used while processing calc-fancy-prefix.")
(defvar calc-is-keypad-press nil)
(defun calc-fancy-prefix (flag msg n)
(let (prefix)
(calc-wrapper
@ -1384,7 +1395,6 @@ calc-kill calc-kill-region calc-yank)
(eq last-command-char ?-))
(calc-unread-command)
(digit-argument n))))))))
(setq calc-is-keypad-press nil)
(defun calc-fancy-prefix-other-key (arg)
(interactive "P")
@ -1497,6 +1507,8 @@ calc-kill calc-kill-region calc-yank)
(mapcar (function (lambda (x) (nth 2 x)))
entries)))))))
(defvar calc-refreshing-evaltos nil)
(defvar calc-no-refresh-evaltos nil)
(defun calc-refresh-evaltos (&optional which-var)
(and calc-any-evaltos calc-auto-recompute (not calc-no-refresh-evaltos)
(let ((calc-refreshing-evaltos t)
@ -1519,8 +1531,6 @@ calc-kill calc-kill-region calc-yank)
(setq num (1- num)))))
(and calc-embedded-active which-var
(calc-embedded-var-change which-var)))
(setq calc-refreshing-evaltos nil)
(setq calc-no-refresh-evaltos nil)
(defun calc-push (&rest vals)
@ -1589,12 +1599,7 @@ calc-kill calc-kill-region calc-yank)
(if (get-buffer-window (current-buffer))
(set-window-hscroll (get-buffer-window (current-buffer)) 0))))))
(setq math-cache-list nil)
(defvar math-cache-list nil)
(defun calc-var-value (v)
(and (symbolp v)
@ -1609,10 +1614,6 @@ calc-kill calc-kill-region calc-yank)
(set v val)))
(symbol-value v)))))
;;; In the following table, ( OP LOPS ROPS ) means that if an OP
;;; term appears as the first argument to any LOPS term, or as the
;;; second argument to any ROPS term, then they should be treated
@ -1713,7 +1714,7 @@ calc-kill calc-kill-region calc-yank)
(calc-Need-calc-vec)
(calc-Need-calc-yank)
(message "All parts of Calc are now loaded."))
(message "All parts of Calc are now loaded"))
;;; Vector commands.
@ -1940,8 +1941,7 @@ calc-kill calc-kill-region calc-yank)
(defun math-quarter-circle (symb)
(math-div (math-half-circle symb) 2))
(defvar math-expand-formulas nil)
;;;; Miscellaneous math routines.
@ -2144,6 +2144,7 @@ calc-kill calc-kill-region calc-yank)
(+ (car a) (* (math-fixnum-big (cdr a)) 1000))
(car a)))
(defvar math-simplify-only nil)
(defun math-normalize-fancy (a)
(cond ((eq (car a) 'frac)
@ -2233,7 +2234,6 @@ calc-kill calc-kill-region calc-yank)
(setq math-expand-formulas nil)
;;; Normalize a bignum digit list by trimming high-end zeros. [L l]
@ -2487,18 +2487,10 @@ calc-kill calc-kill-region calc-yank)
(list func (calc-top-n (- n)))
(- n))))))
(defvar var-Holidays '(vec (var sat var-sat) (var sun var-sun)))
(defvar var-Decls (list 'vec))
(setq math-simplify-only nil)
(defun math-inexact-result ()
(and calc-symbolic-mode
(signal 'inexact-result nil)))
@ -2511,8 +2503,6 @@ calc-kill calc-kill-region calc-yank)
(defun math-underflow ()
(signal 'math-underflow nil))
;;; Compute the greatest common divisor of A and B. [I I I] [Public]
(defun math-gcd (a b)
(cond ((not (or (consp a) (consp b)))
@ -2599,10 +2589,6 @@ calc-kill calc-kill-region calc-yank)
(cons (car x) (mapcar 'math-evaluate-expr-rec (cdr x))))))
x))
(setq math-simplifying nil)
(setq math-living-dangerously nil) ; true if unsafe simplifications are okay.
(setq math-integrating nil)
(defmacro math-defsimplify (funcs &rest code)
(append '(progn (math-need-std-simps))
(mapcar (function
@ -2650,8 +2636,6 @@ calc-kill calc-kill-region calc-yank)
(setq mmt-expr mmt-nextval))))))
mmt-expr)
(setq math-rewrite-selections nil)
(defun math-is-true (expr)
(if (Math-numberp expr)
(not (Math-zerop expr))
@ -2700,11 +2684,11 @@ calc-kill calc-kill-region calc-yank)
(defvar var-FitRules 'calc-FitRules)
(setq math-poly-base-variable nil)
(setq math-poly-neg-powers nil)
(setq math-poly-mult-powers 1)
(setq math-poly-frac-powers nil)
(setq math-poly-exp-base nil)
(defvar math-poly-base-variable nil)
(defvar math-poly-neg-powers nil)
(defvar math-poly-mult-powers 1)
(defvar math-poly-frac-powers nil)
(defvar math-poly-exp-base nil)
(defun math-build-var-name (name)
(if (stringp name)
@ -2713,14 +2697,8 @@ calc-kill calc-kill-region calc-yank)
(list 'var (intern (substring (symbol-name name) 4)) name)
(list 'var name (intern (concat "var-" (symbol-name name))))))
(setq math-simplifying-units nil)
(setq math-combining-units t)
(put 'math-while 'lisp-indent-hook 1)
(put 'math-for 'lisp-indent-hook 1)
(put 'math-foreach 'lisp-indent-hook 1)
(defvar math-simplifying-units nil)
(defvar math-combining-units t)
;;; Nontrivial number parsing.
@ -3013,10 +2991,11 @@ calc-kill calc-kill-region calc-yank)
(not (cdr lines)))
matrix))))
;;; Nontrivial "flat" formatting.
(defvar math-format-hash-args nil)
(defvar calc-can-abbrev-vectors nil)
(defun math-format-flat-expr-fancy (a prec)
(cond
((eq (car a) 'incomplete)
@ -3094,7 +3073,6 @@ calc-kill calc-kill-region calc-yank)
"("
(math-format-flat-vector (cdr a) ", " 0)
")")))))))
(setq math-format-hash-args nil)
(defun math-format-flat-vector (vec sep prec)
(if vec
@ -3103,7 +3081,6 @@ calc-kill calc-kill-region calc-yank)
(setq buf (concat buf sep (math-format-flat-expr (car vec) prec))))
buf)
""))
(setq calc-can-abbrev-vectors nil)
(defun math-format-nice-expr (x w)
(cond ((and (eq (car-safe x) 'vec)
@ -3136,7 +3113,6 @@ calc-kill calc-kill-region calc-yank)
(setq a (cdr a)))
(car a))
(defun math-format-number-fancy (a prec)
(cond
((eq (car a) 'float) ; non-decimal radix
@ -3291,15 +3267,6 @@ calc-kill calc-kill-region calc-yank)
(substring str i))))
str))
(setq math-compose-level 0)
(setq math-comp-selected nil)
(setq math-comp-tagged nil)
(setq math-comp-sel-hpos nil)
(setq math-comp-sel-vpos nil)
(setq math-comp-sel-cpos nil)
(setq math-compose-hash-args nil)
;;; Users can redefine this in their .emacs files.
(defvar calc-keypad-user-menu nil
"If not NIL, this describes an additional menu for calc-keypad.

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-fin.el]
;;; calc-fin.el --- financial functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-forms.el]
;;; calc-forms.el --- data format conversion functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -69,7 +74,7 @@
"%s" (math-match-substring fmt 5))
t)
(setq-default calc-hms-format calc-hms-format)) ; for minibuffer
(error "Bad hours-minutes-seconds format."))))
(error "Bad hours-minutes-seconds format"))))
(defun calc-date-notation (fmt arg)
(interactive "sDate format (e.g., M/D/YY h:mm:ss): \nP")
@ -154,7 +159,7 @@
(interactive)
(calc-wrapper
(calc-change-mode 'calc-angle-mode 'hms)
(message "Angles measured in degrees-minutes-seconds.")))
(message "Angles measured in degrees-minutes-seconds")))
(defun calc-now (arg)
@ -503,6 +508,7 @@
"Jul" "Aug" "Sep" "Oct" "Nov" "Dec" ))
(defvar math-format-date-cache nil)
(defun math-format-date (date)
(if (eq (car-safe date) 'date)
(setq date (nth 1 date)))
@ -521,7 +527,6 @@
(and (setq dt (nthcdr 10 math-format-date-cache))
(setcdr dt nil))
fmt))))
(setq math-format-date-cache nil)
(defun math-format-date-part (x)
(cond ((stringp x)
@ -1399,6 +1404,8 @@ and ends on the last Sunday of October at 2 a.m."
(if (and (cdr db) (not (cdr da))) 1 0))))
(calcFunc-badd a (math-neg b))))
(defvar math-holidays-cache nil)
(defvar math-holidays-cache-tag t)
(defun calcFunc-badd (a b)
(if (eq (car-safe b) 'date)
(if (eq (car-safe a) 'date)
@ -1426,11 +1433,6 @@ and ends on the last Sunday of October at 2 a.m."
(defun calcFunc-holiday (a)
(if (cdr (math-to-business-day a)) 1 0))
(setq math-holidays-cache nil)
(setq math-holidays-cache-tag t)
;;; Compute the number of business days since Jan 1, 1 AD.
(defun math-to-business-day (date &optional need-year)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-graph.el]
;;; calc-graph.el --- graph output functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -32,7 +37,7 @@
;;; Graphics
;;; Note that some of the following initial values also occur in calc.el.
(defvar calc-gnuplot-tempfile "/tmp/calc")
(defvar calc-gnuplot-tempfile (expand-file-name "calc" temporary-file-directory))
(defvar calc-gnuplot-default-device "default")
(defvar calc-gnuplot-default-output "STDOUT")
@ -58,6 +63,8 @@
(defvar calc-graph-var-cache nil)
(defvar calc-graph-data-cache nil)
(defvar calc-graph-data-cache-limit 10)
(defvar calc-graph-no-auto-view nil)
(defvar calc-graph-no-wait nil)
(defun calc-graph-fast (many)
(interactive "P")
@ -908,7 +915,7 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
(define-key calc-dumb-map "\C-c\C-c" 'exit-recursive-edit)))
(use-local-map calc-dumb-map)
(setq truncate-lines t)
(message "Type `q'%s to return to Calc."
(message "Type `q'%s to return to Calc"
(if (eq (lookup-key (current-global-map) "\e#") 'calc-dispatch)
" or `M-# M-#'" ""))
(recursive-edit)
@ -1151,11 +1158,11 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
(if flag
(if (> (prefix-numeric-value flag) 0)
(if (equal res "")
(message "Default resolution is %d."
(message "Default resolution is %d"
calc-graph-default-resolution)
(setq calc-graph-default-resolution (string-to-int res)))
(if (equal res "")
(message "Default 3D resolution is %d."
(message "Default 3D resolution is %d"
calc-graph-default-resolution-3d)
(setq calc-graph-default-resolution-3d (string-to-int res))))
(calc-graph-set-command "samples" (if (not (equal res "")) res))))
@ -1169,11 +1176,11 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
(if flag
(if (> (prefix-numeric-value flag) 0)
(if (equal name "")
(message "Default GNUPLOT device is \"%s\"."
(message "Default GNUPLOT device is \"%s\""
calc-gnuplot-default-device)
(setq calc-gnuplot-default-device name))
(if (equal name "")
(message "GNUPLOT device for Print command is \"%s\"."
(message "GNUPLOT device for Print command is \"%s\""
calc-gnuplot-print-device)
(setq calc-gnuplot-print-device name)))
(calc-graph-set-command "terminal" (if (not (equal name ""))
@ -1193,11 +1200,11 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
(if flag
(if (> (prefix-numeric-value flag) 0)
(if (equal name "")
(message "Default GNUPLOT output file is \"%s\"."
(message "Default GNUPLOT output file is \"%s\""
calc-gnuplot-default-output)
(setq calc-gnuplot-default-output name))
(if (equal name "")
(message "GNUPLOT output file for Print command is \"%s\"."
(message "GNUPLOT output file for Print command is \"%s\""
calc-gnuplot-print-output)
(setq calc-gnuplot-print-output name)))
(calc-graph-set-command "output" (if (not (equal name ""))
@ -1206,7 +1213,7 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
(defun calc-graph-display (name)
(interactive "sX display name: ")
(if (equal name "")
(message "Current X display is \"%s\"."
(message "Current X display is \"%s\""
(or calc-gnuplot-display "<none>"))
(setq calc-gnuplot-display name)
(if (calc-gnuplot-alive)
@ -1215,7 +1222,7 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
(defun calc-graph-geometry (name)
(interactive "sX geometry spec (or \"default\"): ")
(if (equal name "")
(message "Current X geometry is \"%s\"."
(message "Current X geometry is \"%s\""
(or calc-gnuplot-geometry "default"))
(setq calc-gnuplot-geometry (and (not (equal name "default")) name))
(if (calc-gnuplot-alive)
@ -1326,7 +1333,6 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
(set-window-start win (point))
(goto-char (point-max)))))
(or calc-graph-no-auto-view (sit-for 0))))
(setq calc-graph-no-auto-view nil)
(defun calc-gnuplot-check-for-errors ()
(if (save-excursion
@ -1359,7 +1365,6 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
(calc-gnuplot-check-for-errors)
(if (get-buffer-window calc-gnuplot-buffer)
(calc-graph-view-trail)))))
(setq calc-graph-no-wait nil)
(defun calc-graph-init-buffers ()
(or (and calc-gnuplot-buffer
@ -1401,7 +1406,7 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
args))
(process-kill-without-query calc-gnuplot-process))
(file-error
(error "Sorry, can't find \"%s\" on your system."
(error "Sorry, can't find \"%s\" on your system"
calc-gnuplot-name)))
(save-excursion
(set-buffer calc-gnuplot-buffer)
@ -1411,7 +1416,7 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
(memq (process-status calc-gnuplot-process) '(run stop)))
(accept-process-output calc-gnuplot-process))
(or (memq (process-status calc-gnuplot-process) '(run stop))
(error "Unable to start GNUPLOT process."))
(error "Unable to start GNUPLOT process"))
(if (save-excursion
(goto-char origin)
(re-search-forward

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-help.el]
;;; calc-help.el --- help display functions for Calc,
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -381,7 +386,6 @@ C-w Describe how there is no warranty for Calc."
(princ (format "GNU Emacs Calculator version %s of %s.\n"
calc-version calc-version-date))
(princ " By Dave Gillespie, daveg@synaptics.com.\n")
(princ (format " Installed %s.\n" calc-installed-date))
(princ " Copyright (C) 1990, 1993 Free Software Foundation, Inc.\n\n")
(princ "Type `h s' for a more detailed summary.\n")
(princ "Or type `h i' to read the full Calc manual on-line.\n\n")

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-incom.el]
;;; calc-incom.el --- complex data type input functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-lang.el]
;;; calc-lang.el --- calc language functions
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,6 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
@ -52,32 +58,32 @@
(interactive)
(calc-wrapper
(calc-set-language nil)
(message "Normal language mode.")))
(message "Normal language mode")))
(defun calc-flat-language ()
(interactive)
(calc-wrapper
(calc-set-language 'flat)
(message "Flat language mode (all stack entries shown on one line).")))
(message "Flat language mode (all stack entries shown on one line)")))
(defun calc-big-language ()
(interactive)
(calc-wrapper
(calc-set-language 'big)
(message "\"Big\" language mode.")))
(message "\"Big\" language mode")))
(defun calc-unformatted-language ()
(interactive)
(calc-wrapper
(calc-set-language 'unform)
(message "Unformatted language mode.")))
(message "Unformatted language mode")))
(defun calc-c-language ()
(interactive)
(calc-wrapper
(calc-set-language 'c)
(message "`C' language mode.")))
(message "`C' language mode")))
(put 'c 'math-oper-table
'( ( "u+" ident -1 1000 )
@ -139,9 +145,9 @@
(calc-set-language 'pascal n)
(message (if (and n (/= n 0))
(if (> n 0)
"Pascal language mode (all uppercase)."
"Pascal language mode (all lowercase).")
"Pascal language mode."))))
"Pascal language mode (all uppercase)"
"Pascal language mode (all lowercase)")
"Pascal language mode"))))
(put 'pascal 'math-oper-table
'( ( "not" calcFunc-lnot -1 1000 )
@ -201,9 +207,9 @@
(calc-set-language 'fortran n)
(message (if (and n (/= n 0))
(if (> n 0)
"FORTRAN language mode (all uppercase)."
"FORTRAN language mode (all lowercase).")
"FORTRAN language mode."))))
"FORTRAN language mode (all uppercase)"
"FORTRAN language mode (all lowercase)")
"FORTRAN language mode"))))
(put 'fortran 'math-oper-table
'( ( "u/" (math-parse-fortran-vector) -1 1 )
@ -251,6 +257,7 @@
(put 'fortran 'math-input-filter 'calc-input-case-filter)
(put 'fortran 'math-output-filter 'calc-output-case-filter)
(defvar math-parsing-fortran-vector nil)
(defun math-parse-fortran-vector (op)
(let ((math-parsing-fortran-vector '(end . "\000")))
(prog1
@ -266,7 +273,6 @@
exp-data "\000")
x)
(throw 'syntax "Unmatched closing `/'")))
(setq math-parsing-fortran-vector nil)
(defun math-parse-fortran-subscr (sym args)
(setq sym (math-build-var-name sym))
@ -283,9 +289,9 @@
(calc-set-language 'tex n)
(message (if (and n (/= n 0))
(if (> n 0)
"TeX language mode with \\hbox{func}(\\hbox{var})."
"TeX language mode with \\func{\\hbox{var}}.")
"TeX language mode."))))
"TeX language mode with \\hbox{func}(\\hbox{var})"
"TeX language mode with \\func{\\hbox{var}}")
"TeX language mode"))))
(put 'tex 'math-oper-table
'( ( "u+" ident -1 1000 )
@ -402,7 +408,7 @@
(interactive "P")
(calc-wrapper
(calc-set-language 'eqn)
(message "Eqn language mode.")))
(message "Eqn language mode")))
(put 'eqn 'math-oper-table
'( ( "u+" ident -1 1000 )
@ -515,7 +521,7 @@
(interactive)
(calc-wrapper
(calc-set-language 'math)
(message "Mathematica language mode.")))
(message "Mathematica language mode")))
(put 'math 'math-oper-table
'( ( "[[" (math-read-math-subscr) 250 -1 )
@ -628,7 +634,7 @@
(interactive)
(calc-wrapper
(calc-set-language 'maple)
(message "Maple language mode.")))
(message "Maple language mode")))
(put 'maple 'math-oper-table
'( ( "matrix" ident -1 300 )

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, maintenance routines
;;; calc-maint.el --- maintenance routines for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,8 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
(defun calc-compile ()
"Compile all parts of Calc.
@ -58,7 +62,7 @@ Unix usage:
;; Make sure we're in the right directory.
(find-file "calc.el")
(if (= (buffer-size) 0)
(error "This command must be used in the Calc source directory."))
(error "This command must be used in the Calc source directory"))
;; Make sure current directory is in load-path.
(setq load-path (cons default-directory load-path))
@ -82,7 +86,7 @@ Unix usage:
(setq changed-units t))
(or message-bug (message ""))
(byte-compile-file (car files)))
(message "File %s is up to date." (car files)))
(message "File %s is up to date" (car files)))
(if (string-match "calc\\(-ext\\)?.el" (car files))
(load (concat (car files) "c") nil t t))
(setq files (cdr files))))
@ -132,7 +136,7 @@ Unix usage:
(sort rules 'string<))
(save-buffer))))
(error (message "Unable to pre-build tables %s" err))))
(message "Done. Don't forget to install with \"make public\" or \"make private\".")))
(message "Done. Don't forget to install with \"make public\" or \"make private\"")))
(defun calc-compile-message (fmt &rest args)
(cond ((and (= (length args) 2)
@ -158,8 +162,8 @@ Unix usage:
(= (length args) 1)
(stringp (car args))
(string-match ".elc?\\'" (car args)))
(or (string-match "Saving file %s..." fmt)
(funcall old-message fmt (file-name-nondirectory (car args)))))
(unless (string-match "Saving file %s..." fmt)
(funcall old-message fmt (file-name-nondirectory (car args)))))
((string-match "\\(Preparing\\|Building\\).*\\.\\.\\.$" fmt)
(send-string-to-terminal (apply 'format fmt args)))
((string-match "\\(Preparing\\|Building\\).*\\.\\.\\. *done$" fmt)
@ -203,7 +207,7 @@ Usage: C-x C-f calc.texinfo RET
(or (let ((case-fold-search t))
(string-match "calc\\.texinfo" (buffer-name)))
force
(error "This command should be used in the calc.texinfo buffer."))
(error "This command should be used in the calc.texinfo buffer"))
(let ((srcbuf (current-buffer))
tutpos refpos endpos (maxpos (point-max)))
(goto-char 1)
@ -278,7 +282,7 @@ Usage: C-x C-f calc.texinfo RET
(or (let ((case-fold-search t))
(string-match "calc\\.texinfo" (buffer-name)))
force
(error "This command should be used in the calc.texinfo buffer."))
(error "This command should be used in the calc.texinfo buffer"))
(let ((srcbuf (current-buffer))
begpos sumpos endpos midpos)
(goto-char 1)
@ -402,7 +406,8 @@ global-set-key commands for Calc."
(not (file-exists-p
(setq name (expand-file-name "default.el" (car p))))))
(setq p (cdr p)))
(or p (error "Unable to find \"default\" file. Create one and try again."))
(unless p
(error "Unable to find \"default\" file. Create one and try again"))
(find-file name)
(if buffer-read-only (error "No write permission for \"%s\"" buffer-file-name))
(goto-char (point-max))

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-map.el]
;;; calc-map.el --- higher-order functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -140,6 +145,8 @@
nargs
(1+ calc-dollar-used))))))))
(defvar calc-verify-arglist t)
(defvar calc-mapping-dir nil)
(defun calc-map-stack ()
"This is meant to be called by calc-keypad mode."
(interactive)
@ -191,6 +198,307 @@
(calc-top-list-n
2 (+ 1 mul-used calc-dollar-used)))))))
(defconst calc-oper-keys '( ( ( ?+ 2 calcFunc-add )
( ?- 2 calcFunc-sub )
( ?* 2 calcFunc-mul )
( ?/ 2 calcFunc-div )
( ?^ 2 calcFunc-pow )
( ?| 2 calcFunc-vconcat )
( ?% 2 calcFunc-mod )
( ?\\ 2 calcFunc-idiv )
( ?! 1 calcFunc-fact )
( ?& 1 calcFunc-inv )
( ?n 1 calcFunc-neg )
( ?x user )
( ?z user )
( ?A 1 calcFunc-abs )
( ?J 1 calcFunc-conj )
( ?G 1 calcFunc-arg )
( ?Q 1 calcFunc-sqrt )
( ?N 2 calcFunc-min )
( ?X 2 calcFunc-max )
( ?F 1 calcFunc-floor )
( ?R 1 calcFunc-round )
( ?S 1 calcFunc-sin )
( ?C 1 calcFunc-cos )
( ?T 1 calcFunc-tan )
( ?L 1 calcFunc-ln )
( ?E 1 calcFunc-exp )
( ?B 2 calcFunc-log ) )
( ( ?F 1 calcFunc-ceil ) ; inverse
( ?R 1 calcFunc-trunc )
( ?Q 1 calcFunc-sqr )
( ?S 1 calcFunc-arcsin )
( ?C 1 calcFunc-arccos )
( ?T 1 calcFunc-arctan )
( ?L 1 calcFunc-exp )
( ?E 1 calcFunc-ln )
( ?B 2 calcFunc-alog )
( ?^ 2 calcFunc-nroot )
( ?| 2 calcFunc-vconcatrev ) )
( ( ?F 1 calcFunc-ffloor ) ; hyperbolic
( ?R 1 calcFunc-fround )
( ?S 1 calcFunc-sinh )
( ?C 1 calcFunc-cosh )
( ?T 1 calcFunc-tanh )
( ?L 1 calcFunc-log10 )
( ?E 1 calcFunc-exp10 )
( ?| 2 calcFunc-append ) )
( ( ?F 1 calcFunc-fceil ) ; inverse-hyperbolic
( ?R 1 calcFunc-ftrunc )
( ?S 1 calcFunc-arcsinh )
( ?C 1 calcFunc-arccosh )
( ?T 1 calcFunc-arctanh )
( ?L 1 calcFunc-exp10 )
( ?E 1 calcFunc-log10 )
( ?| 2 calcFunc-appendrev ) )))
(defconst calc-a-oper-keys '( ( ( ?a 3 calcFunc-apart )
( ?b 3 calcFunc-subst )
( ?c 2 calcFunc-collect )
( ?d 2 calcFunc-deriv )
( ?e 1 calcFunc-esimplify )
( ?f 2 calcFunc-factor )
( ?g 2 calcFunc-pgcd )
( ?i 2 calcFunc-integ )
( ?m 2 calcFunc-match )
( ?n 1 calcFunc-nrat )
( ?r 2 calcFunc-rewrite )
( ?s 1 calcFunc-simplify )
( ?t 3 calcFunc-taylor )
( ?x 1 calcFunc-expand )
( ?M 2 calcFunc-mapeq )
( ?N 3 calcFunc-minimize )
( ?P 2 calcFunc-roots )
( ?R 3 calcFunc-root )
( ?S 2 calcFunc-solve )
( ?T 4 calcFunc-table )
( ?X 3 calcFunc-maximize )
( ?= 2 calcFunc-eq )
( ?\# 2 calcFunc-neq )
( ?< 2 calcFunc-lt )
( ?> 2 calcFunc-gt )
( ?\[ 2 calcFunc-leq )
( ?\] 2 calcFunc-geq )
( ?{ 2 calcFunc-in )
( ?! 1 calcFunc-lnot )
( ?& 2 calcFunc-land )
( ?\| 2 calcFunc-lor )
( ?: 3 calcFunc-if )
( ?. 2 calcFunc-rmeq )
( ?+ 4 calcFunc-sum )
( ?- 4 calcFunc-asum )
( ?* 4 calcFunc-prod )
( ?_ 2 calcFunc-subscr )
( ?\\ 2 calcFunc-pdiv )
( ?% 2 calcFunc-prem )
( ?/ 2 calcFunc-pdivrem ) )
( ( ?m 2 calcFunc-matchnot )
( ?M 2 calcFunc-mapeqr )
( ?S 2 calcFunc-finv ) )
( ( ?d 2 calcFunc-tderiv )
( ?f 2 calcFunc-factors )
( ?M 2 calcFunc-mapeqp )
( ?N 3 calcFunc-wminimize )
( ?R 3 calcFunc-wroot )
( ?S 2 calcFunc-fsolve )
( ?X 3 calcFunc-wmaximize )
( ?/ 2 calcFunc-pdivide ) )
( ( ?S 2 calcFunc-ffinv ) )))
(defconst calc-b-oper-keys '( ( ( ?a 2 calcFunc-and )
( ?o 2 calcFunc-or )
( ?x 2 calcFunc-xor )
( ?d 2 calcFunc-diff )
( ?n 1 calcFunc-not )
( ?c 1 calcFunc-clip )
( ?l 2 calcFunc-lsh )
( ?r 2 calcFunc-rsh )
( ?L 2 calcFunc-ash )
( ?R 2 calcFunc-rash )
( ?t 2 calcFunc-rot )
( ?p 1 calcFunc-vpack )
( ?u 1 calcFunc-vunpack )
( ?D 4 calcFunc-ddb )
( ?F 3 calcFunc-fv )
( ?I 1 calcFunc-irr )
( ?M 3 calcFunc-pmt )
( ?N 2 calcFunc-npv )
( ?P 3 calcFunc-pv )
( ?S 3 calcFunc-sln )
( ?T 3 calcFunc-rate )
( ?Y 4 calcFunc-syd )
( ?\# 3 calcFunc-nper )
( ?\% 2 calcFunc-relch ) )
( ( ?F 3 calcFunc-fvb )
( ?I 1 calcFunc-irrb )
( ?M 3 calcFunc-pmtb )
( ?N 2 calcFunc-npvb )
( ?P 3 calcFunc-pvb )
( ?T 3 calcFunc-rateb )
( ?\# 3 calcFunc-nperb ) )
( ( ?F 3 calcFunc-fvl )
( ?M 3 calcFunc-pmtl )
( ?P 3 calcFunc-pvl )
( ?T 3 calcFunc-ratel )
( ?\# 3 calcFunc-nperl ) )))
(defconst calc-c-oper-keys '( ( ( ?d 1 calcFunc-deg )
( ?r 1 calcFunc-rad )
( ?h 1 calcFunc-hms )
( ?f 1 calcFunc-float )
( ?F 1 calcFunc-frac ) )))
(defconst calc-f-oper-keys '( ( ( ?b 2 calcFunc-beta )
( ?e 1 calcFunc-erf )
( ?g 1 calcFunc-gamma )
( ?h 2 calcFunc-hypot )
( ?i 1 calcFunc-im )
( ?j 2 calcFunc-besJ )
( ?n 2 calcFunc-min )
( ?r 1 calcFunc-re )
( ?s 1 calcFunc-sign )
( ?x 2 calcFunc-max )
( ?y 2 calcFunc-besY )
( ?A 1 calcFunc-abssqr )
( ?B 3 calcFunc-betaI )
( ?E 1 calcFunc-expm1 )
( ?G 2 calcFunc-gammaP )
( ?I 2 calcFunc-ilog )
( ?L 1 calcFunc-lnp1 )
( ?M 1 calcFunc-mant )
( ?Q 1 calcFunc-isqrt )
( ?S 1 calcFunc-scf )
( ?T 2 calcFunc-arctan2 )
( ?X 1 calcFunc-xpon )
( ?\[ 2 calcFunc-decr )
( ?\] 2 calcFunc-incr ) )
( ( ?e 1 calcFunc-erfc )
( ?E 1 calcFunc-lnp1 )
( ?G 2 calcFunc-gammaQ )
( ?L 1 calcFunc-expm1 ) )
( ( ?B 3 calcFunc-betaB )
( ?G 2 calcFunc-gammag) )
( ( ?G 2 calcFunc-gammaG ) )))
(defconst calc-k-oper-keys '( ( ( ?b 1 calcFunc-bern )
( ?c 2 calcFunc-choose )
( ?d 1 calcFunc-dfact )
( ?e 1 calcFunc-euler )
( ?f 1 calcFunc-prfac )
( ?g 2 calcFunc-gcd )
( ?h 2 calcFunc-shuffle )
( ?l 2 calcFunc-lcm )
( ?m 1 calcFunc-moebius )
( ?n 1 calcFunc-nextprime )
( ?r 1 calcFunc-random )
( ?s 2 calcFunc-stir1 )
( ?t 1 calcFunc-totient )
( ?B 3 calcFunc-utpb )
( ?C 2 calcFunc-utpc )
( ?F 3 calcFunc-utpf )
( ?N 3 calcFunc-utpn )
( ?P 2 calcFunc-utpp )
( ?T 2 calcFunc-utpt ) )
( ( ?n 1 calcFunc-prevprime )
( ?B 3 calcFunc-ltpb )
( ?C 2 calcFunc-ltpc )
( ?F 3 calcFunc-ltpf )
( ?N 3 calcFunc-ltpn )
( ?P 2 calcFunc-ltpp )
( ?T 2 calcFunc-ltpt ) )
( ( ?b 2 calcFunc-bern )
( ?c 2 calcFunc-perm )
( ?e 2 calcFunc-euler )
( ?s 2 calcFunc-stir2 ) )))
(defconst calc-s-oper-keys '( ( ( ?: 2 calcFunc-assign )
( ?= 1 calcFunc-evalto ) )))
(defconst calc-t-oper-keys '( ( ( ?C 3 calcFunc-tzconv )
( ?D 1 calcFunc-date )
( ?I 2 calcFunc-incmonth )
( ?J 1 calcFunc-julian )
( ?M 1 calcFunc-newmonth )
( ?W 1 calcFunc-newweek )
( ?U 1 calcFunc-unixtime )
( ?Y 1 calcFunc-newyear ) )))
(defconst calc-u-oper-keys '( ( ( ?C 2 calcFunc-vcov )
( ?G 1 calcFunc-vgmean )
( ?M 1 calcFunc-vmean )
( ?N 1 calcFunc-vmin )
( ?S 1 calcFunc-vsdev )
( ?X 1 calcFunc-vmax ) )
( ( ?C 2 calcFunc-vpcov )
( ?M 1 calcFunc-vmeane )
( ?S 1 calcFunc-vpsdev ) )
( ( ?C 2 calcFunc-vcorr )
( ?G 1 calcFunc-agmean )
( ?M 1 calcFunc-vmedian )
( ?S 1 calcFunc-vvar ) )
( ( ?M 1 calcFunc-vhmean )
( ?S 1 calcFunc-vpvar ) )))
(defconst calc-v-oper-keys '( ( ( ?a 2 calcFunc-arrange )
( ?b 2 calcFunc-cvec )
( ?c 2 calcFunc-mcol )
( ?d 2 calcFunc-diag )
( ?e 2 calcFunc-vexp )
( ?f 2 calcFunc-find )
( ?h 1 calcFunc-head )
( ?k 2 calcFunc-cons )
( ?l 1 calcFunc-vlen )
( ?m 2 calcFunc-vmask )
( ?n 1 calcFunc-rnorm )
( ?p 2 calcFunc-pack )
( ?r 2 calcFunc-mrow )
( ?s 3 calcFunc-subvec )
( ?t 1 calcFunc-trn )
( ?u 1 calcFunc-unpack )
( ?v 1 calcFunc-rev )
( ?x 1 calcFunc-index )
( ?A 1 calcFunc-apply )
( ?C 1 calcFunc-cross )
( ?D 1 calcFunc-det )
( ?E 1 calcFunc-venum )
( ?F 1 calcFunc-vfloor )
( ?G 1 calcFunc-grade )
( ?H 2 calcFunc-histogram )
( ?I 2 calcFunc-inner )
( ?L 1 calcFunc-lud )
( ?M 0 calcFunc-map )
( ?N 1 calcFunc-cnorm )
( ?O 2 calcFunc-outer )
( ?R 1 calcFunc-reduce )
( ?S 1 calcFunc-sort )
( ?T 1 calcFunc-tr )
( ?U 1 calcFunc-accum )
( ?V 2 calcFunc-vunion )
( ?X 2 calcFunc-vxor )
( ?- 2 calcFunc-vdiff )
( ?^ 2 calcFunc-vint )
( ?~ 1 calcFunc-vcompl )
( ?# 1 calcFunc-vcard )
( ?: 1 calcFunc-vspan )
( ?+ 1 calcFunc-rdup ) )
( ( ?h 1 calcFunc-tail )
( ?s 3 calcFunc-rsubvec )
( ?G 1 calcFunc-rgrade )
( ?R 1 calcFunc-rreduce )
( ?S 1 calcFunc-rsort )
( ?U 1 calcFunc-raccum ) )
( ( ?e 3 calcFunc-vexp )
( ?h 1 calcFunc-rhead )
( ?k 2 calcFunc-rcons )
( ?H 3 calcFunc-histogram )
( ?R 2 calcFunc-nest )
( ?U 2 calcFunc-anest ) )
( ( ?h 1 calcFunc-rtail )
( ?R 1 calcFunc-fixp )
( ?U 1 calcFunc-afixp ) )))
;;; Return a list of the form (nargs func name)
(defun calc-get-operator (msg &optional nargs)
(setq calc-aborted-prefix nil)
@ -441,309 +749,6 @@
(if (> (length name) 3)
(substring name 0 3)
name))))))
(setq calc-verify-arglist t)
(setq calc-mapping-dir nil)
(defconst calc-oper-keys '( ( ( ?+ 2 calcFunc-add )
( ?- 2 calcFunc-sub )
( ?* 2 calcFunc-mul )
( ?/ 2 calcFunc-div )
( ?^ 2 calcFunc-pow )
( ?| 2 calcFunc-vconcat )
( ?% 2 calcFunc-mod )
( ?\\ 2 calcFunc-idiv )
( ?! 1 calcFunc-fact )
( ?& 1 calcFunc-inv )
( ?n 1 calcFunc-neg )
( ?x user )
( ?z user )
( ?A 1 calcFunc-abs )
( ?J 1 calcFunc-conj )
( ?G 1 calcFunc-arg )
( ?Q 1 calcFunc-sqrt )
( ?N 2 calcFunc-min )
( ?X 2 calcFunc-max )
( ?F 1 calcFunc-floor )
( ?R 1 calcFunc-round )
( ?S 1 calcFunc-sin )
( ?C 1 calcFunc-cos )
( ?T 1 calcFunc-tan )
( ?L 1 calcFunc-ln )
( ?E 1 calcFunc-exp )
( ?B 2 calcFunc-log ) )
( ( ?F 1 calcFunc-ceil ) ; inverse
( ?R 1 calcFunc-trunc )
( ?Q 1 calcFunc-sqr )
( ?S 1 calcFunc-arcsin )
( ?C 1 calcFunc-arccos )
( ?T 1 calcFunc-arctan )
( ?L 1 calcFunc-exp )
( ?E 1 calcFunc-ln )
( ?B 2 calcFunc-alog )
( ?^ 2 calcFunc-nroot )
( ?| 2 calcFunc-vconcatrev ) )
( ( ?F 1 calcFunc-ffloor ) ; hyperbolic
( ?R 1 calcFunc-fround )
( ?S 1 calcFunc-sinh )
( ?C 1 calcFunc-cosh )
( ?T 1 calcFunc-tanh )
( ?L 1 calcFunc-log10 )
( ?E 1 calcFunc-exp10 )
( ?| 2 calcFunc-append ) )
( ( ?F 1 calcFunc-fceil ) ; inverse-hyperbolic
( ?R 1 calcFunc-ftrunc )
( ?S 1 calcFunc-arcsinh )
( ?C 1 calcFunc-arccosh )
( ?T 1 calcFunc-arctanh )
( ?L 1 calcFunc-exp10 )
( ?E 1 calcFunc-log10 )
( ?| 2 calcFunc-appendrev ) )
))
(defconst calc-a-oper-keys '( ( ( ?a 3 calcFunc-apart )
( ?b 3 calcFunc-subst )
( ?c 2 calcFunc-collect )
( ?d 2 calcFunc-deriv )
( ?e 1 calcFunc-esimplify )
( ?f 2 calcFunc-factor )
( ?g 2 calcFunc-pgcd )
( ?i 2 calcFunc-integ )
( ?m 2 calcFunc-match )
( ?n 1 calcFunc-nrat )
( ?r 2 calcFunc-rewrite )
( ?s 1 calcFunc-simplify )
( ?t 3 calcFunc-taylor )
( ?x 1 calcFunc-expand )
( ?M 2 calcFunc-mapeq )
( ?N 3 calcFunc-minimize )
( ?P 2 calcFunc-roots )
( ?R 3 calcFunc-root )
( ?S 2 calcFunc-solve )
( ?T 4 calcFunc-table )
( ?X 3 calcFunc-maximize )
( ?= 2 calcFunc-eq )
( ?\# 2 calcFunc-neq )
( ?< 2 calcFunc-lt )
( ?> 2 calcFunc-gt )
( ?\[ 2 calcFunc-leq )
( ?\] 2 calcFunc-geq )
( ?{ 2 calcFunc-in )
( ?! 1 calcFunc-lnot )
( ?& 2 calcFunc-land )
( ?\| 2 calcFunc-lor )
( ?: 3 calcFunc-if )
( ?. 2 calcFunc-rmeq )
( ?+ 4 calcFunc-sum )
( ?- 4 calcFunc-asum )
( ?* 4 calcFunc-prod )
( ?_ 2 calcFunc-subscr )
( ?\\ 2 calcFunc-pdiv )
( ?% 2 calcFunc-prem )
( ?/ 2 calcFunc-pdivrem ) )
( ( ?m 2 calcFunc-matchnot )
( ?M 2 calcFunc-mapeqr )
( ?S 2 calcFunc-finv ) )
( ( ?d 2 calcFunc-tderiv )
( ?f 2 calcFunc-factors )
( ?M 2 calcFunc-mapeqp )
( ?N 3 calcFunc-wminimize )
( ?R 3 calcFunc-wroot )
( ?S 2 calcFunc-fsolve )
( ?X 3 calcFunc-wmaximize )
( ?/ 2 calcFunc-pdivide ) )
( ( ?S 2 calcFunc-ffinv ) )
))
(defconst calc-b-oper-keys '( ( ( ?a 2 calcFunc-and )
( ?o 2 calcFunc-or )
( ?x 2 calcFunc-xor )
( ?d 2 calcFunc-diff )
( ?n 1 calcFunc-not )
( ?c 1 calcFunc-clip )
( ?l 2 calcFunc-lsh )
( ?r 2 calcFunc-rsh )
( ?L 2 calcFunc-ash )
( ?R 2 calcFunc-rash )
( ?t 2 calcFunc-rot )
( ?p 1 calcFunc-vpack )
( ?u 1 calcFunc-vunpack )
( ?D 4 calcFunc-ddb )
( ?F 3 calcFunc-fv )
( ?I 1 calcFunc-irr )
( ?M 3 calcFunc-pmt )
( ?N 2 calcFunc-npv )
( ?P 3 calcFunc-pv )
( ?S 3 calcFunc-sln )
( ?T 3 calcFunc-rate )
( ?Y 4 calcFunc-syd )
( ?\# 3 calcFunc-nper )
( ?\% 2 calcFunc-relch ) )
( ( ?F 3 calcFunc-fvb )
( ?I 1 calcFunc-irrb )
( ?M 3 calcFunc-pmtb )
( ?N 2 calcFunc-npvb )
( ?P 3 calcFunc-pvb )
( ?T 3 calcFunc-rateb )
( ?\# 3 calcFunc-nperb ) )
( ( ?F 3 calcFunc-fvl )
( ?M 3 calcFunc-pmtl )
( ?P 3 calcFunc-pvl )
( ?T 3 calcFunc-ratel )
( ?\# 3 calcFunc-nperl ) )
))
(defconst calc-c-oper-keys '( ( ( ?d 1 calcFunc-deg )
( ?r 1 calcFunc-rad )
( ?h 1 calcFunc-hms )
( ?f 1 calcFunc-float )
( ?F 1 calcFunc-frac ) )
))
(defconst calc-f-oper-keys '( ( ( ?b 2 calcFunc-beta )
( ?e 1 calcFunc-erf )
( ?g 1 calcFunc-gamma )
( ?h 2 calcFunc-hypot )
( ?i 1 calcFunc-im )
( ?j 2 calcFunc-besJ )
( ?n 2 calcFunc-min )
( ?r 1 calcFunc-re )
( ?s 1 calcFunc-sign )
( ?x 2 calcFunc-max )
( ?y 2 calcFunc-besY )
( ?A 1 calcFunc-abssqr )
( ?B 3 calcFunc-betaI )
( ?E 1 calcFunc-expm1 )
( ?G 2 calcFunc-gammaP )
( ?I 2 calcFunc-ilog )
( ?L 1 calcFunc-lnp1 )
( ?M 1 calcFunc-mant )
( ?Q 1 calcFunc-isqrt )
( ?S 1 calcFunc-scf )
( ?T 2 calcFunc-arctan2 )
( ?X 1 calcFunc-xpon )
( ?\[ 2 calcFunc-decr )
( ?\] 2 calcFunc-incr ) )
( ( ?e 1 calcFunc-erfc )
( ?E 1 calcFunc-lnp1 )
( ?G 2 calcFunc-gammaQ )
( ?L 1 calcFunc-expm1 ) )
( ( ?B 3 calcFunc-betaB )
( ?G 2 calcFunc-gammag) )
( ( ?G 2 calcFunc-gammaG ) )
))
(defconst calc-k-oper-keys '( ( ( ?b 1 calcFunc-bern )
( ?c 2 calcFunc-choose )
( ?d 1 calcFunc-dfact )
( ?e 1 calcFunc-euler )
( ?f 1 calcFunc-prfac )
( ?g 2 calcFunc-gcd )
( ?h 2 calcFunc-shuffle )
( ?l 2 calcFunc-lcm )
( ?m 1 calcFunc-moebius )
( ?n 1 calcFunc-nextprime )
( ?r 1 calcFunc-random )
( ?s 2 calcFunc-stir1 )
( ?t 1 calcFunc-totient )
( ?B 3 calcFunc-utpb )
( ?C 2 calcFunc-utpc )
( ?F 3 calcFunc-utpf )
( ?N 3 calcFunc-utpn )
( ?P 2 calcFunc-utpp )
( ?T 2 calcFunc-utpt ) )
( ( ?n 1 calcFunc-prevprime )
( ?B 3 calcFunc-ltpb )
( ?C 2 calcFunc-ltpc )
( ?F 3 calcFunc-ltpf )
( ?N 3 calcFunc-ltpn )
( ?P 2 calcFunc-ltpp )
( ?T 2 calcFunc-ltpt ) )
( ( ?b 2 calcFunc-bern )
( ?c 2 calcFunc-perm )
( ?e 2 calcFunc-euler )
( ?s 2 calcFunc-stir2 ) )
))
(defconst calc-s-oper-keys '( ( ( ?: 2 calcFunc-assign )
( ?= 1 calcFunc-evalto ) )
))
(defconst calc-t-oper-keys '( ( ( ?C 3 calcFunc-tzconv )
( ?D 1 calcFunc-date )
( ?I 2 calcFunc-incmonth )
( ?J 1 calcFunc-julian )
( ?M 1 calcFunc-newmonth )
( ?W 1 calcFunc-newweek )
( ?U 1 calcFunc-unixtime )
( ?Y 1 calcFunc-newyear ) )
))
(defconst calc-u-oper-keys '( ( ( ?C 2 calcFunc-vcov )
( ?G 1 calcFunc-vgmean )
( ?M 1 calcFunc-vmean )
( ?N 1 calcFunc-vmin )
( ?S 1 calcFunc-vsdev )
( ?X 1 calcFunc-vmax ) )
( ( ?C 2 calcFunc-vpcov )
( ?M 1 calcFunc-vmeane )
( ?S 1 calcFunc-vpsdev ) )
( ( ?C 2 calcFunc-vcorr )
( ?G 1 calcFunc-agmean )
( ?M 1 calcFunc-vmedian )
( ?S 1 calcFunc-vvar ) )
( ( ?M 1 calcFunc-vhmean )
( ?S 1 calcFunc-vpvar ) )
))
(defconst calc-v-oper-keys '( ( ( ?a 2 calcFunc-arrange )
( ?b 2 calcFunc-cvec )
( ?c 2 calcFunc-mcol )
( ?d 2 calcFunc-diag )
( ?e 2 calcFunc-vexp )
( ?f 2 calcFunc-find )
( ?h 1 calcFunc-head )
( ?k 2 calcFunc-cons )
( ?l 1 calcFunc-vlen )
( ?m 2 calcFunc-vmask )
( ?n 1 calcFunc-rnorm )
( ?p 2 calcFunc-pack )
( ?r 2 calcFunc-mrow )
( ?s 3 calcFunc-subvec )
( ?t 1 calcFunc-trn )
( ?u 1 calcFunc-unpack )
( ?v 1 calcFunc-rev )
( ?x 1 calcFunc-index )
( ?A 1 calcFunc-apply )
( ?C 1 calcFunc-cross )
( ?D 1 calcFunc-det )
( ?E 1 calcFunc-venum )
( ?F 1 calcFunc-vfloor )
( ?G 1 calcFunc-grade )
( ?H 2 calcFunc-histogram )
( ?I 2 calcFunc-inner )
( ?L 1 calcFunc-lud )
( ?M 0 calcFunc-map )
( ?N 1 calcFunc-cnorm )
( ?O 2 calcFunc-outer )
( ?R 1 calcFunc-reduce )
( ?S 1 calcFunc-sort )
( ?T 1 calcFunc-tr )
( ?U 1 calcFunc-accum )
( ?V 2 calcFunc-vunion )
( ?X 2 calcFunc-vxor )
( ?- 2 calcFunc-vdiff )
( ?^ 2 calcFunc-vint )
( ?~ 1 calcFunc-vcompl )
( ?# 1 calcFunc-vcard )
( ?: 1 calcFunc-vspan )
( ?+ 1 calcFunc-rdup ) )
( ( ?h 1 calcFunc-tail )
( ?s 3 calcFunc-rsubvec )
( ?G 1 calcFunc-rgrade )
( ?R 1 calcFunc-rreduce )
( ?S 1 calcFunc-rsort )
( ?U 1 calcFunc-raccum ) )
( ( ?e 3 calcFunc-vexp )
( ?h 1 calcFunc-rhead )
( ?k 2 calcFunc-rcons )
( ?H 3 calcFunc-histogram )
( ?R 2 calcFunc-nest )
( ?U 2 calcFunc-anest ) )
( ( ?h 1 calcFunc-rtail )
( ?R 1 calcFunc-fixp )
( ?U 1 calcFunc-afixp ) )
))
;;; Convert a variable name (as a formula) into a like-looking function name.

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-math.el]
;;; calc-math.el --- mathematical functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -236,7 +241,7 @@
(cond ((= arg 1)
(calc-wrapper
(calc-change-mode 'calc-angle-mode 'deg)
(message "Angles measured in degrees.")))
(message "Angles measured in degrees")))
((= arg 2) (calc-radians-mode))
((= arg 3) (calc-hms-mode))
(t (error "Prefix argument out of range"))))
@ -245,7 +250,7 @@
(interactive)
(calc-wrapper
(calc-change-mode 'calc-angle-mode 'rad)
(message "Angles measured in radians.")))
(message "Angles measured in radians")))
;;; Compute the integer square-root floor(sqrt(A)). A > 0. [I I] [Public]
@ -412,7 +417,7 @@
(progn
(calc-record-why 'numberp a)
(list 'calcFunc-sqrt a))))
(defalias calcFunc-sqrt 'math-sqrt)
(defalias 'calcFunc-sqrt 'math-sqrt)
(defun math-infinite-dir (a &optional inf)
(or inf (setq inf (math-infinitep a)))
@ -532,7 +537,7 @@
((eq (car-safe b) 'hms)
(math-to-hms (math-hypot a (math-from-hms b 'deg))))
(t nil)))
(defalias calcFunc-hypot 'math-hypot)
(defalias 'calcFunc-hypot 'math-hypot)
(defun calcFunc-sqr (x)
(math-pow x 2))
@ -1324,13 +1329,13 @@
(cons (equal pow x) sum)))
(defvar math-log-base-cache nil)
(defun math-log-base-raw (b) ; [N N]
(if (not (and (equal (car math-log-base-cache) b)
(eq (nth 1 math-log-base-cache) calc-internal-prec)))
(setq math-log-base-cache (list b calc-internal-prec
(math-ln-raw (math-float b)))))
(nth 2 math-log-base-cache))
(setq math-log-base-cache nil)
(defun calcFunc-lnp1 (x) ; [N N] [Public]
(cond ((Math-equal-int x -1)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-mat.el]
;;; calc-mtx.el --- matrix functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,6 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
@ -215,6 +221,7 @@
;;; This returns a list (LU index d), or NIL if not possible.
;;; Argument M must be a square matrix.
(defvar math-lud-cache nil)
(defun math-matrix-lud (m)
(let ((old (assoc m math-lud-cache))
(context (list calc-internal-prec calc-prefer-frac)))
@ -226,7 +233,6 @@
(setcdr old entry)
(setq math-lud-cache (cons (cons m entry) math-lud-cache)))
lud))))
(defvar math-lud-cache nil)
;;; Numerical Recipes section 2.3; implicit pivoting omitted.
(defun math-do-matrix-lud (m)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-poly.el]
;;; calc-poly.el --- polynomial functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -133,7 +138,7 @@
;;; Originally by Ove Ewerlid (ewerlid@mizar.DoCS.UU.SE).
;;; Modifications and simplifications by daveg.
(setq math-poly-modulus 1)
(defvar math-poly-modulus 1)
;;; Return gcd of two polynomials
(defun calcFunc-pgcd (pn pd)
@ -233,11 +238,11 @@
;;; Divide two polynomials. Return (quotient . remainder).
(defvar math-poly-div-base nil)
(defun math-poly-div (u v &optional math-poly-div-base)
(if math-poly-div-base
(math-do-poly-div u v)
(math-do-poly-div (calcFunc-expand u) (calcFunc-expand v))))
(setq math-poly-div-base nil)
(defun math-poly-div-exact (u v &optional base)
(let ((res (math-poly-div u v base)))

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-prog.el]
;;; calc-prog.el --- user programmability functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,6 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
@ -102,8 +108,8 @@
(calc-wrapper
(calc-change-mode 'calc-timing n nil t)
(message (if calc-timing
"Reporting timing of slow commands in Trail."
"Not reporting timing of commands."))))
"Reporting timing of slow commands in Trail"
"Not reporting timing of commands"))))
(defun calc-pass-errors ()
(interactive)
@ -116,7 +122,7 @@
(or (memq (car (car place)) '(error xxxerror))
(error "foo"))
(setcar (car place) 'xxxerror))
(error (error "The calc-do function has been modified; unable to patch."))))
(error (error "The calc-do function has been modified; unable to patch"))))
(defun calc-user-define ()
(interactive)
@ -1106,7 +1112,7 @@
(calc-pop-stack 1)
(if (math-is-true cond)
(if defining-kbd-macro
(message "If true..."))
(message "If true.."))
(if defining-kbd-macro
(message "Condition is false; skipping to Z: or Z] ..."))
(calc-kbd-skip-to-else-if t)))))
@ -1218,7 +1224,7 @@
(null parts)
(null counter)
(progn
(message "Warning: Infinite loop! Not executing.")
(message "Warning: Infinite loop! Not executing")
(setq rpt-count 0)))
(or (not initial) dir
(setq dir (math-compare final initial)))
@ -1266,9 +1272,10 @@
(let ((cond (calc-top-n 1)))
(calc-pop-stack 1)
(if (math-is-true cond)
(error "Keyboard macro aborted.")))))
(error "Keyboard macro aborted")))))
(defvar calc-kbd-push-level 0)
(defun calc-kbd-push (arg)
(interactive "P")
(calc-wrapper
@ -1324,7 +1331,6 @@
(let ((calc-kbd-push-level (1+ calc-kbd-push-level)))
(message "Saving modes; type Z' to restore")
(recursive-edit))))))
(setq calc-kbd-push-level 0)
(defun calc-kbd-pop ()
(interactive)
@ -1673,7 +1679,6 @@
;;;; User-programmability.
;;; Compiling Lisp-like forms to use the math library.
@ -2118,7 +2123,7 @@
(if (math-body-refers-to body 'math-break)
(cons 'catch (cons '(quote math-break) (list body)))
body)))
;; (put 'math-while 'lisp-indent-hook 1)
(defmacro math-for (head &rest body)
(let ((body (if head
@ -2127,6 +2132,7 @@
(if (math-body-refers-to body 'math-break)
(cons 'catch (cons '(quote math-break) (list body)))
body)))
;; (put 'math-for 'lisp-indent-hook 1)
(defun math-handle-for (head body)
(let* ((var (nth 0 (car head)))
@ -2184,13 +2190,12 @@
var
save-step)))))))))))
(defmacro math-foreach (head &rest body)
(let ((body (math-handle-foreach head body)))
(if (math-body-refers-to body 'math-break)
(cons 'catch (cons '(quote math-break) (list body)))
body)))
;; (put 'math-foreach 'lisp-indent-hook 1)
(defun math-handle-foreach (head body)
(let ((var (nth 0 (car head)))

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-rewr.el]
;;; calc-rewr.el --- rewriting functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -29,6 +34,7 @@
(defun calc-Need-calc-rewr () nil)
(defvar math-rewrite-default-iters 100)
(defun calc-rewrite-selection (rules-str &optional many prefix)
(interactive "sRewrite rule(s): \np")
(calc-slow-wrapper
@ -43,7 +49,7 @@
(math-rewrite-default-iters 1))
(if (or (null rules-str) (equal rules-str "") (equal rules-str "$"))
(if (= num 1)
(error "Can't use same stack entry for formula and rules.")
(error "Can't use same stack entry for formula and rules")
(setq rules (calc-top-n 1 t)
pop-rules t))
(setq rules (if (stringp rules-str)
@ -203,7 +209,6 @@
(if (= mmt-many 0) " (reached iteration limit)" "")
":\n" fmt "\n"))))
whole-expr))
(setq math-rewrite-default-iters 100)
(defun math-rewrite-phase (sched)
(while (and sched (/= mmt-many 0))
@ -479,9 +484,9 @@
(if (eq (car-safe pats) 'vec)
(cdr pats)
(list pats)))))))))
(setq math-rewrite-whole nil)
(setq math-make-import-list nil)
(defvar math-rewrite-whole nil)
(defvar math-make-import-list nil)
(defun math-compile-rewrites (rules &optional name)
(if (eq (car-safe rules) 'var)
(let ((prop (get (nth 2 rules) 'math-rewrite-cache))
@ -805,10 +810,11 @@
(cons (car expr)
(mapcar 'math-rwcomp-subst-rec (cdr expr)))))))
(setq math-rwcomp-tracing nil)
(defvar math-rwcomp-tracing nil)
(defun math-rwcomp-trace (instr)
(if math-rwcomp-tracing (progn (terpri) (princ instr)))
(when math-rwcomp-tracing
(terpri) (princ instr))
instr)
(defun math-rwcomp-instr (&rest instr)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-rules.el]
;;; calc-rules.el ---
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-sel.el]
;;; calc-sel.el --- data selection functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -31,6 +36,8 @@
;;; Selection commands.
(defvar calc-keep-selection t)
(defun calc-select-here (num &optional once keep)
(interactive "P")
(calc-wrapper
@ -349,6 +356,7 @@
"Selection treats a+b+c as a sum of three terms"
"Selection treats a+b+c as (a+b)+c"))))
(defvar calc-selection-cache-entry nil)
(defun calc-prepare-selection (&optional num)
(or num (setq num (calc-locate-cursor-element (point))))
(setq calc-selection-true-num num
@ -371,7 +379,6 @@
(length calc-left-label)
(if calc-line-numbering 4 0))))))
(calc-preserve-point))
(setq calc-selection-cache-entry nil)
;;; The following ensures that no two subformulas will be "eq" to each other!
(defun calc-encase-atoms (x)
@ -508,7 +515,6 @@
(t (calc-sel-error))))
(calc-pop-stack n m t)
(calc-push-list vals m)))
(setq calc-keep-selection t)
(defun calc-delete-selection (n)
(let ((entry (calc-top n 'entry)))

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-stat.el]
;;; calc-stat.el --- statistical functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-store.el]
;;; calc-store.el --- value storage functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -31,12 +36,13 @@
;;; Memory commands.
(defvar calc-store-keep nil)
(defun calc-store (&optional var)
(interactive)
(let ((calc-store-keep t))
(calc-store-into var)))
(setq calc-store-keep nil)
(defvar calc-given-value-flag nil)
(defun calc-store-into (&optional var)
(interactive)
(calc-wrapper
@ -170,7 +176,6 @@
(setq calc-given-value (math-evaluate-expr calc-given-value))
svar))
(intern var)))))
(setq calc-given-value-flag nil)
(defvar calc-var-name-map nil "Keymap for reading Calc variable names.")
(if calc-var-name-map
@ -369,6 +374,7 @@
(if var2
(calc-store-value var2 value ""))))))
(defvar calc-last-edited-variable nil)
(defun calc-edit-variable (&optional var)
(interactive)
(calc-wrapper
@ -389,7 +395,6 @@
(and value
(insert (math-format-nice-expr value (frame-width)) "\n")))))
(calc-show-edit-buffer))
(setq calc-last-edited-variable nil)
(defun calc-edit-Decls ()
(interactive)
@ -513,6 +518,17 @@
decl)))))))
(calc-refresh-evaltos 'var-Decls))))
(defvar calc-dont-insert-variables '(var-FitRules var-FactorRules
var-CommuteRules var-JumpRules
var-DistribRules var-MergeRules
var-NegateRules var-InvertRules
var-IntegAfterRules
var-TimeZone var-PlotRejects
var-PlotData1 var-PlotData2
var-PlotData3 var-PlotData4
var-PlotData5 var-PlotData6
var-DUMMY))
(defun calc-permanent-variable (&optional var)
(interactive)
(calc-wrapper
@ -532,17 +548,8 @@
(not (eq (car-safe (symbol-value x)) 'special-const))
(calc-insert-permanent-variable x))))))
(save-buffer))))
(defvar calc-dont-insert-variables '(var-FitRules var-FactorRules
var-CommuteRules var-JumpRules
var-DistribRules var-MergeRules
var-NegateRules var-InvertRules
var-IntegAfterRules
var-TimeZone var-PlotRejects
var-PlotData1 var-PlotData2
var-PlotData3 var-PlotData4
var-PlotData5 var-PlotData6
var-DUMMY
))
(defun calc-insert-permanent-variable (var)
(goto-char (point-min))

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-stuff.el]
;;; calc-stuff.el --- miscellaneous functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -68,6 +73,8 @@ With a prefix, push that prefix as a number onto the stack."
(message "max-lisp-eval-depth is now %d" max-lisp-eval-depth))
(defvar calc-which-why nil)
(defvar calc-last-why-command nil)
(defun calc-explain-why (why &optional more)
(if (eq (car why) '*)
(setq why (cdr why)))
@ -151,13 +158,11 @@ With a prefix, push that prefix as a number onto the stack."
(message "(No further explanations available)")
(setq calc-which-why calc-why))
(message "No explanations available"))))
(setq calc-which-why nil)
(setq calc-last-why-command nil)
(defun calc-version ()
(interactive)
(message "Calc %s, installed %s" calc-version calc-installed-date))
(message "Calc %s" calc-version))
(defun calc-flush-caches ()
@ -179,7 +184,7 @@ With a prefix, push that prefix as a number onto the stack."
math-format-date-cache nil
math-holidays-cache-tag t)
(mapcar (function (lambda (x) (set x -100))) math-cache-list)
(message "All internal calculator caches have been reset.")))
(message "All internal calculator caches have been reset")))
;;; Conversions.
@ -209,6 +214,7 @@ With a prefix, push that prefix as a number onto the stack."
(error "Number required"))))))
(defvar math-chopping-small nil)
(defun calcFunc-clean (a &optional prec) ; [X X S] [Public]
(if prec
(cond ((Math-messy-integerp prec)
@ -250,7 +256,6 @@ With a prefix, push that prefix as a number onto the stack."
((Math-objectp a) a)
((math-infinitep a) a)
(t (list 'calcFunc-clean a)))))
(setq math-chopping-small nil)
(defun calcFunc-pclean (a &optional prec)
(math-map-over-constants (function (lambda (x) (calcFunc-clean x prec)))

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-trail.el]
;;; calc-trail.el --- functions for manipulating the Calc "trail"
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-undo.el]
;;; calc-undo.el --- undo functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -33,15 +38,15 @@
(defun calc-undo (n)
(interactive "p")
(and calc-executing-macro
(error "Use C-x e, not X, to run a keyboard macro that uses Undo."))
(when calc-executing-macro
(error "Use C-x e, not X, to run a keyboard macro that uses Undo"))
(if (<= n 0)
(if (< n 0)
(calc-redo (- n))
(calc-last-args 1))
(calc-wrapper
(if (null (nthcdr (1- n) calc-undo-list))
(error "No further undo information available"))
(when (null (nthcdr (1- n) calc-undo-list))
(error "No further undo information available"))
(setq calc-undo-list
(prog1
(nthcdr n calc-undo-list)
@ -52,16 +57,15 @@
(message "Undo!"))))
(defun calc-handle-undos (cl n)
(if (> n 0)
(progn
(let ((old-redo calc-redo-list))
(setq calc-undo-list nil)
(calc-handle-undo (car cl))
(setq calc-redo-list (append calc-undo-list old-redo)))
(calc-handle-undos (cdr cl) (1- n)))))
(when (> n 0)
(let ((old-redo calc-redo-list))
(setq calc-undo-list nil)
(calc-handle-undo (car cl))
(setq calc-redo-list (append calc-undo-list old-redo)))
(calc-handle-undos (cdr cl) (1- n))))
(defun calc-handle-undo (list)
(and list
(when list
(let ((action (car list)))
(cond
((eq (car action) 'push)
@ -90,13 +94,13 @@
(defun calc-redo (n)
(interactive "p")
(and calc-executing-macro
(error "Use C-x e, not X, to run a keyboard macro that uses Redo."))
(when calc-executing-macro
(error "Use C-x e, not X, to run a keyboard macro that uses Redo"))
(if (<= n 0)
(calc-undo (- n))
(calc-wrapper
(if (null (nthcdr (1- n) calc-redo-list))
(error "Unable to redo"))
(when (null (nthcdr (1- n) calc-redo-list))
(error "Unable to redo"))
(setq calc-redo-list
(prog1
(nthcdr n calc-redo-list)
@ -107,18 +111,17 @@
(message "Redo!"))))
(defun calc-handle-redos (cl n)
(if (> n 0)
(progn
(let ((old-undo calc-undo-list))
(setq calc-undo-list nil)
(calc-handle-undo (car cl))
(setq calc-undo-list (append calc-undo-list old-undo)))
(calc-handle-redos (cdr cl) (1- n)))))
(when (> n 0)
(let ((old-undo calc-undo-list))
(setq calc-undo-list nil)
(calc-handle-undo (car cl))
(setq calc-undo-list (append calc-undo-list old-undo)))
(calc-handle-redos (cdr cl) (1- n))))
(defun calc-last-args (n)
(interactive "p")
(and calc-executing-macro
(error "Use C-x e, not X, to run a keyboard macro that uses last-args."))
(when calc-executing-macro
(error "Use C-x e, not X, to run a keyboard macro that uses last-args"))
(calc-wrapper
(let ((urec (calc-find-last-x calc-undo-list n)))
(if urec
@ -126,20 +129,20 @@
(error "Not enough undo information available")))))
(defun calc-handle-last-x (list)
(and list
(let ((action (car list)))
(if (eq (car action) 'pop)
(calc-pop-push-record-list 0 "larg"
(delq 'top-of-stack (nth 2 action))))
(calc-handle-last-x (cdr list)))))
(when list
(let ((action (car list)))
(if (eq (car action) 'pop)
(calc-pop-push-record-list 0 "larg"
(delq 'top-of-stack (nth 2 action))))
(calc-handle-last-x (cdr list)))))
(defun calc-find-last-x (ul n)
(and ul
(if (calc-undo-does-pushes (car ul))
(if (<= n 1)
(car ul)
(calc-find-last-x (cdr ul) (1- n)))
(calc-find-last-x (cdr ul) n))))
(when ul
(if (calc-undo-does-pushes (car ul))
(if (<= n 1)
(car ul)
(calc-find-last-x (cdr ul) (1- n)))
(calc-find-last-x (cdr ul) n))))
(defun calc-undo-does-pushes (list)
(and list

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-vec.el]
;;; calc-vec.el --- vector functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -33,8 +38,8 @@
(interactive "P")
(calc-wrapper
(message (if (calc-change-mode 'calc-display-strings n t t)
"Displaying vectors of integers as quoted strings."
"Displaying vectors of integers normally."))))
"Displaying vectors of integers as quoted strings"
"Displaying vectors of integers normally"))))
(defun calc-pack (n)
@ -204,6 +209,7 @@
(t
(error "Invalid packing mode: %d" mode))))
(defvar calc-unpack-with-type nil)
(defun calc-unpack (mode)
(interactive "P")
(calc-wrapper
@ -328,7 +334,6 @@
(error "Expected a floating-point number")))
(t
(error "Invalid unpacking mode: %d" mode))))
(setq calc-unpack-with-type nil)
(defun calc-diag (n)
(interactive "P")

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-yank.el]
;;; calc-yank.el --- kill-ring functionality for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -140,8 +145,8 @@
(defun calc-do-grab-region (top bot arg)
(and (memq major-mode '(calc-mode calc-trail-mode))
(error "This command works only in a regular text buffer."))
(when (memq major-mode '(calc-mode calc-trail-mode))
(error "This command works only in a regular text buffer"))
(let* ((from-buffer (current-buffer))
(calc-was-started (get-buffer-window "*Calculator*"))
(single nil)
@ -187,7 +192,7 @@
(defun calc-do-grab-rectangle (top bot arg &optional reduce)
(and (memq major-mode '(calc-mode calc-trail-mode))
(error "This command works only in a regular text buffer."))
(error "This command works only in a regular text buffer"))
(let* ((col1 (save-excursion (goto-char top) (current-column)))
(col2 (save-excursion (goto-char bot) (current-column)))
(from-buffer (current-buffer))
@ -195,8 +200,8 @@
data mat vals lnum pt pos)
(if (= col1 col2)
(save-excursion
(or (= col1 0)
(error "Point and mark must be at beginning of line, or define a rectangle"))
(unless (= col1 0)
(error "Point and mark must be at beginning of line, or define a rectangle"))
(goto-char top)
(while (< (point) bot)
(setq pt (point))
@ -207,8 +212,8 @@
(calc)
(setq mat (list 'vec)
lnum 0)
(and arg
(setq arg (if (consp arg) 0 (prefix-numeric-value arg))))
(when arg
(setq arg (if (consp arg) 0 (prefix-numeric-value arg))))
(while data
(if (natnump arg)
(progn
@ -243,8 +248,8 @@
vals (math-read-expr (concat "[" s "]")))
(if (eq (car-safe vals) 'error)
(let ((v2 (math-read-expr s)))
(or (eq (car-safe v2) 'error)
(setq vals (list 'vec v2)))))))))
(unless (eq (car-safe v2) 'error)
(setq vals (list 'vec v2)))))))))
(if (eq (car-safe vals) 'error)
(progn
(if calc-was-started
@ -255,8 +260,8 @@
(forward-line lnum)
(forward-char (+ (nth 1 vals) (min col1 col2) pos))
(error (nth 2 vals))))
(or (equal vals '(vec))
(setq mat (cons vals mat)))
(unless (equal vals '(vec))
(setq mat (cons vals mat)))
(setq data (cdr data)
lnum (1+ lnum)))
(calc-slow-wrapper
@ -334,22 +339,23 @@
(delete-char 4)
(setq n (1+ n)))
(forward-line n))))
(if thebuf (setq movept (point)))
(if (get-buffer-window (current-buffer))
(set-window-point (get-buffer-window (current-buffer))
(point)))))))
(if movept (goto-char movept))
(and (consp nn)
(not thebuf)
(progn
(calc-quit t)
(switch-to-buffer newbuf)))))
(when thebuf
(setq movept (point)))
(when (get-buffer-window (current-buffer))
(set-window-point (get-buffer-window (current-buffer))
(point)))))))
(when movept
(goto-char movept))
(when (and (consp nn)
(not thebuf))
(calc-quit t)
(switch-to-buffer newbuf))))
(defun calc-overwrite-string (str eat-lnums)
(if (string-match "\n\\'" str)
(setq str (substring str 0 -1)))
(if eat-lnums
(setq str (substring str 4)))
(when (string-match "\n\\'" str)
(setq str (substring str 0 -1)))
(when eat-lnums
(setq str (substring str 4)))
(if (and (string-match "\\`[-+]?[0-9.]+\\(e-?[0-9]+\\)?\\'" str)
(looking-at "[-+]?[0-9.]+\\(e-?[0-9]+\\)?"))
(progn
@ -385,8 +391,8 @@
(defun calc-edit (n)
(interactive "p")
(calc-slow-wrapper
(if (eq n 0)
(setq n (calc-stack-size)))
(when (eq n 0)
(setq n (calc-stack-size)))
(let* ((flag nil)
(allow-ret (> n 1))
(list (math-showing-full-precision
@ -425,8 +431,8 @@
"Calculator editing mode. Press RET, LFD, or C-c C-c to finish.
To cancel the edit, simply kill the *Calc Edit* buffer."
(interactive)
(or handler
(error "This command can be used only indirectly through calc-edit."))
(unless handler
(error "This command can be used only indirectly through calc-edit"))
(let ((oldbuf (current-buffer))
(buf (get-buffer-create "*Calc Edit*")))
(set-buffer buf)
@ -495,21 +501,21 @@ To cancel the edit, simply kill the *Calc Edit* buffer."
(boundp 'calc-edit-handler)
(boundp 'calc-restore-trail)
(eq major-mode 'calc-edit-mode))
(error "This command is valid only in buffers created by calc-edit."))
(error "This command is valid only in buffers created by calc-edit"))
(let ((buf (current-buffer))
(original calc-original-buffer)
(return calc-return-buffer)
(one-window calc-one-window)
(disp-trail calc-restore-trail))
(save-excursion
(if (or (null (buffer-name original))
(progn
(set-buffer original)
(not (eq major-mode 'calc-mode))))
(error "Original calculator buffer has been corrupted.")))
(when (or (null (buffer-name original))
(progn
(set-buffer original)
(not (eq major-mode 'calc-mode))))
(error "Original calculator buffer has been corrupted")))
(goto-char (point-min))
(if (looking-at "Calc Edit\\|Editing ")
(forward-line 1))
(when (looking-at "Calc Edit\\|Editing ")
(forward-line 1))
(if (buffer-modified-p)
(eval calc-edit-handler))
(if one-window
@ -545,11 +551,10 @@ To cancel the edit, simply kill the *Calc Edit* buffer."
(math-expr-opers math-standard-opers))
(and (string-match "[^\n\t ]" str)
(math-read-exprs str)))))
(if (eq (car-safe vals) 'error)
(progn
(switch-to-buffer buf)
(goto-char (+ start (nth 1 vals)))
(error (nth 2 vals))))
(when (eq (car-safe vals) 'error)
(switch-to-buffer buf)
(goto-char (+ start (nth 1 vals)))
(error (nth 2 vals)))
(calc-wrapper
(if (symbolp num)
(progn

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-alg-2.el]
;;; calcalg2.el --- more algebraic functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -32,7 +37,8 @@
(defun calc-derivative (var num)
(interactive "sDifferentiate with respect to: \np")
(calc-slow-wrapper
(and (< num 0) (error "Order of derivative must be positive"))
(when (< num 0)
(error "Order of derivative must be positive"))
(let ((func (if (calc-is-hyperbolic) 'calcFunc-tderiv 'calcFunc-deriv))
n expr)
(if (or (equal var "") (equal var "$"))
@ -40,8 +46,8 @@
expr (calc-top-n 2)
var (calc-top-n 1))
(setq var (math-read-expr var))
(if (eq (car-safe var) 'error)
(error "Bad format in expression: %s" (nth 1 var)))
(when (eq (car-safe var) 'error)
(error "Bad format in expression: %s" (nth 1 var)))
(setq n 1
expr (calc-top-n 1)))
(while (>= (setq num (1- num)) 0)
@ -592,14 +598,11 @@
(math-derivative (nth 2 expr)))))))
(setq math-integ-var '(var X ---))
(setq math-integ-var-2 '(var Y ---))
(setq math-integ-vars (list 'f math-integ-var math-integ-var-2))
(setq math-integ-var-list (list math-integ-var))
(setq math-integ-var-list-list (list math-integ-var-list))
(defvar math-integ-var '(var X ---))
(defvar math-integ-var-2 '(var Y ---))
(defvar math-integ-vars (list 'f math-integ-var math-integ-var-2))
(defvar math-integ-var-list (list math-integ-var))
(defvar math-integ-var-list-list (list math-integ-var-list))
(defmacro math-tracing-integral (&rest parts)
(list 'and
@ -1704,6 +1707,8 @@
(defvar math-tabulate-initial nil)
(defvar math-tabulate-function nil)
(defun calcFunc-table (expr var &optional low high step)
(or low (setq low '(neg (var inf var-inf)) high '(var inf var-inf)))
(or high (setq high low low 1))
@ -1761,9 +1766,6 @@
(list low high))
(and step (list step))))))
(setq math-tabulate-initial nil)
(setq math-tabulate-function nil)
(defun math-scan-for-limits (x)
(cond ((Math-primp x))
((and (eq (car x) 'calcFunc-subscr)
@ -1785,13 +1787,13 @@
(math-scan-for-limits (car x))))))
(defvar math-disable-sums nil)
(defun calcFunc-sum (expr var &optional low high step)
(if math-disable-sums (math-reject-arg))
(let* ((res (let* ((calc-internal-prec (+ calc-internal-prec 2)))
(math-sum-rec expr var low high step)))
(math-disable-sums t))
(math-normalize res)))
(setq math-disable-sums nil)
(defun math-sum-rec (expr var &optional low high step)
(or low (setq low '(neg (var inf var-inf)) high '(var inf var-inf)))
@ -1941,6 +1943,7 @@
(setq temp (list '* (car not-const) temp)))
temp)))))
(defvar math-sum-int-pow-cache (list '(0 1)))
;; Following is from CRC Math Tables, 27th ed, pp. 52-53.
(defun math-sum-integer-power (pow)
(let ((calc-prefer-frac t)
@ -1963,7 +1966,6 @@
(nconc math-sum-int-pow-cache (list (nreverse new)))
n (1+ n))))
(nth pow math-sum-int-pow-cache)))
(setq math-sum-int-pow-cache (list '(0 1)))
(defun math-to-exponentials (expr)
(and (consp expr)
@ -2013,13 +2015,13 @@
(cons (car expr) (mapcar 'math-to-exps (cdr expr))))))
(defvar math-disable-prods nil)
(defun calcFunc-prod (expr var &optional low high step)
(if math-disable-prods (math-reject-arg))
(let* ((res (let* ((calc-internal-prec (+ calc-internal-prec 2)))
(math-prod-rec expr var low high step)))
(math-disable-prods t))
(math-normalize res)))
(setq math-disable-prods nil)
(defun math-prod-rec (expr var &optional low high step)
(or low (setq low '(neg (var inf var-inf)) high '(var inf var-inf)))
@ -2165,6 +2167,7 @@
(defvar math-solve-ranges nil)
;;; Attempt to reduce lhs = rhs to solve-var = rhs', where solve-var appears
;;; in lhs but not in rhs or rhs'; return rhs'.
;;; Uses global values: solve-*.
@ -2311,7 +2314,6 @@
(calc-record-why "*No inverse known" lhs)
nil))))
(setq math-solve-ranges nil)
(defun math-try-solve-prod ()
(cond ((eq (car lhs) '*)
@ -2656,6 +2658,8 @@
(math-div a 4))))
nil t))
(defvar math-symbolic-solve nil)
(defvar math-int-coefs nil)
(defun math-poly-all-roots (var p &optional math-factoring)
(catch 'ouch
(let* ((math-symbolic-solve calc-symbolic-mode)
@ -2750,7 +2754,6 @@
vec
(math-solve-get-int 1 (1- (length orig-p)) 1))
vec))))))
(setq math-symbolic-solve nil)
(defun math-lcm-denoms (&rest fracs)
(let ((den 1))
@ -2870,7 +2873,6 @@
(math-mul (math-sqrt (math-sub (math-sqr aa)
rnd0))
(if (math-negp xim) -1 1)))))))))))
(setq math-int-coefs nil)
;;; The following routine is from Numerical Recipes, section 9.5.
(defun math-poly-laguerre-root (p x polish)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-alg-3.el]
;;; calcalg3.el --- more algebraic functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -601,9 +606,9 @@
(set (nth 2 (aref math-root-vars m)) (car p)))
(setq expr-val (math-evaluate-expr expr)
jacob-val (math-evaluate-expr jacob))
(or (and (math-constp expr-val)
(math-constp jacob-val))
(math-reject-arg guess "*Newton's method encountered a singularity"))
(unless (and (math-constp expr-val)
(math-constp jacob-val))
(math-reject-arg guess "*Newton's method encountered a singularity"))
(setq next (math-add guess (math-div (math-float (math-neg expr-val))
(math-float jacob-val)))
p guess p2 next)
@ -626,10 +631,10 @@
(var-DUMMY nil)
(jacob (list 'vec))
p p2 m row)
(or (eq (car-safe var) 'vec)
(math-reject-arg var 'vectorp))
(or (= (length var) (1+ n))
(math-dimension-error))
(unless (eq (car-safe var) 'vec)
(math-reject-arg var 'vectorp))
(unless (= (length var) (1+ n))
(math-dimension-error))
(setq expr (copy-sequence expr))
(while (>= n (length math-root-vars))
(let ((symb (intern (concat "math-root-v"
@ -648,10 +653,10 @@
(while (setq p2 (cdr p2))
(setcar p2 (math-expr-subst (car p2) (car p)
(aref math-root-vars m)))))
(or (eq (car-safe guess) 'vec)
(math-reject-arg guess 'vectorp))
(or (= (length guess) (1+ n))
(math-dimension-error))
(unless (eq (car-safe guess) 'vec)
(math-reject-arg guess 'vectorp))
(unless (= (length guess) (1+ n))
(math-dimension-error))
(setq guess (copy-sequence guess)
p guess)
(while (setq p (cdr p))
@ -677,10 +682,10 @@
(setq m (math-abs-approx guess))
(math-newton-multi expr jacob n guess guess
(if (math-zerop m) '(float 1 3) (math-mul m 10))))
(or (eq (car-safe var) 'var)
(math-reject-arg var "*Expected a variable"))
(or (math-expr-contains expr var)
(math-reject-arg expr "*Formula does not contain specified variable"))
(unless (eq (car-safe var) 'var)
(math-reject-arg var "*Expected a variable"))
(unless (math-expr-contains expr var)
(math-reject-arg expr "*Formula does not contain specified variable"))
(if (assq (car expr) calc-tweak-eqn-table)
(setq expr (math-sub (nth 1 expr) (nth 2 expr))))
(math-with-extra-prec 2
@ -758,6 +763,7 @@
a
(math-reject-arg a 'realp))))
(defvar math-min-or-max "minimum")
;;; A bracket for a minimum is a < b < c where f(b) < f(a) and f(b) < f(c).
@ -1145,7 +1151,6 @@
(if isvec
(list 'vec vec (nth 2 res))
(list 'vec (nth 1 vec) (nth 2 res)))))))
(setq math-min-or-max "minimum")
(defun calcFunc-minimize (expr var guess)
(let ((calc-internal-prec (max (/ calc-internal-prec 2) 3))
@ -1390,9 +1395,8 @@
;;; The following algorithms come from Numerical Recipes, chapter 14.
(setq math-dummy-vars [(var DUMMY var-DUMMY)])
(setq math-dummy-counter 0)
(defvar math-dummy-vars [(var DUMMY var-DUMMY)])
(defvar math-dummy-counter 0)
(defun math-dummy-variable ()
(if (= math-dummy-counter (length math-dummy-vars))
(let ((symb (intern (format "math-dummy-%d" math-dummy-counter))))
@ -1403,7 +1407,8 @@
(aref math-dummy-vars math-dummy-counter)
(setq math-dummy-counter (1+ math-dummy-counter))))
(defvar math-in-fit 0)
(defvar calc-fit-to-trail nil)
(defun calcFunc-fit (expr vars &optional coefs data)
(let ((math-in-fit 10))
@ -1708,8 +1713,6 @@
'(var nan var-nan)))
expr))))
(setq math-in-fit 0)
(setq calc-fit-to-trail nil)
(defun calcFunc-fitvar (x)
(if (>= math-in-fit 2)

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-comp.el]
;;; calccomp.el --- composition functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)
@ -28,6 +33,13 @@
(defun calc-Need-calc-comp () nil)
(defconst math-eqn-special-funcs
'( calcFunc-log
calcFunc-ln calcFunc-exp
calcFunc-sin calcFunc-cos calcFunc-tan
calcFunc-sinh calcFunc-cosh calcFunc-tanh
calcFunc-arcsin calcFunc-arccos calcFunc-arctan
calcFunc-arcsinh calcFunc-arccosh calcFunc-arctanh))
;;; A "composition" has one of the following forms:
;;;
@ -880,15 +892,6 @@
0)
right)))))))))
(defconst math-eqn-special-funcs
'( calcFunc-log
calcFunc-ln calcFunc-exp
calcFunc-sin calcFunc-cos calcFunc-tan
calcFunc-sinh calcFunc-cosh calcFunc-tanh
calcFunc-arcsin calcFunc-arccos calcFunc-arctan
calcFunc-arcsinh calcFunc-arccosh calcFunc-arctanh
))
(defun math-prod-first-term (x)
(while (eq (car-safe x) '*)
@ -993,6 +996,17 @@
(<= (nth 1 (car a)) 255)))))
(null a))
(defconst math-vector-to-string-chars '( ( ?\" . "\\\"" )
( ?\\ . "\\\\" )
( ?\a . "\\a" )
( ?\b . "\\b" )
( ?\e . "\\e" )
( ?\f . "\\f" )
( ?\n . "\\n" )
( ?\r . "\\r" )
( ?\t . "\\t" )
( ?\^? . "\\^?" )))
(defun math-vector-to-string (a &optional quoted)
(setq a (concat (mapcar (function (lambda (x) (if (consp x) (nth 1 x) x)))
(cdr a))))
@ -1015,17 +1029,7 @@
(if quoted
(concat "\"" a "\"")
a))
(defconst math-vector-to-string-chars '( ( ?\" . "\\\"" )
( ?\\ . "\\\\" )
( ?\a . "\\a" )
( ?\b . "\\b" )
( ?\e . "\\e" )
( ?\f . "\\f" )
( ?\n . "\\n" )
( ?\r . "\\r" )
( ?\t . "\\t" )
( ?\^? . "\\^?" )
))
(defun math-to-underscores (x)
(if (string-match "\\`\\(.*\\)#\\(.*\\)\\'" x)
@ -1067,38 +1071,38 @@
(put 'calcFunc-deriv 'math-compose-big 'math-compose-deriv)
(put 'calcFunc-tderiv 'math-compose-big 'math-compose-deriv)
(defun math-compose-deriv (a prec)
(and (= (length a) 3)
(math-compose-expr (list '/
(list 'calcFunc-choriz
(list 'vec
'(calcFunc-string (vec ?d))
(nth 1 a)))
(list 'calcFunc-choriz
(list 'vec
'(calcFunc-string (vec ?d))
(nth 2 a))))
prec)))
(when (= (length a) 3)
(math-compose-expr (list '/
(list 'calcFunc-choriz
(list 'vec
'(calcFunc-string (vec ?d))
(nth 1 a)))
(list 'calcFunc-choriz
(list 'vec
'(calcFunc-string (vec ?d))
(nth 2 a))))
prec)))
(put 'calcFunc-sqrt 'math-compose-big 'math-compose-sqrt)
(defun math-compose-sqrt (a prec)
(and (= (length a) 2)
(let* ((c (math-compose-expr (nth 1 a) 0))
(a (math-comp-ascent c))
(d (math-comp-descent c))
(h (+ a d))
(w (math-comp-width c)))
(list 'vleft
a
(concat (if (= h 1) " " " ")
(make-string (+ w 2) ?\_))
(list 'horiz
(if (= h 1)
"V"
(append (list 'vleft (1- a))
(make-list (1- h) " |")
'("\\|")))
" "
c)))))
(when (= (length a) 2)
(let* ((c (math-compose-expr (nth 1 a) 0))
(a (math-comp-ascent c))
(d (math-comp-descent c))
(h (+ a d))
(w (math-comp-width c)))
(list 'vleft
a
(concat (if (= h 1) " " " ")
(make-string (+ w 2) ?\_))
(list 'horiz
(if (= h 1)
"V"
(append (list 'vleft (1- a))
(make-list (1- h) " |")
'("\\|")))
" "
c)))))
(put 'calcFunc-choose 'math-compose-big 'math-compose-choose)
(defun math-compose-choose (a prec)
@ -1245,6 +1249,9 @@
(math-vert-comp-to-string
(math-comp-simplify c width)))))
(defvar math-comp-buf-string (make-vector 10 ""))
(defvar math-comp-buf-margin (make-vector 10 0))
(defvar math-comp-buf-level (make-vector 10 0))
(defun math-comp-is-flat (c) ; check if c's height is 1.
(cond ((not (consp c)) t)
((memq (car c) '(set break)) t)
@ -1292,9 +1299,6 @@
(setq prefix " "))
(setq prefix "\n"))))
(concat comp-buf prefix str)))))
(setq math-comp-buf-string (make-vector 10 ""))
(setq math-comp-buf-margin (make-vector 10 0))
(setq math-comp-buf-level (make-vector 10 0))
(defun math-comp-to-string-flat-term (c)
(cond ((not (consp c))

View File

@ -1,6 +1,9 @@
;; Calculator for GNU Emacs, part II [calc-sel-2.el]
;;; calcsel2.el --- selection functions for Calc
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Written by Dave Gillespie, daveg@synaptics.com.
;; Author: David Gillespie <daveg@synaptics.com>
;; Maintainer: Colin Walters <walters@debian.org>
;; This file is part of GNU Emacs.
@ -19,7 +22,9 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;; Commentary:
;;; Code:
;; This file is autoloaded from calc-ext.el.
(require 'calc-ext)