diff options
| -rw-r--r-- | lisp/calc/calc-menu.el | 1429 |
1 files changed, 1429 insertions, 0 deletions
diff --git a/lisp/calc/calc-menu.el b/lisp/calc/calc-menu.el new file mode 100644 index 00000000000..973a6a0c9d2 --- /dev/null +++ b/lisp/calc/calc-menu.el | |||
| @@ -0,0 +1,1429 @@ | |||
| 1 | ;;; calc-menu.el --- a menu for Calc | ||
| 2 | |||
| 3 | ;; Copyright (C) 2007, 2008 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com> | ||
| 6 | |||
| 7 | ;; This file is part of GNU Emacs. | ||
| 8 | |||
| 9 | ;; GNU Emacs is free software; you can redistribute it and/or modify | ||
| 10 | ;; it under the terms of the GNU General Public License as published by | ||
| 11 | ;; the Free Software Foundation; either version 3, or (at your option) | ||
| 12 | ;; any later version. | ||
| 13 | |||
| 14 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | ;; GNU General Public License for more details. | ||
| 18 | |||
| 19 | ;; You should have received a copy of the GNU General Public License | ||
| 20 | ;; along with GNU Emacs; see the file COPYING. If not, write to the | ||
| 21 | ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
| 22 | ;; Boston, MA 02110-1301, USA. | ||
| 23 | |||
| 24 | ;;; Commentary: | ||
| 25 | |||
| 26 | (defvar calc-arithmetic-menu | ||
| 27 | (list "Arithmetic" | ||
| 28 | (list "Basic" | ||
| 29 | ["-(1:)" calc-change-sign | ||
| 30 | :keys "n" :active (>= (calc-stack-size) 1)] | ||
| 31 | ["(2:) + (1:)" calc-plus | ||
| 32 | :keys "+" :active (>= (calc-stack-size) 2)] | ||
| 33 | ["(2:) - (1:)" calc-minus | ||
| 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)] | ||
| 41 | ["(2:) ^ (1/(1:))" | ||
| 42 | (progn | ||
| 43 | (require 'calc-ext) | ||
| 44 | (let ((calc-inverse-flag t)) | ||
| 45 | (call-interactively 'calc-power))) | ||
| 46 | :keys "I ^" | ||
| 47 | :active (>= (calc-stack-size) 2) | ||
| 48 | :help "The (1:)th root of (2:)"] | ||
| 49 | ["abs(1:)" | ||
| 50 | (progn | ||
| 51 | (require 'calc-arith) | ||
| 52 | (call-interactively 'calc-abs)) | ||
| 53 | :keys "A" | ||
| 54 | :active (>= (calc-stack-size) 1) | ||
| 55 | :help "Absolute value"] | ||
| 56 | ["1/(1:)" | ||
| 57 | (progn | ||
| 58 | (require 'calc-arith) | ||
| 59 | (call-interactively 'calc-inv)) | ||
| 60 | :keys "&" | ||
| 61 | :active (>= (calc-stack-size) 1)] | ||
| 62 | ["sqrt(1:)" | ||
| 63 | (progn | ||
| 64 | (require 'calc-math) | ||
| 65 | (call-interactively 'calc-sqrt)) | ||
| 66 | :keys "Q" | ||
| 67 | :active (>= (calc-stack-size) 1)] | ||
| 68 | ["idiv(2:,1:)" | ||
| 69 | (progn | ||
| 70 | (require 'calc-arith) | ||
| 71 | (call-interactively 'calc-idiv)) | ||
| 72 | :keys "\\" | ||
| 73 | :active (>= (calc-stack-size) 2) | ||
| 74 | :help "The integer quotient of (2:) over (1:)"] | ||
| 75 | ["(2:) mod (1:)" | ||
| 76 | (progn | ||
| 77 | (require 'calc-misc) | ||
| 78 | (call-interactively 'calc-mod)) | ||
| 79 | :keys "%" | ||
| 80 | :active (>= (calc-stack-size) 2) | ||
| 81 | :help "The remainder when (2:) is divided by (1:)"]) | ||
| 82 | (list "Rounding" | ||
| 83 | ["floor(1:)" | ||
| 84 | (progn | ||
| 85 | (require 'calc-arith) | ||
| 86 | (call-interactively 'calc-floor)) | ||
| 87 | :keys "F" | ||
| 88 | :active (>= (calc-stack-size) 1) | ||
| 89 | :help "The greatest integer less than or equal to (1:)"] | ||
| 90 | ["ceiling(1:)" | ||
| 91 | (progn | ||
| 92 | (require 'calc-arith) | ||
| 93 | (call-interactively 'calc-ceiling)) | ||
| 94 | :keys "I F" | ||
| 95 | :active (>= (calc-stack-size) 1) | ||
| 96 | :help "The smallest integer greater than or equal to (1:)"] | ||
| 97 | ["round(1:)" | ||
| 98 | (progn | ||
| 99 | (require 'calc-arith) | ||
| 100 | (call-interactively 'calc-round)) | ||
| 101 | :keys "R" | ||
| 102 | :active (>= (calc-stack-size) 1) | ||
| 103 | :help "The nearest integer to (1:)"] | ||
| 104 | ["truncate(1:)" | ||
| 105 | (progn | ||
| 106 | (require 'calc-arith) | ||
| 107 | (call-interactively 'calc-trunc)) | ||
| 108 | :keys "I R" | ||
| 109 | :active (>= (calc-stack-size) 1) | ||
| 110 | :help "The integer part of (1:)"]) | ||
| 111 | (list "Complex Numbers" | ||
| 112 | ["Re(1:)" | ||
| 113 | (progn | ||
| 114 | (require 'calc-cplx) | ||
| 115 | (call-interactively 'calc-re)) | ||
| 116 | :keys "f r" | ||
| 117 | :active (>= (calc-stack-size) 1)] | ||
| 118 | ["Im(1:)" | ||
| 119 | (progn | ||
| 120 | (require 'calc-cplx) | ||
| 121 | (call-interactively 'calc-im)) | ||
| 122 | :keys "f i" | ||
| 123 | :active (>= (calc-stack-size) 1)] | ||
| 124 | ["conj(1:)" | ||
| 125 | (progn | ||
| 126 | (require 'calc-cplx) | ||
| 127 | (call-interactively 'calc-conj)) | ||
| 128 | :keys "J" | ||
| 129 | :active (>= (calc-stack-size) 1) | ||
| 130 | :help "The complex conjugate of (1:)"] | ||
| 131 | ["length(1:)" | ||
| 132 | (progn (require 'calc-arith) | ||
| 133 | (call-interactively 'calc-abs)) | ||
| 134 | :keys "A" | ||
| 135 | :active (>= (calc-stack-size) 1) | ||
| 136 | :help "The length (absolute value) of (1:)"] | ||
| 137 | ["arg(1:)" | ||
| 138 | (progn | ||
| 139 | (require 'calc-cplx) | ||
| 140 | (call-interactively 'calc-argument)) | ||
| 141 | :keys "G" | ||
| 142 | :active (>= (calc-stack-size) 1) | ||
| 143 | :help "The argument (polar angle) of (1:)"]) | ||
| 144 | (list "Conversion" | ||
| 145 | ["Convert (1:) to a float" | ||
| 146 | (progn | ||
| 147 | (require 'calc-ext) | ||
| 148 | (call-interactively 'calc-float)) | ||
| 149 | :keys "c f" | ||
| 150 | :active (>= (calc-stack-size) 1)] | ||
| 151 | ["Convert (1:) to a fraction" | ||
| 152 | (progn | ||
| 153 | (require 'calc-ext) | ||
| 154 | (call-interactively 'calc-fraction)) | ||
| 155 | :keys "c F" | ||
| 156 | :active (>= (calc-stack-size) 1)]) | ||
| 157 | (list "Binary" | ||
| 158 | ["Set word size" | ||
| 159 | (progn | ||
| 160 | (require 'calc-bin) | ||
| 161 | (call-interactively 'calc-word-size)) | ||
| 162 | :keys "b w"] | ||
| 163 | ["Clip (1:) to word size" | ||
| 164 | (progn | ||
| 165 | (require 'calc-bin) | ||
| 166 | (call-interactively 'calc-clip)) | ||
| 167 | :keys "b c" | ||
| 168 | :active (>= (calc-stack-size) 1) | ||
| 169 | :help "Reduce (1:) modulo 2^wordsize"] | ||
| 170 | ["(2:) and (1:)" | ||
| 171 | (progn | ||
| 172 | (require 'calc-bin) | ||
| 173 | (call-interactively 'calc-and)) | ||
| 174 | :keys "b a" | ||
| 175 | :active (>= (calc-stack-size) 2) | ||
| 176 | :help "Bitwise AND [modulo 2^wordsize]"] | ||
| 177 | ["(2:) or (1:)" | ||
| 178 | (progn | ||
| 179 | (require 'calc-bin) | ||
| 180 | (call-interactively 'calc-or)) | ||
| 181 | :keys "b o" | ||
| 182 | :active (>= (calc-stack-size) 2) | ||
| 183 | :help "Bitwise inclusive OR [modulo 2^wordsize]"] | ||
| 184 | ["(2:) xor (1:)" | ||
| 185 | (progn | ||
| 186 | (require 'calc-bin) | ||
| 187 | (call-interactively 'calc-xor)) | ||
| 188 | :keys "b x" | ||
| 189 | :active (>= (calc-stack-size) 2) | ||
| 190 | :help "Bitwise exclusive OR [modulo 2^wordsize]"] | ||
| 191 | ["diff(2:,1:)" | ||
| 192 | (progn | ||
| 193 | (require 'calc-bin) | ||
| 194 | (call-interactively 'calc-diff)) | ||
| 195 | :keys "b d" | ||
| 196 | :active (>= (calc-stack-size) 2) | ||
| 197 | :help "Bitwise difference [modulo 2^wordsize]"] | ||
| 198 | ["not (1:)" | ||
| 199 | (progn | ||
| 200 | (require 'calc-bin) | ||
| 201 | (call-interactively 'calc-not)) | ||
| 202 | :keys "b n" | ||
| 203 | :active (>= (calc-stack-size) 1) | ||
| 204 | :help "Bitwise NOT [modulo 2^wordsize]"] | ||
| 205 | ["left shift(1:)" | ||
| 206 | (progn | ||
| 207 | (require 'calc-bin) | ||
| 208 | (call-interactively 'calc-lshift-binary)) | ||
| 209 | :keys "b l" | ||
| 210 | :active (>= (calc-stack-size) 1) | ||
| 211 | :help "Shift (1:)[modulo 2^wordsize] one bit left"] | ||
| 212 | ["right shift(1:)" | ||
| 213 | (progn | ||
| 214 | (require 'calc-bin) | ||
| 215 | (call-interactively 'calc-rshift-binary)) | ||
| 216 | :keys "b r" | ||
| 217 | :active (>= (calc-stack-size) 1) | ||
| 218 | :help "Shift (1:)[modulo 2^wordsize] one bit right, putting 0s on the left"] | ||
| 219 | ["arithmetic right shift(1:)" | ||
| 220 | (progn | ||
| 221 | (require 'calc-bin) | ||
| 222 | (call-interactively 'calc-rshift-arith)) | ||
| 223 | :keys "b R" | ||
| 224 | :active (>= (calc-stack-size) 1) | ||
| 225 | :help "Shift (1:)[modulo 2^wordsize] one bit right, duplicating the leftmost bit"] | ||
| 226 | ["rotate(1:)" | ||
| 227 | (progn | ||
| 228 | (require 'calc-bin) | ||
| 229 | (call-interactively 'calc-rotate-binary)) | ||
| 230 | :keys "b t" | ||
| 231 | :active (>= (calc-stack-size) 1) | ||
| 232 | :help "Rotate (1:)[modulo 2^wordsize] one bit left"]) | ||
| 233 | "-------" | ||
| 234 | ["Help on Arithmetic" | ||
| 235 | (calc-info-goto-node "Arithmetic")]) | ||
| 236 | "Menu for Calc's arithmetic functions.") | ||
| 237 | |||
| 238 | (defvar calc-scientific-function-menu | ||
| 239 | (list "Scientific Functions" | ||
| 240 | (list "Constants" | ||
| 241 | ["pi" | ||
| 242 | (progn | ||
| 243 | (require 'calc-math) | ||
| 244 | (call-interactively 'calc-pi)) | ||
| 245 | :keys "P"] | ||
| 246 | ["e" | ||
| 247 | (progn | ||
| 248 | (require 'calc-math) | ||
| 249 | (let ((calc-hyperbolic-flag t)) | ||
| 250 | (call-interactively 'calc-pi))) | ||
| 251 | :keys "H P"] | ||
| 252 | ["phi" | ||
| 253 | (progn | ||
| 254 | (require 'calc-math) | ||
| 255 | (let ((calc-inverse-flag t) | ||
| 256 | (calc-hyperbolic-flag t)) | ||
| 257 | (call-interactively 'calc-pi))) | ||
| 258 | :keys "I H P" | ||
| 259 | :help "The golden ratio"] | ||
| 260 | ["gamma" | ||
| 261 | (progn | ||
| 262 | (require 'calc-math) | ||
| 263 | (let ((calc-inverse-flag t)) | ||
| 264 | (call-interactively 'calc-pi))) | ||
| 265 | :keys "I P" | ||
| 266 | :help "Euler's constant"]) | ||
| 267 | (list "Logs and Exps" | ||
| 268 | ["ln(1:)" | ||
| 269 | (progn | ||
| 270 | (require 'calc-math) | ||
| 271 | (call-interactively 'calc-ln)) | ||
| 272 | :keys "L" | ||
| 273 | :active (>= (calc-stack-size) 1) | ||
| 274 | :help "The natural logarithm"] | ||
| 275 | ["e^(1:)" | ||
| 276 | (progn | ||
| 277 | (require 'calc-math) | ||
| 278 | (call-interactively 'calc-exp)) | ||
| 279 | :keys "E" | ||
| 280 | :active (>= (calc-stack-size) 1)] | ||
| 281 | ["log(1:) [base 10]" | ||
| 282 | (progn | ||
| 283 | (require 'calc-math) | ||
| 284 | (call-interactively 'calc-log10)) | ||
| 285 | :keys "H L" | ||
| 286 | :active (>= (calc-stack-size) 1) | ||
| 287 | :help "The common logarithm"] | ||
| 288 | ["10^(1:)" | ||
| 289 | (progn | ||
| 290 | (require 'calc-math) | ||
| 291 | (let ((calc-inverse-flag t)) | ||
| 292 | (call-interactively 'calc-log10))) | ||
| 293 | :keys "I H L" | ||
| 294 | :active (>= (calc-stack-size) 1)] | ||
| 295 | ["log(2:) [base(1:)]" | ||
| 296 | (progn | ||
| 297 | (require 'calc-math) | ||
| 298 | (call-interactively 'calc-log)) | ||
| 299 | :keys "B" | ||
| 300 | :active (>= (calc-stack-size) 2) | ||
| 301 | :help "The logarithm with an arbitrary base"] | ||
| 302 | ["(2:) ^ (1:)" | ||
| 303 | calc-power | ||
| 304 | :keys "^" | ||
| 305 | :active (>= (calc-stack-size) 2)]) | ||
| 306 | (list "Trigonometric Functions" | ||
| 307 | ["sin(1:)" | ||
| 308 | (progn | ||
| 309 | (require 'calc-math) | ||
| 310 | (call-interactively 'calc-sin)) | ||
| 311 | :keys "S" | ||
| 312 | :active (>= (calc-stack-size) 1)] | ||
| 313 | ["cos(1:)" | ||
| 314 | (progn | ||
| 315 | (require 'calc-math) | ||
| 316 | (call-interactively 'calc-cos)) | ||
| 317 | :keys "C" | ||
| 318 | :active (>= (calc-stack-size) 1)] | ||
| 319 | ["tan(1:)" | ||
| 320 | (progn | ||
| 321 | (require 'calc-math) | ||
| 322 | (call-interactively 'calc-tan)) | ||
| 323 | :keys "T" | ||
| 324 | :active (>= (calc-stack-size) 1)] | ||
| 325 | ["arcsin(1:)" | ||
| 326 | (progn | ||
| 327 | (require 'calc-math) | ||
| 328 | (call-interactively 'calc-arcsin)) | ||
| 329 | :keys "I S" | ||
| 330 | :active (>= (calc-stack-size) 1)] | ||
| 331 | ["arccos(1:)" | ||
| 332 | (progn | ||
| 333 | (require 'calc-math) | ||
| 334 | (call-interactively 'calc-arccos)) | ||
| 335 | :keys "I C" | ||
| 336 | :active (>= (calc-stack-size) 1)] | ||
| 337 | ["arctan(1:)" | ||
| 338 | (progn | ||
| 339 | (require 'calc-math) | ||
| 340 | (call-interactively 'calc-arctan)) | ||
| 341 | :keys "I T" | ||
| 342 | :active (>= (calc-stack-size) 1)] | ||
| 343 | ["arctan2(2:,1:)" | ||
| 344 | (progn | ||
| 345 | (require 'calc-math) | ||
| 346 | (call-interactively 'calc-arctan2)) | ||
| 347 | :keys "f T" | ||
| 348 | :active (>= (calc-stack-size) 2)] | ||
| 349 | "--Angle Measure--" | ||
| 350 | ["Radians" | ||
| 351 | (progn | ||
| 352 | (require 'calc-math) | ||
| 353 | (calc-radians-mode)) | ||
| 354 | :keys "m r" | ||
| 355 | :style radio | ||
| 356 | :selected (eq calc-angle-mode 'rad)] | ||
| 357 | ["Degrees" | ||
| 358 | (progn | ||
| 359 | (require 'calc-math) | ||
| 360 | (calc-degrees-mode)) | ||
| 361 | :keys "m d" | ||
| 362 | :style radio | ||
| 363 | :selected (eq calc-angle-mode 'deg)] | ||
| 364 | ["HMS" | ||
| 365 | (progn | ||
| 366 | (require 'calc-math) | ||
| 367 | (calc-hms-mode)) | ||
| 368 | :keys "m h" | ||
| 369 | :style radio | ||
| 370 | :selected (eq calc-angle-mode 'hms)]) | ||
| 371 | (list "Hyperbolic Functions" | ||
| 372 | ["sinh(1:)" | ||
| 373 | (progn | ||
| 374 | (require 'calc-math) | ||
| 375 | (call-interactively 'calc-sinh)) | ||
| 376 | :keys "H S" | ||
| 377 | :active (>= (calc-stack-size) 1)] | ||
| 378 | ["cosh(1:)" | ||
| 379 | (progn | ||
| 380 | (require 'calc-math) | ||
| 381 | (call-interactively 'calc-cosh)) | ||
| 382 | :keys "H C" | ||
| 383 | :active (>= (calc-stack-size) 1)] | ||
| 384 | ["tanh(1:)" | ||
| 385 | (progn | ||
| 386 | (require 'calc-math) | ||
| 387 | (call-interactively 'calc-tanh)) | ||
| 388 | :keys "H T" | ||
| 389 | :active (>= (calc-stack-size) 1)] | ||
| 390 | ["arcsinh(1:)" | ||
| 391 | (progn | ||
| 392 | (require 'calc-math) | ||
| 393 | (call-interactively 'calc-arcsinh)) | ||
| 394 | :keys "I H S" | ||
| 395 | :active (>= (calc-stack-size) 1)] | ||
| 396 | ["arccosh(1:)" | ||
| 397 | (progn | ||
| 398 | (require 'calc-math) | ||
| 399 | (call-interactively 'calc-arccosh)) | ||
| 400 | :keys "I H C" | ||
| 401 | :active (>= (calc-stack-size) 1)] | ||
| 402 | ["arctanh(1:)" | ||
| 403 | (progn | ||
| 404 | (require 'calc-math) | ||
| 405 | (call-interactively 'calc-arctanh)) | ||
| 406 | :keys "I H T" | ||
| 407 | :active (>= (calc-stack-size) 1)]) | ||
| 408 | (list "Advanced Math Functions" | ||
| 409 | ["Gamma(1:)" | ||
| 410 | (progn | ||
| 411 | (require 'calc-comb) | ||
| 412 | (call-interactively 'calc-gamma)) | ||
| 413 | :keys "f g" | ||
| 414 | :active (>= (calc-stack-size) 1) | ||
| 415 | :help "The Euler Gamma function"] | ||
| 416 | ["GammaP(2:,1:)" | ||
| 417 | (progn | ||
| 418 | (require 'calc-funcs) | ||
| 419 | (call-interactively 'calc-inc-gamma)) | ||
| 420 | :keys "f G" | ||
| 421 | :active (>= (calc-stack-size) 2) | ||
| 422 | :help "The lower incomplete Gamma function"] | ||
| 423 | ["Beta(2:,1:)" | ||
| 424 | (progn | ||
| 425 | (require 'calc-funcs) | ||
| 426 | (call-interactively 'calc-beta)) | ||
| 427 | :keys "f b" | ||
| 428 | :active (>= (calc-stack-size) 2) | ||
| 429 | :help "The Euler Beta function"] | ||
| 430 | ["BetaI(3:,2:,1:)" | ||
| 431 | (progn | ||
| 432 | (require 'calc-funcs) | ||
| 433 | (call-interactively 'calc-inc-beta)) | ||
| 434 | :keys "f B" | ||
| 435 | :active (>= (calc-stack-size) 3) | ||
| 436 | :help "The incomplete Beta function"] | ||
| 437 | ["erf(1:)" | ||
| 438 | (progn | ||
| 439 | (require 'calc-funcs) | ||
| 440 | (call-interactively 'calc-erf)) | ||
| 441 | :keys "f e" | ||
| 442 | :active (>= (calc-stack-size) 1) | ||
| 443 | :help "The error function"] | ||
| 444 | ["BesselJ(2:,1:)" | ||
| 445 | (progn | ||
| 446 | (require 'calc-funcs) | ||
| 447 | (call-interactively 'calc-bessel-J)) | ||
| 448 | :keys "f j" | ||
| 449 | :active (>= (calc-stack-size) 2) | ||
| 450 | :help "The Bessel function of the first kind (of order (2:))"] | ||
| 451 | ["BesselY(2:,1:)" | ||
| 452 | (progn | ||
| 453 | (require 'calc-funcs) | ||
| 454 | (call-interactively 'calc-bessel-Y)) | ||
| 455 | :keys "f y" | ||
| 456 | :active (>= (calc-stack-size) 2) | ||
| 457 | :help "The Bessel function of the second kind (of order (2:))"]) | ||
| 458 | (list "Combinatorial Functions" | ||
| 459 | ["gcd(2:,1:)" | ||
| 460 | (progn | ||
| 461 | (require 'calc-comb) | ||
| 462 | (call-interactively 'calc-gcd)) | ||
| 463 | :keys "k g" | ||
| 464 | :active (>= (calc-stack-size) 2)] | ||
| 465 | ["lcm(2:,1:)" | ||
| 466 | (progn | ||
| 467 | (require 'calc-comb) | ||
| 468 | (call-interactively 'calc-lcm)) | ||
| 469 | :keys "k l" | ||
| 470 | :active (>= (calc-stack-size) 2)] | ||
| 471 | ["factorial(1:)" | ||
| 472 | (progn | ||
| 473 | (require 'calc-comb) | ||
| 474 | (call-interactively 'calc-factorial)) | ||
| 475 | :keys "!" | ||
| 476 | :active (>= (calc-stack-size) 1)] | ||
| 477 | ["(2:) choose (1:)" | ||
| 478 | (progn | ||
| 479 | (require 'calc-comb) | ||
| 480 | (call-interactively 'calc-choose)) | ||
| 481 | :keys "k c" | ||
| 482 | :active (>= (calc-stack-size) 2)] | ||
| 483 | ["permutations(2:,1:)" | ||
| 484 | (progn | ||
| 485 | (require 'calc-comb) | ||
| 486 | (call-interactively 'calc-perm)) | ||
| 487 | :keys "H k c" | ||
| 488 | :active (>= (calc-stack-size) 2)] | ||
| 489 | ["Primality test for (1:)" | ||
| 490 | (progn | ||
| 491 | (require 'calc-comb) | ||
| 492 | (call-interactively 'calc-prime-test)) | ||
| 493 | :keys "k p" | ||
| 494 | :active (>= (calc-stack-size) 1) | ||
| 495 | :help "For large (1:), a probabilistic test"] | ||
| 496 | ["Factor (1:) into primes" | ||
| 497 | (progn | ||
| 498 | (require 'calc-comb) | ||
| 499 | (call-interactively 'calc-prime-factors)) | ||
| 500 | :keys "k f" | ||
| 501 | :active (>= (calc-stack-size) 1)] | ||
| 502 | ["Next prime after (1:)" | ||
| 503 | (progn | ||
| 504 | (require 'calc-comb) | ||
| 505 | (call-interactively 'calc-next-prime)) | ||
| 506 | :keys "k n" | ||
| 507 | :active (>= (calc-stack-size) 1)] | ||
| 508 | ["Previous prime before (1:)" | ||
| 509 | (progn | ||
| 510 | (require 'calc-comb) | ||
| 511 | (call-interactively 'calc-prev-prime)) | ||
| 512 | :keys "I k n" | ||
| 513 | :active (>= (calc-stack-size) 1)] | ||
| 514 | ["phi(1:)" | ||
| 515 | (progn | ||
| 516 | (require 'calc-comb) | ||
| 517 | (call-interactively 'calc-totient)) | ||
| 518 | :keys "k n" | ||
| 519 | :active (>= (calc-stack-size) 1) | ||
| 520 | :help "Euler's totient function"] | ||
| 521 | ["random(1:)" | ||
| 522 | (progn | ||
| 523 | (require 'calc-comb) | ||
| 524 | (call-interactively 'calc-random)) | ||
| 525 | :keys "k r" | ||
| 526 | :active (>= (calc-stack-size) 1) | ||
| 527 | :help "A random number >=1 and < (1:)"]) | ||
| 528 | "----" | ||
| 529 | ["Help on Scientific Functions" | ||
| 530 | (calc-info-goto-node "Scientific Functions")]) | ||
| 531 | "Menu for Calc's scientific functions.") | ||
| 532 | |||
| 533 | (defvar calc-algebra-menu | ||
| 534 | (list "Algebra" | ||
| 535 | (list "Simplification" | ||
| 536 | ["Simplify (1:)" | ||
| 537 | (progn | ||
| 538 | (require 'calc-alg) | ||
| 539 | (call-interactively 'calc-simplify)) | ||
| 540 | :keys "a s" | ||
| 541 | :active (>= (calc-stack-size) 1)] | ||
| 542 | ["Simplify (1:) with extended rules" | ||
| 543 | (progn | ||
| 544 | (require 'calc-alg) | ||
| 545 | (call-interactively 'calc-simplify-extended)) | ||
| 546 | :keys "a e" | ||
| 547 | :active (>= (calc-stack-size) 1) | ||
| 548 | :help "Apply possibly unsafe simplifications"]) | ||
| 549 | (list "Manipulation" | ||
| 550 | ["Expand formula (1:)" | ||
| 551 | (progn | ||
| 552 | (require 'calc-alg) | ||
| 553 | (call-interactively 'calc-expand-formula)) | ||
| 554 | :keys "a \"" | ||
| 555 | :active (>= (calc-stack-size) 1) | ||
| 556 | :help "Expand (1:) into its defining formula, if possible"] | ||
| 557 | ["Evaluate variables in (1:)" | ||
| 558 | (progn | ||
| 559 | (require 'calc-ext) | ||
| 560 | (call-interactively 'calc-evaluate)) | ||
| 561 | :keys "=" | ||
| 562 | :active (>= (calc-stack-size) 1)] | ||
| 563 | ["Make substitution in (1:)" | ||
| 564 | (progn | ||
| 565 | (require 'calc-alg) | ||
| 566 | (call-interactively 'calc-substitute)) | ||
| 567 | :keys "a b" | ||
| 568 | :active (>= (calc-stack-size) 1) | ||
| 569 | :help | ||
| 570 | "Substitute all occurrences of a sub-expression with a new sub-expression"]) | ||
| 571 | (list "Polynomials" | ||
| 572 | ["Factor (1:)" | ||
| 573 | (progn | ||
| 574 | (require 'calc-alg) | ||
| 575 | (call-interactively 'calc-factor)) | ||
| 576 | :keys "a f" | ||
| 577 | :active (>= (calc-stack-size) 1)] | ||
| 578 | ["Collect terms in (1:)" | ||
| 579 | (progn | ||
| 580 | (require 'calc-alg) | ||
| 581 | (call-interactively 'calc-collect)) | ||
| 582 | :keys "a c" | ||
| 583 | :active (>= (calc-stack-size) 1) | ||
| 584 | :help "Arrange as a polynomial in a given variable"] | ||
| 585 | ["Expand (1:)" | ||
| 586 | (progn | ||
| 587 | (require 'calc-alg) | ||
| 588 | (call-interactively 'calc-expand)) | ||
| 589 | :keys "a x" | ||
| 590 | :active (>= (calc-stack-size) 1) | ||
| 591 | :help "Apply distributive law everywhere"] | ||
| 592 | ["Find roots of (1:)" | ||
| 593 | (progn | ||
| 594 | (require 'calcalg2) | ||
| 595 | (call-interactively 'calc-poly-roots)) | ||
| 596 | :keys "a P" | ||
| 597 | :active (>= (calc-stack-size) 1)]) | ||
| 598 | (list "Calculus" | ||
| 599 | ["Differentiate (1:)" | ||
| 600 | (progn | ||
| 601 | (require 'calcalg2) | ||
| 602 | (call-interactively 'calc-derivative)) | ||
| 603 | :keys "a d" | ||
| 604 | :active (>= (calc-stack-size) 1)] | ||
| 605 | ["Integrate (1:) [indefinite]" | ||
| 606 | (progn | ||
| 607 | (require 'calcalg2) | ||
| 608 | (call-interactively 'calc-integral)) | ||
| 609 | :keys "a i" | ||
| 610 | :active (>= (calc-stack-size) 1)] | ||
| 611 | ["Integrate (1:) [definite]" | ||
| 612 | (progn | ||
| 613 | (require 'calcalg2) | ||
| 614 | (let ((var (read-string "Integration variable: "))) | ||
| 615 | (calc-tabular-command 'calcFunc-integ "Integration" | ||
| 616 | "intg" nil var nil nil))) | ||
| 617 | :keys "C-u a i" | ||
| 618 | :active (>= (calc-stack-size) 1)] | ||
| 619 | ["Integrate (1:) [numeric]" | ||
| 620 | (progn | ||
| 621 | (require 'calcalg2) | ||
| 622 | (call-interactively 'calc-num-integral)) | ||
| 623 | :keys "a I" | ||
| 624 | :active (>= (calc-stack-size) 1) | ||
| 625 | :help "Integrate using the open Romberg method"] | ||
| 626 | ["Taylor expand (1:)" | ||
| 627 | (progn | ||
| 628 | (require 'calcalg2) | ||
| 629 | (call-interactively 'calc-taylor)) | ||
| 630 | :keys "a t" | ||
| 631 | :active (>= (calc-stack-size) 1)] | ||
| 632 | ["Minimize (2:) [initial guess = (1:)]" | ||
| 633 | (progn | ||
| 634 | (require 'calcalg3) | ||
| 635 | (call-interactively 'calc-find-minimum)) | ||
| 636 | :keys "a N" | ||
| 637 | :active (>= (calc-stack-size) 2) | ||
| 638 | :help "Find a local minimum"] | ||
| 639 | ["Maximize (2:) [initial guess = (1:)]" | ||
| 640 | (progn | ||
| 641 | (require 'calcalg3) | ||
| 642 | (call-interactively 'calc-find-maximum)) | ||
| 643 | :keys "a X" | ||
| 644 | :active (>= (calc-stack-size) 2) | ||
| 645 | :help "Find a local maximum"]) | ||
| 646 | (list "Solving" | ||
| 647 | ["Solve equation (1:)" | ||
| 648 | (progn | ||
| 649 | (require 'calcalg2) | ||
| 650 | (call-interactively 'calc-solve-for)) | ||
| 651 | :keys "a S" | ||
| 652 | :active (>= (calc-stack-size) 1)] | ||
| 653 | ["Solve equation (2:) numerically [initial guess = (1:)]" | ||
| 654 | (progn | ||
| 655 | (require 'calcalg3) | ||
| 656 | (call-interactively 'calc-find-root)) | ||
| 657 | :keys "a R" | ||
| 658 | :active (>= (calc-stack-size) 2)] | ||
| 659 | ["Find roots of polynomial (1:)" | ||
| 660 | (progn | ||
| 661 | (require 'calcalg2) | ||
| 662 | (call-interactively 'calc-poly-roots)) | ||
| 663 | :keys "a P" | ||
| 664 | :active (>= (calc-stack-size) 1)]) | ||
| 665 | (list "Curve Fitting" | ||
| 666 | ["Fit (1:)=[x values, y values] to a curve" | ||
| 667 | (progn | ||
| 668 | (require 'calcalg3) | ||
| 669 | (call-interactively 'calc-curve-fit)) | ||
| 670 | :keys "a F" | ||
| 671 | :active (>= (calc-stack-size) 1)]) | ||
| 672 | "----" | ||
| 673 | ["Help on Algebra" | ||
| 674 | (calc-info-goto-node "Algebra")]) | ||
| 675 | "Menu for Calc's algebraic facilities.") | ||
| 676 | |||
| 677 | |||
| 678 | (defvar calc-graphics-menu | ||
| 679 | (list "Graphics" | ||
| 680 | ["Graph 2D [(1:)= y values, (2:)= x values]" | ||
| 681 | (progn | ||
| 682 | (require 'calc-graph) | ||
| 683 | (call-interactively 'calc-graph-fast)) | ||
| 684 | :keys "g f" | ||
| 685 | :active (>= (calc-stack-size) 2)] | ||
| 686 | ["Graph 3D [(1:)= z values, (2:)= y values, (3:)= x values]" | ||
| 687 | (progn | ||
| 688 | (require 'calc-graph) | ||
| 689 | (call-interactively 'calc-graph-fast-3d)) | ||
| 690 | :keys "g F" | ||
| 691 | :active (>= (calc-stack-size) 3)] | ||
| 692 | "----" | ||
| 693 | ["Help on Graphics" | ||
| 694 | (calc-info-goto-node "Graphics")]) | ||
| 695 | "Menu for Calc's graphics.") | ||
| 696 | |||
| 697 | |||
| 698 | (defvar calc-vectors-menu | ||
| 699 | (list "Matrices/Vectors" | ||
| 700 | (list "Matrices" | ||
| 701 | ["(2:) + (1:)" calc-plus | ||
| 702 | :keys "+" :active (>= (calc-stack-size) 2)] | ||
| 703 | ["(2:) - (1:)" calc-minus | ||
| 704 | :keys "-" :active (>= (calc-stack-size) 2)] | ||
| 705 | ["(2:) * (1:)" calc-times | ||
| 706 | :keys "*" :active (>= (calc-stack-size) 2)] | ||
| 707 | ["(1:)^(-1)" | ||
| 708 | (progn | ||
| 709 | (require 'calc-arith) | ||
| 710 | (call-interactively 'calc-inv)) | ||
| 711 | :keys "&" | ||
| 712 | :active (>= (calc-stack-size) 1)] | ||
| 713 | ["Create an identity matrix" | ||
| 714 | (progn | ||
| 715 | (require 'calc-vec) | ||
| 716 | (call-interactively 'calc-ident)) | ||
| 717 | :keys "v i"] | ||
| 718 | ["transpose(1:)" | ||
| 719 | (progn | ||
| 720 | (require 'calc-vec) | ||
| 721 | (call-interactively 'calc-transpose)) | ||
| 722 | :keys "v t" | ||
| 723 | :active (>= (calc-stack-size) 1)] | ||
| 724 | ["det(1:)" | ||
| 725 | (progn | ||
| 726 | (require 'calc-mtx) | ||
| 727 | (call-interactively 'calc-mdet)) | ||
| 728 | :keys "V D" | ||
| 729 | :active (>= (calc-stack-size) 1)] | ||
| 730 | ["trace(1:)" | ||
| 731 | (progn | ||
| 732 | (require 'calc-mtx) | ||
| 733 | (call-interactively 'calc-mtrace)) | ||
| 734 | :keys "V T" | ||
| 735 | :active (>= (calc-stack-size) 1)] | ||
| 736 | ["LUD decompose (1:)" | ||
| 737 | (progn | ||
| 738 | (require 'calc-mtx) | ||
| 739 | (call-interactively 'calc-mlud)) | ||
| 740 | :keys "V L" | ||
| 741 | :active (>= (calc-stack-size) 1)] | ||
| 742 | ["Extract a row from (1:)" | ||
| 743 | (progn | ||
| 744 | (require 'calc-vec) | ||
| 745 | (call-interactively 'calc-mrow)) | ||
| 746 | :keys "v r" | ||
| 747 | :active (>= (calc-stack-size) 1)] | ||
| 748 | ["Extract a column from (1:)" | ||
| 749 | (progn | ||
| 750 | (require 'calc-vec) | ||
| 751 | (call-interactively 'calc-mcol)) | ||
| 752 | :keys "v c" | ||
| 753 | :active (>= (calc-stack-size) 1)]) | ||
| 754 | (list "Vectors" | ||
| 755 | ["Extract the first element of (1:)" | ||
| 756 | (progn | ||
| 757 | (require 'calc-vec) | ||
| 758 | (call-interactively 'calc-head)) | ||
| 759 | :keys "v h" | ||
| 760 | :active (>= (calc-stack-size) 1)] | ||
| 761 | ["Extract an element from (1:)" | ||
| 762 | (progn | ||
| 763 | (require 'calc-vec) | ||
| 764 | (call-interactively 'calc-mrow)) | ||
| 765 | :keys "v r" | ||
| 766 | :active (>= (calc-stack-size) 1)] | ||
| 767 | ["Reverse (1:)" | ||
| 768 | (progn | ||
| 769 | (require 'calc-vec) | ||
| 770 | (call-interactively 'calc-reverse-vector)) | ||
| 771 | :keys "v v" | ||
| 772 | :active (>= (calc-stack-size) 1)] | ||
| 773 | ["Unpack (1:)" | ||
| 774 | (progn | ||
| 775 | (require 'calc-vec) | ||
| 776 | (call-interactively 'calc-unpack)) | ||
| 777 | :keys "v u" | ||
| 778 | :active (>= (calc-stack-size) 1) | ||
| 779 | :help "Separate the elements of (1:)"] | ||
| 780 | ["(2:) cross (1:)" | ||
| 781 | (progn | ||
| 782 | (require 'calc-vec) | ||
| 783 | (call-interactively 'calc-cross)) | ||
| 784 | :keys "V C" | ||
| 785 | :active (>= (calc-stack-size) 2) | ||
| 786 | :help "The cross product in R^3"] | ||
| 787 | ["(2:) dot (1:)" | ||
| 788 | calc-mult | ||
| 789 | :keys "*" | ||
| 790 | :active (>= (calc-stack-size) 2) | ||
| 791 | :help "The dot product"] | ||
| 792 | ["Map a function across (1:)" | ||
| 793 | (progn | ||
| 794 | (require 'calc-map) | ||
| 795 | (call-interactively 'calc-map)) | ||
| 796 | :keys "V M" | ||
| 797 | :active (>= (calc-stack-size) 1) | ||
| 798 | :help "Apply a function to each element"]) | ||
| 799 | (list "Vectors As Sets" | ||
| 800 | ["Remove duplicates from (1:)" | ||
| 801 | (progn | ||
| 802 | (require 'calc-vec) | ||
| 803 | (call-interactively 'calc-remove-duplicates)) | ||
| 804 | :keys "V +" | ||
| 805 | :active (>= (calc-stack-size) 1)] | ||
| 806 | ["(2:) union (1:)" | ||
| 807 | (progn | ||
| 808 | (require 'calc-vec) | ||
| 809 | (call-interactively 'calc-set-union)) | ||
| 810 | :keys "V V" | ||
| 811 | :active (>= (calc-stack-size) 2)] | ||
| 812 | ["(2:) intersect (1:)" | ||
| 813 | (progn | ||
| 814 | (require 'calc-vec) | ||
| 815 | (call-interactively 'calc-set-intersect)) | ||
| 816 | :keys "V ^" | ||
| 817 | :active (>= (calc-stack-size) 2)] | ||
| 818 | ["(2:) \\ (1:)" | ||
| 819 | (progn | ||
| 820 | (require 'calc-vec) | ||
| 821 | (call-interactively 'calc-set-difference)) | ||
| 822 | :keys "V -" | ||
| 823 | :help "Set difference" | ||
| 824 | :active (>= (calc-stack-size) 2)]) | ||
| 825 | (list "Statistics On Vectors" | ||
| 826 | ["length(1:)" | ||
| 827 | (progn | ||
| 828 | (require 'calc-stat) | ||
| 829 | (call-interactively 'calc-vector-count)) | ||
| 830 | :keys "u #" | ||
| 831 | :active (>= (calc-stack-size) 1) | ||
| 832 | :help "The number of data values"] | ||
| 833 | ["sum(1:)" | ||
| 834 | (progn | ||
| 835 | (require 'calc-stat) | ||
| 836 | (call-interactively 'calc-vector-sum)) | ||
| 837 | :keys "u +" | ||
| 838 | :active (>= (calc-stack-size) 1) | ||
| 839 | :help "The sum of the data values"] | ||
| 840 | ["max(1:)" | ||
| 841 | (progn | ||
| 842 | (require 'calc-stat) | ||
| 843 | (call-interactively 'calc-vector-max)) | ||
| 844 | :keys "u x" | ||
| 845 | :active (>= (calc-stack-size) 1) | ||
| 846 | :help "The maximum of the data values"] | ||
| 847 | ["min(1:)" | ||
| 848 | (progn | ||
| 849 | (require 'calc-stat) | ||
| 850 | (call-interactively 'calc-vector-min)) | ||
| 851 | :keys "u N" | ||
| 852 | :active (>= (calc-stack-size) 1) | ||
| 853 | :help "The minumum of the data values"] | ||
| 854 | ["mean(1:)" | ||
| 855 | (progn | ||
| 856 | (require 'calc-stat) | ||
| 857 | (call-interactively 'calc-vector-mean)) | ||
| 858 | :keys "u M" | ||
| 859 | :active (>= (calc-stack-size) 1) | ||
| 860 | :help "The average (arithmetic mean) of the data values"] | ||
| 861 | ["mean(1:) with error" | ||
| 862 | (progn | ||
| 863 | (require 'calc-stat) | ||
| 864 | (call-interactively 'calc-vector-mean-error)) | ||
| 865 | :keys "I u M" | ||
| 866 | :active (>= (calc-stack-size) 1) | ||
| 867 | :help "The average (arithmetic mean) of the data values as an error form"] | ||
| 868 | ["sdev(1:)" | ||
| 869 | (progn | ||
| 870 | (require 'calc-stat) | ||
| 871 | (call-interactively 'calc-vector-sdev)) | ||
| 872 | :keys "u S" | ||
| 873 | :active (>= (calc-stack-size) 1) | ||
| 874 | :help "The sample sdev, sqrt[sum((values - mean)^2)/(N-1)]"] | ||
| 875 | ["variance(1:)" | ||
| 876 | (progn | ||
| 877 | (require 'calc-stat) | ||
| 878 | (call-interactively 'calc-vector-variance)) | ||
| 879 | :keys "H u S" | ||
| 880 | :active (>= (calc-stack-size) 1) | ||
| 881 | :help "The sample variance, sum((values - mean)^2)/(N-1)"] | ||
| 882 | ["population sdev(1:)" | ||
| 883 | (progn | ||
| 884 | (require 'calc-stat) | ||
| 885 | (call-interactively 'calc-vector-pop-sdev)) | ||
| 886 | :keys "I u S" | ||
| 887 | :active (>= (calc-stack-size) 1) | ||
| 888 | :help "The population sdev, sqrt[sum((values - mean)^2)/N]"] | ||
| 889 | ["population variance(1:)" | ||
| 890 | (progn | ||
| 891 | (require 'calc-stat) | ||
| 892 | (call-interactively 'calc-vector-pop-variance)) | ||
| 893 | :keys "H I u S" | ||
| 894 | :active (>= (calc-stack-size) 1) | ||
| 895 | :help "The population variance, sum((values - mean)^2)/N"] | ||
| 896 | ["median(1:)" | ||
| 897 | (progn | ||
| 898 | (require 'calc-stat) | ||
| 899 | (call-interactively 'calc-vector-median)) | ||
| 900 | :keys "H u M" | ||
| 901 | :active (>= (calc-stack-size) 1) | ||
| 902 | :help "The median of the data values"] | ||
| 903 | ["harmonic mean(1:)" | ||
| 904 | (progn | ||
| 905 | (require 'calc-stat) | ||
| 906 | (call-interactively 'calc-vector-harmonic-mean)) | ||
| 907 | :keys "H I u M" | ||
| 908 | :active (>= (calc-stack-size) 1)] | ||
| 909 | ["geometric mean(1:)" | ||
| 910 | (progn | ||
| 911 | (require 'calc-stat) | ||
| 912 | (call-interactively 'calc-vector-geometric-mean)) | ||
| 913 | :keys "u G" | ||
| 914 | :active (>= (calc-stack-size) 1)] | ||
| 915 | ["arithmetic-geometric mean(1:)" | ||
| 916 | (progn | ||
| 917 | (require 'calc-stat) | ||
| 918 | (let ((calc-hyperbolic-flag t)) | ||
| 919 | (call-interactively 'calc-vector-geometric-mean))) | ||
| 920 | :keys "H u G" | ||
| 921 | :active (>= (calc-stack-size) 1)] | ||
| 922 | ["RMS(1:)" | ||
| 923 | (progn (require 'calc-arith) | ||
| 924 | (call-interactively 'calc-abs)) | ||
| 925 | :keys "A" | ||
| 926 | :active (>= (calc-stack-size) 1) | ||
| 927 | :help "The root-mean-square, or quadratic mean"]) | ||
| 928 | ["Abbreviate long vectors" | ||
| 929 | (progn | ||
| 930 | (require 'calc-mode) | ||
| 931 | (call-interactively 'calc-full-vectors)) | ||
| 932 | :keys "v ." | ||
| 933 | :style toggle | ||
| 934 | :selected (not calc-full-vectors)] | ||
| 935 | "----" | ||
| 936 | ["Help on Matrices/Vectors" | ||
| 937 | (calc-info-goto-node "Matrix Functions")]) | ||
| 938 | "Menu for Calc's vector and matrix functions.") | ||
| 939 | |||
| 940 | (defvar calc-units-menu | ||
| 941 | (list "Units" | ||
| 942 | ["Convert units in (1:)" | ||
| 943 | (progn | ||
| 944 | (require 'calc-units) | ||
| 945 | (call-interactively 'calc-convert-units )) | ||
| 946 | :keys "u c" | ||
| 947 | :active (>= (calc-stack-size) 1)] | ||
| 948 | ["Convert temperature in (1:)" | ||
| 949 | (progn | ||
| 950 | (require 'calc-units) | ||
| 951 | (call-interactively 'calc-convert-temperature)) | ||
| 952 | :keys "u t" | ||
| 953 | :active (>= (calc-stack-size) 1)] | ||
| 954 | ["Simplify units in (1:)" | ||
| 955 | (progn | ||
| 956 | (require 'calc-units) | ||
| 957 | (call-interactively 'calc-simplify-units)) | ||
| 958 | :keys "u s" | ||
| 959 | :active (>= (calc-stack-size) 1)] | ||
| 960 | ["View units table" | ||
| 961 | (progn | ||
| 962 | (require 'calc-units) | ||
| 963 | (call-interactively 'calc-view-units-table)) | ||
| 964 | :keys "u V"] | ||
| 965 | "----" | ||
| 966 | ["Help on Units" | ||
| 967 | (calc-info-goto-node "Units")]) | ||
| 968 | "Menu for Calc's units functions.") | ||
| 969 | |||
| 970 | (defvar calc-variables-menu | ||
| 971 | (list "Variables" | ||
| 972 | ["Store (1:) into a variable" | ||
| 973 | (progn | ||
| 974 | (require 'calc-store) | ||
| 975 | (call-interactively 'calc-store)) | ||
| 976 | :keys "s s" | ||
| 977 | :active (>= (calc-stack-size) 1)] | ||
| 978 | ["Recall a variable value" | ||
| 979 | (progn | ||
| 980 | (require 'calc-store) | ||
| 981 | (call-interactively 'calc-recall )) | ||
| 982 | :keys "s r"] | ||
| 983 | ["Edit the value of a variable" | ||
| 984 | (progn | ||
| 985 | (require 'calc-store) | ||
| 986 | (call-interactively 'calc-edit-variable)) | ||
| 987 | :keys "s e"] | ||
| 988 | ["Exchange (1:) with a variable value" | ||
| 989 | (progn | ||
| 990 | (require 'calc-store) | ||
| 991 | (call-interactively 'calc-store-exchange)) | ||
| 992 | :keys "s x" | ||
| 993 | :active (>= (calc-stack-size) 1)] | ||
| 994 | ["Clear variable value" | ||
| 995 | (progn | ||
| 996 | (require 'calc-store) | ||
| 997 | (call-interactively 'calc-unstore)) | ||
| 998 | :keys "s u"] | ||
| 999 | ["Evaluate variables in (1:)" | ||
| 1000 | (progn | ||
| 1001 | (require 'calc-ext) | ||
| 1002 | (call-interactively 'calc-evaluate)) | ||
| 1003 | :keys "=" | ||
| 1004 | :active (>= (calc-stack-size) 1)] | ||
| 1005 | ["Evaluate (1:), assigning a value to a variable" | ||
| 1006 | (progn | ||
| 1007 | (require 'calc-store) | ||
| 1008 | (call-interactively 'calc-let)) | ||
| 1009 | :keys "s l" | ||
| 1010 | :active (>= (calc-stack-size) 1) | ||
| 1011 | :help "Evaluate (1:) under a temporary assignment of a variable"] | ||
| 1012 | "----" | ||
| 1013 | ["Help on Variables" | ||
| 1014 | (calc-info-goto-node "Store and Recall")]) | ||
| 1015 | "Menu for Calc's variables.") | ||
| 1016 | |||
| 1017 | (defvar calc-stack-menu | ||
| 1018 | (list "Stack" | ||
| 1019 | ["Remove (1:)" | ||
| 1020 | calc-pop | ||
| 1021 | :keys "DEL" | ||
| 1022 | :active (>= (calc-stack-size) 1)] | ||
| 1023 | ["Switch (1:) and (2:)" | ||
| 1024 | calc-roll-down | ||
| 1025 | :keys "TAB" | ||
| 1026 | :active (>= (calc-stack-size) 2)] | ||
| 1027 | ["Duplicate (1:)" | ||
| 1028 | calc-enter | ||
| 1029 | :keys "RET" | ||
| 1030 | :active (>= (calc-stack-size) 1)] | ||
| 1031 | ["Edit (1:)" | ||
| 1032 | (progn | ||
| 1033 | (require 'calc-yank) | ||
| 1034 | (call-interactively calc-edit)) | ||
| 1035 | :keys "`" | ||
| 1036 | :active (>= (calc-stack-size) 1)] | ||
| 1037 | "----" | ||
| 1038 | ["Help on Stack" | ||
| 1039 | (calc-info-goto-node "Stack and Trail")]) | ||
| 1040 | "Menu for Calc's stack functions.") | ||
| 1041 | |||
| 1042 | (defvar calc-errors-menu | ||
| 1043 | (list "Undo" | ||
| 1044 | ["Undo" | ||
| 1045 | (progn | ||
| 1046 | (require 'calc-undo) | ||
| 1047 | (call-interactively 'calc-undo)) | ||
| 1048 | :keys "U"] | ||
| 1049 | ["Redo" | ||
| 1050 | (progn | ||
| 1051 | (require 'calc-undo) | ||
| 1052 | (call-interactively 'calc-redo)) | ||
| 1053 | :keys "D"] | ||
| 1054 | "----" | ||
| 1055 | ["Help on Undo" | ||
| 1056 | (progn | ||
| 1057 | (calc-info-goto-node "Introduction") | ||
| 1058 | (Info-goto-node "Undo"))])) | ||
| 1059 | |||
| 1060 | (defvar calc-modes-menu | ||
| 1061 | (list "Modes" | ||
| 1062 | ["Precision" | ||
| 1063 | (progn | ||
| 1064 | (require 'calc-ext) | ||
| 1065 | (call-interactively 'calc-precision)) | ||
| 1066 | :keys "p" | ||
| 1067 | :help "Set the precision for floating point calculations"] | ||
| 1068 | ["Fraction mode" | ||
| 1069 | (progn | ||
| 1070 | (require 'calc-frac) | ||
| 1071 | (call-interactively 'calc-frac-mode)) | ||
| 1072 | :keys "m f" | ||
| 1073 | :style toggle | ||
| 1074 | :selected calc-prefer-frac | ||
| 1075 | :help "Leave integer quotients as fractions"] | ||
| 1076 | ["Symbolic mode" | ||
| 1077 | (lambda () | ||
| 1078 | (interactive) | ||
| 1079 | (require 'calc-mode) | ||
| 1080 | (calc-symbolic-mode nil)) | ||
| 1081 | :keys "m s" | ||
| 1082 | :style toggle | ||
| 1083 | :selected calc-symbolic-mode | ||
| 1084 | :help "Leave functions producing inexact answers in symbolic form"] | ||
| 1085 | ["Infinite mode" | ||
| 1086 | (lambda () | ||
| 1087 | (interactive) | ||
| 1088 | (require 'calc-mode) | ||
| 1089 | (calc-infinite-mode nil)) | ||
| 1090 | :keys "m i" | ||
| 1091 | :style toggle | ||
| 1092 | :selected calc-infinite-mode | ||
| 1093 | :help "Let expressions like 1/0 produce infinite results"] | ||
| 1094 | ["Abbreviate long vectors" | ||
| 1095 | (progn | ||
| 1096 | (require 'calc-mode) | ||
| 1097 | (call-interactively 'calc-full-vectors)) | ||
| 1098 | :keys "v ." | ||
| 1099 | :style toggle | ||
| 1100 | :selected (not calc-full-vectors)] | ||
| 1101 | (list "Angle Measure" | ||
| 1102 | ["Radians" | ||
| 1103 | (progn | ||
| 1104 | (require 'calc-math) | ||
| 1105 | (call-interactively 'calc-radians-mode)) | ||
| 1106 | :keys "m r" | ||
| 1107 | :style radio | ||
| 1108 | :selected (eq calc-angle-mode 'rad)] | ||
| 1109 | ["Degrees" | ||
| 1110 | (progn | ||
| 1111 | (require 'calc-math) | ||
| 1112 | (call-interactively 'calc-degrees-mode)) | ||
| 1113 | :keys "m d" | ||
| 1114 | :style radio | ||
| 1115 | :selected (eq calc-angle-mode 'deg)] | ||
| 1116 | ["HMS" | ||
| 1117 | (progn | ||
| 1118 | (require 'calc-math) | ||
| 1119 | (call-interactively 'calc-hms-mode)) | ||
| 1120 | :keys "m h" | ||
| 1121 | :style radio | ||
| 1122 | :selected (eq calc-angle-mode 'hms)]) | ||
| 1123 | (list "Radix" | ||
| 1124 | ["Decimal" | ||
| 1125 | (progn | ||
| 1126 | (require 'calc-bin) | ||
| 1127 | (call-interactively 'calc-decimal-radix)) | ||
| 1128 | :keys "d 0" | ||
| 1129 | :style radio | ||
| 1130 | :selected (= calc-number-radix 10)] | ||
| 1131 | ["Binary" | ||
| 1132 | (progn | ||
| 1133 | (require 'calc-bin) | ||
| 1134 | (call-interactively 'calc-binary-radix)) | ||
| 1135 | :keys "d 2" | ||
| 1136 | :style radio | ||
| 1137 | :selected (= calc-number-radix 2)] | ||
| 1138 | ["Octal" | ||
| 1139 | (progn | ||
| 1140 | (require 'calc-bin) | ||
| 1141 | (call-interactively 'calc-octal-radix)) | ||
| 1142 | :keys "d 8" | ||
| 1143 | :style radio | ||
| 1144 | :selected (= calc-number-radix 8)] | ||
| 1145 | ["Hexadecimal" | ||
| 1146 | (progn | ||
| 1147 | (require 'calc-bin) | ||
| 1148 | (call-interactively 'calc-hex-radix)) | ||
| 1149 | :keys "d 6" | ||
| 1150 | :style radio | ||
| 1151 | :selected (= calc-number-radix 16)] | ||
| 1152 | ["Other" | ||
| 1153 | (progn | ||
| 1154 | (require 'calc-bin) | ||
| 1155 | (call-interactively 'calc-radix)) | ||
| 1156 | :keys "d r" | ||
| 1157 | :style radio | ||
| 1158 | :selected (not | ||
| 1159 | (or | ||
| 1160 | (= calc-number-radix 10) | ||
| 1161 | (= calc-number-radix 2) | ||
| 1162 | (= calc-number-radix 8) | ||
| 1163 | (= calc-number-radix 16)))]) | ||
| 1164 | (list "Float Format" | ||
| 1165 | ["Normal" | ||
| 1166 | (progn | ||
| 1167 | (require 'calc-mode) | ||
| 1168 | (call-interactively 'calc-normal-notation)) | ||
| 1169 | :keys "d n" | ||
| 1170 | :style radio | ||
| 1171 | :selected (eq (car-safe calc-float-format) 'float)] | ||
| 1172 | ["Fixed point" | ||
| 1173 | (progn | ||
| 1174 | (require 'calc-mode) | ||
| 1175 | (call-interactively 'calc-fix-notation)) | ||
| 1176 | :keys "d f" | ||
| 1177 | :style radio | ||
| 1178 | :selected (eq (car-safe calc-float-format) 'fix)] | ||
| 1179 | ["Scientific notation" | ||
| 1180 | (progn | ||
| 1181 | (require 'calc-mode) | ||
| 1182 | (call-interactively 'calc-sci-notation)) | ||
| 1183 | :keys "d s" | ||
| 1184 | :style radio | ||
| 1185 | :selected (eq (car-safe calc-float-format) 'sci)] | ||
| 1186 | ["Engineering notation" | ||
| 1187 | (progn | ||
| 1188 | (require 'calc-mode) | ||
| 1189 | (call-interactively 'calc-eng-notation)) | ||
| 1190 | :keys "d e" | ||
| 1191 | :style radio | ||
| 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."]) | ||
| 1234 | (list "Algebraic" | ||
| 1235 | ["Normal" | ||
| 1236 | (progn | ||
| 1237 | (require 'calc-mode) | ||
| 1238 | (cond | ||
| 1239 | (calc-incomplete-algebraic-mode | ||
| 1240 | (calc-algebraic-mode t)) | ||
| 1241 | (calc-algebraic-mode | ||
| 1242 | (calc-algebraic-mode nil)))) | ||
| 1243 | :style radio | ||
| 1244 | :selected (not calc-algebraic-mode)] | ||
| 1245 | ["Algebraic mode" | ||
| 1246 | (progn | ||
| 1247 | (require 'calc-mode) | ||
| 1248 | (if (or | ||
| 1249 | calc-incomplete-algebraic-mode | ||
| 1250 | (not calc-algebraic-mode)) | ||
| 1251 | (calc-algebraic-mode nil))) | ||
| 1252 | :keys "m a" | ||
| 1253 | :style radio | ||
| 1254 | :selected (and calc-algebraic-mode | ||
| 1255 | (not calc-incomplete-algebraic-mode)) | ||
| 1256 | :help "Keys which start numeric entry also start algebraic entry"] | ||
| 1257 | ["Incomplete algebraic mode" | ||
| 1258 | (progn | ||
| 1259 | (require 'calc-mode) | ||
| 1260 | (unless calc-incomplete-algebraic-mode | ||
| 1261 | (calc-algebraic-mode t))) | ||
| 1262 | :keys "C-u m a" | ||
| 1263 | :style radio | ||
| 1264 | :selected calc-incomplete-algebraic-mode | ||
| 1265 | :help "Only ( and [ begin algebraic entry"] | ||
| 1266 | ["Total algebraic mode" | ||
| 1267 | (progn | ||
| 1268 | (require 'calc-mode) | ||
| 1269 | (unless (eq calc-algebraic-mode 'total) | ||
| 1270 | (calc-total-algebraic-mode nil))) | ||
| 1271 | :keys "m t" | ||
| 1272 | :style radio | ||
| 1273 | :selected (eq calc-algebraic-mode 'total) | ||
| 1274 | :help "All regular letters and punctuation begin algebraic entry"]) | ||
| 1275 | (list "Language" | ||
| 1276 | ["Normal" | ||
| 1277 | (progn | ||
| 1278 | (require 'calc-lang) | ||
| 1279 | (call-interactively 'calc-normal-language)) | ||
| 1280 | :keys "d N" | ||
| 1281 | :style radio | ||
| 1282 | :selected (eq calc-language nil)] | ||
| 1283 | ["Big" | ||
| 1284 | (progn | ||
| 1285 | (require 'calc-lang) | ||
| 1286 | (call-interactively 'calc-big-language)) | ||
| 1287 | :keys "d B" | ||
| 1288 | :style radio | ||
| 1289 | :selected (eq calc-language 'big) | ||
| 1290 | :help "Use textual approximations to various mathematical notations"] | ||
| 1291 | ["Flat" | ||
| 1292 | (progn | ||
| 1293 | (require 'calc-lang) | ||
| 1294 | (call-interactively 'calc-flat-language)) | ||
| 1295 | :keys "d O" | ||
| 1296 | :style radio | ||
| 1297 | :selected (eq calc-language 'flat) | ||
| 1298 | :help "Write matrices on a single line"] | ||
| 1299 | ["C" | ||
| 1300 | (progn | ||
| 1301 | (require 'calc-lang) | ||
| 1302 | (call-interactively 'calc-c-language)) | ||
| 1303 | :keys "d C" | ||
| 1304 | :style radio | ||
| 1305 | :selected (eq calc-language 'c)] | ||
| 1306 | ["Pascal" | ||
| 1307 | (progn | ||
| 1308 | (require 'calc-lang) | ||
| 1309 | (call-interactively 'calc-pascal-language)) | ||
| 1310 | :keys "d P" | ||
| 1311 | :style radio | ||
| 1312 | :selected (eq calc-language 'pascal)] | ||
| 1313 | ["Fortran" | ||
| 1314 | (progn | ||
| 1315 | (require 'calc-lang) | ||
| 1316 | (call-interactively 'calc-fortran-language)) | ||
| 1317 | :keys "d F" | ||
| 1318 | :style radio | ||
| 1319 | :selected (eq calc-language 'fortran)] | ||
| 1320 | ["TeX" | ||
| 1321 | (progn | ||
| 1322 | (require 'calc-lang) | ||
| 1323 | (call-interactively 'calc-tex-language)) | ||
| 1324 | :keys "d T" | ||
| 1325 | :style radio | ||
| 1326 | :selected (eq calc-language 'tex)] | ||
| 1327 | ["LaTeX" | ||
| 1328 | (progn | ||
| 1329 | (require 'calc-lang) | ||
| 1330 | (call-interactively 'calc-latex-language)) | ||
| 1331 | :keys "d L" | ||
| 1332 | :style radio | ||
| 1333 | :selected (eq calc-language 'latex)] | ||
| 1334 | ["Eqn" | ||
| 1335 | (progn | ||
| 1336 | (require 'calc-lang) | ||
| 1337 | (call-interactively 'calc-eqn-language)) | ||
| 1338 | :keys "d E" | ||
| 1339 | :style radio | ||
| 1340 | :selected (eq calc-language 'eqn)] | ||
| 1341 | ["Yacas" | ||
| 1342 | (progn | ||
| 1343 | (require 'calc-lang) | ||
| 1344 | (call-interactively 'calc-yacas-language)) | ||
| 1345 | :keys "d Y" | ||
| 1346 | :style radio | ||
| 1347 | :selected (eq calc-language 'yacas)] | ||
| 1348 | ["Maxima" | ||
| 1349 | (progn | ||
| 1350 | (require 'calc-lang) | ||
| 1351 | (call-interactively 'calc-maxima-language)) | ||
| 1352 | :keys "d X" | ||
| 1353 | :style radio | ||
| 1354 | :selected (eq calc-language 'maxima)] | ||
| 1355 | ["Giac" | ||
| 1356 | (progn | ||
| 1357 | (require 'calc-lang) | ||
| 1358 | (call-interactively 'calc-giac-language)) | ||
| 1359 | :keys "d A" | ||
| 1360 | :style radio | ||
| 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)]) | ||
| 1376 | "----" | ||
| 1377 | ["Save mode settings" calc-save-modes :keys "m m"] | ||
| 1378 | "----" | ||
| 1379 | ["Help on Modes" | ||
| 1380 | (calc-info-goto-node "Mode settings")]) | ||
| 1381 | "Menu for Calc's mode settings.") | ||
| 1382 | |||
| 1383 | (defvar calc-help-menu | ||
| 1384 | (list "Help" | ||
| 1385 | ["Manual" | ||
| 1386 | calc-info | ||
| 1387 | :keys "h i"] | ||
| 1388 | ["Tutorial" | ||
| 1389 | calc-tutorial | ||
| 1390 | :keys "h t"] | ||
| 1391 | ["Summary" | ||
| 1392 | calc-info-summary | ||
| 1393 | :keys "h s"] | ||
| 1394 | "----" | ||
| 1395 | ["Help on Help" | ||
| 1396 | (progn | ||
| 1397 | (calc-info-goto-node "Introduction") | ||
| 1398 | (Info-goto-node "Help Commands"))]) | ||
| 1399 | "Menu for Calc's help functions.") | ||
| 1400 | |||
| 1401 | (defvar calc-mode-map) | ||
| 1402 | |||
| 1403 | (easy-menu-define | ||
| 1404 | calc-menu | ||
| 1405 | calc-mode-map | ||
| 1406 | "Menu for Calc." | ||
| 1407 | (list "Calc" | ||
| 1408 | :visible '(eq major-mode 'calc-mode) | ||
| 1409 | calc-arithmetic-menu | ||
| 1410 | calc-scientific-function-menu | ||
| 1411 | calc-algebra-menu | ||
| 1412 | calc-graphics-menu | ||
| 1413 | calc-vectors-menu | ||
| 1414 | calc-units-menu | ||
| 1415 | calc-variables-menu | ||
| 1416 | calc-stack-menu | ||
| 1417 | calc-errors-menu | ||
| 1418 | calc-modes-menu | ||
| 1419 | calc-help-menu | ||
| 1420 | ["Reset" | ||
| 1421 | (progn | ||
| 1422 | (require 'calc-ext) | ||
| 1423 | (call-interactively 'calc-reset)) | ||
| 1424 | :help "Reset Calc to its initial state"] | ||
| 1425 | ["Quit" calc-quit])) | ||
| 1426 | |||
| 1427 | (provide 'calc-menu) | ||
| 1428 | |||
| 1429 | ;; arch-tag: 9612c86a-cd4f-4baa-ab0b-40af7344d21f | ||