aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaimon Grau2019-10-19 11:46:17 +0200
committerLars Ingebrigtsen2019-10-19 11:46:17 +0200
commitba8944bba8aaa58d60af955a8ea676a5260af346 (patch)
tree2ac803bf3f6eec5dc46f68049c5680ac96ac5796
parent842cc05d5ca5e54aef5c455a92203fd512e89202 (diff)
downloademacs-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.el53
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")