Dynare++: small optimization in unfolded tensor indexing
parent
30b8681731
commit
c0224a640c
|
@ -83,12 +83,11 @@ UTensor::decrement(IntSequence &v, const IntSequence &nvmx)
|
||||||
int
|
int
|
||||||
UTensor::getOffset(const IntSequence &v, int nv)
|
UTensor::getOffset(const IntSequence &v, int nv)
|
||||||
{
|
{
|
||||||
int pow = 1;
|
|
||||||
int res = 0;
|
int res = 0;
|
||||||
for (int i = v.size()-1; i >= 0; i--)
|
for (int i = 0; i < v.size(); i++)
|
||||||
{
|
{
|
||||||
res += v[i]*pow;
|
res *= nv;
|
||||||
pow *= nv;
|
res += v[i];
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -98,12 +97,11 @@ UTensor::getOffset(const IntSequence &v, int nv)
|
||||||
int
|
int
|
||||||
UTensor::getOffset(const IntSequence &v, const IntSequence &nvmx)
|
UTensor::getOffset(const IntSequence &v, const IntSequence &nvmx)
|
||||||
{
|
{
|
||||||
int pow = 1;
|
|
||||||
int res = 0;
|
int res = 0;
|
||||||
for (int i = v.size()-1; i >= 0; i--)
|
for (int i = 0; i < v.size(); i++)
|
||||||
{
|
{
|
||||||
res += v[i]*pow;
|
res *= nvmx[i];
|
||||||
pow *= nvmx[i];
|
res += v[i];
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue