Exemplo n.º 1
0
void barrettMod(t_bint* a, t_bint* n, t_bint* mu,
                t_size sizeA, t_size sizeN, t_size sizeMu) {
    t_size sizeQ = sizeA + 1;
    t_size k = msw(n,sizeN) + 1;
    if (k - 1 > msw(a,sizeA)) {
        return;
    }
    t_bint* q = new t_bint[sizeQ];
    setNull(q,sizeQ);
    mov(q, a, sizeA);
    swr(q,k,sizeQ);
    mul(q,mu,sizeQ,sizeMu);
    swr(q,k,sizeQ);
    mul(q,n,sizeQ,sizeN);
    setNull(&a[k],sizeA - k);
    setNull(&q[k],sizeQ - k);
    switch (cmp(a,q,sizeA,sizeQ)) {
    case CMP_EQUAL:
        setNull(a,sizeA);
        break;
    case CMP_LOWER:
        a[k] = 1;
    case CMP_GREATER:
        sub(a,q,sizeA,sizeQ);
        break;
    }
    mod(a,n,sizeA,sizeN);
    delete[] q;
}
Exemplo n.º 2
0
void SuperfluousWayRemover::removeWays(shared_ptr<OsmMap> map)
{
  SuperfluousWayRemover swr(map);
  return swr.removeWays();
}