#include <stdlib.h>
#include <math.h>
#define fracl(x) ((x)-floorl(x))
#define offset (long double)2.71828182845904523536028747135266249775724709369995

static long int generated_numbers=0;

void quasi_random_vector(int dim, double *a, double *b, double *x) {
	static long double *alpha;
	if(generated_numbers==0){
		alpha=(long double*)malloc(dim*sizeof(long double));
		for(int i=0;i<dim;i++)
//			alpha[i]=fracl(cbrtl(2*i+offset));
			alpha[i]=fracl(cbrtl(2*i+offset));
		}
	generated_numbers++;
	for(int i=0;i<dim;i++)
		x[i]=a[i]+fracl(generated_numbers*alpha[i])*(b[i]-a[i]);
	}
