Fix some functions that require reference semantics instead of value semantics

This commit is contained in:
fwcd 2019-04-11 02:49:45 +02:00
commit 97fa6aa387
3 changed files with 9 additions and 9 deletions

View file

@ -427,21 +427,21 @@ void _divnum( NUMBER *pa, const NUMBER &b, uint32_t radix, int32_t precision)
while (cdigits++ < thismax && !zernum(rem))
{
digit = radix - 1;
NUMBER multiple;
for (const auto& num : numberList)
NUMBER* multiple;
for (auto& num : numberList)
{
if (!lessnum(rem, num) || !--digit)
{
multiple = num;
multiple = &num;
break;
}
}
if (digit)
{
multiple.sign *= -1;
addnum(&rem, multiple, radix);
multiple.sign *= -1;
multiple->sign *= -1;
addnum(&rem, *multiple, radix);
multiple->sign *= -1;
}
rem.exp++;
*ptrc-- = (MANTTYPE)digit;

View file

@ -61,7 +61,7 @@ typedef struct _number
// radix being used.
int32_t exp; // The offset of digits from the radix point
// (decimal point in radix 10)
std::vector<MANTTYPE> mant = {0};
std::vector<MANTTYPE> mant;
} NUMBER;

View file

@ -657,8 +657,8 @@ void trimit( PRAT *px, int32_t precision)
if ( !g_ftrueinfinite )
{
int32_t trim;
NUMBER pp=(*px)->pp;
NUMBER pq=(*px)->pq;
NUMBER& pp=(*px)->pp;
NUMBER& pq=(*px)->pq;
trim = g_ratio * (min((pp.cdigit+pp.exp),(pq.cdigit+pq.exp))-1) - precision;
if ( trim > g_ratio )
{