Changeset 42aa8b8 in git for libpolys


Ignore:
Timestamp:
Jun 3, 2014, 6:28:02 PM (10 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '38077648e7239f98078663eb941c3c979511150a')
Children:
9e74d36ab6179b1687991fad57ad4613a9816f7cd7295ff2c24f0d2b03594917a387c981bd47eedd
Parents:
ee121df974c1705dca6d334a16b69f52ee5fc0d4
Message:
activate 64bit repr. for Q
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpolys/coeffs/longrat.cc

    ree121d r42aa8b8  
    1717
    1818// 64 bit version:
    19 #if SIZEOF_LONG == 8
    20 //#if 0
     19//#if SIZEOF_LONG == 8
     20#if 0
    2121#define MAX_NUM_SIZE 60
    2222#define POW_2_28 (1L<<60)
     23#define POW_2_28_32 (1L<<28)
    2324#define LONG long
    2425#else
    2526#define MAX_NUM_SIZE 28
    2627#define POW_2_28 (1L<<28)
     28#define POW_2_28_32 (1L<<28)
    2729#define LONG int
    2830#endif
     
    802804    LONG bb=SR_TO_INT(b);
    803805    LONG c=SR_TO_INT(a) % bb;
    804     /*if(c < 0)
    805     {
    806         if(bb < 0)
    807             c = c - bb;
    808         else
    809             c = c + bb;
    810     }*/
    811     /*if((((SR_TO_INT(a)) / (bb))*bb+c) != SR_TO_INT(a))
    812     {
    813         printf("\nERROR longrat:819\n");
    814         printf("\na = %ld\n",SR_TO_INT(a));
    815         printf("\nb = %ld\n",bb);
    816         printf("\nc = %ld\n",c);
    817     }*/
    818806    return INT_TO_SR(c);
    819807  }
    820808  if (SR_HDL(a) & SR_INT)
    821809  {
    822     // a is a small and b is a large int: -> a
    823     //  INCORRECT, IT COULD HAPPEN THAT b IS A SMALL NUMBER
    824     number aa=ALLOC_RNUMBER();
    825     mpz_init(aa->z);
    826     mpz_set_si(aa->z, SR_TO_INT(a));
     810    mpz_t aa;
     811    mpz_init(aa);
     812    mpz_set_si(aa, SR_TO_INT(a));
    827813    u=ALLOC_RNUMBER();
    828814#if defined(LDEBUG)
     
    831817    u->s = 3;
    832818    mpz_init(u->z);
    833     mpz_mod(u->z,aa->z,b->z);
    834     if (mpz_isNeg(u->z))
    835     {
    836       if (mpz_isNeg(b->z))
    837         mpz_sub(u->z,aa->z,b->z);
    838       else
    839         mpz_add(u->z,aa->z,b->z);
    840     }
    841     /*mpz_t dummy;
    842     mpz_init(dummy);
    843     mpz_fdiv_q(dummy, aa->z, b->z);
    844     mpz_mul(dummy, dummy, b->z);
    845     mpz_add(dummy, dummy, u->z);
    846     if(mpz_cmp(dummy,aa->z) != 0)
    847     {
    848         printf("\nERROR longrat:911\n");
    849         printf("\na = ");n_Print(aa,r);
    850         gmp_printf("\ndummy = %Zd",dummy);
    851         mpz_clear(dummy);mpz_init(dummy);mpz_tdiv_q(dummy, a->z, b->z);
    852         gmp_printf("\na div b = %Zd\n u = ", dummy);
    853         n_Print(u,r);
    854     }
    855     mpz_clear(dummy);*/
    856     mpz_clear(aa->z);
    857     #if defined(LDEBUG)
    858     aa->debug=654324;
    859     #endif
    860     FREE_RNUMBER(aa);
     819    mpz_mod(u->z,aa,b->z);
     820    mpz_clear(aa);
    861821    u=nlShort3(u);
    862822    nlTest(u,r);
     
    876836  u->s = 3;
    877837  mpz_mod(u->z,a->z,b->z);
    878   if (mpz_isNeg(u->z))
    879   {
    880     if (mpz_isNeg(b->z))
    881       mpz_sub(u->z,u->z,b->z);
    882     else
    883       mpz_add(u->z,u->z,b->z);
    884   }
    885838  if (bb!=NULL)
    886839  {
     
    891844    FREE_RNUMBER(bb);
    892845  }
    893   /*mpz_t dummy;
    894   mpz_init(dummy);
    895     mpz_fdiv_q(dummy, a->z, b->z);
    896     mpz_mul(dummy, dummy, b->z);
    897     mpz_add(dummy, dummy, u->z);
    898     if(mpz_cmp(dummy,a->z) != 0)
    899     {
    900         printf("\nERROR longrat:911\n");
    901         printf("\na = ");n_Print(a,r);
    902         gmp_printf("\ndummy = %Zd",dummy);
    903         mpz_clear(dummy);mpz_init(dummy);mpz_tdiv_q(dummy, a->z, b->z);
    904         gmp_printf("\na div b = %Zd\n u = ", dummy);
    905         n_Print(u,r);
    906     }
    907     mpz_clear(dummy);*/
    908846  u=nlShort3(u);
    909847  nlTest(u,r);
     
    11081046  nlTest(a, r);
    11091047#endif
    1110   //if (SR_HDL(a) & SR_INT) return (a==INT_TO_SR(-1L));
    1111   //return FALSE;
    11121048  return  (a==INT_TO_SR(-1L));
    11131049}
     
    29242860    #else
    29252861    long nn=SR_TO_INT(n);
    2926     if ((nn<POW_2_28)&&(nn>= -POW_2_28))
    2927       fprintf(f,"4 %ld ",nn);
     2862    if ((nn<POW_2_28_32)&&(nn>= -POW_2_28_32))
     2863    {
     2864      int nnn=(int)nn;
     2865      fprintf(f,"4 %d ",nnn);
     2866    }
    29282867    else
    29292868    {
Note: See TracChangeset for help on using the changeset viewer.