Cleared warnings on WindowSlider struct
parent
b5ed163c87
commit
e78b8fe1df
55
algebra.cpp
55
algebra.cpp
|
|
@ -206,49 +206,50 @@ template <class Element, class Iterator> Element GeneralCascadeMultiplication(co
|
||||||
struct WindowSlider
|
struct WindowSlider
|
||||||
{
|
{
|
||||||
WindowSlider(const Integer &expIn, bool fastNegate, unsigned int windowSizeIn=0)
|
WindowSlider(const Integer &expIn, bool fastNegate, unsigned int windowSizeIn=0)
|
||||||
: exp(expIn), windowModulus(Integer::One()), windowSize(windowSizeIn), windowBegin(0), fastNegate(fastNegate), firstTime(true), finished(false)
|
: m_exp(expIn), m_windowModulus(Integer::One()), m_windowSize(windowSizeIn), m_windowBegin(0), m_fastNegate(fastNegate), m_firstTime(true), m_finished(false)
|
||||||
{
|
{
|
||||||
if (windowSize == 0)
|
if (m_windowSize == 0)
|
||||||
{
|
{
|
||||||
unsigned int expLen = exp.BitCount();
|
const unsigned int expLen = m_exp.BitCount();
|
||||||
windowSize = expLen <= 17 ? 1 : (expLen <= 24 ? 2 : (expLen <= 70 ? 3 : (expLen <= 197 ? 4 : (expLen <= 539 ? 5 : (expLen <= 1434 ? 6 : 7)))));
|
m_windowSize = expLen <= 17 ? 1 : (expLen <= 24 ? 2 : (expLen <= 70 ? 3 : (expLen <= 197 ? 4 : (expLen <= 539 ? 5 : (expLen <= 1434 ? 6 : 7)))));
|
||||||
}
|
}
|
||||||
windowModulus <<= windowSize;
|
m_windowModulus <<= m_windowSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindNextWindow()
|
void FindNextWindow()
|
||||||
{
|
{
|
||||||
unsigned int expLen = exp.WordCount() * WORD_BITS;
|
const unsigned int expLen = m_exp.WordCount() * WORD_BITS;
|
||||||
unsigned int skipCount = firstTime ? 0 : windowSize;
|
unsigned int skipCount = m_firstTime ? 0 : m_windowSize;
|
||||||
firstTime = false;
|
m_firstTime = false;
|
||||||
while (!exp.GetBit(skipCount))
|
|
||||||
|
while (!m_exp.GetBit(skipCount))
|
||||||
{
|
{
|
||||||
if (skipCount >= expLen)
|
if (skipCount >= expLen)
|
||||||
{
|
{
|
||||||
finished = true;
|
m_finished = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
skipCount++;
|
skipCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
exp >>= skipCount;
|
m_exp >>= skipCount;
|
||||||
windowBegin += skipCount;
|
m_windowBegin += skipCount;
|
||||||
expWindow = word32(exp % (word(1) << windowSize));
|
m_expWindow = word32(m_exp % (word(1) << m_windowSize));
|
||||||
|
|
||||||
if (fastNegate && exp.GetBit(windowSize))
|
if (m_fastNegate && m_exp.GetBit(m_windowSize))
|
||||||
{
|
{
|
||||||
negateNext = true;
|
m_negateNext = true;
|
||||||
expWindow = (word32(1) << windowSize) - expWindow;
|
m_expWindow = (word32(1) << m_windowSize) - m_expWindow;
|
||||||
exp += windowModulus;
|
m_exp += m_windowModulus;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
negateNext = false;
|
m_negateNext = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Integer exp, windowModulus;
|
Integer m_exp, m_windowModulus;
|
||||||
unsigned int windowSize, windowBegin;
|
unsigned int m_windowSize, m_windowBegin;
|
||||||
word32 expWindow;
|
word32 m_expWindow;
|
||||||
bool fastNegate, negateNext, firstTime, finished;
|
bool m_fastNegate, m_negateNext, m_firstTime, m_finished;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
|
|
@ -264,7 +265,7 @@ void AbstractGroup<T>::SimultaneousMultiply(T *results, const T &base, const Int
|
||||||
assert(expBegin->NotNegative());
|
assert(expBegin->NotNegative());
|
||||||
exponents.push_back(WindowSlider(*expBegin++, InversionIsFast(), 0));
|
exponents.push_back(WindowSlider(*expBegin++, InversionIsFast(), 0));
|
||||||
exponents[i].FindNextWindow();
|
exponents[i].FindNextWindow();
|
||||||
buckets[i].resize(1<<(exponents[i].windowSize-1), Identity());
|
buckets[i].resize(1<<(exponents[i].m_windowSize-1), Identity());
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int expBitPosition = 0;
|
unsigned int expBitPosition = 0;
|
||||||
|
|
@ -276,16 +277,16 @@ void AbstractGroup<T>::SimultaneousMultiply(T *results, const T &base, const Int
|
||||||
notDone = false;
|
notDone = false;
|
||||||
for (i=0; i<expCount; i++)
|
for (i=0; i<expCount; i++)
|
||||||
{
|
{
|
||||||
if (!exponents[i].finished && expBitPosition == exponents[i].windowBegin)
|
if (!exponents[i].m_finished && expBitPosition == exponents[i].m_windowBegin)
|
||||||
{
|
{
|
||||||
Element &bucket = buckets[i][exponents[i].expWindow/2];
|
Element &bucket = buckets[i][exponents[i].m_expWindow/2];
|
||||||
if (exponents[i].negateNext)
|
if (exponents[i].m_negateNext)
|
||||||
Accumulate(bucket, Inverse(g));
|
Accumulate(bucket, Inverse(g));
|
||||||
else
|
else
|
||||||
Accumulate(bucket, g);
|
Accumulate(bucket, g);
|
||||||
exponents[i].FindNextWindow();
|
exponents[i].FindNextWindow();
|
||||||
}
|
}
|
||||||
notDone = notDone || !exponents[i].finished;
|
notDone = notDone || !exponents[i].m_finished;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notDone)
|
if (notDone)
|
||||||
|
|
|
||||||
8
ecp.cpp
8
ecp.cpp
|
|
@ -395,7 +395,7 @@ void ECP::SimultaneousMultiply(ECP::Point *results, const ECP::Point &P, const I
|
||||||
bool baseAdded = false;
|
bool baseAdded = false;
|
||||||
for (i=0; i<expCount; i++)
|
for (i=0; i<expCount; i++)
|
||||||
{
|
{
|
||||||
if (!exponents[i].finished && expBitPosition == exponents[i].windowBegin)
|
if (!exponents[i].m_finished && expBitPosition == exponents[i].m_windowBegin)
|
||||||
{
|
{
|
||||||
if (!baseAdded)
|
if (!baseAdded)
|
||||||
{
|
{
|
||||||
|
|
@ -403,13 +403,13 @@ void ECP::SimultaneousMultiply(ECP::Point *results, const ECP::Point &P, const I
|
||||||
baseAdded =true;
|
baseAdded =true;
|
||||||
}
|
}
|
||||||
|
|
||||||
exponentWindows[i].push_back(exponents[i].expWindow);
|
exponentWindows[i].push_back(exponents[i].m_expWindow);
|
||||||
baseIndices[i].push_back((word32)bases.size()-1);
|
baseIndices[i].push_back((word32)bases.size()-1);
|
||||||
negateBase[i].push_back(exponents[i].negateNext);
|
negateBase[i].push_back(exponents[i].m_negateNext);
|
||||||
|
|
||||||
exponents[i].FindNextWindow();
|
exponents[i].FindNextWindow();
|
||||||
}
|
}
|
||||||
notDone = notDone || !exponents[i].finished;
|
notDone = notDone || !exponents[i].m_finished;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notDone)
|
if (notDone)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue