IMSL C Math Library
Usage Notes
Users can perform financial computations by using pre-defined data types. Most of the financial functions require one or more of the following:
*Date
*Number of payments per year
*A variable to indicate when payments are due
*Day count basis
IMSL C Math Library provides the identifiers for the input, frequency, to indicate the number of payments for each year. The identifiers are IMSL_ANNUAL, IMSL_SEMIANNUAL, and IMSL_QUARTERLY.
Identifier (frequency)
Meaning
IMSL_ANNUAL
One payment per year
(Annual payment)
IMSL_SEMIANNUAL
Two payments per year
(Semi-annual payment)
IMSL_QUARTERLY
Four payments per year
(Quarterly payment)
IMSL C Math Library provides the identifiers for the input, when, to indicate when payments are due. The identifiers are IMSL_AT_END_OF_PERIOD, IMSL_AT_BEGINNING_OF_PERIOD.
Identifier (when)
Meaning
IMSL_AT_END_OF_PERIOD
Payments are due at the end of the period
IMSL_AT_BEGINNING_OF_PERIOD
Payments are due at the beginning of the period
IMSL C Math Library provides the identifiers for the input, basis, to indicate the type of day count basis. Day count basis is the method for computing the number of days between two dates. The identifiers are IMSL_DAY_CNT_BASIS_NASD, IMSL_DAY_CNT_BASIS_ACTUALACTUAL, IMSL_DAY_CNT_BASIS_ACTUAL360, IMSL_DAY_CNT_BASIS_ACTUAL365, and IMSL_DAY_CNT_BASIS_30E360.
Identifier (basis)
Day count basis
IMSL_DAY_CNT_BASIS_NASD
US (NASD) 30/360
IMSL_DAY_CNT_BASIS_ACTUALACTUAL
Actual/Actual
IMSL_DAY_CNT_BASIS_ACTUAL360
Actual/360
IMSL_DAY_CNT_BASIS_ACTUAL365
Actual/365
IMSL_DAY_CNT_BASIS_30E360
European 30/360
IMSL C Math Library uses the C programming language structure, tm, provided in the standard header <time.h>, to represent a date. For a detailed description of tm, see Kernighan and Richtie 1988, The C Programming Language, Second Edition, p 255.
The structure tm is declared within <time.h> as follows:
 
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};
For example, to declare a variable to represent Jan 1, 2001, use the following code segment:
struct tm date;
date.tm_year = 101;
date.tm_mon = 0;
date.tm_mday = 1;
NOTE: IMSL C Math Library only uses the tm_year, tm_mon, and tm_mday fields in structure tm .
Additional Information
In preparing the finance and bond functions we incorporated standards used by SIA Standard Securities Calculation Methods.
More detailed information on finance and bond functionality can be found in the following manuals:
*SIA Standard Securities Calculation Methods 1993, vols. 1 & 2, Third Edition.
*Accountants' Handbook, Volume 1, Sixth Edition.
*Microsoft Excel 5, Worksheet Function Reference.