aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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")