📄 sobolrsg.cpp
字号:
dim156Linitializers,
dim157Linitializers,
dim158Linitializers,
dim159Linitializers,
dim160Linitializers,
dim161Linitializers,
dim162Linitializers,
dim163Linitializers,
dim164Linitializers,
dim165Linitializers,
dim166Linitializers,
dim167Linitializers,
dim168Linitializers,
dim169Linitializers,
dim170Linitializers,
dim171Linitializers,
dim172Linitializers,
dim173Linitializers,
dim174Linitializers,
dim175Linitializers,
dim176Linitializers,
dim177Linitializers,
dim178Linitializers,
dim179Linitializers,
dim180Linitializers,
dim181Linitializers,
dim182Linitializers,
dim183Linitializers,
dim184Linitializers,
dim185Linitializers,
dim186Linitializers,
dim187Linitializers,
dim188Linitializers,
dim189Linitializers,
dim190Linitializers,
dim191Linitializers,
dim192Linitializers,
dim193Linitializers,
dim194Linitializers,
dim195Linitializers,
dim196Linitializers,
dim197Linitializers,
dim198Linitializers,
dim199Linitializers,
dim200Linitializers,
dim201Linitializers,
dim202Linitializers,
dim203Linitializers,
dim204Linitializers,
dim205Linitializers,
dim206Linitializers,
dim207Linitializers,
dim208Linitializers,
dim209Linitializers,
dim210Linitializers,
dim211Linitializers,
dim212Linitializers,
dim213Linitializers,
dim214Linitializers,
dim215Linitializers,
dim216Linitializers,
dim217Linitializers,
dim218Linitializers,
dim219Linitializers,
dim220Linitializers,
dim221Linitializers,
dim222Linitializers,
dim223Linitializers,
dim224Linitializers,
dim225Linitializers,
dim226Linitializers,
dim227Linitializers,
dim228Linitializers,
dim229Linitializers,
dim230Linitializers,
dim231Linitializers,
dim232Linitializers,
dim233Linitializers,
dim234Linitializers,
dim235Linitializers,
dim236Linitializers,
dim237Linitializers,
dim238Linitializers,
dim239Linitializers,
dim240Linitializers,
dim241Linitializers,
dim242Linitializers,
dim243Linitializers,
dim244Linitializers,
dim245Linitializers,
dim246Linitializers,
dim247Linitializers,
dim248Linitializers,
dim249Linitializers,
dim250Linitializers,
dim251Linitializers,
dim252Linitializers,
dim253Linitializers,
dim254Linitializers,
dim255Linitializers,
dim256Linitializers,
dim257Linitializers,
dim258Linitializers,
dim259Linitializers,
dim260Linitializers,
dim261Linitializers,
dim262Linitializers,
dim263Linitializers,
dim264Linitializers,
dim265Linitializers,
dim266Linitializers,
dim267Linitializers,
dim268Linitializers,
dim269Linitializers,
dim270Linitializers,
dim271Linitializers,
dim272Linitializers,
dim273Linitializers,
dim274Linitializers,
dim275Linitializers,
dim276Linitializers,
dim277Linitializers,
dim278Linitializers,
dim279Linitializers,
dim280Linitializers,
dim281Linitializers,
dim282Linitializers,
dim283Linitializers,
dim284Linitializers,
dim285Linitializers,
dim286Linitializers,
dim287Linitializers,
dim288Linitializers,
dim289Linitializers,
dim290Linitializers,
dim291Linitializers,
dim292Linitializers,
dim293Linitializers,
dim294Linitializers,
dim295Linitializers,
dim296Linitializers,
dim297Linitializers,
dim298Linitializers,
dim299Linitializers,
dim300Linitializers,
dim301Linitializers,
dim302Linitializers,
dim303Linitializers,
dim304Linitializers,
dim305Linitializers,
dim306Linitializers,
dim307Linitializers,
dim308Linitializers,
dim309Linitializers,
dim310Linitializers,
dim311Linitializers,
dim312Linitializers,
dim313Linitializers,
dim314Linitializers,
dim315Linitializers,
dim316Linitializers,
dim317Linitializers,
dim318Linitializers,
dim319Linitializers,
dim320Linitializers,
dim321Linitializers,
dim322Linitializers,
dim323Linitializers,
dim324Linitializers,
dim325Linitializers,
dim326Linitializers,
dim327Linitializers,
dim328Linitializers,
dim329Linitializers,
dim330Linitializers,
dim331Linitializers,
dim332Linitializers,
dim333Linitializers,
dim334Linitializers,
dim335Linitializers,
dim336Linitializers,
dim337Linitializers,
dim338Linitializers,
dim339Linitializers,
dim340Linitializers,
dim341Linitializers,
dim342Linitializers,
dim343Linitializers,
dim344Linitializers,
dim345Linitializers,
dim346Linitializers,
dim347Linitializers,
dim348Linitializers,
dim349Linitializers,
dim350Linitializers,
dim351Linitializers,
dim352Linitializers,
dim353Linitializers,
dim354Linitializers,
dim355Linitializers,
dim356Linitializers,
dim357Linitializers,
dim358Linitializers,
dim359Linitializers,
dim360Linitializers
};
}
const int SobolRsg::bits_ = 8*sizeof(unsigned long);
// 1/(2^bits_) (written as (1/2)/(2^(bits_-1)) to avoid long overflow)
const double SobolRsg::normalizationFactor_ =
0.5/(1UL<<(SobolRsg::bits_-1));
SobolRsg::SobolRsg(Size dimensionality,
unsigned long seed,
DirectionIntegers directionIntegers)
: dimensionality_(dimensionality), sequenceCounter_(0), firstDraw_(true),
sequence_(std::vector<Real> (dimensionality), 1.0),
integerSequence_(dimensionality, 0),
directionIntegers_(dimensionality,std::vector<unsigned long>(bits_)) {
QL_REQUIRE(dimensionality>0,
"dimensionality must be greater than 0");
QL_REQUIRE(dimensionality<=PPMT_MAX_DIM,
"dimensionality " << dimensionality
<< " exceeds the number of available "
<< "primitive polynomials modulo two ("
<< PPMT_MAX_DIM << ")");
// initializes coefficient array of the k-th primitive polynomial
// and degree of the k-th primitive polynomial
std::vector<unsigned int> degree(dimensionality_);
std::vector<long> ppmt(dimensionality_);
// degree 0 is not used
ppmt[0]=0;
degree[0]=0;
Size k, index;
unsigned int currentDegree;
for (k=1,index=0,currentDegree=1; k<dimensionality_; k++,index++){
ppmt[k] = PrimitivePolynomials[currentDegree-1][index];
if (ppmt[k]==-1) {
++currentDegree;
index=0;
ppmt[k] = PrimitivePolynomials[currentDegree-1][index];
}
degree[k] = currentDegree;
}
// initializes bits_ direction integers for each dimension
// and store them into directionIntegers_[dimensionality_][bits_]
//
// In each dimension k with its associated primitive polynomial,
// the first degree_[k] direction integers can be chosen freely
// provided that only the l leftmost bits can be non-zero, and
// that the l-th leftmost bit must be set
// degenerate (no free direction integers) first dimension
int j;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -