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. *