#include "common.h" #include "Halton.h" float Halton2::_invBases[2]; template float Halton::_invBases[T]; Halton<1> dummmyHalton1(true); Halton<2> dummmyHalton2(true); Halton<3> dummmyHalton3(true); Halton<4> dummmyHalton4(true); Halton<5> dummmyHalton5(true); Halton<6> dummmyHalton6(true); int HaltonSequence::sPregeneratedDim = 0; int HaltonSequence::sPregeneratedNumber = 0; float *HaltonSequence::sPregeneratedValues = NULL; // special construtor for pregenerating static halton sequences HaltonSequence::HaltonSequence(const int dim, const int number) { sPregeneratedDim = 0; sPregeneratedNumber = 0; sPregeneratedValues = new float[number*dim]; float *p = sPregeneratedValues; for (int i=0; i < number; i++, p+=dim) { GetNext(dim, p); } sPregeneratedDim = dim; sPregeneratedNumber = number; } void HaltonSequence::GetNext(const int dimensions, float *p) { for (int i = 0; i < dimensions; ++ i) p[i] = (float)GetNumber(i + 1); GenerateNext(); }