CNLMath : Special Functions : internal_rate_schedule
internal_rate_schedule
Evaluates the internal rate of return for a schedule of cash flows. It is not necessary that the cash flows be periodic.
Synopsis
#include <imsl.h>
float imsl_f_internal_rate_schedule (int count, float values[], struct tm dates[], , 0)
The type double function is imsl_d_internal_rate_schedule.
Required Arguments
int count (Input)
Number of cash flows in values. count must be greater than one.
float values[] (Input)
Array of size count of cash flows, which includes the initial investment.
struct tm dates[] (Input)
Array of size count of dates cash flows are made see the Usage Notes section of this chapter.
Return Value
The internal rate of return for a schedule of cash flows that is not necessarily periodic. If no result can be computed, NaN is returned.
Synopsis with Optional Arguments
#include <imsl.h>
float imsl_f_internal__rate_schedule (int count, float values[], struct tm dates[],
IMSL_XGUESS, float guess,
IMSL_HIGHEST, float max,
0)
Optional Arguments
IMSL_XGUESS, float guess (Input)
Initial guess at the internal rate of return.
IMSL_HIGHEST, float max (Input)
Maximum value of the internal rate of return allowed.
Default: 1.0 (100%)
Description
Function imsl_f_internal_rate_schedule computes the internal rate of return for a schedule of cash flows that is not necessarily periodic. The internal rate such that the stream of payments has a net present value of zero.
It can be found by solving the following:
In the equation above, di represents the i-th payment date. d1 represents the 1st payment date. valuei represents the i-th cash flow. rate is the internal rate of return.
Example
In this example, imsl_f_internal_rate_schedule computes the internal rate of return for nine cash flows, -$800, $800, $800, $600, $600, $800, $800, $700 and $3,000, with an initial investment of $4,500.
 
#include <stdio.h>
#include <imsl.h>
 
int main()
{
float values[10] = { -4500., -800., 800., 800., 600., 600.,
800., 800., 700., 3000. };
struct tm dates[10];
float xirr;
 
dates[0].tm_year = 98; dates[0].tm_mon = 0; dates[0].tm_mday = 1;
dates[1].tm_year = 98; dates[1].tm_mon = 9; dates[1].tm_mday = 1;
dates[2].tm_year = 99; dates[2].tm_mon = 4; dates[2].tm_mday = 5;
dates[3].tm_year = 100; dates[3].tm_mon = 4; dates[3].tm_mday = 5;
dates[4].tm_year = 101; dates[4].tm_mon = 5; dates[4].tm_mday = 1;
dates[5].tm_year = 102; dates[5].tm_mon = 6; dates[5].tm_mday = 1;
dates[6].tm_year = 103; dates[6].tm_mon = 7; dates[6].tm_mday = 30;
dates[7].tm_year = 104; dates[7].tm_mon = 8; dates[7].tm_mday = 15;
dates[8].tm_year = 105; dates[8].tm_mon = 9; dates[8].tm_mday = 15;
dates[9].tm_year = 106; dates[9].tm_mon = 10; dates[9].tm_mday = 1;
 
xirr = imsl_f_internal_rate_schedule (10, values, dates, 0);
printf ("After approximately 9 years, the internal\n");
printf ("rate of return on the cows is %.2f%%.\n", xirr * 100.);
}
Output
 
After approximately 9 years, the internal
rate of return on the cows is 7.69%.