Listing 2 FINANCES.H

/****************************************************
       File Name: FINANCES.H
       Description: Include file for FINANCES.C
       Portability: Standard C
****************************************************/

#if !defined ( FINANCES_DEFINED )

   /* Prototypes for function in FINANCES.C */
   double a_to_f( double i, int n );
   double a_to_f_c( double r, int n );
   double a_to_p( double i, int n );
   double a_to_p_c( double r, int n );
   double f_to_a( double i, int n );
   double f_to_a_c( double r, int n );
   double f_to_p( double i, int n );
   double f_to_p_c( double r, int n );
   double p_to_a( double i, int n );
   double p_to_a_c( double r, int n );
   double p_to_f( double i, int n );
   double p_to_f_c( double r, int n );

   /* Natural log base */
   #define LN_BASE 2.718281828459

   /* Macro versions of functions in FINANCES.C */
   #define A_TO_F( i, n ) \
      ( ( pow( 1.0 + i, n ) - 1.0 ) / i )

   #define A_TO_F_C( r, n ) \
      ( ( pow( LN_BASE, r * n ) - 1.0 ) / \
      ( pow( LN_BASE, r ) - 1.0 ) )

   #define A_TO_P( i, n ) \
      ( ( pow( 1.0 + i, n ) - 1.0 ) / \
      ( i * pow( 1.0 + i, n) ) )

   #define A_TO_P_C( r, n ) \
      ( ( 1.0 - pow( LN_BASE, -( r * n ) ) ) / \
      ( pow( LN_BASE, r ) - 1.0 ) )

   #define F_TO_A( i, n ) \
      ( i / ( pow( 1.0 + i, n ) - 1.0) )

   #define F_TO_A_C( r, n ) \
      ( ( pow( LN_BASE, r ) - 1.0 ) / \
      ( pow( LN_BASE, r * n ) - 1.0 ) )

   #define F_TO_P( i, n ) \
      ( 1.0 / pow( 1.0 + i, n ) )

   #define F_TO_P_C( r, n ) \
      ( 1.0 / pow( LN_BASE, r * n ) )

   #define P_TO_A( i, n ) \
      ( i * pow ( 1.0 + i, n ) / \
      ( pow( 1.0 + i, n ) - 1.0 ) )

   #define P_TO_A_C( r, n ) \
      ( ( pow( LN_BASE, r ) - 1.0 ) / \
      ( 1.0 - pow( LN_BASE, -( r * n ) ) ) )

   #define P_TO_F( i, n ) \
      (pow( 1.0 + i, n) )

   #define P_TO_F_C( r, n ) \
      ( pow( LN_BASE, r * n ) )

#endif
/* End of File */