mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-20 06:32:08 +00:00
fixed types
This commit is contained in:
parent
4481293bc0
commit
a7ab336af2
@ -32,8 +32,8 @@ struct DecimalOpHerpers
|
|||||||
// constexpr const static UInt256 MAX_INT256 = UInt256(-1) >> 1;
|
// constexpr const static UInt256 MAX_INT256 = UInt256(-1) >> 1;
|
||||||
static std::vector<UInt8> multiply(const std::vector<UInt8> & num1, const std::vector<UInt8> & num2)
|
static std::vector<UInt8> multiply(const std::vector<UInt8> & num1, const std::vector<UInt8> & num2)
|
||||||
{
|
{
|
||||||
int const len1 = static_cast<int>(num1.size());
|
UInt16 const len1 = num1.size();
|
||||||
int const len2 = static_cast<int>(num2.size());
|
UInt16 const len2 = num2.size();
|
||||||
if (len1 == 0 || len2 == 0)
|
if (len1 == 0 || len2 == 0)
|
||||||
return {0};
|
return {0};
|
||||||
|
|
||||||
@ -43,13 +43,13 @@ struct DecimalOpHerpers
|
|||||||
|
|
||||||
for (auto i = len1 - 1; i >= 0; --i)
|
for (auto i = len1 - 1; i >= 0; --i)
|
||||||
{
|
{
|
||||||
int carry = 0;
|
UInt16 carry = 0;
|
||||||
i_n2 = 0;
|
i_n2 = 0;
|
||||||
for (auto j = len2 - 1; j >= 0; --j)
|
for (auto j = len2 - 1; j >= 0; --j)
|
||||||
{
|
{
|
||||||
if (unlikely(i_n1 + i_n2 >= 76))
|
if (unlikely(i_n1 + i_n2 >= 76))
|
||||||
throw DB::Exception("Numeric overflow: result bigger that Decimal256", ErrorCodes::DECIMAL_OVERFLOW);
|
throw DB::Exception("Numeric overflow: result bigger that Decimal256", ErrorCodes::DECIMAL_OVERFLOW);
|
||||||
int const sum = num1[i] * num2[j] + result[i_n1 + i_n2] + carry;
|
UInt16 const sum = num1[i] * num2[j] + result[i_n1 + i_n2] + carry;
|
||||||
carry = sum / 10;
|
carry = sum / 10;
|
||||||
result[i_n1 + i_n2] = sum % 10;
|
result[i_n1 + i_n2] = sum % 10;
|
||||||
++i_n2;
|
++i_n2;
|
||||||
@ -61,7 +61,7 @@ struct DecimalOpHerpers
|
|||||||
++i_n1;
|
++i_n1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int i = static_cast<int>(result.size()) - 1;
|
Int32 i = static_cast<Int32>(result.size() - 1);
|
||||||
while (i >= 0 && result[i] == 0)
|
while (i >= 0 && result[i] == 0)
|
||||||
{
|
{
|
||||||
result.pop_back();
|
result.pop_back();
|
||||||
@ -78,12 +78,12 @@ struct DecimalOpHerpers
|
|||||||
{
|
{
|
||||||
std::vector<UInt8> result;
|
std::vector<UInt8> result;
|
||||||
|
|
||||||
int idx = 0;
|
UInt8 idx = 0;
|
||||||
UInt256 temp = number[idx];
|
UInt256 temp = number[idx];
|
||||||
while (temp < divisor)
|
while (temp < divisor)
|
||||||
temp = temp * 10 + (number[++idx]);
|
temp = temp * 10 + (number[++idx]);
|
||||||
|
|
||||||
while (int(number.size()) > idx)
|
while (number.size() > idx)
|
||||||
{
|
{
|
||||||
result.push_back(temp / divisor);
|
result.push_back(temp / divisor);
|
||||||
temp = (temp % divisor) * 10 + number[++idx];
|
temp = (temp % divisor) * 10 + number[++idx];
|
||||||
|
Loading…
Reference in New Issue
Block a user