aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Belanger2007-12-29 05:33:52 +0000
committerJay Belanger2007-12-29 05:33:52 +0000
commit13eb7df084c191316e1fe4e65a92ceeb1bb08f41 (patch)
treea7222068eb11d01ef85249c6d893b27018f82acd
parent591b5f7a3accf5738e427a7393416ea3b6219f15 (diff)
downloademacs-13eb7df084c191316e1fe4e65a92ceeb1bb08f41.tar.gz
emacs-13eb7df084c191316e1fe4e65a92ceeb1bb08f41.zip
(calc-arithmetic-menu, calc-scientific-function-menu)
(calc-algebra-menu, calc-graphics-menu, calc-vectors-menu) (calc-units-menu, calc-variables-menu, calc-stack-menu): Add :active keywords. (calc-modes-menu): Add complex formats, remaining languages.
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/calc/calc-menu.el358
2 files changed, 280 insertions, 82 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index ead63374b10..20e1d0a224b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -29,6 +29,10 @@
29 * calc/calc-help.el (calc-d-prefix-help): Add new languages. 29 * calc/calc-help.el (calc-d-prefix-help): Add new languages.
30 30
31 * calc/calc-menu.el (calc-modes-menu): Add new languages. 31 * calc/calc-menu.el (calc-modes-menu): Add new languages.
32 (calc-arithmetic-menu, calc-scientific-function-menu)
33 (calc-algebra-menu, calc-graphics-menu, calc-vectors-menu)
34 (calc-units-menu, calc-variables-menu, calc-stack-menu):
35 Add :active keywords.
32 36
332007-12-28 Dan Nicolaescu <dann@ics.uci.edu> 372007-12-28 Dan Nicolaescu <dann@ics.uci.edu>
34 38
diff --git a/lisp/calc/calc-menu.el b/lisp/calc/calc-menu.el
index dd9ec9a2542..ca67b65abfa 100644
--- a/lisp/calc/calc-menu.el
+++ b/lisp/calc/calc-menu.el
@@ -26,46 +26,58 @@
26(defvar calc-arithmetic-menu 26(defvar calc-arithmetic-menu
27 (list "Arithmetic" 27 (list "Arithmetic"
28 (list "Basic" 28 (list "Basic"
29 ["-(1:)" calc-change-sign :keys "n"] 29 ["-(1:)" calc-change-sign
30 ["(2:) + (1:)" calc-plus :keys "+"] 30 :keys "n" :active (>= (calc-stack-size) 1)]
31 ["(2:) - (1:)" calc-minus :keys "-"] 31 ["(2:) + (1:)" calc-plus
32 ["(2:) * (1:)" calc-times :keys "*"] 32 :keys "+" :active (>= (calc-stack-size) 2)]
33 ["(2:) / (1:)" calc-divide :keys "/"] 33 ["(2:) - (1:)" calc-minus
34 ["(2:) ^ (1:)" calc-power :keys "^"] 34 :keys "-" :active (>= (calc-stack-size) 2)]
35 ["(2:) * (1:)" calc-times
36 :keys "*" :active (>= (calc-stack-size) 2)]
37 ["(2:) / (1:)" calc-divide
38 :keys "/" :active (>= (calc-stack-size) 2)]
39 ["(2:) ^ (1:)" calc-power
40 :keys "^" :active (>= (calc-stack-size) 2)]
35 ["(2:) ^ (1/(1:))" 41 ["(2:) ^ (1/(1:))"
36 (progn 42 (progn
37 (require 'calc-ext) 43 (require 'calc-ext)
38 (let ((calc-inverse-flag t)) 44 (let ((calc-inverse-flag t))
39 (call-interactively 'calc-power))) 45 (call-interactively 'calc-power)))
40 :keys "I ^" 46 :keys "I ^"
47 :active (>= (calc-stack-size) 2)
41 :help "The (1:)th root of (2:)"] 48 :help "The (1:)th root of (2:)"]
42 ["abs(1:)" 49 ["abs(1:)"
43 (progn 50 (progn
44 (require 'calc-arith) 51 (require 'calc-arith)
45 (call-interactively 'calc-abs)) 52 (call-interactively 'calc-abs))
46 :keys "A" 53 :keys "A"
54 :active (>= (calc-stack-size) 1)
47 :help "Absolute value"] 55 :help "Absolute value"]
48 ["1/(1:)" 56 ["1/(1:)"
49 (progn 57 (progn
50 (require 'calc-arith) 58 (require 'calc-arith)
51 (call-interactively 'calc-inv)) 59 (call-interactively 'calc-inv))
52 :keys "&"] 60 :keys "&"
61 :active (>= (calc-stack-size) 1)]
53 ["sqrt(1:)" 62 ["sqrt(1:)"
54 (progn 63 (progn
55 (require 'calc-math) 64 (require 'calc-math)
56 (call-interactively 'calc-sqrt)) 65 (call-interactively 'calc-sqrt))
57 :keys "Q"] 66 :keys "Q"
67 :active (>= (calc-stack-size) 1)]
58 ["idiv(2:,1:)" 68 ["idiv(2:,1:)"
59 (progn 69 (progn
60 (require 'calc-arith) 70 (require 'calc-arith)
61 (call-interactively 'calc-idiv)) 71 (call-interactively 'calc-idiv))
62 :keys "\\" 72 :keys "\\"
73 :active (>= (calc-stack-size) 2)
63 :help "The integer quotient of (2:) over (1:)"] 74 :help "The integer quotient of (2:) over (1:)"]
64 ["(2:) mod (1:)" 75 ["(2:) mod (1:)"
65 (progn 76 (progn
66 (require 'calc-misc) 77 (require 'calc-misc)
67 (call-interactively 'calc-mod)) 78 (call-interactively 'calc-mod))
68 :keys "%" 79 :keys "%"
80 :active (>= (calc-stack-size) 2)
69 :help "The remainder when (2:) is divided by (1:)"]) 81 :help "The remainder when (2:) is divided by (1:)"])
70 (list "Rounding" 82 (list "Rounding"
71 ["floor(1:)" 83 ["floor(1:)"
@@ -73,64 +85,75 @@
73 (require 'calc-arith) 85 (require 'calc-arith)
74 (call-interactively 'calc-floor)) 86 (call-interactively 'calc-floor))
75 :keys "F" 87 :keys "F"
88 :active (>= (calc-stack-size) 1)
76 :help "The greatest integer less than or equal to (1:)"] 89 :help "The greatest integer less than or equal to (1:)"]
77 ["ceiling(1:)" 90 ["ceiling(1:)"
78 (progn 91 (progn
79 (require 'calc-arith) 92 (require 'calc-arith)
80 (call-interactively 'calc-ceiling)) 93 (call-interactively 'calc-ceiling))
81 :keys "I F" 94 :keys "I F"
95 :active (>= (calc-stack-size) 1)
82 :help "The smallest integer greater than or equal to (1:)"] 96 :help "The smallest integer greater than or equal to (1:)"]
83 ["round(1:)" 97 ["round(1:)"
84 (progn 98 (progn
85 (require 'calc-arith) 99 (require 'calc-arith)
86 (call-interactively 'calc-round)) 100 (call-interactively 'calc-round))
87 :keys "R" 101 :keys "R"
102 :active (>= (calc-stack-size) 1)
88 :help "The nearest integer to (1:)"] 103 :help "The nearest integer to (1:)"]
89 ["truncate(1:)" 104 ["truncate(1:)"
90 (progn 105 (progn
91 (require 'calc-arith) 106 (require 'calc-arith)
92 (call-interactively 'calc-trunc)) 107 (call-interactively 'calc-trunc))
93 :keys "I R" 108 :keys "I R"
109 :active (>= (calc-stack-size) 1)
94 :help "The integer part of (1:)"]) 110 :help "The integer part of (1:)"])
95 (list "Complex Numbers" 111 (list "Complex Numbers"
96 ["Re(1:)" 112 ["Re(1:)"
97 (progn 113 (progn
98 (require 'calc-cplx) 114 (require 'calc-cplx)
99 (call-interactively 'calc-re)) 115 (call-interactively 'calc-re))
100 :keys "f r"] 116 :keys "f r"
117 :active (>= (calc-stack-size) 1)]
101 ["Im(1:)" 118 ["Im(1:)"
102 (progn 119 (progn
103 (require 'calc-cplx) 120 (require 'calc-cplx)
104 (call-interactively 'calc-im)) 121 (call-interactively 'calc-im))
105 :keys "f i"] 122 :keys "f i"
123 :active (>= (calc-stack-size) 1)]
106 ["conj(1:)" 124 ["conj(1:)"
107 (progn 125 (progn
108 (require 'calc-cplx) 126 (require 'calc-cplx)
109 (call-interactively 'calc-conj)) 127 (call-interactively 'calc-conj))
110 :keys "J" 128 :keys "J"
129 :active (>= (calc-stack-size) 1)
111 :help "The complex conjugate of (1:)"] 130 :help "The complex conjugate of (1:)"]
112 ["length(1:)" 131 ["length(1:)"
113 (progn (require 'calc-arith) 132 (progn (require 'calc-arith)
114 (call-interactively 'calc-abs)) 133 (call-interactively 'calc-abs))
115 :keys "A" 134 :keys "A"
135 :active (>= (calc-stack-size) 1)
116 :help "The length (absolute value) of (1:)"] 136 :help "The length (absolute value) of (1:)"]
117 ["arg(1:)" 137 ["arg(1:)"
118 (progn 138 (progn
119 (require 'calc-cplx) 139 (require 'calc-cplx)
120 (call-interactively 'calc-argument)) 140 (call-interactively 'calc-argument))
121 :keys "G" 141 :keys "G"
142 :active (>= (calc-stack-size) 1)
122 :help "The argument (polar angle) of (1:)"]) 143 :help "The argument (polar angle) of (1:)"])
123 (list "Conversion" 144 (list "Conversion"
124 ["Convert (1:) to a float" 145 ["Convert (1:) to a float"
125 (progn 146 (progn
126 (require 'calc-ext) 147 (require 'calc-ext)
127 (call-interactively 'calc-float)) 148 (call-interactively 'calc-float))
128 :keys "c f"] 149 :keys "c f"
150 :active (>= (calc-stack-size) 1)]
129 ["Convert (1:) to a fraction" 151 ["Convert (1:) to a fraction"
130 (progn 152 (progn
131 (require 'calc-ext) 153 (require 'calc-ext)
132 (call-interactively 'calc-fraction)) 154 (call-interactively 'calc-fraction))
133 :keys "c F"]) 155 :keys "c F"
156 :active (>= (calc-stack-size) 1)])
134 (list "Binary" 157 (list "Binary"
135 ["Set word size" 158 ["Set word size"
136 (progn 159 (progn
@@ -142,60 +165,70 @@
142 (require 'calc-bin) 165 (require 'calc-bin)
143 (call-interactively 'calc-clip)) 166 (call-interactively 'calc-clip))
144 :keys "b c" 167 :keys "b c"
168 :active (>= (calc-stack-size) 1)
145 :help "Reduce (1:) modulo 2^wordsize"] 169 :help "Reduce (1:) modulo 2^wordsize"]
146 ["(2:) and (1:)" 170 ["(2:) and (1:)"
147 (progn 171 (progn
148 (require 'calc-bin) 172 (require 'calc-bin)
149 (call-interactively 'calc-and)) 173 (call-interactively 'calc-and))
150 :keys "b a" 174 :keys "b a"
175 :active (>= (calc-stack-size) 2)
151 :help "Bitwise AND [modulo 2^wordsize]"] 176 :help "Bitwise AND [modulo 2^wordsize]"]
152 ["(2:) or (1:)" 177 ["(2:) or (1:)"
153 (progn 178 (progn
154 (require 'calc-bin) 179 (require 'calc-bin)
155 (call-interactively 'calc-or)) 180 (call-interactively 'calc-or))
156 :keys "b o" 181 :keys "b o"
182 :active (>= (calc-stack-size) 2)
157 :help "Bitwise inclusive OR [modulo 2^wordsize]"] 183 :help "Bitwise inclusive OR [modulo 2^wordsize]"]
158 ["(2:) xor (1:)" 184 ["(2:) xor (1:)"
159 (progn 185 (progn
160 (require 'calc-bin) 186 (require 'calc-bin)
161 (call-interactively 'calc-xor)) 187 (call-interactively 'calc-xor))
162 :keys "b x" 188 :keys "b x"
189 :active (>= (calc-stack-size) 2)
163 :help "Bitwise exclusive OR [modulo 2^wordsize]"] 190 :help "Bitwise exclusive OR [modulo 2^wordsize]"]
164 ["diff(2:,1:)" 191 ["diff(2:,1:)"
165 (progn 192 (progn
166 (require 'calc-bin) 193 (require 'calc-bin)
167 (call-interactively 'calc-diff)) 194 (call-interactively 'calc-diff))
168 :keys "b d" 195 :keys "b d"
196 :active (>= (calc-stack-size) 2)
169 :help "Bitwise difference [modulo 2^wordsize]"] 197 :help "Bitwise difference [modulo 2^wordsize]"]
170 ["not (1:)" 198 ["not (1:)"
171 (progn 199 (progn
172 (require 'calc-bin) 200 (require 'calc-bin)
173 (call-interactively 'calc-not)) 201 (call-interactively 'calc-not))
174 :keys "b n" 202 :keys "b n"
203 :active (>= (calc-stack-size) 1)
175 :help "Bitwise NOT [modulo 2^wordsize]"] 204 :help "Bitwise NOT [modulo 2^wordsize]"]
176 ["left shift(1:)" 205 ["left shift(1:)"
177 (progn 206 (progn
178 (require 'calc-bin) 207 (require 'calc-bin)
179 (call-interactively 'calc-lshift-binary)) 208 (call-interactively 'calc-lshift-binary))
180 :keys "b l" 209 :keys "b l"
210 :active (>= (calc-stack-size) 1)
181 :help "Shift (1:)[modulo 2^wordsize] one bit left"] 211 :help "Shift (1:)[modulo 2^wordsize] one bit left"]
182 ["right shift(1:)" 212 ["right shift(1:)"
183 (progn 213 (progn
184 (require 'calc-bin) 214 (require 'calc-bin)
185 (call-interactively 'calc-rshift-binary)) 215 (call-interactively 'calc-rshift-binary))
186 :keys "b r" 216 :keys "b r"
217 :active (>= (calc-stack-size) 1)
187 :help "Shift (1:)[modulo 2^wordsize] one bit right, putting 0s on the left"] 218 :help "Shift (1:)[modulo 2^wordsize] one bit right, putting 0s on the left"]
188 ["arithmetic right shift(1:)" 219 ["arithmetic right shift(1:)"
189 (progn 220 (progn
190 (require 'calc-bin) 221 (require 'calc-bin)
191 (call-interactively 'calc-rshift-arith)) 222 (call-interactively 'calc-rshift-arith))
192 :keys "b R" 223 :keys "b R"
224 :active (>= (calc-stack-size) 1)
193 :help "Shift (1:)[modulo 2^wordsize] one bit right, duplicating the leftmost bit"] 225 :help "Shift (1:)[modulo 2^wordsize] one bit right, duplicating the leftmost bit"]
194 ["rotate(1:)" 226 ["rotate(1:)"
195 (progn 227 (progn
196 (require 'calc-bin) 228 (require 'calc-bin)
197 (call-interactively 'calc-rotate-binary)) 229 (call-interactively 'calc-rotate-binary))
198 :keys "b t" 230 :keys "b t"
231 :active (>= (calc-stack-size) 1)
199 :help "Rotate (1:)[modulo 2^wordsize] one bit left"]) 232 :help "Rotate (1:)[modulo 2^wordsize] one bit left"])
200 "-------" 233 "-------"
201 ["Help on Arithmetic" 234 ["Help on Arithmetic"
@@ -237,69 +270,82 @@
237 (require 'calc-math) 270 (require 'calc-math)
238 (call-interactively 'calc-ln)) 271 (call-interactively 'calc-ln))
239 :keys "L" 272 :keys "L"
273 :active (>= (calc-stack-size) 1)
240 :help "The natural logarithm"] 274 :help "The natural logarithm"]
241 ["e^(1:)" 275 ["e^(1:)"
242 (progn 276 (progn
243 (require 'calc-math) 277 (require 'calc-math)
244 (call-interactively 'calc-exp)) 278 (call-interactively 'calc-exp))
245 :keys "E"] 279 :keys "E"
280 :active (>= (calc-stack-size) 1)]
246 ["log(1:) [base 10]" 281 ["log(1:) [base 10]"
247 (progn 282 (progn
248 (require 'calc-math) 283 (require 'calc-math)
249 (call-interactively 'calc-log10)) 284 (call-interactively 'calc-log10))
250 :keys "H L" 285 :keys "H L"
286 :active (>= (calc-stack-size) 1)
251 :help "The common logarithm"] 287 :help "The common logarithm"]
252 ["10^(1:)" 288 ["10^(1:)"
253 (progn 289 (progn
254 (require 'calc-math) 290 (require 'calc-math)
255 (let ((calc-inverse-flag t)) 291 (let ((calc-inverse-flag t))
256 (call-interactively 'calc-log10))) 292 (call-interactively 'calc-log10)))
257 :keys "I H L"] 293 :keys "I H L"
294 :active (>= (calc-stack-size) 1)]
258 ["log(2:) [base(1:)]" 295 ["log(2:) [base(1:)]"
259 (progn 296 (progn
260 (require 'calc-math) 297 (require 'calc-math)
261 (call-interactively 'calc-log)) 298 (call-interactively 'calc-log))
262 :keys "B" 299 :keys "B"
300 :active (>= (calc-stack-size) 2)
263 :help "The logarithm with an arbitrary base"] 301 :help "The logarithm with an arbitrary base"]
264 ["(2:) ^ (1:)" 302 ["(2:) ^ (1:)"
265 calc-power 303 calc-power
266 :keys "^"]) 304 :keys "^"
305 :active (>= (calc-stack-size) 2)])
267 (list "Trigonometric Functions" 306 (list "Trigonometric Functions"
268 ["sin(1:)" 307 ["sin(1:)"
269 (progn 308 (progn
270 (require 'calc-math) 309 (require 'calc-math)
271 (call-interactively 'calc-sin)) 310 (call-interactively 'calc-sin))
272 :keys "S"] 311 :keys "S"
312 :active (>= (calc-stack-size) 1)]
273 ["cos(1:)" 313 ["cos(1:)"
274 (progn 314 (progn
275 (require 'calc-math) 315 (require 'calc-math)
276 (call-interactively 'calc-cos)) 316 (call-interactively 'calc-cos))
277 :keys "C"] 317 :keys "C"
318 :active (>= (calc-stack-size) 1)]
278 ["tan(1:)" 319 ["tan(1:)"
279 (progn 320 (progn
280 (require 'calc-math) 321 (require 'calc-math)
281 (call-interactively 'calc-tan)) 322 (call-interactively 'calc-tan))
282 :keys "T"] 323 :keys "T"
324 :active (>= (calc-stack-size) 1)]
283 ["arcsin(1:)" 325 ["arcsin(1:)"
284 (progn 326 (progn
285 (require 'calc-math) 327 (require 'calc-math)
286 (call-interactively 'calc-arcsin)) 328 (call-interactively 'calc-arcsin))
287 :keys "I S"] 329 :keys "I S"
330 :active (>= (calc-stack-size) 1)]
288 ["arccos(1:)" 331 ["arccos(1:)"
289 (progn 332 (progn
290 (require 'calc-math) 333 (require 'calc-math)
291 (call-interactively 'calc-arccos)) 334 (call-interactively 'calc-arccos))
292 :keys "I C"] 335 :keys "I C"
336 :active (>= (calc-stack-size) 1)]
293 ["arctan(1:)" 337 ["arctan(1:)"
294 (progn 338 (progn
295 (require 'calc-math) 339 (require 'calc-math)
296 (call-interactively 'calc-arctan)) 340 (call-interactively 'calc-arctan))
297 :keys "I T"] 341 :keys "I T"
342 :active (>= (calc-stack-size) 1)]
298 ["arctan2(2:,1:)" 343 ["arctan2(2:,1:)"
299 (progn 344 (progn
300 (require 'calc-math) 345 (require 'calc-math)
301 (call-interactively 'calc-arctan2)) 346 (call-interactively 'calc-arctan2))
302 :keys "f T"] 347 :keys "f T"
348 :active (>= (calc-stack-size) 2)]
303 "--Angle Measure--" 349 "--Angle Measure--"
304 ["Radians" 350 ["Radians"
305 (progn 351 (progn
@@ -327,133 +373,157 @@
327 (progn 373 (progn
328 (require 'calc-math) 374 (require 'calc-math)
329 (call-interactively 'calc-sinh)) 375 (call-interactively 'calc-sinh))
330 :keys "H S"] 376 :keys "H S"
377 :active (>= (calc-stack-size) 1)]
331 ["cosh(1:)" 378 ["cosh(1:)"
332 (progn 379 (progn
333 (require 'calc-math) 380 (require 'calc-math)
334 (call-interactively 'calc-cosh)) 381 (call-interactively 'calc-cosh))
335 :keys "H C"] 382 :keys "H C"
383 :active (>= (calc-stack-size) 1)]
336 ["tanh(1:)" 384 ["tanh(1:)"
337 (progn 385 (progn
338 (require 'calc-math) 386 (require 'calc-math)
339 (call-interactively 'calc-tanh)) 387 (call-interactively 'calc-tanh))
340 :keys "H T"] 388 :keys "H T"
389 :active (>= (calc-stack-size) 1)]
341 ["arcsinh(1:)" 390 ["arcsinh(1:)"
342 (progn 391 (progn
343 (require 'calc-math) 392 (require 'calc-math)
344 (call-interactively 'calc-arcsinh)) 393 (call-interactively 'calc-arcsinh))
345 :keys "I H S"] 394 :keys "I H S"
395 :active (>= (calc-stack-size) 1)]
346 ["arccosh(1:)" 396 ["arccosh(1:)"
347 (progn 397 (progn
348 (require 'calc-math) 398 (require 'calc-math)
349 (call-interactively 'calc-arccosh)) 399 (call-interactively 'calc-arccosh))
350 :keys "I H C"] 400 :keys "I H C"
401 :active (>= (calc-stack-size) 1)]
351 ["arctanh(1:)" 402 ["arctanh(1:)"
352 (progn 403 (progn
353 (require 'calc-math) 404 (require 'calc-math)
354 (call-interactively 'calc-arctanh)) 405 (call-interactively 'calc-arctanh))
355 :keys "I H T"]) 406 :keys "I H T"
407 :active (>= (calc-stack-size) 1)])
356 (list "Advanced Math Functions" 408 (list "Advanced Math Functions"
357 ["Gamma(1:)" 409 ["Gamma(1:)"
358 (progn 410 (progn
359 (require 'calc-comb) 411 (require 'calc-comb)
360 (call-interactively 'calc-gamma)) 412 (call-interactively 'calc-gamma))
361 :keys "f g" 413 :keys "f g"
414 :active (>= (calc-stack-size) 1)
362 :help "The Euler Gamma function"] 415 :help "The Euler Gamma function"]
363 ["GammaP(2:,1:)" 416 ["GammaP(2:,1:)"
364 (progn 417 (progn
365 (require 'calc-funcs) 418 (require 'calc-funcs)
366 (call-interactively 'calc-inc-gamma)) 419 (call-interactively 'calc-inc-gamma))
367 :keys "f G" 420 :keys "f G"
421 :active (>= (calc-stack-size) 2)
368 :help "The lower incomplete Gamma function"] 422 :help "The lower incomplete Gamma function"]
369 ["Beta(2:,1:)" 423 ["Beta(2:,1:)"
370 (progn 424 (progn
371 (require 'calc-funcs) 425 (require 'calc-funcs)
372 (call-interactively 'calc-beta)) 426 (call-interactively 'calc-beta))
373 :keys "f b" 427 :keys "f b"
428 :active (>= (calc-stack-size) 2)
374 :help "The Euler Beta function"] 429 :help "The Euler Beta function"]
375 ["BetaI(3:,2:,1:)" 430 ["BetaI(3:,2:,1:)"
376 (progn 431 (progn
377 (require 'calc-funcs) 432 (require 'calc-funcs)
378 (call-interactively 'calc-inc-beta)) 433 (call-interactively 'calc-inc-beta))
379 :keys "f B" 434 :keys "f B"
435 :active (>= (calc-stack-size) 3)
380 :help "The incomplete Beta function"] 436 :help "The incomplete Beta function"]
381 ["erf(1:)" 437 ["erf(1:)"
382 (progn 438 (progn
383 (require 'calc-funcs) 439 (require 'calc-funcs)
384 (call-interactively 'calc-erf)) 440 (call-interactively 'calc-erf))
385 :keys "f e" 441 :keys "f e"
442 :active (>= (calc-stack-size) 1)
386 :help "The error function"] 443 :help "The error function"]
387 ["BesselJ(2:,1:)" 444 ["BesselJ(2:,1:)"
388 (progn 445 (progn
389 (require 'calc-funcs) 446 (require 'calc-funcs)
390 (call-interactively 'calc-bessel-J)) 447 (call-interactively 'calc-bessel-J))
391 :keys "f j" 448 :keys "f j"
449 :active (>= (calc-stack-size) 2)
392 :help "The Bessel function of the first kind (of order (2:))"] 450 :help "The Bessel function of the first kind (of order (2:))"]
393 ["BesselY(2:,1:)" 451 ["BesselY(2:,1:)"
394 (progn 452 (progn
395 (require 'calc-funcs) 453 (require 'calc-funcs)
396 (call-interactively 'calc-bessel-Y)) 454 (call-interactively 'calc-bessel-Y))
397 :keys "f y" 455 :keys "f y"
456 :active (>= (calc-stack-size) 2)
398 :help "The Bessel function of the second kind (of order (2:))"]) 457 :help "The Bessel function of the second kind (of order (2:))"])
399 (list "Combinatorial Functions" 458 (list "Combinatorial Functions"
400 ["gcd(2:,1:)" 459 ["gcd(2:,1:)"
401 (progn 460 (progn
402 (require 'calc-comb) 461 (require 'calc-comb)
403 (call-interactively 'calc-gcd)) 462 (call-interactively 'calc-gcd))
404 :keys "k g"] 463 :keys "k g"
464 :active (>= (calc-stack-size) 2)]
405 ["lcm(2:,1:)" 465 ["lcm(2:,1:)"
406 (progn 466 (progn
407 (require 'calc-comb) 467 (require 'calc-comb)
408 (call-interactively 'calc-lcm)) 468 (call-interactively 'calc-lcm))
409 :keys "k l"] 469 :keys "k l"
470 :active (>= (calc-stack-size) 2)]
410 ["factorial(1:)" 471 ["factorial(1:)"
411 (progn 472 (progn
412 (require 'calc-comb) 473 (require 'calc-comb)
413 (call-interactively 'calc-factorial)) 474 (call-interactively 'calc-factorial))
414 :keys "!"] 475 :keys "!"
476 :active (>= (calc-stack-size) 1)]
415 ["(2:) choose (1:)" 477 ["(2:) choose (1:)"
416 (progn 478 (progn
417 (require 'calc-comb) 479 (require 'calc-comb)
418 (call-interactively 'calc-choose)) 480 (call-interactively 'calc-choose))
419 :keys "k c"] 481 :keys "k c"
482 :active (>= (calc-stack-size) 2)]
420 ["permutations(2:,1:)" 483 ["permutations(2:,1:)"
421 (progn 484 (progn
422 (require 'calc-comb) 485 (require 'calc-comb)
423 (call-interactively 'calc-perm)) 486 (call-interactively 'calc-perm))
424 :keys "H k c"] 487 :keys "H k c"
488 :active (>= (calc-stack-size) 2)]
425 ["Primality test for (1:)" 489 ["Primality test for (1:)"
426 (progn 490 (progn
427 (require 'calc-comb) 491 (require 'calc-comb)
428 (call-interactively 'calc-prime-test)) 492 (call-interactively 'calc-prime-test))
429 :keys "k p" 493 :keys "k p"
494 :active (>= (calc-stack-size) 1)
430 :help "For large (1:), a probabilistic test"] 495 :help "For large (1:), a probabilistic test"]
431 ["Factor (1:) into primes" 496 ["Factor (1:) into primes"
432 (progn 497 (progn
433 (require 'calc-comb) 498 (require 'calc-comb)
434 (call-interactively 'calc-prime-factors)) 499 (call-interactively 'calc-prime-factors))
435 :keys "k f"] 500 :keys "k f"
501 :active (>= (calc-stack-size) 1)]
436 ["Next prime after (1:)" 502 ["Next prime after (1:)"
437 (progn 503 (progn
438 (require 'calc-comb) 504 (require 'calc-comb)
439 (call-interactively 'calc-next-prime)) 505 (call-interactively 'calc-next-prime))
440 :keys "k n"] 506 :keys "k n"
507 :active (>= (calc-stack-size) 1)]
441 ["Previous prime before (1:)" 508 ["Previous prime before (1:)"
442 (progn 509 (progn
443 (require 'calc-comb) 510 (require 'calc-comb)
444 (call-interactively 'calc-prev-prime)) 511 (call-interactively 'calc-prev-prime))
445 :keys "I k n"] 512 :keys "I k n"
513 :active (>= (calc-stack-size) 1)]
446 ["phi(1:)" 514 ["phi(1:)"
447 (progn 515 (progn
448 (require 'calc-comb) 516 (require 'calc-comb)
449 (call-interactively 'calc-totient)) 517 (call-interactively 'calc-totient))
450 :keys "k n" 518 :keys "k n"
519 :active (>= (calc-stack-size) 1)
451 :help "Euler's totient function"] 520 :help "Euler's totient function"]
452 ["random(1:)" 521 ["random(1:)"
453 (progn 522 (progn
454 (require 'calc-comb) 523 (require 'calc-comb)
455 (call-interactively 'calc-random)) 524 (call-interactively 'calc-random))
456 :keys "k r" 525 :keys "k r"
526 :active (>= (calc-stack-size) 1)
457 :help "A random number >=1 and < (1:)"]) 527 :help "A random number >=1 and < (1:)"])
458 "----" 528 "----"
459 ["Help on Scientific Functions" 529 ["Help on Scientific Functions"
@@ -467,12 +537,14 @@
467 (progn 537 (progn
468 (require 'calc-alg) 538 (require 'calc-alg)
469 (call-interactively 'calc-simplify)) 539 (call-interactively 'calc-simplify))
470 :keys "a s"] 540 :keys "a s"
541 :active (>= (calc-stack-size) 1)]
471 ["Simplify (1:) with extended rules" 542 ["Simplify (1:) with extended rules"
472 (progn 543 (progn
473 (require 'calc-alg) 544 (require 'calc-alg)
474 (call-interactively 'calc-simplify-extended)) 545 (call-interactively 'calc-simplify-extended))
475 :keys "a e" 546 :keys "a e"
547 :active (>= (calc-stack-size) 1)
476 :help "Apply possibly unsafe simplifications"]) 548 :help "Apply possibly unsafe simplifications"])
477 (list "Manipulation" 549 (list "Manipulation"
478 ["Expand formula (1:)" 550 ["Expand formula (1:)"
@@ -480,17 +552,20 @@
480 (require 'calc-alg) 552 (require 'calc-alg)
481 (call-interactively 'calc-expand-formula)) 553 (call-interactively 'calc-expand-formula))
482 :keys "a \"" 554 :keys "a \""
555 :active (>= (calc-stack-size) 1)
483 :help "Expand (1:) into its defining formula, if possible"] 556 :help "Expand (1:) into its defining formula, if possible"]
484 ["Evaluate variables in (1:)" 557 ["Evaluate variables in (1:)"
485 (progn 558 (progn
486 (require 'calc-ext) 559 (require 'calc-ext)
487 (call-interactively 'calc-evaluate)) 560 (call-interactively 'calc-evaluate))
488 :keys "="] 561 :keys "="
562 :active (>= (calc-stack-size) 1)]
489 ["Make substitution in (1:)" 563 ["Make substitution in (1:)"
490 (progn 564 (progn
491 (require 'calc-alg) 565 (require 'calc-alg)
492 (call-interactively 'calc-substitute)) 566 (call-interactively 'calc-substitute))
493 :keys "a b" 567 :keys "a b"
568 :active (>= (calc-stack-size) 1)
494 :help 569 :help
495 "Substitute all occurrences of a sub-expression with a new sub-expression"]) 570 "Substitute all occurrences of a sub-expression with a new sub-expression"])
496 (list "Polynomials" 571 (list "Polynomials"
@@ -498,87 +573,102 @@
498 (progn 573 (progn
499 (require 'calc-alg) 574 (require 'calc-alg)
500 (call-interactively 'calc-factor)) 575 (call-interactively 'calc-factor))
501 :keys "a f"] 576 :keys "a f"
577 :active (>= (calc-stack-size) 1)]
502 ["Collect terms in (1:)" 578 ["Collect terms in (1:)"
503 (progn 579 (progn
504 (require 'calc-alg) 580 (require 'calc-alg)
505 (call-interactively 'calc-collect)) 581 (call-interactively 'calc-collect))
506 :keys "a c" 582 :keys "a c"
583 :active (>= (calc-stack-size) 1)
507 :help "Arrange as a polynomial in a given variable"] 584 :help "Arrange as a polynomial in a given variable"]
508 ["Expand (1:)" 585 ["Expand (1:)"
509 (progn 586 (progn
510 (require 'calc-alg) 587 (require 'calc-alg)
511 (call-interactively 'calc-expand)) 588 (call-interactively 'calc-expand))
512 :keys "a x" 589 :keys "a x"
590 :active (>= (calc-stack-size) 1)
513 :help "Apply distributive law everywhere"] 591 :help "Apply distributive law everywhere"]
514 ["Find roots of (1:)" 592 ["Find roots of (1:)"
515 (progn 593 (progn
516 (require 'calcalg2) 594 (require 'calcalg2)
517 (call-interactively 'calc-poly-roots)) 595 (call-interactively 'calc-poly-roots))
518 :keys "a P"]) 596 :keys "a P"
597 :active (>= (calc-stack-size) 1)])
519 (list "Calculus" 598 (list "Calculus"
520 ["Differentiate (1:)" 599 ["Differentiate (1:)"
521 (progn 600 (progn
522 (require 'calcalg2) 601 (require 'calcalg2)
523 (call-interactively 'calc-derivative)) 602 (call-interactively 'calc-derivative))
524 :keys "a d"] 603 :keys "a d"
604 :active (>= (calc-stack-size) 1)]
525 ["Integrate (1:) [indefinite]" 605 ["Integrate (1:) [indefinite]"
526 (progn 606 (progn
527 (require 'calcalg2) 607 (require 'calcalg2)
528 (call-interactively 'calc-integral)) 608 (call-interactively 'calc-integral))
529 :keys "a i"] 609 :keys "a i"
610 :active (>= (calc-stack-size) 1)]
530 ["Integrate (1:) [definite]" 611 ["Integrate (1:) [definite]"
531 (progn 612 (progn
532 (require 'calcalg2) 613 (require 'calcalg2)
533 (let ((var (read-string "Integration variable: "))) 614 (let ((var (read-string "Integration variable: ")))
534 (calc-tabular-command 'calcFunc-integ "Integration" 615 (calc-tabular-command 'calcFunc-integ "Integration"
535 "intg" nil var nil nil))) 616 "intg" nil var nil nil)))
536 :keys "C-u a i"] 617 :keys "C-u a i"
618 :active (>= (calc-stack-size) 1)]
537 ["Integrate (1:) [numeric]" 619 ["Integrate (1:) [numeric]"
538 (progn 620 (progn
539 (require 'calcalg2) 621 (require 'calcalg2)
540 (call-interactively 'calc-num-integral)) 622 (call-interactively 'calc-num-integral))
541 :keys "a I" 623 :keys "a I"
624 :active (>= (calc-stack-size) 1)
542 :help "Integrate using the open Romberg method"] 625 :help "Integrate using the open Romberg method"]
543 ["Taylor expand (1:)" 626 ["Taylor expand (1:)"
544 (progn 627 (progn
545 (require 'calcalg2) 628 (require 'calcalg2)
546 (call-interactively 'calc-taylor)) 629 (call-interactively 'calc-taylor))
547 :keys "a t"] 630 :keys "a t"
631 :active (>= (calc-stack-size) 1)]
548 ["Minimize (2:) [initial guess = (1:)]" 632 ["Minimize (2:) [initial guess = (1:)]"
549 (progn 633 (progn
550 (require 'calcalg3) 634 (require 'calcalg3)
551 (call-interactively 'calc-find-minimum)) 635 (call-interactively 'calc-find-minimum))
552 :keys "a N" 636 :keys "a N"
637 :active (>= (calc-stack-size) 2)
553 :help "Find a local minimum"] 638 :help "Find a local minimum"]
554 ["Maximize (2:) [initial guess = (1:)]" 639 ["Maximize (2:) [initial guess = (1:)]"
555 (progn 640 (progn
556 (require 'calcalg3) 641 (require 'calcalg3)
557 (call-interactively 'calc-find-maximum)) 642 (call-interactively 'calc-find-maximum))
558 :keys "a X" 643 :keys "a X"
644 :active (>= (calc-stack-size) 2)
559 :help "Find a local maximum"]) 645 :help "Find a local maximum"])
560 (list "Solving" 646 (list "Solving"
561 ["Solve equation (1:)" 647 ["Solve equation (1:)"
562 (progn 648 (progn
563 (require 'calcalg2) 649 (require 'calcalg2)
564 (call-interactively 'calc-solve-for)) 650 (call-interactively 'calc-solve-for))
565 :keys "a S"] 651 :keys "a S"
652 :active (>= (calc-stack-size) 1)]
566 ["Solve equation (2:) numerically [initial guess = (1:)]" 653 ["Solve equation (2:) numerically [initial guess = (1:)]"
567 (progn 654 (progn
568 (require 'calcalg3) 655 (require 'calcalg3)
569 (call-interactively 'calc-find-root)) 656 (call-interactively 'calc-find-root))
570 :keys "a R"] 657 :keys "a R"
658 :active (>= (calc-stack-size) 2)]
571 ["Find roots of polynomial (1:)" 659 ["Find roots of polynomial (1:)"
572 (progn 660 (progn
573 (require 'calcalg2) 661 (require 'calcalg2)
574 (call-interactively 'calc-poly-roots)) 662 (call-interactively 'calc-poly-roots))
575 :keys "a P"]) 663 :keys "a P"
664 :active (>= (calc-stack-size) 1)])
576 (list "Curve Fitting" 665 (list "Curve Fitting"
577 ["Fit (1:)=[x values, y values] to a curve" 666 ["Fit (1:)=[x values, y values] to a curve"
578 (progn 667 (progn
579 (require 'calcalg3) 668 (require 'calcalg3)
580 (call-interactively 'calc-curve-fit)) 669 (call-interactively 'calc-curve-fit))
581 :keys "a F"]) 670 :keys "a F"
671 :active (>= (calc-stack-size) 1)])
582 "----" 672 "----"
583 ["Help on Algebra" 673 ["Help on Algebra"
584 (calc-info-goto-node "Algebra")]) 674 (calc-info-goto-node "Algebra")])
@@ -591,12 +681,14 @@
591 (progn 681 (progn
592 (require 'calc-graph) 682 (require 'calc-graph)
593 (call-interactively 'calc-graph-fast)) 683 (call-interactively 'calc-graph-fast))
594 :keys "g f"] 684 :keys "g f"
685 :active (>= (calc-stack-size) 2)]
595 ["Graph 3D [(1:)= z values, (2:)= y values, (3:)= x values]" 686 ["Graph 3D [(1:)= z values, (2:)= y values, (3:)= x values]"
596 (progn 687 (progn
597 (require 'calc-graph) 688 (require 'calc-graph)
598 (call-interactively 'calc-graph-fast-3d)) 689 (call-interactively 'calc-graph-fast-3d))
599 :keys "g F"] 690 :keys "g F"
691 :active (>= (calc-stack-size) 3)]
600 "----" 692 "----"
601 ["Help on Graphics" 693 ["Help on Graphics"
602 (calc-info-goto-node "Graphics")]) 694 (calc-info-goto-node "Graphics")])
@@ -606,14 +698,18 @@
606(defvar calc-vectors-menu 698(defvar calc-vectors-menu
607 (list "Matrices/Vectors" 699 (list "Matrices/Vectors"
608 (list "Matrices" 700 (list "Matrices"
609 ["(2:) + (1:)" calc-plus :keys "+"] 701 ["(2:) + (1:)" calc-plus
610 ["(2:) - (1:)" calc-minus :keys "-"] 702 :keys "+" :active (>= (calc-stack-size) 2)]
611 ["(2:) * (1:)" calc-times :keys "*"] 703 ["(2:) - (1:)" calc-minus
612 ["(1:)^(-1)" 704 :keys "-" :active (>= (calc-stack-size) 2)]
705 ["(2:) * (1:)" calc-times
706 :keys "*" :active (>= (calc-stack-size) 2)]
707 ["(1:)^(-1)"
613 (progn 708 (progn
614 (require 'calc-arith) 709 (require 'calc-arith)
615 (call-interactively 'calc-inv)) 710 (call-interactively 'calc-inv))
616 :keys "&"] 711 :keys "&"
712 :active (>= (calc-stack-size) 1)]
617 ["Create an identity matrix" 713 ["Create an identity matrix"
618 (progn 714 (progn
619 (require 'calc-vec) 715 (require 'calc-vec)
@@ -623,179 +719,211 @@
623 (progn 719 (progn
624 (require 'calc-vec) 720 (require 'calc-vec)
625 (call-interactively 'calc-transpose)) 721 (call-interactively 'calc-transpose))
626 :keys "v t"] 722 :keys "v t"
723 :active (>= (calc-stack-size) 1)]
627 ["det(1:)" 724 ["det(1:)"
628 (progn 725 (progn
629 (require 'calc-mtx) 726 (require 'calc-mtx)
630 (call-interactively 'calc-mdet)) 727 (call-interactively 'calc-mdet))
631 :keys "V D"] 728 :keys "V D"
729 :active (>= (calc-stack-size) 1)]
632 ["trace(1:)" 730 ["trace(1:)"
633 (progn 731 (progn
634 (require 'calc-mtx) 732 (require 'calc-mtx)
635 (call-interactively 'calc-mtrace)) 733 (call-interactively 'calc-mtrace))
636 :keys "V T"] 734 :keys "V T"
735 :active (>= (calc-stack-size) 1)]
637 ["LUD decompose (1:)" 736 ["LUD decompose (1:)"
638 (progn 737 (progn
639 (require 'calc-mtx) 738 (require 'calc-mtx)
640 (call-interactively 'calc-mlud)) 739 (call-interactively 'calc-mlud))
641 :keys "V L"] 740 :keys "V L"
741 :active (>= (calc-stack-size) 1)]
642 ["Extract a row from (1:)" 742 ["Extract a row from (1:)"
643 (progn 743 (progn
644 (require 'calc-vec) 744 (require 'calc-vec)
645 (call-interactively 'calc-mrow)) 745 (call-interactively 'calc-mrow))
646 :keys "v r"] 746 :keys "v r"
747 :active (>= (calc-stack-size) 1)]
647 ["Extract a column from (1:)" 748 ["Extract a column from (1:)"
648 (progn 749 (progn
649 (require 'calc-vec) 750 (require 'calc-vec)
650 (call-interactively 'calc-mcol)) 751 (call-interactively 'calc-mcol))
651 :keys "v c"]) 752 :keys "v c"
753 :active (>= (calc-stack-size) 1)])
652 (list "Vectors" 754 (list "Vectors"
653 ["Extract the first element of (1:)" 755 ["Extract the first element of (1:)"
654 (progn 756 (progn
655 (require 'calc-vec) 757 (require 'calc-vec)
656 (call-interactively 'calc-head)) 758 (call-interactively 'calc-head))
657 :keys "v h"] 759 :keys "v h"
760 :active (>= (calc-stack-size) 1)]
658 ["Extract an element from (1:)" 761 ["Extract an element from (1:)"
659 (progn 762 (progn
660 (require 'calc-vec) 763 (require 'calc-vec)
661 (call-interactively 'calc-mrow)) 764 (call-interactively 'calc-mrow))
662 :keys "v r"] 765 :keys "v r"
766 :active (>= (calc-stack-size) 1)]
663 ["Reverse (1:)" 767 ["Reverse (1:)"
664 (progn 768 (progn
665 (require 'calc-vec) 769 (require 'calc-vec)
666 (call-interactively 'calc-reverse-vector)) 770 (call-interactively 'calc-reverse-vector))
667 :keys "v v"] 771 :keys "v v"
772 :active (>= (calc-stack-size) 1)]
668 ["Unpack (1:)" 773 ["Unpack (1:)"
669 (progn 774 (progn
670 (require 'calc-vec) 775 (require 'calc-vec)
671 (call-interactively 'calc-unpack)) 776 (call-interactively 'calc-unpack))
672 :keys "v u" 777 :keys "v u"
778 :active (>= (calc-stack-size) 1)
673 :help "Separate the elements of (1:)"] 779 :help "Separate the elements of (1:)"]
674 ["(2:) cross (1:)" 780 ["(2:) cross (1:)"
675 (progn 781 (progn
676 (require 'calc-vec) 782 (require 'calc-vec)
677 (call-interactively 'calc-cross)) 783 (call-interactively 'calc-cross))
678 :keys "V C" 784 :keys "V C"
785 :active (>= (calc-stack-size) 2)
679 :help "The cross product in R^3"] 786 :help "The cross product in R^3"]
680 ["(2:) dot (1:)" 787 ["(2:) dot (1:)"
681 calc-mult 788 calc-mult
682 :keys "*" 789 :keys "*"
790 :active (>= (calc-stack-size) 2)
683 :help "The dot product"] 791 :help "The dot product"]
684 ["Map a function across (1:)" 792 ["Map a function across (1:)"
685 (progn 793 (progn
686 (require 'calc-map) 794 (require 'calc-map)
687 (call-interactively 'calc-map)) 795 (call-interactively 'calc-map))
688 :keys "V M" 796 :keys "V M"
797 :active (>= (calc-stack-size) 1)
689 :help "Apply a function to each element"]) 798 :help "Apply a function to each element"])
690 (list "Vectors As Sets" 799 (list "Vectors As Sets"
691 ["Remove duplicates from (1:)" 800 ["Remove duplicates from (1:)"
692 (progn 801 (progn
693 (require 'calc-vec) 802 (require 'calc-vec)
694 (call-interactively 'calc-remove-duplicates)) 803 (call-interactively 'calc-remove-duplicates))
695 :keys "V +"] 804 :keys "V +"
805 :active (>= (calc-stack-size) 1)]
696 ["(2:) union (1:)" 806 ["(2:) union (1:)"
697 (progn 807 (progn
698 (require 'calc-vec) 808 (require 'calc-vec)
699 (call-interactively 'calc-set-union)) 809 (call-interactively 'calc-set-union))
700 :keys "V V"] 810 :keys "V V"
811 :active (>= (calc-stack-size) 2)]
701 ["(2:) intersect (1:)" 812 ["(2:) intersect (1:)"
702 (progn 813 (progn
703 (require 'calc-vec) 814 (require 'calc-vec)
704 (call-interactively 'calc-set-intersect)) 815 (call-interactively 'calc-set-intersect))
705 :keys "V ^"] 816 :keys "V ^"
817 :active (>= (calc-stack-size) 2)]
706 ["(2:) \\ (1:)" 818 ["(2:) \\ (1:)"
707 (progn 819 (progn
708 (require 'calc-vec) 820 (require 'calc-vec)
709 (call-interactively 'calc-set-difference)) 821 (call-interactively 'calc-set-difference))
710 :keys "V -" 822 :keys "V -"
711 :help "Set difference"]) 823 :help "Set difference"
824 :active (>= (calc-stack-size) 2)])
712 (list "Statistics On Vectors" 825 (list "Statistics On Vectors"
713 ["length(1:)" 826 ["length(1:)"
714 (progn 827 (progn
715 (require 'calc-stat) 828 (require 'calc-stat)
716 (call-interactively 'calc-vector-count)) 829 (call-interactively 'calc-vector-count))
717 :keys "u #" 830 :keys "u #"
831 :active (>= (calc-stack-size) 1)
718 :help "The number of data values"] 832 :help "The number of data values"]
719 ["sum(1:)" 833 ["sum(1:)"
720 (progn 834 (progn
721 (require 'calc-stat) 835 (require 'calc-stat)
722 (call-interactively 'calc-vector-sum)) 836 (call-interactively 'calc-vector-sum))
723 :keys "u +" 837 :keys "u +"
838 :active (>= (calc-stack-size) 1)
724 :help "The sum of the data values"] 839 :help "The sum of the data values"]
725 ["max(1:)" 840 ["max(1:)"
726 (progn 841 (progn
727 (require 'calc-stat) 842 (require 'calc-stat)
728 (call-interactively 'calc-vector-max)) 843 (call-interactively 'calc-vector-max))
729 :keys "u x" 844 :keys "u x"
845 :active (>= (calc-stack-size) 1)
730 :help "The maximum of the data values"] 846 :help "The maximum of the data values"]
731 ["min(1:)" 847 ["min(1:)"
732 (progn 848 (progn
733 (require 'calc-stat) 849 (require 'calc-stat)
734 (call-interactively 'calc-vector-min)) 850 (call-interactively 'calc-vector-min))
735 :keys "u N" 851 :keys "u N"
852 :active (>= (calc-stack-size) 1)
736 :help "The minumum of the data values"] 853 :help "The minumum of the data values"]
737 ["mean(1:)" 854 ["mean(1:)"
738 (progn 855 (progn
739 (require 'calc-stat) 856 (require 'calc-stat)
740 (call-interactively 'calc-vector-mean)) 857 (call-interactively 'calc-vector-mean))
741 :keys "u M" 858 :keys "u M"
859 :active (>= (calc-stack-size) 1)
742 :help "The average (arithmetic mean) of the data values"] 860 :help "The average (arithmetic mean) of the data values"]
743 ["mean(1:) with error" 861 ["mean(1:) with error"
744 (progn 862 (progn
745 (require 'calc-stat) 863 (require 'calc-stat)
746 (call-interactively 'calc-vector-mean-error)) 864 (call-interactively 'calc-vector-mean-error))
747 :keys "I u M" 865 :keys "I u M"
866 :active (>= (calc-stack-size) 1)
748 :help "The average (arithmetic mean) of the data values as an error form"] 867 :help "The average (arithmetic mean) of the data values as an error form"]
749 ["sdev(1:)" 868 ["sdev(1:)"
750 (progn 869 (progn
751 (require 'calc-stat) 870 (require 'calc-stat)
752 (call-interactively 'calc-vector-sdev)) 871 (call-interactively 'calc-vector-sdev))
753 :keys "u S" 872 :keys "u S"
873 :active (>= (calc-stack-size) 1)
754 :help "The sample sdev, sqrt[sum((values - mean)^2)/(N-1)]"] 874 :help "The sample sdev, sqrt[sum((values - mean)^2)/(N-1)]"]
755 ["variance(1:)" 875 ["variance(1:)"
756 (progn 876 (progn
757 (require 'calc-stat) 877 (require 'calc-stat)
758 (call-interactively 'calc-vector-variance)) 878 (call-interactively 'calc-vector-variance))
759 :keys "H u S" 879 :keys "H u S"
880 :active (>= (calc-stack-size) 1)
760 :help "The sample variance, sum((values - mean)^2)/(N-1)"] 881 :help "The sample variance, sum((values - mean)^2)/(N-1)"]
761 ["population sdev(1:)" 882 ["population sdev(1:)"
762 (progn 883 (progn
763 (require 'calc-stat) 884 (require 'calc-stat)
764 (call-interactively 'calc-vector-pop-sdev)) 885 (call-interactively 'calc-vector-pop-sdev))
765 :keys "I u S" 886 :keys "I u S"
887 :active (>= (calc-stack-size) 1)
766 :help "The population sdev, sqrt[sum((values - mean)^2)/N]"] 888 :help "The population sdev, sqrt[sum((values - mean)^2)/N]"]
767 ["population variance(1:)" 889 ["population variance(1:)"
768 (progn 890 (progn
769 (require 'calc-stat) 891 (require 'calc-stat)
770 (call-interactively 'calc-vector-pop-variance)) 892 (call-interactively 'calc-vector-pop-variance))
771 :keys "H I u S" 893 :keys "H I u S"
894 :active (>= (calc-stack-size) 1)
772 :help "The population variance, sum((values - mean)^2)/N"] 895 :help "The population variance, sum((values - mean)^2)/N"]
773 ["median(1:)" 896 ["median(1:)"
774 (progn 897 (progn
775 (require 'calc-stat) 898 (require 'calc-stat)
776 (call-interactively 'calc-vector-median)) 899 (call-interactively 'calc-vector-median))
777 :keys "H u M" 900 :keys "H u M"
901 :active (>= (calc-stack-size) 1)
778 :help "The median of the data values"] 902 :help "The median of the data values"]
779 ["harmonic mean(1:)" 903 ["harmonic mean(1:)"
780 (progn 904 (progn
781 (require 'calc-stat) 905 (require 'calc-stat)
782 (call-interactively 'calc-vector-harmonic-mean)) 906 (call-interactively 'calc-vector-harmonic-mean))
783 :keys "H I u M"] 907 :keys "H I u M"
908 :active (>= (calc-stack-size) 1)]
784 ["geometric mean(1:)" 909 ["geometric mean(1:)"
785 (progn 910 (progn
786 (require 'calc-stat) 911 (require 'calc-stat)
787 (call-interactively 'calc-vector-geometric-mean)) 912 (call-interactively 'calc-vector-geometric-mean))
788 :keys "u G"] 913 :keys "u G"
914 :active (>= (calc-stack-size) 1)]
789 ["arithmetic-geometric mean(1:)" 915 ["arithmetic-geometric mean(1:)"
790 (progn 916 (progn
791 (require 'calc-stat) 917 (require 'calc-stat)
792 (let ((calc-hyperbolic-flag t)) 918 (let ((calc-hyperbolic-flag t))
793 (call-interactively 'calc-vector-geometric-mean))) 919 (call-interactively 'calc-vector-geometric-mean)))
794 :keys "H u G"] 920 :keys "H u G"
921 :active (>= (calc-stack-size) 1)]
795 ["RMS(1:)" 922 ["RMS(1:)"
796 (progn (require 'calc-arith) 923 (progn (require 'calc-arith)
797 (call-interactively 'calc-abs)) 924 (call-interactively 'calc-abs))
798 :keys "A" 925 :keys "A"
926 :active (>= (calc-stack-size) 1)
799 :help "The root-mean-square, or quadratic mean"]) 927 :help "The root-mean-square, or quadratic mean"])
800 ["Abbreviate long vectors" 928 ["Abbreviate long vectors"
801 (progn 929 (progn
@@ -815,17 +943,20 @@
815 (progn 943 (progn
816 (require 'calc-units) 944 (require 'calc-units)
817 (call-interactively 'calc-convert-units )) 945 (call-interactively 'calc-convert-units ))
818 :keys "u c"] 946 :keys "u c"
947 :active (>= (calc-stack-size) 1)]
819 ["Convert temperature in (1:)" 948 ["Convert temperature in (1:)"
820 (progn 949 (progn
821 (require 'calc-units) 950 (require 'calc-units)
822 (call-interactively 'calc-convert-temperature)) 951 (call-interactively 'calc-convert-temperature))
823 :keys "u t"] 952 :keys "u t"
953 :active (>= (calc-stack-size) 1)]
824 ["Simplify units in (1:)" 954 ["Simplify units in (1:)"
825 (progn 955 (progn
826 (require 'calc-units) 956 (require 'calc-units)
827 (call-interactively 'calc-simplify-units)) 957 (call-interactively 'calc-simplify-units))
828 :keys "u s"] 958 :keys "u s"
959 :active (>= (calc-stack-size) 1)]
829 ["View units table" 960 ["View units table"
830 (progn 961 (progn
831 (require 'calc-units) 962 (require 'calc-units)
@@ -842,7 +973,8 @@
842 (progn 973 (progn
843 (require 'calc-store) 974 (require 'calc-store)
844 (call-interactively 'calc-store)) 975 (call-interactively 'calc-store))
845 :keys "s s"] 976 :keys "s s"
977 :active (>= (calc-stack-size) 1)]
846 ["Recall a variable value" 978 ["Recall a variable value"
847 (progn 979 (progn
848 (require 'calc-store) 980 (require 'calc-store)
@@ -857,7 +989,8 @@
857 (progn 989 (progn
858 (require 'calc-store) 990 (require 'calc-store)
859 (call-interactively 'calc-store-exchange)) 991 (call-interactively 'calc-store-exchange))
860 :keys "s x"] 992 :keys "s x"
993 :active (>= (calc-stack-size) 1)]
861 ["Clear variable value" 994 ["Clear variable value"
862 (progn 995 (progn
863 (require 'calc-store) 996 (require 'calc-store)
@@ -867,12 +1000,14 @@
867 (progn 1000 (progn
868 (require 'calc-ext) 1001 (require 'calc-ext)
869 (call-interactively 'calc-evaluate)) 1002 (call-interactively 'calc-evaluate))
870 :keys "="] 1003 :keys "="
1004 :active (>= (calc-stack-size) 1)]
871 ["Evaluate (1:), assigning a value to a variable" 1005 ["Evaluate (1:), assigning a value to a variable"
872 (progn 1006 (progn
873 (require 'calc-store) 1007 (require 'calc-store)
874 (call-interactively 'calc-let)) 1008 (call-interactively 'calc-let))
875 :keys "s l" 1009 :keys "s l"
1010 :active (>= (calc-stack-size) 1)
876 :help "Evaluate (1:) under a temporary assignment of a variable"] 1011 :help "Evaluate (1:) under a temporary assignment of a variable"]
877 "----" 1012 "----"
878 ["Help on Variables" 1013 ["Help on Variables"
@@ -883,18 +1018,22 @@
883 (list "Stack" 1018 (list "Stack"
884 ["Remove (1:)" 1019 ["Remove (1:)"
885 calc-pop 1020 calc-pop
886 :keys "DEL"] 1021 :keys "DEL"
1022 :active (>= (calc-stack-size) 1)]
887 ["Switch (1:) and (2:)" 1023 ["Switch (1:) and (2:)"
888 calc-roll-down 1024 calc-roll-down
889 :keys "TAB"] 1025 :keys "TAB"
1026 :active (>= (calc-stack-size) 2)]
890 ["Duplicate (1:)" 1027 ["Duplicate (1:)"
891 calc-enter 1028 calc-enter
892 :keys "RET"] 1029 :keys "RET"
1030 :active (>= (calc-stack-size) 1)]
893 ["Edit (1:)" 1031 ["Edit (1:)"
894 (progn 1032 (progn
895 (require 'calc-yank) 1033 (require 'calc-yank)
896 (call-interactively calc-edit)) 1034 (call-interactively calc-edit))
897 :keys "`"] 1035 :keys "`"
1036 :active (>= (calc-stack-size) 1)]
898 "----" 1037 "----"
899 ["Help on Stack" 1038 ["Help on Stack"
900 (calc-info-goto-node "Stack and Trail")]) 1039 (calc-info-goto-node "Stack and Trail")])
@@ -1051,6 +1190,47 @@
1051 :keys "d e" 1190 :keys "d e"
1052 :style radio 1191 :style radio
1053 :selected (eq (car-safe calc-float-format) 'eng)]) 1192 :selected (eq (car-safe calc-float-format) 'eng)])
1193 (list "Complex Format"
1194 ["Default"
1195 (progn
1196 (require 'calc-cplx)
1197 (calc-complex-notation))
1198 :style radio
1199 :selected (not calc-complex-format)
1200 :keys "d c"
1201 :help "Display complex numbers as ordered pairs."]
1202 ["i notation"
1203 (progn
1204 (require 'calc-cplx)
1205 (calc-i-notation))
1206 :style radio
1207 :selected (eq calc-complex-format 'i)
1208 :keys "d i"
1209 :help "Display complex numbers as a+bi."]
1210 ["j notation"
1211 (progn
1212 (require 'calc-cplx)
1213 (calc-i-notation))
1214 :style radio
1215 :selected (eq calc-complex-format 'j)
1216 :keys "d j"
1217 :help "Display complex numbers as a+bj."]
1218 ["Other"
1219 (calc-complex-notation)
1220 :style radio
1221 :selected (and calc-complex-format
1222 (not (eq calc-complex-format 'i))
1223 (not (eq calc-complex-format 'j)))
1224 :active nil]
1225 "----"
1226 ["Polar mode"
1227 (progn
1228 (require 'calc-cplx)
1229 (calc-polar-mode nil))
1230 :style toggle
1231 :selected (eq calc-complex-mode 'polar)
1232 :keys "m p"
1233 :help "Prefer polar form for complex numbers."])
1054 (list "Algebraic" 1234 (list "Algebraic"
1055 ["Normal" 1235 ["Normal"
1056 (progn 1236 (progn
@@ -1178,7 +1358,21 @@
1178 (call-interactively 'calc-giac-language)) 1358 (call-interactively 'calc-giac-language))
1179 :keys "d A" 1359 :keys "d A"
1180 :style radio 1360 :style radio
1181 :selected (eq calc-language 'giac)]) 1361 :selected (eq calc-language 'giac)]
1362 ["Mma"
1363 (progn
1364 (require 'calc-lang)
1365 (call-interactively 'calc-mathematica-language))
1366 :keys "d M"
1367 :style radio
1368 :selected (eq calc-language 'math)]
1369 ["Maple"
1370 (progn
1371 (require 'calc-lang)
1372 (call-interactively 'calc-maple-language))
1373 :keys "d W"
1374 :style radio
1375 :selected (eq calc-language 'maple)])
1182 "----" 1376 "----"
1183 ["Save mode settings" calc-save-modes :keys "m m"] 1377 ["Save mode settings" calc-save-modes :keys "m m"]
1184 "----" 1378 "----"