
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>


void integral(void);


double a,b;
double pi=atan2(0.,-1);
double D;
double sum;
double x;

long i,j;

double f[200];

double Upper_Limit;


FILE *pFile[4];
char filename[4][FILENAME_MAX];

void main()
{

	printf("\n\n cosine_inegral.cpp   ver 1.2  June 17, 2005 \n");
	printf("\n by Tom Irvine   Email: tomirvine@aol.com \n");


	printf("\n This program integrates the function:  \n ");
    printf("\n      S (1/x)cos(x) dx \n");
	
	
	printf("\n Enter upper limit \n");
	scanf("%lf",&b);

	printf("\n Enter lower limit \n");
	scanf("%lf",&a);


	if(a>10 || b>10)
	{
		printf("\n error: maximum limit is 10 \n");
		exit(1);
	}


	if( a > b)
    {
		printf("\n error: lower limit must be < upper limit \n");
		exit(1);
	}
	if( a<=0 || b<=0)
	{
		printf("\n error: limits must be > 0 \n");
		exit(1);
	}


	f[1]=1.;

	printf("\n\n");
	
	for(i=2;i<=150;i++)
	{
		f[i]=f[i-1]*double(i);
	}
	
	printf("\n\n");

	x=b; 

	integral();

	D=sum;


	x=a; 

	integral();


    printf(" Value at upper limit = %8.4lf \n",D);
    printf(" Value at lower limit = %8.4lf \n\n",sum);

    printf(" Integrated Sum = %8.4lf\n",(D-sum));

	strcpy(filename[0],"cosine.out");
	pFile[0]=fopen(filename[0],"w");
	
	
    double delta,y;

	long n=10000;


	delta = (b-a)/n;
	
	for(i=0;i<=n;i++)
	{

		x=delta*i+a;

		y=(1./x)*cos(x);


		fprintf(pFile[0]," %8.4g \t %8.4g \n",x,y);
	}


    printf("\n Press any key to exit.\n");
    getch();


}
void integral(void)
{
	sum=log(x);

	int sign=-1;


	for(i=2;i<=150;i+=2)
	{

		sum+=sign*pow(x,i)/(double(i)*f[i]);
   
		if(sign==1)
		{
			sign=-1;
		}
		else
		{
            sign=1;
		}

	}
	

}



