34 index = (index+1) % nrElems;
53 const vector<size_t>& nrElems )
55 size_t vec_size = indexVec.size();
56 if(nrElems.size() != indexVec.size())
57 throw E(
"IndexTools::Increment - nrElems.size() != indexVec.size()");
66 bool carry_over =
true;
67 Index i = vec_size - 1;
71 carry_over =
Increment( indexVec[i] , nrElems[i] );
97 const vector<size_t>& nrElems)
99 size_t vec_size = nrElems.size();
105 for(
Index i=0; i < vec_size ; i++)
106 jointI += indices[i] * step_size[i];
123 const vector<size_t>& nrElems,
size_t n)
131 for(
Index i=0; i < vec_size ; i++)
132 jointI += indices[i] * step_size[i];
140 const vector<size_t>& nrElems)
142 size_t vec_size = nrElems.size();
146 for(
Index i=0; i < vec_size ; i++)
147 jointI += indices[i] * step_size[i];
154 const vector<size_t>& step_size)
156 size_t vec_size = indices.size();
159 for(
Index i=0; i < vec_size ; i++)
160 jointI += indices[i] * step_size[i];
166 const size_t * step_size)
168 size_t vec_size = indices.size();
171 for(
Index i=0; i < vec_size ; i++)
172 jointI += indices[i] * step_size[i];
177 const size_t* step_size,
size_t vec_size)
180 for(
Index i=0; i < vec_size ; i++)
181 jointI += indices[i] * step_size[i];
187 const vector<size_t> &step_size,
size_t vec_size)
190 for(
Index i=0; i < vec_size ; i++)
191 jointI += indices[i] * step_size[i];
198 const vector<size_t>& nrElems)
201 size_t vec_size = nrElems.size();
202 vector<Index> result(vec_size);
207 Index remainder = jointI;
212 for(
Index i=0; i < vec_size ; i++)
214 Index aI = remainder / step_size[i];
216 remainder = remainder % step_size[i];
226 const size_t * step_size,
size_t vec_size )
228 Index remainder = jointI;
230 Index resultArr[vec_size];
231 for(
Index i=0; i < vec_size ; i++)
233 Index aI = remainder / step_size[i];
236 remainder -= step_size[i] * aI;
238 vector<Index> result(&resultArr[0], &resultArr[vec_size]);
244 const vector<size_t> &step_size,
248 Index remainder = jointI;
250 Index resultArr[vec_size];
251 for(
Index i=0; i < vec_size ; i++)
253 Index aI = remainder / step_size[i];
256 remainder -= step_size[i] * aI;
258 vector<Index> result(&resultArr[0], &resultArr[vec_size]);
263 const std::vector<size_t> &stepSize
267 jointI, stepSize, stepSize.size()
272 const size_t * step_size,
size_t vec_size )
274 Index remainder = jointI;
277 for(
Index i=0; i < vec_size ; i++)
279 Index aI = remainder / step_size[i];
282 remainder -= step_size[i] * aI;
288 size_t vec_size = nrElems.size();
291 size_t *step_size =
new size_t[vec_size];
293 step_size[vec_size-1] = 1;
296 Index i = vec_size-2;
301 step_size[i] = nrElems[i+1] * step_size[i+1];
306 step_size[i] = nrElems[i+1] * step_size[i+1];
319 size_t *step_size =
new size_t[vec_size];
321 step_size[vec_size-1] = 1;
324 Index i = vec_size-2;
329 step_size[i] = nrElems[i+1] * step_size[i+1];
334 step_size[i] = nrElems[i+1] * step_size[i+1];
352 ( pow((
double)o,(
double)(seqLength + 1)) - 1 )
366 index = (index+1) % nrElems;
373 LIndex vec_size = indexVec.size();
374 if(nrElems.size() != indexVec.size())
375 throw E(
"IndexTools::Increment - nrElems.size() != indexVec.size()");
384 bool carry_over =
true;
389 carry_over =
Increment( indexVec[i] , nrElems[i] );
403 const vector<LIndex>& nrElems)
406 LIndex vec_size = nrElems.size();
409 for(
LIndex i=0; i < vec_size ; i++)
410 jointI += indices[i] * step_size[i];
418 const vector<LIndex>& nrElems)
420 LIndex vec_size = nrElems.size();
424 for(
LIndex i=0; i < vec_size ; i++)
425 jointI += indices[i] * step_size[i];
432 const vector<LIndex>& step_size)
434 LIndex vec_size = indices.size();
437 for(
LIndex i=0; i < vec_size ; i++)
438 jointI += indices[i] * step_size[i];
446 LIndex vec_size = indices.size();
449 for(
LIndex i=0; i < vec_size ; i++)
450 jointI += indices[i] * step_size[i];
458 for(
LIndex i=0; i < vec_size ; i++)
459 jointI += indices[i] * step_size[i];
464 const vector<LIndex> &step_size,
LIndex vec_size)
467 for(
LIndex i=0; i < vec_size ; i++)
468 jointI += indices[i] * step_size[i];
472 const vector<LIndex>& nrElems)
475 LIndex vec_size = nrElems.size();
476 vector<LIndex> result(vec_size);
480 LIndex remainder = jointI;
481 for(
LIndex i=0; i < vec_size ; i++)
483 LIndex aI = remainder / step_size[i];
485 remainder = remainder % step_size[i];
494 LIndex remainder = jointI;
496 LIndex resultArr[vec_size];
497 for(
LIndex i=0; i < vec_size ; i++)
499 LIndex aI = remainder / step_size[i];
502 remainder -= step_size[i] * aI;
504 vector<LIndex> result(&resultArr[0], &resultArr[vec_size]);
508 const vector<LIndex> &step_size,
LIndex vec_size )
510 LIndex remainder = jointI;
512 LIndex resultArr[vec_size];
513 for(
LIndex i=0; i < vec_size ; i++)
515 LIndex aI = remainder / step_size[i];
518 remainder -= step_size[i] * aI;
520 vector<LIndex> result(&resultArr[0], &resultArr[vec_size]);
525 const std::vector<LIndex> &stepSize)
532 LIndex vec_size = nrElems.size();
537 step_size[vec_size-1] = 1;
545 step_size[i] = nrElems[i+1] * step_size[i+1];
550 step_size[i] = nrElems[i+1] * step_size[i+1];
560 Index oI,
size_t nrA,
size_t nrO)
562 return ( aI * nrO + oI );
567 return ( (
size_t) (aoI / nrO) );
572 return ( (
size_t) (aoI % nrO) );