#include <stdlib.h>
#include <math.h>

void quasi_random_vector(int dim,double* a,double* b, double* x);
void pseudo_random_vector(int dim,double* a,double* b, double* x);

int plainmc(
		int d, double a[], double b[], double (*func)(double*),
      void (*rndx)(int,double*,double*,double*),
		int N, double* result, double* error)
	{
	if(N % 2 != 0)N++;

	double* x=(double*)malloc(d*sizeof(double));

	double sum1=0, sum2=0, f;

	double vol=1; for(int i=0;i<d;i++) vol*=(b[i]-a[i]);

	for(int i=0;i<N;i++){
		(*rndx)(d,a,b,x); f=(*func)(x);
		if(i % 2 == 0) sum1+=f; else sum2+=f;
		}

	*result=(sum1+sum2)/N*vol; *error=fabs(sum1-sum2)/N*2*vol /2;

	return 0;
	}
