TL
Size: a a a
TL
TL
VT
uLongInt uLongInt::operator*(const uLongInt& given) const
{
uLongInt result{};
int givlen = given.length();
if (givlen > number.size())
result = given * *this;
else
{
if (givlen > 0)
{
auto thread_arr = new std::thread[givlen];
auto results_get = new uLongInt[givlen];
for (int i = givlen - 1; i >= 0; i--)
{
thread_arr[i] = std::thread([&]() {
uLongInt temp{};
temp = operator*(given[i]);
temp.move_arr(i);
results_get[i] = temp;
});
}
for (int i = 0; i < givlen; i++)
{
thread_arr[i].join();
}
result = RecursiveSum(results_get, givlen);
}
}
return result;
}
VT
TL
uLongInt& move_arr(int i)
{
int s = number.size();
if (i > 0)
{
for (int k = 0; k < i; k++)
number.emplace_back();
memmove(&(number[i]), &(number[0]), s*8);
for (int k = 0; k < i; k++)
number[k] = 0;
}
else if (i < 0)
{
memmove(&(number[0]), &(number[i]), (s - i)*8);
for (int k = 0; k < i; k++)
number.pop_back();
}
return *this;
}
VT
VT
VT
VT
VT
TL
VT
VT
VT
VT
TL
TL
VT
VT