Alien-Judy

 view release on metacpan or  search on metacpan

src/judy-1.0.5/test/Judy1LTime.c  view on Meta::CPAN

            else
                TstIndex = Seed1;

            J1U(Rc, *J1, TstIndex);
            if (Rc != 1)
                FAILURE("Judy1Unset ret Rcode != 1", (Word_t)Rc);
        }
        ENDTm(DeltaUSec1, tm1);
        DeltaUSec1 /= Elements;
    }

    STARTTm(tm1);
    if (JLFlag)
    {
        for (Seed1 = Seed, elm = 0; elm < Elements; elm++)
        {
            Seed1 = GetNextIndex(Seed1);

            if (DFlag)
                TstIndex = Swizzle(Seed1);
            else
                TstIndex = Seed1;

            JLD(Rc, *JL, TstIndex);
            if (Rc != 1)
                FAILURE("JudyLDel ret Rcode != 1", (Word_t)Rc);
        }
        ENDTm(DeltaUSecL, tm1);
        DeltaUSecL /= Elements;
    }
    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
{
//  Save prev number
    double    PrevPDNumb = *PDNumb;
    double    DDiff;

//  Calc next number >= 1.0 beyond previous
    do {
        *PDNumb *= DMult;
        DDiff    = *PDNumb - PrevPDNumb;

    } while (DDiff < 0.5);

//  Return it in integer format
    if (DDiff < 100.0) *PNumber += (Word_t)(DDiff + 0.5);
    else               *PNumber = *PDNumb + 0.5;

//  Verify it did not exceed max number
    if (*PNumber >= MaxNumb)
    {
//      it did, so return max
        *PNumber = MaxNumb;
        return (1);             // flag it
    }
    return (0);                 // more available
}



( run in 1.056 second using v1.01-cache-2.11-cpan-140bd7fdf52 )