#include <stdio.h>
#include <math.h>

double atof();
double pow();

main(argc, argv)
int argc;
char *argv[];
{
char tmp[200];
double fvalue =0;
double interest = 0;
double pvalue = 0;
double per_intr = 0;
double length = 0;
double nmperiod = 1;

if ((argc == 2) && ((argv[1][0] == 'p') || (argv[1][0] == 'P')))
	{
	 fprintf(stdout,"Enter future value <$>........................... ");
	 fgets(tmp,100,stdin);
	 fvalue = atof(tmp);
	 fprintf(stdout,"Enter interest rate <yearly rate>................ ");
	 fgets(tmp,100,stdin);
	 interest = atof(tmp) / 100;
	 fprintf(stdout,"Enter length of time <months>.................... ");
	 fgets(tmp,100,stdin);
	 length = atof(tmp);
	 fprintf(stdout,"Enter number of compounding periods <per year>... ");
	 fgets(tmp,100,stdin);
	 nmperiod = atof(tmp);
	 fprintf(stdout,"\n");
	}
else if ((argc == 2) && ((argv[1][0] == 'v') || (argv[1][0] == 'V')))
	{
	 fprintf(stdout,"pv: Version 1.00 \n");
	 fprintf(stdout,"    Copyright 1987 by Michael Brochstein\n");
	 fprintf(stdout,"    All rights reserved.\n");
	}
else if ((argc != 4) && (argc != 5))
	{
	 fprintf(stderr,"Usage: pv p \n");
	 fprintf(stderr,"       pv v \n");
	 fprintf(stderr,"       pv <future value> <interest rate (yearly)>");
	 fprintf(stderr," <length of time (months)>\n");
	 fprintf(stderr,"       pv <future value> <interest rate (yearly)>");
	 fprintf(stderr," <length of time (months)>");
	 fprintf(stderr,"\n          <compounding periods per year>\n");
	}
else if ((argc == 4) || (argc == 5))
	{
	 fvalue = atof(argv[1]);
	 interest = atof(argv[2]) / 100;
	 length = atof(argv[3]);
	 if (argc == 5)
		{
	 	 nmperiod = atof(argv[4]);
		}
	}

if ((argc == 4) || (argc == 5) 
	|| ((argc == 2) && ((argv[1][0] == 'p') || (argv[1][0] == 'P'))))
	{
	 if (nmperiod <= 0)
		{
		 fprintf(stderr,"pv: Number of compounding ");
		 fprintf(stderr,"periods must be >= 1; using 1\n\n");
		 nmperiod = 1;
		}

	 per_intr = (1.0 / nmperiod) * interest;

	 pvalue = 1 / pow(1+per_intr,(length/12)*nmperiod);
/*
	 fprintf(stdout,"Present value factor.... %14.4f\n",pvalue);
*/
	 fprintf(stdout,"Present value........... %14.2f\n",pvalue * fvalue);
	}
}
