Hello Hp 50g,
the hp 50g has a built-in modul for payments with constant periodical payments. This works fine.
My proggies here are calculating the cashflow and the internal rate of interest for a certain cashflow. The proggies are not tested with a lot of examples, but with some examples out of the 12c or 17bii manuals.
I like to explain the two proggies in a short way for input and output. Enjoy!
First: the CFLOW-Program:
%%HP: T(3)A(R)F(,);
\<< 100 / { } \-> Co L Z LE
\<< PUSH -3 SF -105 SF Co 1 L SIZE
FOR I L I GET OBJ\-> DROP Z 1 + SWAP NEG ^ 1 SWAP - Z / SWAP Z
1 + SWAP NEG 1 + ^ * * LE SWAP + 'LE' STO
NEXT LE + \GSLIST POP
\>>
\>>
INPUT:
STACK 3: payment "Co", mostly negativ.
STACK 2: a list with lists of three objects
STACK 1: interest rate for that cashflow
a example for the list: {{500 1 2}{400 3 5}{100 9 2}}
I have to explain the objects for example: {400 3 5}
First Value: Payment
Second Value: Payed at the end of third period
Third Value: The payment of 400 bucks for five periods (group of payment with constant value)
interest rate value as percent without percent: 10% -> 10 as Input
OUTPUT: netto present value (NPV).
Second program: IRR Program:
Very important! This program only works when the program CFLOW is in the same directory, too.
%%HP: T(3)A(R)F(,);
\<< 5, 10, \-> Co L XI XI1
\<< PUSH -3, SF -105, SF Co L XI CFLOW Co L XI1 CFLOW DUPDUP ABS
WHILE ,005 \>=
REPEAT 3, PICK - ROT SWAP / XI XI1 2, PICK - ROT * - XI1 'XI'
STO 'XI1' STO Co L XI1 CFLOW DUPDUP ABS
END 3, DROPN XI1 POP
\>>
\>>
INPUT:
STACK 2: payment "Co", mostly negativ.
STACK 1: a list with lists of three objects (explained above).
OUTPUT: the internal interest rate in percent without percent f. e.:
12,5 means 12,5 %
The IRR program works with the regula falsi method. There is a difference which can be zero in a division. The program is simple and has no error handling for this situation. May be the IRR value converges against the wrong value, that could be caused by wrong start values for the rate (here 5 and 10, the first two values in the beginning of the program). IRR terminates, when NPV is zero, that means less then 0,005 Cent.
Sincerely
peacecalc
Edited: 1 Jan 2012, 10:25 a.m.