Alien-Judy
view release on metacpan or search on metacpan
src/judy-1.0.5/test/Judy1LCheck.c view on Meta::CPAN
Word_t Seed1;
int Rcode;
// Only delete half of thoes inserted
for (Seed1 = Seed, elm = 0; elm < (Elements / 2); elm++)
{
Seed1 = GetNextIndex(Seed1);
if (DFlag)
TstIndex = Swizzle(Seed1);
else
TstIndex = Seed1;
if (pFlag) { printf("Del: %8lu\t0x%lx\n", elm, TstIndex); }
TotalDel++;
J1U(Rcode, *J1, TstIndex);
if (Rcode != 1)
FAILURE("Judy1Unset ret Rcode != 1", (Word_t) Rcode);
JLD(Rcode, *JL, TstIndex);
if (Rcode != 1)
FAILURE("JudyLDel ret Rcode != 1", (Word_t) Rcode);
TotalPop--;
}
return(0);
}
// Routine to get next size of Indexes
int // return 1 if last number
NextNumb(Word_t * PNumber, // pointer to returned next number
double *PDNumb, // Temp double of above
double DMult, // Multiplier
Word_t MaxNumb) // Max number to return
{
Word_t num;
// Save prev number
Word_t PrevNumb = *PNumber;
// Verify integer number increased
for (num = 0; num < 1000; num++)
{
// Calc next number
*PDNumb *= DMult;
// Return it in integer format
*PNumber = (Word_t) (*PDNumb + 0.5);
if (*PNumber != PrevNumb)
break;
}
// Verify it did exceed max ulong
if ((*PDNumb + 0.5) > (double)(-1UL))
{
// It did, so return max number
*PNumber = -1UL;
return (1); // flag it
}
// Verify it did not exceed max number
if ((*PDNumb + 0.5) > (double)MaxNumb)
{
// it did, so return max
*PNumber = MaxNumb;
return(1); // flag it
}
return(0); // more available
}
( run in 0.898 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )