/*
	Test per Int_eq_points_p

*/
#include "simple.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], p[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_eq_points_p 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_eq_points_p(n, (5-2)/(double)(n-1), fx, p);
printf("Esatto    : 10.5\n");
printf("%-2d punti  : %.16g\n",n,d);
for (i=0; i<(n>5?5:n); i++) printf("%g\t%g\n",x[i],p[i]);
for (i=n-5; i<n-1; i++) printf("%g\t%g\n",x[i],p[i]);



printf("Test di Int_eq_points_p per la funzione x^4-x^3 tra 2 e 5\n");
for (i=0; i<n; i++) {
	x[i] = 2 + i*(5-2)/(double)(n-1);
	fx[i] = x[i]*x[i]*x[i]*(x[i]-1);
}

d = Int_eq_points_p(n, (5-2)/(double)(n-1), fx, p);
printf("Esatto    : 466.35\n");
printf("%-2d punti  : %.16g\n",n,d);
for (i=0; i<(n>5?5:n); i++) printf("%g\t%g\n",x[i],p[i]);
for (i=n-5; i<n-1; i++) printf("%g\t%g\n",x[i],p[i]);

printf("Test di Int_eq_points_p 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_eq_points_p(n, (5-2)/(double)(n-1), fx, p);
printf("Esatto    : 5.5748036294843\n");
printf("%-2d punti  : %.16g\n",n,d);
for (i=0; i<(n>5?5:n); i++) printf("%g\t%g\n",x[i],p[i]);
for (i=n-5; i<n-1; i++) printf("%g\t%g\n",x[i],p[i]);

}
