summaryrefslogtreecommitdiff
path: root/lisp/calc
diff options
context:
space:
mode:
authorK. Handa <handa@gnu.org>2015-09-27 17:06:12 +0900
committerK. Handa <handa@gnu.org>2015-09-27 17:06:12 +0900
commit52beda922d2cb523a03661bf74b8678c8b45e440 (patch)
tree04617b37298746a61d5324a5b35c9b71f439d762 /lisp/calc
parent94ed5167557112fb00eeca05e62589db744206de (diff)
parent1ac5a9c20cb22efb398fa18781c6b932dd4e54df (diff)
downloademacs-52beda922d2cb523a03661bf74b8678c8b45e440.tar.gz
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Diffstat (limited to 'lisp/calc')
-rw-r--r--lisp/calc/calc-ext.el18
-rw-r--r--lisp/calc/calc-help.el2
-rw-r--r--lisp/calc/calc-map.el1
-rw-r--r--lisp/calc/calc-menu.el7
-rw-r--r--lisp/calc/calc-stat.el11
-rw-r--r--lisp/calc/calc-store.el12
6 files changed, 39 insertions, 12 deletions
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index cb6ab6f8ecc..933c446875e 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -574,6 +574,7 @@
(define-key calc-mode-map "uG" 'calc-vector-geometric-mean)
(define-key calc-mode-map "uM" 'calc-vector-mean)
(define-key calc-mode-map "uN" 'calc-vector-min)
+ (define-key calc-mode-map "uR" 'calc-vector-rms)
(define-key calc-mode-map "uS" 'calc-vector-sdev)
(define-key calc-mode-map "uU" 'calc-undo)
(define-key calc-mode-map "uX" 'calc-vector-max)
@@ -932,7 +933,7 @@ calc-preserve-point calc-replace-selections calc-replace-sub-formula
calc-roll-down-with-selections calc-roll-up-with-selections
calc-sel-error)
- ("calc-stat" calc-vector-op calcFunc-agmean
+ ("calc-stat" calc-vector-op calcFunc-agmean calcFunc-rms
calcFunc-vcorr calcFunc-vcount calcFunc-vcov calcFunc-vflat
calcFunc-vgmean calcFunc-vhmean calcFunc-vmax calcFunc-vmean
calcFunc-vmeane calcFunc-vmedian calcFunc-vmin calcFunc-vpcov
@@ -1147,8 +1148,8 @@ calc-vector-covariance calc-vector-geometric-mean
calc-vector-harmonic-mean calc-vector-max calc-vector-mean
calc-vector-mean-error calc-vector-median calc-vector-min
calc-vector-pop-covariance calc-vector-pop-sdev
-calc-vector-pop-variance calc-vector-product calc-vector-sdev
-calc-vector-sum calc-vector-variance)
+calc-vector-pop-variance calc-vector-product calc-vector-rms
+calc-vector-sdev calc-vector-sum calc-vector-variance)
("calc-store" calc-assign calc-copy-special-constant
calc-copy-variable calc-declare-variable
@@ -1292,6 +1293,7 @@ calc-kill calc-kill-region calc-yank))))
(define-key calc-help-map "?" 'calc-help-for-help)
(define-key calc-help-map "\C-h" 'calc-help-for-help))
+(defvar calc-prefix-help-retry nil)
(defvar calc-prefix-help-phase 0)
(defun calc-do-prefix-help (msgs group key)
(if calc-full-help-flag
@@ -1299,7 +1301,7 @@ calc-kill calc-kill-region calc-yank))))
(if (cdr msgs)
(progn
(setq calc-prefix-help-phase
- (if (eq this-command last-command)
+ (if calc-prefix-help-retry
(% (1+ calc-prefix-help-phase) (1+ (length msgs)))
0))
(let ((msg (nth calc-prefix-help-phase msgs)))
@@ -1320,7 +1322,13 @@ calc-kill calc-kill-region calc-yank))))
(message "%s: %s: %c-" group (car msgs) key)
(message "%s: (none) %c-" group key))
(message "%s: %s" group (car msgs))))
- (and key (calc-unread-command key))))
+ (let* ((chr (read-char))
+ (bnd (local-key-binding (if key (string key chr) (string chr)))))
+ (setq calc-prefix-help-retry (= chr ??))
+ (if bnd
+ (call-interactively bnd)
+ (message "%s is undefined"
+ (key-description (if key (vector key chr) (vector chr))))))))
;;;; Commands.
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el
index 444bb5ef920..33cb1c1566c 100644
--- a/lisp/calc/calc-help.el
+++ b/lisp/calc/calc-help.el
@@ -386,7 +386,7 @@ C-w Describe how there is no warranty for Calc."
(interactive)
(calc-quit)
(view-emacs-news)
- (re-search-forward "^\*+ .*\\<Calc\\>" nil t))
+ (re-search-forward "^\\*+ .*\\<Calc\\>" nil t))
(defvar calc-help-long-names '((?b . "binary/business")
(?g . "graphics")
diff --git a/lisp/calc/calc-map.el b/lisp/calc/calc-map.el
index 3b5949c274b..d2c9da86a6f 100644
--- a/lisp/calc/calc-map.el
+++ b/lisp/calc/calc-map.el
@@ -417,6 +417,7 @@
( ?G 1 calcFunc-vgmean )
( ?M 1 calcFunc-vmean )
( ?N 1 calcFunc-vmin )
+ ( ?R 1 calcFunc-rms )
( ?S 1 calcFunc-vsdev )
( ?X 1 calcFunc-vmax ) )
( ( ?C 2 calcFunc-vpcov )
diff --git a/lisp/calc/calc-menu.el b/lisp/calc/calc-menu.el
index 44086872dd0..8610090c5d1 100644
--- a/lisp/calc/calc-menu.el
+++ b/lisp/calc/calc-menu.el
@@ -863,6 +863,13 @@
:keys "I u M"
:active (>= (calc-stack-size) 1)
:help "The average (arithmetic mean) of the data values as an error form"]
+ ["rms(1:)"
+ (progn
+ (require 'calc-stat)
+ (call-interactively 'calc-vector-rms))
+ :keys "u R"
+ :active (>= (calc-stack-size) 1)
+ :help "The root mean square of the data values"]
["sdev(1:)"
(progn
(require 'calc-stat)
diff --git a/lisp/calc/calc-stat.el b/lisp/calc/calc-stat.el
index cf0b3ea4a12..a797db2e67d 100644
--- a/lisp/calc/calc-stat.el
+++ b/lisp/calc/calc-stat.el
@@ -71,6 +71,11 @@
(calc-vector-op "meae" 'calcFunc-vmeane arg)
(calc-vector-op "mean" 'calcFunc-vmean arg)))))
+(defun calc-vector-rms (arg)
+ (interactive "P")
+ (calc-slow-wrapper
+ (calc-vector-op "rms" 'calcFunc-rms arg)))
+
(defun calc-vector-mean-error (arg)
(interactive "P")
(calc-invert-func)
@@ -318,6 +323,12 @@
suminvsqrwts))
(math-div (calcFunc-reduce '(var add var-add) means) len)))))))
+(defun calcFunc-rms (a)
+ "Return the root-mean-square of the vector A."
+ (math-sqrt
+ (calcFunc-vmean
+ (calcFunc-map '(var abssqr var-abssqr) a))))
+
(defun math-fix-int-intv (x)
(if (math-floatp x)
x
diff --git a/lisp/calc/calc-store.el b/lisp/calc/calc-store.el
index 3d8c865c7bf..21209c66677 100644
--- a/lisp/calc/calc-store.el
+++ b/lisp/calc/calc-store.el
@@ -58,8 +58,8 @@
(let ((msg
(calc-store-value var (or calc-given-value (calc-top 1))
"" calc-given-value-flag)))
- (message (concat "Stored to variable \"%s\"" msg)
- (calc-var-name var)))))
+ (message "Stored to variable \"%s\"%s"
+ (calc-var-name var) msg))))
(setq var (calc-is-assignments (calc-top 1)))
(if var
(while var
@@ -67,8 +67,8 @@
(calc-store-value (car (car var)) (cdr (car var))
(if (not (cdr var)) "")
(if (not (cdr var)) 1))))
- (message (concat "Stored to variable \"%s\"" msg)
- (calc-var-name (car (car var)))))
+ (message "Stored to variable \"%s\"%s"
+ (calc-var-name (car (car var))) msg))
(setq var (cdr var))))))))
(defun calc-store-plus (&optional var)
@@ -422,8 +422,8 @@
(calc-var-name var1)))))
(if var2
(let ((msg (calc-store-value var2 value "")))
- (message (concat "Variable \"%s\" copied to \"%s\"" msg)
- (calc-var-name var1) (calc-var-name var2))))))))
+ (message "Variable \"%s\" copied to \"%s\"%s"
+ (calc-var-name var1) (calc-var-name var2) msg)))))))
(defvar calc-last-edited-variable nil)
(defun calc-edit-variable (&optional var)