diff options
| author | Raimon Grau | 2019-10-19 11:46:17 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2019-10-19 11:46:17 +0200 |
| commit | ba8944bba8aaa58d60af955a8ea676a5260af346 (patch) | |
| tree | 2ac803bf3f6eec5dc46f68049c5680ac96ac5796 | |
| parent | 842cc05d5ca5e54aef5c455a92203fd512e89202 (diff) | |
| download | emacs-ba8944bba8aaa58d60af955a8ea676a5260af346.tar.gz emacs-ba8944bba8aaa58d60af955a8ea676a5260af346.zip | |
Fix optional parameter passing in calc-fin-* functions
* lisp/calc/calc-fin.el (calc-fin-pv, calc-fin-fv, calc-fin-pmt)
(calc-fin-pner, calc-fin-rate): Add support for an optional
parameter standing for an initial lump. The functions already
support it but the extra parameter was not taken into account in
stack mode. This commit it takes into consideration when deciding
if a function takes 3 or 4 parameters (bug#37649).
| -rw-r--r-- | lisp/calc/calc-fin.el | 53 |
1 files changed, 30 insertions, 23 deletions
diff --git a/lisp/calc/calc-fin.el b/lisp/calc/calc-fin.el index 813da2869e1..4302cbcf5aa 100644 --- a/lisp/calc/calc-fin.el +++ b/lisp/calc/calc-fin.el | |||
| @@ -35,9 +35,10 @@ | |||
| 35 | (calc-slow-wrapper | 35 | (calc-slow-wrapper |
| 36 | (if (calc-is-hyperbolic) | 36 | (if (calc-is-hyperbolic) |
| 37 | (calc-enter-result 3 "pvl" (cons 'calcFunc-pvl (calc-top-list-n 3))) | 37 | (calc-enter-result 3 "pvl" (cons 'calcFunc-pvl (calc-top-list-n 3))) |
| 38 | (if (calc-is-inverse) | 38 | (let ((n (if (calc-is-option) 4 3))) |
| 39 | (calc-enter-result 3 "pvb" (cons 'calcFunc-pvb (calc-top-list-n 3))) | 39 | (if (calc-is-inverse) |
| 40 | (calc-enter-result 3 "pv" (cons 'calcFunc-pv (calc-top-list-n 3))))))) | 40 | (calc-enter-result n "pvb" (cons 'calcFunc-pvb (calc-top-list-n n))) |
| 41 | (calc-enter-result n "pv" (cons 'calcFunc-pv (calc-top-list-n n)))))))) | ||
| 41 | 42 | ||
| 42 | (defun calc-fin-npv (arg) | 43 | (defun calc-fin-npv (arg) |
| 43 | (interactive "p") | 44 | (interactive "p") |
| @@ -51,42 +52,48 @@ | |||
| 51 | (calc-slow-wrapper | 52 | (calc-slow-wrapper |
| 52 | (if (calc-is-hyperbolic) | 53 | (if (calc-is-hyperbolic) |
| 53 | (calc-enter-result 3 "fvl" (cons 'calcFunc-fvl (calc-top-list-n 3))) | 54 | (calc-enter-result 3 "fvl" (cons 'calcFunc-fvl (calc-top-list-n 3))) |
| 54 | (if (calc-is-inverse) | 55 | (let ((n (if (calc-is-option) 4 3))) |
| 55 | (calc-enter-result 3 "fvb" (cons 'calcFunc-fvb (calc-top-list-n 3))) | 56 | (if (calc-is-inverse) |
| 56 | (calc-enter-result 3 "fv" (cons 'calcFunc-fv (calc-top-list-n 3))))))) | 57 | (calc-enter-result n "fvb" (cons 'calcFunc-fvb (calc-top-list-n n))) |
| 58 | (calc-enter-result n "fv" (cons 'calcFunc-fv (calc-top-list-n n)))))))) | ||
| 57 | 59 | ||
| 58 | (defun calc-fin-pmt () | 60 | (defun calc-fin-pmt () |
| 59 | (interactive) | 61 | (interactive) |
| 60 | (calc-slow-wrapper | 62 | (calc-slow-wrapper |
| 61 | (if (calc-is-hyperbolic) | 63 | (if (calc-is-hyperbolic) |
| 62 | (calc-enter-result 3 "fvl" (cons 'calcFunc-fvl (calc-top-list-n 3))) | 64 | (calc-enter-result 3 "fvl" (cons 'calcFunc-fvl (calc-top-list-n 3))) |
| 63 | (if (calc-is-inverse) | 65 | (let ((n (if (calc-is-option) 4 3))) |
| 64 | (calc-enter-result 3 "pmtb" (cons 'calcFunc-pmtb (calc-top-list-n 3))) | 66 | (if (calc-is-inverse) |
| 65 | (calc-enter-result 3 "pmt" (cons 'calcFunc-pmt (calc-top-list-n 3))))))) | 67 | (calc-enter-result n "pmtb" (cons 'calcFunc-pmtb (calc-top-list-n n))) |
| 68 | (calc-enter-result n "pmt" (cons 'calcFunc-pmt (calc-top-list-n n)))))))) | ||
| 66 | 69 | ||
| 67 | (defun calc-fin-nper () | 70 | (defun calc-fin-nper () |
| 68 | (interactive) | 71 | (interactive) |
| 69 | (calc-slow-wrapper | 72 | (calc-slow-wrapper |
| 70 | (if (calc-is-hyperbolic) | 73 | (if (calc-is-hyperbolic) |
| 71 | (calc-enter-result 3 "nprl" (cons 'calcFunc-nperl (calc-top-list-n 3))) | 74 | (calc-enter-result 3 "nprl" (cons 'calcFunc-nperl (calc-top-list-n 3))) |
| 72 | (if (calc-is-inverse) | 75 | (let ((n (if (calc-is-option) 4 3))) |
| 73 | (calc-enter-result 3 "nprb" (cons 'calcFunc-nperb | 76 | (if (calc-is-inverse) |
| 74 | (calc-top-list-n 3))) | 77 | (calc-enter-result n "nprb" (cons 'calcFunc-nperb |
| 75 | (calc-enter-result 3 "nper" (cons 'calcFunc-nper | 78 | (calc-top-list-n n))) |
| 76 | (calc-top-list-n 3))))))) | 79 | (calc-enter-result n "nper" (cons 'calcFunc-nper |
| 80 | (calc-top-list-n n)))))))) | ||
| 77 | 81 | ||
| 78 | (defun calc-fin-rate () | 82 | (defun calc-fin-rate () |
| 79 | (interactive) | 83 | (interactive) |
| 80 | (calc-slow-wrapper | 84 | (calc-slow-wrapper |
| 81 | (calc-pop-push-record 3 | 85 | (let ((n (if (and (not (calc-is-hyperbolic)) |
| 82 | (if (calc-is-hyperbolic) "ratl" | 86 | (calc-is-option)) |
| 83 | (if (calc-is-inverse) "ratb" "rate")) | 87 | 4 3))) |
| 84 | (calc-to-percentage | 88 | (calc-pop-push-record n |
| 85 | (calc-normalize | 89 | (if (calc-is-hyperbolic) "ratl" |
| 86 | (cons (if (calc-is-hyperbolic) 'calcFunc-ratel | 90 | (if (calc-is-inverse) "ratb" "rate")) |
| 87 | (if (calc-is-hyperbolic) 'calcFunc-rateb | 91 | (calc-to-percentage |
| 88 | 'calcFunc-rate)) | 92 | (calc-normalize |
| 89 | (calc-top-list-n 3))))))) | 93 | (cons (if (calc-is-hyperbolic) 'calcFunc-ratel |
| 94 | (if (calc-is-hyperbolic) 'calcFunc-rateb | ||
| 95 | 'calcFunc-rate)) | ||
| 96 | (calc-top-list-n n)))))))) | ||
| 90 | 97 | ||
| 91 | (defun calc-fin-irr (arg) | 98 | (defun calc-fin-irr (arg) |
| 92 | (interactive "P") | 99 | (interactive "P") |