/*
	Test per Int_points

*/
#include "integra.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int main(int argc, char *argv[])
{
int i, n;
double d, x[1000], fx[1000];

if (argc==1) {
	printf("Quanti punti? ");
	scanf("%d",&n);
} else n=atoi(argv[1]);
if (n>1000) n=1000;
if (n<2) n=2;

printf("Test di Int_points per la funzione x tra 2 e 5 (finto)\n");
for (i=0; i<n; i++) {
	x[i] = 2 + i*(5-2)/(double)(n-1);
	fx[i] = x[i]; 		/*  x*x*x*(x-1); */
}
d = Int_points(n, x, fx);
printf("Esatto    : 10.5\n");
printf("%-2d punti  : %.16g\n",n,d);

printf("Test di Int_points per la funzione x^4-x^3 tra 2 e 5\n");
x[0]=2; fx[0] = 2*2*2*(2-1);
for (i=1; i<n-1; i++) {
	d = ((rand()%100)/100.)*(5.-2.)*2/n;
	if (d<0.001) d=0.001;
	x[i] = x[i-1]+d;
	if (x[i]>5) x[i] = x[i-1]+0.01;
	fx[i] = x[i]*x[i]*x[i]*(x[i]-1);
}
x[n-1] = 5;
fx[n-1] = 5*5*5*(5-1);

d = Int_points(n, x, fx);
printf("Esatto    : 466.35\n");
printf("%-2d punti  : %.16g\n",n,d);

printf("Test di Int_points per la funzione x*sin(x)^2 tra 2 e 5 (finto)\n");
for (i=0; i<n; i++) {
	x[i] = 2 + i*(5-2)/(double)(n-1);
	fx[i] = x[i]*sin(x[i])*sin(x[i]);
}
d = Int_points(n, x, fx);
printf("Esatto    : 5.5748036294843\n");
printf("%-2d punti  : %.16g\n",n,d);

}
