An accurate TVM equation written as a program for the HP42S Solver.
n number of periods
i interest rate
PMT periodic payment
PV present value
FV future value
B/E BEGIN/END
Solve equation:
PMT*(i1-1)*(1/i+p)+PV*i1+FV=0
where (i1-1) = e1^(n*ln1(i))
and i1 = e^(n*ln1(i))
and ln1(x) = ln(1+x)
and e1(x) = e^x-1
p=0 for END, p=1 for BEGIN
The use of ln1+x and e^x-1 prevents the loss of significant digits for small values of i. Consider these extreme examples for accuracy checking:
Example 1:
n=63Solving for FV:
i=0.00000161
PV=0
PMT=-1,000,000
END Mode (set B/E=0 in Solver)
HP 42S: 63,000,031.4434 (correct is 63,000,031.4433)
Example 2:
n=31536000Solving for FV:
i=10/n
PV=0
PMT=-0.01
END Mode
HP 42S: 331,667.006689 (correct is 331,667.006691)
You might compare these results using the "normal" TVM equation, found in many manuals ;)
E.g. using the TVM equation in the 42S manual, we get
62,921,744.4422 and 311,565.594018 respectively.
The program:
00 {91-Byte Prgm }
01 LBL "TVM"
02 MVAR "N"
03 MVAR "I%"
04 MVAR "PV"
05 MVAR "PMT"
06 MVAR "FV"
07 MVAR "B/E"
08 RCL "I%"
09 100
10 /
11 LN1+X
12 RCL* "N"
13 E^X-1
14 RCL* "PMT"
15 RCL "I%"
16 100
17 /
18 1/X
19 RCL+ "B/E"
20 *
21 RCL "PV"
22 RCL "I%"
23 100
24 /
25 LN1+X
26 RCL* "N"
27 E^X
28 *
29 +
30 RCL+ "FV"
31 END
Edited: 23 Jan 2005, 12:13 p.m.