Update lessnum and equnum to use indices instead of iterators in num.cpp

This commit is contained in:
fwcd 2019-04-06 22:54:59 +02:00
commit 70edac1d64
2 changed files with 13 additions and 15 deletions

View file

@ -379,7 +379,7 @@ PNUMBER numtonRadixx(_In_ PNUMBER a, uint32_t radix)
PNUMBER num_radix = i32tonum(radix, BASEX); PNUMBER num_radix = i32tonum(radix, BASEX);
// Digits are in reverse order, back over them LSD first. // Digits are in reverse order, back over them LSD first.
vector<MANTTYPE>::iterator ptrdigit = a->mant.end(); // iterator pointing to digit being worked on. vector<MANTTYPE>::iterator ptrdigit = a->mant.begin() + a->cdigit; // iterator pointing to digit being worked on.
PNUMBER thisdigit = nullptr; // thisdigit holds the current digit of a PNUMBER thisdigit = nullptr; // thisdigit holds the current digit of a
// being summed into result. // being summed into result.

View file

@ -506,8 +506,8 @@ bool equnum( PNUMBER a, PNUMBER b )
{ {
int32_t diff; int32_t diff;
vector<MANTTYPE>::iterator pa; int32_t ia;
vector<MANTTYPE>::iterator pb; int32_t ib;
int32_t cdigits; int32_t cdigits;
int32_t ccdigits; int32_t ccdigits;
MANTTYPE da; MANTTYPE da;
@ -529,10 +529,8 @@ bool equnum( PNUMBER a, PNUMBER b )
else else
{ {
// OK the exponents match. // OK the exponents match.
pa = a->mant.begin(); ia = a->cdigit - 1;
pb = b->mant.begin(); ib = b->cdigit - 1;
pa += a->cdigit - 1;
pb += b->cdigit - 1;
cdigits = max( a->cdigit, b->cdigit ); cdigits = max( a->cdigit, b->cdigit );
ccdigits = cdigits; ccdigits = cdigits;
@ -541,9 +539,9 @@ bool equnum( PNUMBER a, PNUMBER b )
for ( ;cdigits > 0; cdigits-- ) for ( ;cdigits > 0; cdigits-- )
{ {
da = ( (cdigits > (ccdigits - a->cdigit) ) ? da = ( (cdigits > (ccdigits - a->cdigit) ) ?
*pa-- : 0 ); a->mant[ia--] : 0 );
db = ( (cdigits > (ccdigits - b->cdigit) ) ? db = ( (cdigits > (ccdigits - b->cdigit) ) ?
*pb-- : 0 ); b->mant[ib--] : 0 );
if ( da != db ) if ( da != db )
{ {
return false; return false;
@ -574,8 +572,8 @@ bool lessnum( PNUMBER a, PNUMBER b )
{ {
int32_t diff; int32_t diff;
vector<MANTTYPE>::iterator pa; int32_t ia;
vector<MANTTYPE>::iterator pb; int32_t ib;
int32_t cdigits; int32_t cdigits;
int32_t ccdigits; int32_t ccdigits;
MANTTYPE da; MANTTYPE da;
@ -596,16 +594,16 @@ bool lessnum( PNUMBER a, PNUMBER b )
} }
else else
{ {
pa = a->mant.end(); ia = a->cdigit - 1;
pb = b->mant.end(); ib = b->cdigit - 1;
cdigits = max( a->cdigit, b->cdigit ); cdigits = max( a->cdigit, b->cdigit );
ccdigits = cdigits; ccdigits = cdigits;
for ( ;cdigits > 0; cdigits-- ) for ( ;cdigits > 0; cdigits-- )
{ {
da = ( (cdigits > (ccdigits - a->cdigit) ) ? da = ( (cdigits > (ccdigits - a->cdigit) ) ?
*(--pa) : 0 ); a->mant[ia--] : 0 );
db = ( (cdigits > (ccdigits - b->cdigit) ) ? db = ( (cdigits > (ccdigits - b->cdigit) ) ?
*(--pb) : 0 ); b->mant[ib--] : 0 );
diff = da-db; diff = da-db;
if ( diff ) if ( diff )
{ {