Changeset a703f4c in git for libpolys


Ignore:
Timestamp:
Jun 23, 2021, 4:16:38 PM (3 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '4188d308699580d975efd0f6cca8dcb41c396f70')
Children:
c5ebc03def5fa7082c00ea3066b913257f581e42
Parents:
12867911ef88ecde21197b77ac02a0a0569e4a4a
Message:
opt: avoid nlIntMod in IntDiv
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpolys/coeffs/longrat.cc

    r128679 ra703f4c  
    988988  assume(a->s==3);
    989989  assume(b->s==3);
    990   mpz_init_set(u->z,a->z);
    991990  /* u=u/b */
     991  mpz_t rr;
     992  mpz_init(rr);
     993  mpz_mod(rr,a->z,b->z);
    992994  u->s = 3;
    993   number rr=nlIntMod(a,b,r);
    994   if (SR_HDL(rr) &  SR_INT) mpz_sub_ui(u->z,u->z,SR_TO_INT(rr));
    995   else                      mpz_sub(u->z,u->z,rr->z);
     995  mpz_init(u->z);
     996  mpz_sub(u->z,a->z,rr);
     997  mpz_clear(rr);
    996998  mpz_divexact(u->z,u->z,b->z);
    997999  if (aa!=NULL)
     
    14141416  return result;
    14151417}
     1418
    14161419static int int_extgcd(int a, int b, int * u, int* x, int * v, int* y)
    14171420{
     
    29622965  else
    29632966  {
    2964     number rr=nlIntMod(a,b,r);
    2965     if (SR_HDL(rr) &  SR_INT) mpz_sub_ui(a->z,a->z,SR_TO_INT(rr));
    2966     else                      mpz_sub(a->z,a->z,rr->z);
     2967    mpz_t rr;
     2968    mpz_init(rr);
     2969    mpz_mod(rr,a->z,b->z);
     2970    mpz_sub(a->z,a->z,rr);
     2971    mpz_clear(rr);
    29672972    mpz_divexact(a->z,a->z,b->z);
    29682973    a=nlShort3_noinline(a);
Note: See TracChangeset for help on using the changeset viewer.