Changeset a604c3 in git for kernel/longrat.cc


Ignore:
Timestamp:
Apr 16, 2010, 12:15:43 PM (14 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '6e5adcba05493683b94648c659a729c189812c77')
Children:
0f7301e691bd462913428c33f8962015a37bb532
Parents:
603aebf126f77cf0b8c041b0833934960300078a
Message:
gmp stuff

git-svn-id: file:///usr/local/Singular/svn/trunk@12728 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/longrat.cc

    r603aebf ra604c3  
    123123  z->debug=123456;
    124124#endif
    125   mpz_init_set(&z->z,(MP_INT*) from);
     125  mpz_init_set(z->z,(mpz_ptr) from);
    126126  //mpz_init_set_ui(&z->n,1);
    127127  z->s = 3;
    128   if ((mpz_cmp_ui(&z->z,(long)0)==0)
    129   || (mpz_size1(&z->z)<=MP_SMALL))
    130   {
    131     int ui=(int)mpz_get_si(&z->z);
     128  if ((mpz_cmp_ui(z->z,(long)0)==0)
     129  || (mpz_size1(z->z)<=MP_SMALL))
     130  {
     131    int ui=(int)mpz_get_si(z->z);
    132132    if ((((ui<<3)>>3)==ui)
    133     && (mpz_cmp_si(&z->z,(long)ui)==0))
    134     {
    135       mpz_clear(&z->z);
     133    && (mpz_cmp_si(z->z,(long)ui)==0))
     134    {
     135      mpz_clear(z->z);
    136136      omFreeBin((ADDRESS)z, rnumber_bin);
    137137      return INT_TO_SR(ui);
     
    150150  z->debug=123456;
    151151#endif
    152   mpz_init_set_ui(&z->z,(unsigned long) from);
     152  mpz_init_set_ui(z->z,(unsigned long) from);
    153153  z->s = 3;
    154   if ((mpz_cmp_ui(&z->z,(long)0)==0)
    155   || (mpz_size1(&z->z)<=MP_SMALL))
    156   {
    157     int ui=(int)mpz_get_si(&z->z);
     154  if ((mpz_cmp_ui(z->z,(long)0)==0)
     155  || (mpz_size1(z->z)<=MP_SMALL))
     156  {
     157    int ui=(int)mpz_get_si(z->z);
    158158    if ((((ui<<3)>>3)==ui)
    159     && (mpz_cmp_si(&z->z,(long)ui)==0))
    160     {
    161       mpz_clear(&z->z);
     159    && (mpz_cmp_si(z->z,(long)ui)==0))
     160    {
     161      mpz_clear(z->z);
    162162      omFreeBin((ADDRESS)z, rnumber_bin);
    163163      return INT_TO_SR(ui);
     
    235235    return FALSE;
    236236  }
    237   omCheckAddrSize(a->z._mp_d,a->z._mp_alloc*BYTES_PER_MP_LIMB);
    238   if (a->z._mp_alloc==0)
     237  omCheckAddrSize(a->z[0]._mp_d,a->z[0]._mp_alloc*BYTES_PER_MP_LIMB);
     238  if (a->z[0]._mp_alloc==0)
    239239    Print("!!longrat:z->alloc=0 in %s:%d\n",f,l);
    240240
    241241  if (a->s<2)
    242242  {
    243     omCheckIf(omCheckAddrSize(a->n._mp_d,a->n._mp_alloc*BYTES_PER_MP_LIMB), return FALSE);
    244     if (a->z._mp_alloc==0)
     243    omCheckIf(omCheckAddrSize(a->n[0]._mp_d,a->n[0]._mp_alloc*BYTES_PER_MP_LIMB), return FALSE);
     244    if (a->z[0]._mp_alloc==0)
    245245      Print("!!longrat:n->alloc=0 in %s:%d\n",f,l);
    246     if ((mpz_size1(&a->n) ==1) && (mpz_cmp_si(&a->n,(long)1)==0))
     246    if ((mpz_size1(a->n) ==1) && (mpz_cmp_si(a->n,(long)1)==0))
    247247    {
    248248      Print("!!longrat:integer as rational in %s:%d\n",f,l);
    249249      return FALSE;
    250250    }
    251     else if (mpz_isNeg(&a->n))
     251    else if (mpz_isNeg(a->n))
    252252    {
    253253      Print("!!longrat:div. by negative in %s:%d\n",f,l);
    254       mpz_neg(&a->z,&a->z);
    255       mpz_neg(&a->n,&a->n);
     254      mpz_neg(a->z,a->z);
     255      mpz_neg(a->n,a->n);
    256256      return FALSE;
    257257    }
     
    263263    return FALSE;
    264264  }
    265   if (mpz_size1(&a->z)>MP_SMALL) return TRUE;
    266   int ui=(int)mpz_get_si(&a->z);
     265  if (mpz_size1(a->z)>MP_SMALL) return TRUE;
     266  int ui=(int)mpz_get_si(a->z);
    267267  if ((((ui<<3)>>3)==ui)
    268   && (mpz_cmp_si(&a->z,(long)ui)==0))
     268  && (mpz_cmp_si(a->z,(long)ui)==0))
    269269  {
    270270    Print("!!longrat:im int %d in %s:%d\n",ui,f,l);
     
    298298  }
    299299  number r=nlRInit(1);
    300   mpz_set_d(&(r->z),f);
     300  mpz_set_d(r->z,f);
    301301  memcpy4(&(r->n),&h1,sizeof(h1));
    302302  r->s=0; /* not normalized */
     
    311311  mpf_t *f=ff->_mpfp();
    312312  number res;
    313   lint *dest,*ndest;
     313  mpz_ptr dest,ndest;
    314314  int size, i,negative;
    315315  int e,al,bl;
     
    339339  res->debug=123456;
    340340#endif
    341   dest = &(res->z);
     341  dest = res->z;
    342342
    343343  if (e<0)
     
    351351    nn[bl-1] = 1;
    352352    for (i=bl-2;i>=0;i--) nn[i] = 0;
    353     ndest = &(res->n);
     353    ndest = res->n;
    354354    ndest->_mp_d = nn;
    355355    ndest->_mp_alloc = ndest->_mp_size = bl;
     
    372372  if (res->s==0)
    373373    nlNormalize(res);
    374   else if (mpz_size1(&res->z)<=MP_SMALL)
     374  else if (mpz_size1(res->z)<=MP_SMALL)
    375375  {
    376376    // res is new, res->ref is 1
    377     int ui=(int)mpz_get_si(&res->z);
     377    int ui=(int)mpz_get_si(res->z);
    378378    if ((((ui<<3)>>3)==ui)
    379        && (mpz_cmp_si(&res->z,(long)ui)==0))
    380     {
    381        mpz_clear(&res->z);
     379       && (mpz_cmp_si(res->z,(long)ui)==0))
     380    {
     381       mpz_clear(res->z);
    382382#if defined(LDEBUG)
    383383       res->debug=654324;
     
    464464  if (SR_HDL(a) & SR_INT)
    465465     return 1; /* immidiate int */
    466   int s=a->z._mp_alloc;
     466  int s=a->z[0]._mp_alloc;
    467467//  while ((s>0) &&(a->z._mp_d[s]==0L)) s--;
    468468//#if SIZEOF_LONG == 8
     
    473473  if (a->s<2)
    474474  {
    475     int d=a->n._mp_alloc;
     475    int d=a->n[0]._mp_alloc;
    476476//    while ((d>0) && (a->n._mp_d[d]==0L)) d--;
    477477//#if SIZEOF_LONG == 8
     
    496496  if (i->s==3)
    497497  {
    498     if(mpz_size1(&i->z)>MP_SMALL) return 0;
    499     int ul=(int)mpz_get_si(&i->z);
    500     if (mpz_cmp_si(&i->z,(long)ul)!=0) return 0;
     498    if(mpz_size1(i->z)>MP_SMALL) return 0;
     499    int ul=(int)mpz_get_si(i->z);
     500    if (mpz_cmp_si(i->z,(long)ul)!=0) return 0;
    501501    return ul;
    502502  }
    503   lint tmp;
     503  mpz_t tmp;
    504504  int ul;
    505   mpz_init(&tmp);
    506   MPZ_DIV(&tmp,&i->z,&i->n);
    507   if(mpz_size1(&tmp)>MP_SMALL) ul=0;
     505  mpz_init(tmp);
     506  MPZ_DIV(tmp,i->z,i->n);
     507  if(mpz_size1(tmp)>MP_SMALL) ul=0;
    508508  else
    509509  {
    510     ul=(int)mpz_get_si(&tmp);
    511     if (mpz_cmp_si(&tmp,(long)ul)!=0) ul=0;
    512   }
    513   mpz_clear(&tmp);
     510    ul=(int)mpz_get_si(tmp);
     511    if (mpz_cmp_si(tmp,(long)ul)!=0) ul=0;
     512  }
     513  mpz_clear(tmp);
    514514  return ul;
    515515}
     
    530530  }
    531531  number tmp=nlRInit(1);
    532   MPZ_DIV(&tmp->z,&i->z,&i->n);
     532  MPZ_DIV(tmp->z,i->z,i->n);
    533533  nlNormalize(tmp);
    534534  return tmp;
     
    562562    if ((long)a>0L)
    563563    {
    564       mpz_init_set_si(&n->z,(long)1);
    565       mpz_init_set_si(&n->n,(long)SR_TO_INT(a));
     564      mpz_init_set_si(n->z,(long)1);
     565      mpz_init_set_si(n->n,(long)SR_TO_INT(a));
    566566    }
    567567    else
    568568    {
    569       mpz_init_set_si(&n->z,(long)-1);
    570       mpz_init_set_si(&n->n,(long)-SR_TO_INT(a));
     569      mpz_init_set_si(n->z,(long)-1);
     570      mpz_init_set_si(n->n,(long)-SR_TO_INT(a));
    571571    }
    572572#ifdef LDEBUG
     
    581581  {
    582582    n->s=a->s;
    583     mpz_init_set(&n->n,&a->z);
     583    mpz_init_set(n->n,a->z);
    584584    switch (a->s)
    585585    {
    586586      case 0:
    587587      case 1:
    588               mpz_init_set(&n->z,&a->n);
    589               if (mpz_isNeg(&n->n)) /* && n->s<2*/
     588              mpz_init_set(n->z,a->n);
     589              if (mpz_isNeg(n->n)) /* && n->s<2*/
    590590              {
    591                 mpz_neg(&n->z,&n->z);
    592                 mpz_neg(&n->n,&n->n);
     591                mpz_neg(n->z,n->z);
     592                mpz_neg(n->n,n->n);
    593593              }
    594               if (mpz_cmp_si(&n->n,(long)1)==0)
     594              if (mpz_cmp_si(n->n,(long)1)==0)
    595595              {
    596                 mpz_clear(&n->n);
     596                mpz_clear(n->n);
    597597                n->s=3;
    598                 if (mpz_size1(&n->z)<=MP_SMALL)
     598                if (mpz_size1(n->z)<=MP_SMALL)
    599599                {
    600                   int ui=(int)mpz_get_si(&n->z);
     600                  int ui=(int)mpz_get_si(n->z);
    601601                  if ((((ui<<3)>>3)==ui)
    602                   && (mpz_cmp_si(&n->z,(long)ui)==0))
     602                  && (mpz_cmp_si(n->z,(long)ui)==0))
    603603                  {
    604                     mpz_clear(&n->z);
     604                    mpz_clear(n->z);
    605605#if defined(LDEBUG)
    606606                    n->debug=654324;
     
    614614      case 3:
    615615              n->s=1;
    616               if (mpz_isNeg(&n->n)) /* && n->s<2*/
     616              if (mpz_isNeg(n->n)) /* && n->s<2*/
    617617              {
    618                 mpz_neg(&n->n,&n->n);
    619                 mpz_init_set_si(&n->z,(long)-1);
     618                mpz_neg(n->n,n->n);
     619                mpz_init_set_si(n->z,(long)-1);
    620620              }
    621621              else
    622622              {
    623                 mpz_init_set_si(&n->z,(long)1);
     623                mpz_init_set_si(n->z,(long)1);
    624624              }
    625625              break;
     
    667667  u->debug=123456;
    668668#endif
    669   mpz_init(&u->z);
     669  mpz_init(u->z);
    670670  /* u=a/b */
    671671  u->s = 3;
    672   MPZ_EXACTDIV(&u->z,&a->z,&b->z);
     672  MPZ_EXACTDIV(u->z,a->z,b->z);
    673673  if (bb!=NULL)
    674674  {
    675     mpz_clear(&bb->z);
     675    mpz_clear(bb->z);
    676676#if defined(LDEBUG)
    677677    bb->debug=654324;
     
    679679    omFreeBin((ADDRESS)bb, rnumber_bin);
    680680  }
    681   if (mpz_size1(&u->z)<=MP_SMALL)
    682   {
    683     int ui=(int)mpz_get_si(&u->z);
     681  if (mpz_size1(u->z)<=MP_SMALL)
     682  {
     683    int ui=(int)mpz_get_si(u->z);
    684684    if ((((ui<<3)>>3)==ui)
    685     && (mpz_cmp_si(&u->z,(long)ui)==0))
    686     {
    687       mpz_clear(&u->z);
     685    && (mpz_cmp_si(u->z,(long)ui)==0))
     686    {
     687      mpz_clear(u->z);
    688688#if defined(LDEBUG)
    689689      u->debug=654324;
     
    728728    if (a==INT_TO_SR(-(1<<28)))
    729729    {
    730       if(mpz_cmp_si(&b->z,(long)(1<<28))==0)
     730      if(mpz_cmp_si(b->z,(long)(1<<28))==0)
    731731      {
    732732        return INT_TO_SR(-1);
     
    748748  assume(a->s==3);
    749749  assume(b->s==3);
    750   mpz_init_set(&u->z,&a->z);
     750  mpz_init_set(u->z,a->z);
    751751  /* u=u/b */
    752752  u->s = 3;
    753   MPZ_DIV(&u->z,&u->z,&b->z);
     753  MPZ_DIV(u->z,u->z,b->z);
    754754  if (bb!=NULL)
    755755  {
    756     mpz_clear(&bb->z);
     756    mpz_clear(bb->z);
    757757#if defined(LDEBUG)
    758758    bb->debug=654324;
     
    760760    omFreeBin((ADDRESS)bb, rnumber_bin);
    761761  }
    762   if (mpz_size1(&u->z)<=MP_SMALL)
    763   {
    764     int ui=(int)mpz_get_si(&u->z);
     762  if (mpz_size1(u->z)<=MP_SMALL)
     763  {
     764    int ui=(int)mpz_get_si(u->z);
    765765    if ((((ui<<3)>>3)==ui)
    766     && (mpz_cmp_si(&u->z,(long)ui)==0))
    767     {
    768       mpz_clear(&u->z);
     766    && (mpz_cmp_si(u->z,(long)ui)==0))
     767    {
     768      mpz_clear(u->z);
    769769#if defined(LDEBUG)
    770770      u->debug=654324;
     
    823823    if ((long)a<0L)
    824824    {
    825       if (mpz_isNeg(&b->z))
     825      if (mpz_isNeg(b->z))
    826826        return nlSub(a,b);
    827827      /*else*/
     
    841841  u->debug=123456;
    842842#endif
    843   mpz_init(&u->z);
     843  mpz_init(u->z);
    844844  u->s = 3;
    845   mpz_mod(&u->z,&a->z,&b->z);
     845  mpz_mod(u->z,a->z,b->z);
    846846  if (bb!=NULL)
    847847  {
    848     mpz_clear(&bb->z);
     848    mpz_clear(bb->z);
    849849#if defined(LDEBUG)
    850850    bb->debug=654324;
     
    852852    omFreeBin((ADDRESS)bb, rnumber_bin);
    853853  }
    854   if (mpz_isNeg(&u->z))
    855   {
    856     if (mpz_isNeg(&b->z))
    857       mpz_sub(&u->z,&u->z,&b->z);
     854  if (mpz_isNeg(u->z))
     855  {
     856    if (mpz_isNeg(b->z))
     857      mpz_sub(u->z,u->z,b->z);
    858858    else
    859       mpz_add(&u->z,&u->z,&b->z);
    860   }
    861   if (mpz_size1(&u->z)<=MP_SMALL)
    862   {
    863     int ui=(int)mpz_get_si(&u->z);
     859      mpz_add(u->z,u->z,b->z);
     860  }
     861  if (mpz_size1(u->z)<=MP_SMALL)
     862  {
     863    int ui=(int)mpz_get_si(u->z);
    864864    if ((((ui<<3)>>3)==ui)
    865     && (mpz_cmp_si(&u->z,(long)ui)==0))
    866     {
    867       mpz_clear(&u->z);
     865    && (mpz_cmp_si(u->z,(long)ui)==0))
     866    {
     867      mpz_clear(u->z);
    868868#if defined(LDEBUG)
    869869      u->debug=654324;
     
    906906      return INT_TO_SR(i/j);
    907907    }
    908     mpz_init_set_si(&u->z,(long)i);
    909     mpz_init_set_si(&u->n,(long)j);
     908    mpz_init_set_si(u->z,(long)i);
     909    mpz_init_set_si(u->n,(long)j);
    910910  }
    911911  else
    912912  {
    913     mpz_init(&u->z);
     913    mpz_init(u->z);
    914914// ---------- short / long ------------------------------------
    915915    if (SR_HDL(a) & SR_INT)
     
    918918      if (b->s<2)
    919919      {
    920         mpz_mul_si(&u->z,&b->n,SR_TO_INT(a));
     920        mpz_mul_si(u->z,b->n,SR_TO_INT(a));
    921921      }
    922922      else
    923923      // short a / long z -> a/z
    924924      {
    925         mpz_set_si(&u->z,SR_TO_INT(a));
    926       }
    927       if (mpz_cmp(&u->z,&b->z)==0)
    928       {
    929         mpz_clear(&u->z);
     925        mpz_set_si(u->z,SR_TO_INT(a));
     926      }
     927      if (mpz_cmp(u->z,b->z)==0)
     928      {
     929        mpz_clear(u->z);
    930930        omFreeBin((ADDRESS)u, rnumber_bin);
    931931        return INT_TO_SR(1);
    932932      }
    933       mpz_init_set(&u->n,&b->z);
     933      mpz_init_set(u->n,b->z);
    934934    }
    935935// ---------- long / short ------------------------------------
    936936    else if (SR_HDL(b) & SR_INT)
    937937    {
    938       mpz_set(&u->z,&a->z);
     938      mpz_set(u->z,a->z);
    939939      // (z/n) / b -> z/(n*b)
    940940      if (a->s<2)
    941941      {
    942         mpz_init_set(&u->n,&a->n);
     942        mpz_init_set(u->n,a->n);
    943943        if ((long)b>0L)
    944           mpz_mul_ui(&u->n,&u->n,SR_TO_INT(b));
     944          mpz_mul_ui(u->n,u->n,SR_TO_INT(b));
    945945        else
    946946        {
    947           mpz_mul_ui(&u->n,&u->n,-SR_TO_INT(b));
    948           mpz_neg(&u->z,&u->z);
     947          mpz_mul_ui(u->n,u->n,-SR_TO_INT(b));
     948          mpz_neg(u->z,u->z);
    949949        }
    950950      }
     
    952952      // long z / short b -> z/b
    953953      {
    954         //mpz_set(&u->z,&a->z);
    955         mpz_init_set_si(&u->n,SR_TO_INT(b));
     954        //mpz_set(u->z,a->z);
     955        mpz_init_set_si(u->n,SR_TO_INT(b));
    956956      }
    957957    }
     
    959959    else
    960960    {
    961       mpz_set(&u->z,&a->z);
    962       mpz_init_set(&u->n,&b->z);
    963       if (a->s<2) mpz_mul(&u->n,&u->n,&a->n);
    964       if (b->s<2) mpz_mul(&u->z,&u->z,&b->n);
    965     }
    966   }
    967   if (mpz_isNeg(&u->n))
    968   {
    969     mpz_neg(&u->z,&u->z);
    970     mpz_neg(&u->n,&u->n);
    971   }
    972   if (mpz_cmp_si(&u->n,(long)1)==0)
    973   {
    974     mpz_clear(&u->n);
    975     if (mpz_size1(&u->z)<=MP_SMALL)
    976     {
    977       int ui=(int)mpz_get_si(&u->z);
     961      mpz_set(u->z,a->z);
     962      mpz_init_set(u->n,b->z);
     963      if (a->s<2) mpz_mul(u->n,u->n,a->n);
     964      if (b->s<2) mpz_mul(u->z,u->z,b->n);
     965    }
     966  }
     967  if (mpz_isNeg(u->n))
     968  {
     969    mpz_neg(u->z,u->z);
     970    mpz_neg(u->n,u->n);
     971  }
     972  if (mpz_cmp_si(u->n,(long)1)==0)
     973  {
     974    mpz_clear(u->n);
     975    if (mpz_size1(u->z)<=MP_SMALL)
     976    {
     977      int ui=(int)mpz_get_si(u->z);
    978978      if ((((ui<<3)>>3)==ui)
    979       && (mpz_cmp_si(&u->z,(long)ui)==0))
    980       {
    981         mpz_clear(&u->z);
     979      && (mpz_cmp_si(u->z,(long)ui)==0))
     980      {
     981        mpz_clear(u->z);
    982982        omFreeBin((ADDRESS)u, rnumber_bin);
    983983        return INT_TO_SR(ui);
     
    10151015    (*u)->debug=123456;
    10161016#endif
    1017     mpz_init(&(*u)->z);
    1018     mpz_pow_ui(&(*u)->z,&x->z,(unsigned long)exp);
     1017    mpz_init((*u)->z);
     1018    mpz_pow_ui((*u)->z,x->z,(unsigned long)exp);
    10191019    if (x->s<2)
    10201020    {
    1021       if (mpz_cmp_si(&x->n,(long)1)==0)
     1021      if (mpz_cmp_si(x->n,(long)1)==0)
    10221022      {
    10231023        x->s=3;
    1024         mpz_clear(&x->n);
     1024        mpz_clear(x->n);
    10251025      }
    10261026      else
    10271027      {
    1028         mpz_init(&(*u)->n);
    1029         mpz_pow_ui(&(*u)->n,&x->n,(unsigned long)exp);
     1028        mpz_init((*u)->n);
     1029        mpz_pow_ui((*u)->n,x->n,(unsigned long)exp);
    10301030      }
    10311031    }
    10321032    (*u)->s = x->s;
    1033     if (((*u)->s==3) && (mpz_size1(&(*u)->z)<=MP_SMALL))
    1034     {
    1035       int ui=(int)mpz_get_si(&(*u)->z);
     1033    if (((*u)->s==3) && (mpz_size1((*u)->z)<=MP_SMALL))
     1034    {
     1035      int ui=(int)mpz_get_si((*u)->z);
    10361036      if ((((ui<<3)>>3)==ui)
    1037       && (mpz_cmp_si(&(*u)->z,(long)ui)==0))
    1038       {
    1039         mpz_clear(&(*u)->z);
     1037      && (mpz_cmp_si((*u)->z,(long)ui)==0))
     1038      {
     1039        mpz_clear((*u)->z);
    10401040        omFreeBin((ADDRESS)*u, rnumber_bin);
    10411041        *u=INT_TO_SR(ui);
     
    10441044    if (aa!=NULL)
    10451045    {
    1046       mpz_clear(&aa->z);
     1046      mpz_clear(aa->z);
    10471047      omFreeBin((ADDRESS)aa, rnumber_bin);
    10481048    }
     
    10661066#endif
    10671067  if (SR_HDL(a) & SR_INT) return SR_HDL(a)>1 /* represents number(0) */;
    1068   return (!mpz_isNeg(&a->z));
     1068  return (!mpz_isNeg(a->z));
    10691069}
    10701070
     
    11401140  if (SR_HDL(a) & SR_INT)
    11411141  {
    1142     unsigned long t=mpz_gcd_ui(NULL,&b->z,ABS(SR_TO_INT(a)));
     1142    unsigned long t=mpz_gcd_ui(NULL,b->z,ABS(SR_TO_INT(a)));
    11431143    return INT_TO_SR((int)t);
    11441144  }
     
    11461146  if (SR_HDL(b) & SR_INT)
    11471147  {
    1148     unsigned long t=mpz_gcd_ui(NULL,&a->z,ABS(SR_TO_INT(b)));
     1148    unsigned long t=mpz_gcd_ui(NULL,a->z,ABS(SR_TO_INT(b)));
    11491149    return INT_TO_SR((int)t);
    11501150  }
     
    11521152  {
    11531153    result=(number)omAllocBin(rnumber_bin);
    1154     mpz_init(&result->z);
    1155     mpz_gcd(&result->z,&a->z,&b->z);
    1156     if (mpz_size1(&result->z)<=MP_SMALL)
    1157     {
    1158       int ui=(int)mpz_get_si(&result->z);
     1154    mpz_init(result->z);
     1155    mpz_gcd(result->z,a->z,b->z);
     1156    if (mpz_size1(result->z)<=MP_SMALL)
     1157    {
     1158      int ui=(int)mpz_get_si(result->z);
    11591159      if ((((ui<<3)>>3)==ui)
    1160       && (mpz_cmp_si(&result->z,(long)ui)==0))
    1161       {
    1162         mpz_clear(&result->z);
     1160      && (mpz_cmp_si(result->z,(long)ui)==0))
     1161      {
     1162        mpz_clear(result->z);
    11631163        omFreeBin((ADDRESS)result, rnumber_bin);
    11641164        return INT_TO_SR(ui);
     
    11771177{
    11781178  assume(x->s<2);
    1179   if (mpz_cmp_ui(&x->z,(long)0)==0)
     1179  if (mpz_cmp_ui(x->z,(long)0)==0)
    11801180  {
    11811181    _nlDelete_NoImm(&x);
     
    11841184  if (x->s<2)
    11851185  {
    1186     if (mpz_cmp(&x->z,&x->n)==0)
     1186    if (mpz_cmp(x->z,x->n)==0)
    11871187    {
    11881188      _nlDelete_NoImm(&x);
     
    11951195{
    11961196  assume(x->s==3);
    1197   if ((mpz_cmp_ui(&x->z,(long)0)==0)
    1198   || (mpz_size1(&x->z)<=MP_SMALL))
    1199   {
    1200     int ui=(int)mpz_get_si(&x->z);
     1197  if ((mpz_cmp_ui(x->z,(long)0)==0)
     1198  || (mpz_size1(x->z)<=MP_SMALL))
     1199  {
     1200    int ui=(int)mpz_get_si(x->z);
    12011201    if ((((ui<<3)>>3)==ui)
    1202     && (mpz_cmp_si(&x->z,(long)ui)==0))
    1203     {
    1204       mpz_clear(&x->z);
     1202    && (mpz_cmp_si(x->z,(long)ui)==0))
     1203    {
     1204      mpz_clear(x->z);
    12051205      omFreeBin((ADDRESS)x, rnumber_bin);
    12061206      return INT_TO_SR(ui);
     
    12261226  else if (x->s==0)
    12271227  {
    1228     if (mpz_cmp_si(&x->n,(long)1)==0)
    1229     {
    1230       mpz_clear(&x->n);
    1231       if (mpz_size1(&x->z)<=MP_SMALL)
    1232       {
    1233         int ui=(int)mpz_get_si(&x->z);
     1228    if (mpz_cmp_si(x->n,(long)1)==0)
     1229    {
     1230      mpz_clear(x->n);
     1231      if (mpz_size1(x->z)<=MP_SMALL)
     1232      {
     1233        int ui=(int)mpz_get_si(x->z);
    12341234        if ((((ui<<3)>>3)==ui)
    1235         && (mpz_cmp_si(&x->z,(long)ui)==0))
    1236         {
    1237           mpz_clear(&x->z);
     1235        && (mpz_cmp_si(x->z,(long)ui)==0))
     1236        {
     1237          mpz_clear(x->z);
    12381238#if defined(LDEBUG)
    12391239          x->debug=654324;
     
    12481248    else
    12491249    {
    1250       MP_INT gcd;
    1251       mpz_init(&gcd);
    1252       mpz_gcd(&gcd,&x->z,&x->n);
     1250      mpz_t gcd;
     1251      mpz_init(gcd);
     1252      mpz_gcd(gcd,x->z,x->n);
    12531253      x->s=1;
    1254       if (mpz_cmp_si(&gcd,(long)1)!=0)
    1255       {
    1256         MP_INT r;
    1257         mpz_init(&r);
    1258         MPZ_EXACTDIV(&r,&x->z,&gcd);
    1259         mpz_set(&x->z,&r);
    1260         MPZ_EXACTDIV(&r,&x->n,&gcd);
    1261         mpz_set(&x->n,&r);
    1262         mpz_clear(&r);
    1263         if (mpz_cmp_si(&x->n,(long)1)==0)
    1264         {
    1265           mpz_clear(&x->n);
    1266           if (mpz_size1(&x->z)<=MP_SMALL)
     1254      if (mpz_cmp_si(gcd,(long)1)!=0)
     1255      {
     1256        mpz_t r;
     1257        mpz_init(r);
     1258        MPZ_EXACTDIV(r,x->z,gcd);
     1259        mpz_set(x->z,r);
     1260        MPZ_EXACTDIV(r,x->n,gcd);
     1261        mpz_set(x->n,r);
     1262        mpz_clear(r);
     1263        if (mpz_cmp_si(x->n,(long)1)==0)
     1264        {
     1265          mpz_clear(x->n);
     1266          if (mpz_size1(x->z)<=MP_SMALL)
    12671267          {
    1268             int ui=(int)mpz_get_si(&x->z);
     1268            int ui=(int)mpz_get_si(x->z);
    12691269            if ((((ui<<3)>>3)==ui)
    1270             && (mpz_cmp_si(&x->z,(long)ui)==0))
     1270            && (mpz_cmp_si(x->z,(long)ui)==0))
    12711271            {
    1272               mpz_clear(&x->z);
    1273               mpz_clear(&gcd);
     1272              mpz_clear(x->z);
     1273              mpz_clear(gcd);
    12741274#if defined(LDEBUG)
    12751275              x->debug=654324;
     
    12831283        }
    12841284      }
    1285       mpz_clear(&gcd);
     1285      mpz_clear(gcd);
    12861286    }
    12871287  }
     
    13121312#endif
    13131313  result->s=3;
    1314   MP_INT gcd;
    1315   mpz_init(&gcd);
    1316   mpz_init(&result->z);
     1314  mpz_t gcd;
     1315  mpz_init(gcd);
     1316  mpz_init(result->z);
    13171317  if (SR_HDL(a) & SR_INT)
    1318     mpz_gcd_ui(&gcd,&b->n,ABS(SR_TO_INT(a)));
     1318    mpz_gcd_ui(gcd,b->n,ABS(SR_TO_INT(a)));
    13191319  else
    1320     mpz_gcd(&gcd,&a->z,&b->n);
    1321   if (mpz_cmp_si(&gcd,(long)1)!=0)
    1322   {
    1323     MP_INT bt;
    1324     mpz_init_set(&bt,&b->n);
    1325     MPZ_EXACTDIV(&bt,&bt,&gcd);
     1320    mpz_gcd(gcd,a->z,b->n);
     1321  if (mpz_cmp_si(gcd,(long)1)!=0)
     1322  {
     1323    mpz_t bt;
     1324    mpz_init_set(bt,b->n);
     1325    MPZ_EXACTDIV(bt,bt,gcd);
    13261326    if (SR_HDL(a) & SR_INT)
    1327       mpz_mul_si(&result->z,&bt,SR_TO_INT(a));
     1327      mpz_mul_si(result->z,bt,SR_TO_INT(a));
    13281328    else
    1329       mpz_mul(&result->z,&bt,&a->z);
    1330     mpz_clear(&bt);
     1329      mpz_mul(result->z,bt,a->z);
     1330    mpz_clear(bt);
    13311331  }
    13321332  else
    13331333    if (SR_HDL(a) & SR_INT)
    1334       mpz_mul_si(&result->z,&b->n,SR_TO_INT(a));
     1334      mpz_mul_si(result->z,b->n,SR_TO_INT(a));
    13351335    else
    1336       mpz_mul(&result->z,&b->n,&a->z);
    1337   mpz_clear(&gcd);
    1338   if (mpz_size1(&result->z)<=MP_SMALL)
    1339   {
    1340     int ui=(int)mpz_get_si(&result->z);
     1336      mpz_mul(result->z,b->n,a->z);
     1337  mpz_clear(gcd);
     1338  if (mpz_size1(result->z)<=MP_SMALL)
     1339  {
     1340    int ui=(int)mpz_get_si(result->z);
    13411341    if ((((ui<<3)>>3)==ui)
    1342     && (mpz_cmp_si(&result->z,(long)ui)==0))
    1343     {
    1344       mpz_clear(&result->z);
     1342    && (mpz_cmp_si(result->z,(long)ui)==0))
     1343    {
     1344      mpz_clear(result->z);
    13451345      omFreeBin((ADDRESS)result, rnumber_bin);
    13461346      return INT_TO_SR(ui);
     
    13611361    return i%p;
    13621362  }
    1363   int iz=(int)mpz_fdiv_ui(&n->z,(unsigned long)p);
     1363  int iz=(int)mpz_fdiv_ui(n->z,(unsigned long)p);
    13641364  if (n->s!=3)
    13651365  {
    1366     int in=mpz_fdiv_ui(&n->n,(unsigned long)p);
     1366    int in=mpz_fdiv_ui(n->n,(unsigned long)p);
    13671367    #ifdef NV_OPS
    13681368    if (npPrimeM>NV_MAX_PRIME)
     
    13871387  if (SR_HDL(i) & SR_INT)
    13881388  {
    1389     mpz_set_si((MP_INT*) n, (long) SR_TO_INT(i));
     1389    mpz_set_si((mpz_ptr) n, (long) SR_TO_INT(i));
    13901390    return;
    13911391  }
     
    13941394     WarnS("Omitted denominator during coefficient mapping !");
    13951395  }
    1396   mpz_set((MP_INT*) n, &i->z);
     1396  mpz_set((mpz_ptr) n, i->z);
    13971397}
    13981398#endif
     
    14181418        u->debug=123456;
    14191419#endif
    1420         mpz_init_set(&u->z,&n->n);
    1421         {
    1422           int ui=(int)mpz_get_si(&u->z);
     1420        mpz_init_set(u->z,n->n);
     1421        {
     1422          int ui=(int)mpz_get_si(u->z);
    14231423          if ((((ui<<3)>>3)==ui)
    1424           && (mpz_cmp_si(&u->z,(long)ui)==0))
     1424          && (mpz_cmp_si(u->z,(long)ui)==0))
    14251425          {
    1426             mpz_clear(&u->z);
     1426            mpz_clear(u->z);
    14271427            omFreeBin((ADDRESS)u, rnumber_bin);
    14281428            return INT_TO_SR(ui);
     
    14541454#endif
    14551455      u->s=3;
    1456       mpz_init_set(&u->z,&n->z);
     1456      mpz_init_set(u->z,n->z);
    14571457      if (n->s!=3)
    14581458      {
    1459         int ui=(int)mpz_get_si(&u->z);
     1459        int ui=(int)mpz_get_si(u->z);
    14601460        if ((((ui<<3)>>3)==ui)
    1461         && (mpz_cmp_si(&u->z,(long)ui)==0))
    1462         {
    1463           mpz_clear(&u->z);
     1461        && (mpz_cmp_si(u->z,(long)ui)==0))
     1462        {
     1463          mpz_clear(u->z);
    14641464          omFreeBin((ADDRESS)u, rnumber_bin);
    14651465          return INT_TO_SR(ui);
     
    14921492    if (b->s!=0)
    14931493      return FALSE;
    1494     if (((long)a > 0L) && (mpz_isNeg(&b->z)))
     1494    if (((long)a > 0L) && (mpz_isNeg(b->z)))
    14951495      return FALSE;
    1496     if (((long)a < 0L) && (!mpz_isNeg(&b->z)))
     1496    if (((long)a < 0L) && (!mpz_isNeg(b->z)))
    14971497      return FALSE;
    1498     MP_INT  bb;
    1499     mpz_init_set(&bb,&b->n);
    1500     mpz_mul_si(&bb,&bb,(long)SR_TO_INT(a));
    1501     bo=(mpz_cmp(&bb,&b->z)==0);
    1502     mpz_clear(&bb);
     1498    mpz_t  bb;
     1499    mpz_init_set(bb,b->n);
     1500    mpz_mul_si(bb,bb,(long)SR_TO_INT(a));
     1501    bo=(mpz_cmp(bb,b->z)==0);
     1502    mpz_clear(bb);
    15031503    return bo;
    15041504  }
     
    15071507  ||  ((b->s==1) && (a->s==3)))
    15081508    return FALSE;
    1509   if (mpz_isNeg(&a->z)&&(!mpz_isNeg(&b->z)))
     1509  if (mpz_isNeg(a->z)&&(!mpz_isNeg(b->z)))
    15101510    return FALSE;
    1511   if (mpz_isNeg(&b->z)&&(!mpz_isNeg(&a->z)))
     1511  if (mpz_isNeg(b->z)&&(!mpz_isNeg(a->z)))
    15121512    return FALSE;
    1513   MP_INT  aa;
    1514   MP_INT  bb;
    1515   mpz_init_set(&aa,&a->z);
    1516   mpz_init_set(&bb,&b->z);
    1517   if (a->s<2) mpz_mul(&bb,&bb,&a->n);
    1518   if (b->s<2) mpz_mul(&aa,&aa,&b->n);
    1519   bo=(mpz_cmp(&aa,&bb)==0);
    1520   mpz_clear(&aa);
    1521   mpz_clear(&bb);
     1513  mpz_t  aa;
     1514  mpz_t  bb;
     1515  mpz_init_set(aa,a->z);
     1516  mpz_init_set(bb,b->z);
     1517  if (a->s<2) mpz_mul(bb,bb,a->n);
     1518  if (b->s<2) mpz_mul(aa,aa,b->n);
     1519  bo=(mpz_cmp(aa,bb)==0);
     1520  mpz_clear(aa);
     1521  mpz_clear(bb);
    15221522  return bo;
    15231523}
     
    15381538    case 0:
    15391539    case 1:
    1540             mpz_init_set(&b->n,&a->n);
     1540            mpz_init_set(b->n,a->n);
    15411541    case 3:
    1542             mpz_init_set(&b->z,&a->z);
     1542            mpz_init_set(b->z,a->z);
    15431543            break;
    15441544  }
     
    15571557      case 0:
    15581558      case 1:
    1559         mpz_clear(&(*a)->n);
     1559        mpz_clear((*a)->n);
    15601560      case 3:
    1561         mpz_clear(&(*a)->z);
     1561        mpz_clear((*a)->z);
    15621562#ifdef LDEBUG
    15631563        (*a)->s=2;
     
    15711571{
    15721572  {
    1573     mpz_neg(&a->z,&a->z);
    1574     if ((a->s==3) && (mpz_size1(&a->z)<=MP_SMALL))
    1575     {
    1576       int ui=(int)mpz_get_si(&a->z);
     1573    mpz_neg(a->z,a->z);
     1574    if ((a->s==3) && (mpz_size1(a->z)<=MP_SMALL))
     1575    {
     1576      int ui=(int)mpz_get_si(a->z);
    15771577      if ((((ui<<3)>>3)==ui)
    1578         && (mpz_cmp_si(&a->z,(long)ui)==0))
    1579       {
    1580         mpz_clear(&a->z);
     1578        && (mpz_cmp_si(a->z,(long)ui)==0))
     1579      {
     1580        mpz_clear(a->z);
    15811581        omFreeBin((ADDRESS)a, rnumber_bin);
    15821582        a=INT_TO_SR(ui);
     
    15961596  u->debug=123456;
    15971597#endif
    1598   mpz_init(&u->z);
     1598  mpz_init(u->z);
    15991599  if (SR_HDL(b) & SR_INT)
    16001600  {
     
    16101610      case 1:/* a:short, b:1 */
    16111611      {
    1612         MP_INT x;
    1613         mpz_init(&x);
    1614         mpz_mul_si(&x,&b->n,SR_TO_INT(a));
    1615         mpz_add(&u->z,&b->z,&x);
    1616         mpz_clear(&x);
    1617         if (mpz_cmp_ui(&u->z,(long)0)==0)
    1618         {
    1619           mpz_clear(&u->z);
     1612        mpz_t x;
     1613        mpz_init(x);
     1614        mpz_mul_si(x,b->n,SR_TO_INT(a));
     1615        mpz_add(u->z,b->z,x);
     1616        mpz_clear(x);
     1617        if (mpz_cmp_ui(u->z,(long)0)==0)
     1618        {
     1619          mpz_clear(u->z);
    16201620          omFreeBin((ADDRESS)u, rnumber_bin);
    16211621          return INT_TO_SR(0);
    16221622        }
    1623         if (mpz_cmp(&u->z,&b->n)==0)
    1624         {
    1625           mpz_clear(&u->z);
     1623        if (mpz_cmp(u->z,b->n)==0)
     1624        {
     1625          mpz_clear(u->z);
    16261626          omFreeBin((ADDRESS)u, rnumber_bin);
    16271627          return INT_TO_SR(1);
    16281628        }
    1629         mpz_init_set(&u->n,&b->n);
     1629        mpz_init_set(u->n,b->n);
    16301630        u->s = 0;
    16311631        break;
     
    16341634      {
    16351635        if ((long)a>0L)
    1636           mpz_add_ui(&u->z,&b->z,SR_TO_INT(a));
     1636          mpz_add_ui(u->z,b->z,SR_TO_INT(a));
    16371637        else
    1638           mpz_sub_ui(&u->z,&b->z,-SR_TO_INT(a));
    1639         if (mpz_cmp_ui(&u->z,(long)0)==0)
    1640         {
    1641           mpz_clear(&u->z);
     1638          mpz_sub_ui(u->z,b->z,-SR_TO_INT(a));
     1639        if (mpz_cmp_ui(u->z,(long)0)==0)
     1640        {
     1641          mpz_clear(u->z);
    16421642          omFreeBin((ADDRESS)u, rnumber_bin);
    16431643          return INT_TO_SR(0);
    16441644        }
    16451645        //u->s = 3;
    1646         if (mpz_size1(&u->z)<=MP_SMALL)
    1647         {
    1648           int ui=(int)mpz_get_si(&u->z);
     1646        if (mpz_size1(u->z)<=MP_SMALL)
     1647        {
     1648          int ui=(int)mpz_get_si(u->z);
    16491649          if ((((ui<<3)>>3)==ui)
    1650           && (mpz_cmp_si(&u->z,(long)ui)==0))
     1650          && (mpz_cmp_si(u->z,(long)ui)==0))
    16511651          {
    1652             mpz_clear(&u->z);
     1652            mpz_clear(u->z);
    16531653            omFreeBin((ADDRESS)u, rnumber_bin);
    16541654            return INT_TO_SR(ui);
     
    16721672          case 1:
    16731673          {
    1674             MP_INT x;
    1675             mpz_init(&x);
    1676 
    1677             mpz_mul(&x,&b->z,&a->n);
    1678             mpz_mul(&u->z,&a->z,&b->n);
    1679             mpz_add(&u->z,&u->z,&x);
    1680             mpz_clear(&x);
    1681 
    1682             if (mpz_cmp_ui(&u->z,(long)0)==0)
     1674            mpz_t x;
     1675            mpz_init(x);
     1676
     1677            mpz_mul(x,b->z,a->n);
     1678            mpz_mul(u->z,a->z,b->n);
     1679            mpz_add(u->z,u->z,x);
     1680            mpz_clear(x);
     1681
     1682            if (mpz_cmp_ui(u->z,(long)0)==0)
    16831683            {
    1684               mpz_clear(&u->z);
     1684              mpz_clear(u->z);
    16851685              omFreeBin((ADDRESS)u, rnumber_bin);
    16861686              return INT_TO_SR(0);
    16871687            }
    1688             mpz_init(&u->n);
    1689             mpz_mul(&u->n,&a->n,&b->n);
    1690             if (mpz_cmp(&u->z,&u->n)==0)
     1688            mpz_init(u->n);
     1689            mpz_mul(u->n,a->n,b->n);
     1690            if (mpz_cmp(u->z,u->n)==0)
    16911691            {
    1692                mpz_clear(&u->z);
    1693                mpz_clear(&u->n);
     1692               mpz_clear(u->z);
     1693               mpz_clear(u->n);
    16941694               omFreeBin((ADDRESS)u, rnumber_bin);
    16951695               return INT_TO_SR(1);
     
    17001700          case 3: /* a:1 b:3 */
    17011701          {
    1702             mpz_mul(&u->z,&b->z,&a->n);
    1703             mpz_add(&u->z,&u->z,&a->z);
    1704             if (mpz_cmp_ui(&u->z,(long)0)==0)
     1702            mpz_mul(u->z,b->z,a->n);
     1703            mpz_add(u->z,u->z,a->z);
     1704            if (mpz_cmp_ui(u->z,(long)0)==0)
    17051705            {
    1706               mpz_clear(&u->z);
     1706              mpz_clear(u->z);
    17071707              omFreeBin((ADDRESS)u, rnumber_bin);
    17081708              return INT_TO_SR(0);
    17091709            }
    1710             if (mpz_cmp(&u->z,&a->n)==0)
     1710            if (mpz_cmp(u->z,a->n)==0)
    17111711            {
    1712               mpz_clear(&u->z);
     1712              mpz_clear(u->z);
    17131713              omFreeBin((ADDRESS)u, rnumber_bin);
    17141714              return INT_TO_SR(1);
    17151715            }
    1716             mpz_init_set(&u->n,&a->n);
     1716            mpz_init_set(u->n,a->n);
    17171717            u->s = 0;
    17181718            break;
     
    17281728          case 1:/* a:3, b:1 */
    17291729          {
    1730             mpz_mul(&u->z,&a->z,&b->n);
    1731             mpz_add(&u->z,&u->z,&b->z);
    1732             if (mpz_cmp_ui(&u->z,(long)0)==0)
     1730            mpz_mul(u->z,a->z,b->n);
     1731            mpz_add(u->z,u->z,b->z);
     1732            if (mpz_cmp_ui(u->z,(long)0)==0)
    17331733            {
    1734               mpz_clear(&u->z);
     1734              mpz_clear(u->z);
    17351735              omFreeBin((ADDRESS)u, rnumber_bin);
    17361736              return INT_TO_SR(0);
    17371737            }
    1738             if (mpz_cmp(&u->z,&b->n)==0)
     1738            if (mpz_cmp(u->z,b->n)==0)
    17391739            {
    1740               mpz_clear(&u->z);
     1740              mpz_clear(u->z);
    17411741              omFreeBin((ADDRESS)u, rnumber_bin);
    17421742              return INT_TO_SR(1);
    17431743            }
    1744             mpz_init_set(&u->n,&b->n);
     1744            mpz_init_set(u->n,b->n);
    17451745            u->s = 0;
    17461746            break;
     
    17481748          case 3:
    17491749          {
    1750             mpz_add(&u->z,&a->z,&b->z);
    1751             if (mpz_cmp_ui(&u->z,(long)0)==0)
     1750            mpz_add(u->z,a->z,b->z);
     1751            if (mpz_cmp_ui(u->z,(long)0)==0)
    17521752            {
    1753               mpz_clear(&u->z);
     1753              mpz_clear(u->z);
    17541754              omFreeBin((ADDRESS)u, rnumber_bin);
    17551755              return INT_TO_SR(0);
    17561756            }
    1757             if (mpz_size1(&u->z)<=MP_SMALL)
     1757            if (mpz_size1(u->z)<=MP_SMALL)
    17581758            {
    1759               int ui=(int)mpz_get_si(&u->z);
     1759              int ui=(int)mpz_get_si(u->z);
    17601760              if ((((ui<<3)>>3)==ui)
    1761               && (mpz_cmp_si(&u->z,(long)ui)==0))
     1761              && (mpz_cmp_si(u->z,(long)ui)==0))
    17621762              {
    1763                 mpz_clear(&u->z);
     1763                mpz_clear(u->z);
    17641764                omFreeBin((ADDRESS)u, rnumber_bin);
    17651765                return INT_TO_SR(ui);
     
    17861786  u->debug=123456;
    17871787#endif
    1788   mpz_init(&u->z);
     1788  mpz_init(u->z);
    17891789  if (SR_HDL(a) & SR_INT)
    17901790  {
     
    17941794      case 1:/* a:short, b:1 */
    17951795      {
    1796         MP_INT x;
    1797         mpz_init(&x);
    1798         mpz_mul_si(&x,&b->n,SR_TO_INT(a));
    1799         mpz_sub(&u->z,&x,&b->z);
    1800         mpz_clear(&x);
    1801         if (mpz_cmp_ui(&u->z,(long)0)==0)
    1802         {
    1803           mpz_clear(&u->z);
     1796        mpz_t x;
     1797        mpz_init(x);
     1798        mpz_mul_si(x,b->n,SR_TO_INT(a));
     1799        mpz_sub(u->z,x,b->z);
     1800        mpz_clear(x);
     1801        if (mpz_cmp_ui(u->z,(long)0)==0)
     1802        {
     1803          mpz_clear(u->z);
    18041804          omFreeBin((ADDRESS)u, rnumber_bin);
    18051805          return INT_TO_SR(0);
    18061806        }
    1807         if (mpz_cmp(&u->z,&b->n)==0)
    1808         {
    1809           mpz_clear(&u->z);
     1807        if (mpz_cmp(u->z,b->n)==0)
     1808        {
     1809          mpz_clear(u->z);
    18101810          omFreeBin((ADDRESS)u, rnumber_bin);
    18111811          return INT_TO_SR(1);
    18121812        }
    1813         mpz_init_set(&u->n,&b->n);
     1813        mpz_init_set(u->n,b->n);
    18141814        u->s = 0;
    18151815        break;
     
    18191819        if ((long)a>0L)
    18201820        {
    1821           mpz_sub_ui(&u->z,&b->z,SR_TO_INT(a));
    1822           mpz_neg(&u->z,&u->z);
     1821          mpz_sub_ui(u->z,b->z,SR_TO_INT(a));
     1822          mpz_neg(u->z,u->z);
    18231823        }
    18241824        else
    18251825        {
    1826           mpz_add_ui(&u->z,&b->z,-SR_TO_INT(a));
    1827           mpz_neg(&u->z,&u->z);
    1828         }
    1829         if (mpz_cmp_ui(&u->z,(long)0)==0)
    1830         {
    1831           mpz_clear(&u->z);
     1826          mpz_add_ui(u->z,b->z,-SR_TO_INT(a));
     1827          mpz_neg(u->z,u->z);
     1828        }
     1829        if (mpz_cmp_ui(u->z,(long)0)==0)
     1830        {
     1831          mpz_clear(u->z);
    18321832          omFreeBin((ADDRESS)u, rnumber_bin);
    18331833          return INT_TO_SR(0);
    18341834        }
    1835         if (mpz_size1(&u->z)<=MP_SMALL)
    1836         {
    1837           int ui=(int)mpz_get_si(&u->z);
     1835        if (mpz_size1(u->z)<=MP_SMALL)
     1836        {
     1837          int ui=(int)mpz_get_si(u->z);
    18381838          if ((((ui<<3)>>3)==ui)
    1839           && (mpz_cmp_si(&u->z,(long)ui)==0))
     1839          && (mpz_cmp_si(u->z,(long)ui)==0))
    18401840          {
    1841             mpz_clear(&u->z);
     1841            mpz_clear(u->z);
    18421842            omFreeBin((ADDRESS)u, rnumber_bin);
    18431843            return INT_TO_SR(ui);
     
    18561856      case 1:/* b:short, a:1 */
    18571857      {
    1858         MP_INT x;
    1859         mpz_init(&x);
    1860         mpz_mul_si(&x,&a->n,SR_TO_INT(b));
    1861         mpz_sub(&u->z,&a->z,&x);
    1862         mpz_clear(&x);
    1863         if (mpz_cmp_ui(&u->z,(long)0)==0)
    1864         {
    1865           mpz_clear(&u->z);
     1858        mpz_t x;
     1859        mpz_init(x);
     1860        mpz_mul_si(x,a->n,SR_TO_INT(b));
     1861        mpz_sub(u->z,a->z,x);
     1862        mpz_clear(x);
     1863        if (mpz_cmp_ui(u->z,(long)0)==0)
     1864        {
     1865          mpz_clear(u->z);
    18661866          omFreeBin((ADDRESS)u, rnumber_bin);
    18671867          return INT_TO_SR(0);
    18681868        }
    1869         if (mpz_cmp(&u->z,&a->n)==0)
    1870         {
    1871           mpz_clear(&u->z);
     1869        if (mpz_cmp(u->z,a->n)==0)
     1870        {
     1871          mpz_clear(u->z);
    18721872          omFreeBin((ADDRESS)u, rnumber_bin);
    18731873          return INT_TO_SR(1);
    18741874        }
    1875         mpz_init_set(&u->n,&a->n);
     1875        mpz_init_set(u->n,a->n);
    18761876        u->s = 0;
    18771877        break;
     
    18811881        if ((long)b>0L)
    18821882        {
    1883           mpz_sub_ui(&u->z,&a->z,SR_TO_INT(b));
     1883          mpz_sub_ui(u->z,a->z,SR_TO_INT(b));
    18841884        }
    18851885        else
    18861886        {
    1887           mpz_add_ui(&u->z,&a->z,-SR_TO_INT(b));
    1888         }
    1889         if (mpz_cmp_ui(&u->z,(long)0)==0)
    1890         {
    1891           mpz_clear(&u->z);
     1887          mpz_add_ui(u->z,a->z,-SR_TO_INT(b));
     1888        }
     1889        if (mpz_cmp_ui(u->z,(long)0)==0)
     1890        {
     1891          mpz_clear(u->z);
    18921892          omFreeBin((ADDRESS)u, rnumber_bin);
    18931893          return INT_TO_SR(0);
    18941894        }
    18951895        //u->s = 3;
    1896         if (mpz_size1(&u->z)<=MP_SMALL)
    1897         {
    1898           int ui=(int)mpz_get_si(&u->z);
     1896        if (mpz_size1(u->z)<=MP_SMALL)
     1897        {
     1898          int ui=(int)mpz_get_si(u->z);
    18991899          if ((((ui<<3)>>3)==ui)
    1900           && (mpz_cmp_si(&u->z,(long)ui)==0))
     1900          && (mpz_cmp_si(u->z,(long)ui)==0))
    19011901          {
    1902             mpz_clear(&u->z);
     1902            mpz_clear(u->z);
    19031903            omFreeBin((ADDRESS)u, rnumber_bin);
    19041904            return INT_TO_SR(ui);
     
    19221922          case 1:
    19231923          {
    1924             MP_INT x;
    1925             MP_INT y;
    1926             mpz_init(&x);
    1927             mpz_init(&y);
    1928             mpz_mul(&x,&b->z,&a->n);
    1929             mpz_mul(&y,&a->z,&b->n);
    1930             mpz_sub(&u->z,&y,&x);
    1931             mpz_clear(&x);
    1932             mpz_clear(&y);
    1933             if (mpz_cmp_ui(&u->z,(long)0)==0)
     1924            mpz_t x;
     1925            mpz_t y;
     1926            mpz_init(x);
     1927            mpz_init(y);
     1928            mpz_mul(x,b->z,a->n);
     1929            mpz_mul(y,a->z,b->n);
     1930            mpz_sub(u->z,y,x);
     1931            mpz_clear(x);
     1932            mpz_clear(y);
     1933            if (mpz_cmp_ui(u->z,(long)0)==0)
    19341934            {
    1935               mpz_clear(&u->z);
     1935              mpz_clear(u->z);
    19361936              omFreeBin((ADDRESS)u, rnumber_bin);
    19371937              return INT_TO_SR(0);
    19381938            }
    1939             mpz_init(&u->n);
    1940             mpz_mul(&u->n,&a->n,&b->n);
    1941             if (mpz_cmp(&u->z,&u->n)==0)
     1939            mpz_init(u->n);
     1940            mpz_mul(u->n,a->n,b->n);
     1941            if (mpz_cmp(u->z,u->n)==0)
    19421942            {
    1943               mpz_clear(&u->z);
    1944               mpz_clear(&u->n);
     1943              mpz_clear(u->z);
     1944              mpz_clear(u->n);
    19451945              omFreeBin((ADDRESS)u, rnumber_bin);
    19461946              return INT_TO_SR(1);
     
    19511951          case 3: /* a:1, b:3 */
    19521952          {
    1953             MP_INT x;
    1954             mpz_init(&x);
    1955             mpz_mul(&x,&b->z,&a->n);
    1956             mpz_sub(&u->z,&a->z,&x);
    1957             mpz_clear(&x);
    1958             if (mpz_cmp_ui(&u->z,(long)0)==0)
     1953            mpz_t x;
     1954            mpz_init(x);
     1955            mpz_mul(x,b->z,a->n);
     1956            mpz_sub(u->z,a->z,x);
     1957            mpz_clear(x);
     1958            if (mpz_cmp_ui(u->z,(long)0)==0)
    19591959            {
    1960               mpz_clear(&u->z);
     1960              mpz_clear(u->z);
    19611961              omFreeBin((ADDRESS)u, rnumber_bin);
    19621962              return INT_TO_SR(0);
    19631963            }
    1964             if (mpz_cmp(&u->z,&a->n)==0)
     1964            if (mpz_cmp(u->z,a->n)==0)
    19651965            {
    1966               mpz_clear(&u->z);
     1966              mpz_clear(u->z);
    19671967              omFreeBin((ADDRESS)u, rnumber_bin);
    19681968              return INT_TO_SR(1);
    19691969            }
    1970             mpz_init_set(&u->n,&a->n);
     1970            mpz_init_set(u->n,a->n);
    19711971            u->s = 0;
    19721972            break;
     
    19821982          case 1: /* a:3, b:1 */
    19831983          {
    1984             MP_INT x;
    1985             mpz_init(&x);
    1986             mpz_mul(&x,&a->z,&b->n);
    1987             mpz_sub(&u->z,&x,&b->z);
    1988             mpz_clear(&x);
    1989             if (mpz_cmp_ui(&u->z,(long)0)==0)
     1984            mpz_t x;
     1985            mpz_init(x);
     1986            mpz_mul(x,a->z,b->n);
     1987            mpz_sub(u->z,x,b->z);
     1988            mpz_clear(x);
     1989            if (mpz_cmp_ui(u->z,(long)0)==0)
    19901990            {
    1991               mpz_clear(&u->z);
     1991              mpz_clear(u->z);
    19921992              omFreeBin((ADDRESS)u, rnumber_bin);
    19931993              return INT_TO_SR(0);
    19941994            }
    1995             if (mpz_cmp(&u->z,&b->n)==0)
     1995            if (mpz_cmp(u->z,b->n)==0)
    19961996            {
    1997               mpz_clear(&u->z);
     1997              mpz_clear(u->z);
    19981998              omFreeBin((ADDRESS)u, rnumber_bin);
    19991999              return INT_TO_SR(1);
    20002000            }
    2001             mpz_init_set(&u->n,&b->n);
     2001            mpz_init_set(u->n,b->n);
    20022002            u->s = 0;
    20032003            break;
     
    20052005          case 3: /* a:3 , b:3 */
    20062006          {
    2007             mpz_sub(&u->z,&a->z,&b->z);
    2008             if (mpz_cmp_ui(&u->z,(long)0)==0)
     2007            mpz_sub(u->z,a->z,b->z);
     2008            if (mpz_cmp_ui(u->z,(long)0)==0)
    20092009            {
    2010               mpz_clear(&u->z);
     2010              mpz_clear(u->z);
    20112011              omFreeBin((ADDRESS)u, rnumber_bin);
    20122012              return INT_TO_SR(0);
    20132013            }
    20142014            //u->s = 3;
    2015             if (mpz_size1(&u->z)<=MP_SMALL)
     2015            if (mpz_size1(u->z)<=MP_SMALL)
    20162016            {
    2017               int ui=(int)mpz_get_si(&u->z);
     2017              int ui=(int)mpz_get_si(u->z);
    20182018              if ((((ui<<3)>>3)==ui)
    2019               && (mpz_cmp_si(&u->z,(long)ui)==0))
     2019              && (mpz_cmp_si(u->z,(long)ui)==0))
    20202020              {
    2021                 mpz_clear(&u->z);
     2021                mpz_clear(u->z);
    20222022                omFreeBin((ADDRESS)u, rnumber_bin);
    20232023                return INT_TO_SR(ui);
     
    20462046#endif
    20472047  u->s=3;
    2048   mpz_init_set_si(&u->z,(long)SR_TO_INT(a));
    2049   mpz_mul_si(&u->z,&u->z,(long)SR_TO_INT(b));
     2048  mpz_init_set_si(u->z,(long)SR_TO_INT(a));
     2049  mpz_mul_si(u->z,u->z,(long)SR_TO_INT(b));
    20502050#ifdef LDEBUG
    20512051  nlTest(u);
     
    20622062  u->debug=123456;
    20632063#endif
    2064   mpz_init(&u->z);
     2064  mpz_init(u->z);
    20652065  if (SR_HDL(b) & SR_INT)
    20662066  {
     
    20752075    if ((long)a>0L)
    20762076    {
    2077       mpz_mul_ui(&u->z,&b->z,(unsigned long)SR_TO_INT(a));
     2077      mpz_mul_ui(u->z,b->z,(unsigned long)SR_TO_INT(a));
    20782078    }
    20792079    else
     
    20812081      if (a==INT_TO_SR(-1))
    20822082      {
    2083         mpz_set(&u->z,&b->z);
    2084         mpz_neg(&u->z,&u->z);
     2083        mpz_set(u->z,b->z);
     2084        mpz_neg(u->z,u->z);
    20852085        u->s=b->s;
    20862086      }
    20872087      else
    20882088      {
    2089         mpz_mul_ui(&u->z,&b->z,(unsigned long)-SR_TO_INT(a));
    2090         mpz_neg(&u->z,&u->z);
     2089        mpz_mul_ui(u->z,b->z,(unsigned long)-SR_TO_INT(a));
     2090        mpz_neg(u->z,u->z);
    20912091      }
    20922092    }
    20932093    if (u->s<2)
    20942094    {
    2095       if (mpz_cmp(&u->z,&b->n)==0)
    2096       {
    2097         mpz_clear(&u->z);
     2095      if (mpz_cmp(u->z,b->n)==0)
     2096      {
     2097        mpz_clear(u->z);
    20982098        omFreeBin((ADDRESS)u, rnumber_bin);
    20992099        return INT_TO_SR(1);
    21002100      }
    2101       mpz_init_set(&u->n,&b->n);
     2101      mpz_init_set(u->n,b->n);
    21022102    }
    21032103    else //u->s==3
    21042104    {
    2105       if (mpz_size1(&u->z)<=MP_SMALL)
    2106       {
    2107         int ui=(int)mpz_get_si(&u->z);
     2105      if (mpz_size1(u->z)<=MP_SMALL)
     2106      {
     2107        int ui=(int)mpz_get_si(u->z);
    21082108        if ((((ui<<3)>>3)==ui)
    2109             && (mpz_cmp_si(&u->z,(long)ui)==0))
    2110         {
    2111           mpz_clear(&u->z);
     2109            && (mpz_cmp_si(u->z,(long)ui)==0))
     2110        {
     2111          mpz_clear(u->z);
    21122112          omFreeBin((ADDRESS)u, rnumber_bin);
    21132113          return INT_TO_SR(ui);
     
    21182118  else
    21192119  {
    2120     mpz_mul(&u->z,&a->z,&b->z);
     2120    mpz_mul(u->z,a->z,b->z);
    21212121    u->s = 0;
    21222122    if(a->s==3)
     
    21282128      else
    21292129      {
    2130         if (mpz_cmp(&u->z,&b->n)==0)
    2131         {
    2132           mpz_clear(&u->z);
     2130        if (mpz_cmp(u->z,b->n)==0)
     2131        {
     2132          mpz_clear(u->z);
    21332133          omFreeBin((ADDRESS)u, rnumber_bin);
    21342134          return INT_TO_SR(1);
    21352135        }
    2136         mpz_init_set(&u->n,&b->n);
     2136        mpz_init_set(u->n,b->n);
    21372137      }
    21382138    }
     
    21412141      if(b->s==3)
    21422142      {
    2143         if (mpz_cmp(&u->z,&a->n)==0)
    2144         {
    2145           mpz_clear(&u->z);
     2143        if (mpz_cmp(u->z,a->n)==0)
     2144        {
     2145          mpz_clear(u->z);
    21462146          omFreeBin((ADDRESS)u, rnumber_bin);
    21472147          return INT_TO_SR(1);
    21482148        }
    2149         mpz_init_set(&u->n,&a->n);
     2149        mpz_init_set(u->n,a->n);
    21502150      }
    21512151      else
    21522152      {
    2153         mpz_init(&u->n);
    2154         mpz_mul(&u->n,&a->n,&b->n);
    2155         if (mpz_cmp(&u->z,&u->n)==0)
    2156         {
    2157           mpz_clear(&u->z);
    2158           mpz_clear(&u->n);
     2153        mpz_init(u->n);
     2154        mpz_mul(u->n,a->n,b->n);
     2155        if (mpz_cmp(u->z,u->n)==0)
     2156        {
     2157          mpz_clear(u->z);
     2158          mpz_clear(u->n);
    21592159          omFreeBin((ADDRESS)u, rnumber_bin);
    21602160          return INT_TO_SR(1);
     
    21782178  z->debug=123456;
    21792179#endif
    2180   mpz_init_set_si(&z->z,(long)i);
     2180  mpz_init_set_si(z->z,(long)i);
    21812181  z->s = 3;
    21822182  return z;
     
    21922192  z->debug=123456;
    21932193#endif
    2194   mpz_init_set_si(&z->z,(long)i);
    2195   mpz_init_set_si(&z->n,(long)j);
     2194  mpz_init_set_si(z->z,(long)i);
     2195  mpz_init_set_si(z->n,(long)j);
    21962196  z->s = 0;
    21972197  nlNormalize(z);
     
    22052205  z->debug=123456;
    22062206#endif
    2207   mpz_init_set(&z->z,i);
    2208   mpz_init_set(&z->n,j);
     2207  mpz_init_set(z->z,i);
     2208  mpz_init_set(z->n,j);
    22092209  z->s = 0;
    22102210  nlNormalize(z);
     
    22772277{
    22782278  return (a==INT_TO_SR(0));
    2279   //return (mpz_cmp_si(&a->z,(long)0)==0);
     2279  //return (mpz_cmp_si(a->z,(long)0)==0);
    22802280}
    22812281
     
    23672367      case 1:/* b:short, a:1 */
    23682368      {
    2369         MP_INT x;
    2370         mpz_init(&x);
    2371         mpz_mul_si(&x,&a->n,SR_TO_INT(b));
    2372         mpz_add(&a->z,&a->z,&x);
    2373         mpz_clear(&x);
     2369        mpz_t x;
     2370        mpz_init(x);
     2371        mpz_mul_si(x,a->n,SR_TO_INT(b));
     2372        mpz_add(a->z,a->z,x);
     2373        mpz_clear(x);
    23742374        a->s = 0;
    23752375        a=nlShort1(a);
     
    23792379      {
    23802380        if ((long)b>0L)
    2381           mpz_add_ui(&a->z,&a->z,SR_TO_INT(b));
     2381          mpz_add_ui(a->z,a->z,SR_TO_INT(b));
    23822382        else
    2383           mpz_sub_ui(&a->z,&a->z,-SR_TO_INT(b));
     2383          mpz_sub_ui(a->z,a->z,-SR_TO_INT(b));
    23842384        a->s = 3;
    23852385        a=nlShort3(a);
     
    23962396    u->debug=123456;
    23972397    #endif
    2398     mpz_init(&u->z);
     2398    mpz_init(u->z);
    23992399    switch (b->s)
    24002400    {
     
    24022402      case 1:/* a:short, b:1 */
    24032403      {
    2404         MP_INT x;
    2405         mpz_init(&x);
    2406 
    2407         mpz_mul_si(&x,&b->n,SR_TO_INT(a));
    2408         mpz_add(&u->z,&b->z,&x);
    2409         mpz_clear(&x);
     2404        mpz_t x;
     2405        mpz_init(x);
     2406
     2407        mpz_mul_si(x,b->n,SR_TO_INT(a));
     2408        mpz_add(u->z,b->z,x);
     2409        mpz_clear(x);
    24102410        // result cannot be 0, if coeffs are normalized
    2411         mpz_init_set(&u->n,&b->n);
     2411        mpz_init_set(u->n,b->n);
    24122412        u->s = 0;
    24132413        u=nlShort1(u);
     
    24172417      {
    24182418        if ((long)a>0L)
    2419           mpz_add_ui(&u->z,&b->z,SR_TO_INT(a));
     2419          mpz_add_ui(u->z,b->z,SR_TO_INT(a));
    24202420        else
    2421           mpz_sub_ui(&u->z,&b->z,-SR_TO_INT(a));
     2421          mpz_sub_ui(u->z,b->z,-SR_TO_INT(a));
    24222422        // result cannot be 0, if coeffs are normalized
    24232423        u->s = 3;
     
    24432443          case 1: /* a:1 b:1 */
    24442444          {
    2445             MP_INT x;
    2446             MP_INT y;
    2447             mpz_init(&x);
    2448             mpz_init(&y);
    2449             mpz_mul(&x,&b->z,&a->n);
    2450             mpz_mul(&y,&a->z,&b->n);
    2451             mpz_add(&a->z,&x,&y);
    2452             mpz_clear(&x);
    2453             mpz_clear(&y);
    2454             mpz_mul(&a->n,&a->n,&b->n);
     2445            mpz_t x;
     2446            mpz_t y;
     2447            mpz_init(x);
     2448            mpz_init(y);
     2449            mpz_mul(x,b->z,a->n);
     2450            mpz_mul(y,a->z,b->n);
     2451            mpz_add(a->z,x,y);
     2452            mpz_clear(x);
     2453            mpz_clear(y);
     2454            mpz_mul(a->n,a->n,b->n);
    24552455            a->s = 0;
    24562456            break;
     
    24582458          case 3: /* a:1 b:3 */
    24592459          {
    2460             MP_INT x;
    2461             mpz_init(&x);
    2462             mpz_mul(&x,&b->z,&a->n);
    2463             mpz_add(&a->z,&a->z,&x);
    2464             mpz_clear(&x);
     2460            mpz_t x;
     2461            mpz_init(x);
     2462            mpz_mul(x,b->z,a->n);
     2463            mpz_add(a->z,a->z,x);
     2464            mpz_clear(x);
    24652465            a->s = 0;
    24662466            break;
     
    24772477          case 1:/* a:3, b:1 */
    24782478          {
    2479             MP_INT x;
    2480             mpz_init(&x);
    2481             mpz_mul(&x,&a->z,&b->n);
    2482             mpz_add(&a->z,&b->z,&x);
    2483             mpz_clear(&x);
    2484             mpz_init_set(&a->n,&b->n);
     2479            mpz_t x;
     2480            mpz_init(x);
     2481            mpz_mul(x,a->z,b->n);
     2482            mpz_add(a->z,b->z,x);
     2483            mpz_clear(x);
     2484            mpz_init_set(a->n,b->n);
    24852485            a->s = 0;
    24862486            a=nlShort1(a);
     
    24892489          case 3:
    24902490          {
    2491             mpz_add(&a->z,&a->z,&b->z);
     2491            mpz_add(a->z,a->z,b->z);
    24922492            a->s = 3;
    24932493            a=nlShort3(a);
     
    25602560  else
    25612561  {
    2562     mpz_gcd(&a->z,&a->z,&b->z);
    2563     if (mpz_size1(&a->z)<=MP_SMALL)
    2564     {
    2565       int ui=(int)mpz_get_si(&a->z);
     2562    mpz_gcd(a->z,a->z,b->z);
     2563    if (mpz_size1(a->z)<=MP_SMALL)
     2564    {
     2565      int ui=(int)mpz_get_si(a->z);
    25662566      if ((((ui<<3)>>3)==ui)
    2567       && (mpz_cmp_si(&a->z,(long)ui)==0))
    2568       {
    2569         mpz_clear(&a->z);
     2567      && (mpz_cmp_si(a->z,(long)ui)==0))
     2568      {
     2569        mpz_clear(a->z);
    25702570        omFreeBin((ADDRESS)a, rnumber_bin);
    25712571        a=INT_TO_SR(ui);
     
    25842584  else
    25852585  {
    2586     if (mpz_isNeg(&a->z))
    2587     {
    2588       if (mpz_isNeg(&b->z))
    2589       {
    2590         mpz_add(&a->z,&a->z,&b->z);
     2586    if (mpz_isNeg(a->z))
     2587    {
     2588      if (mpz_isNeg(b->z))
     2589      {
     2590        mpz_add(a->z,a->z,b->z);
    25912591      }
    25922592      else
    25932593      {
    2594         mpz_sub(&a->z,&a->z,&b->z);
    2595       }
    2596       mpz_add_ui(&a->z,&a->z,1);
     2594        mpz_sub(a->z,a->z,b->z);
     2595      }
     2596      mpz_add_ui(a->z,a->z,1);
    25972597    }
    25982598    else
    25992599    {
    2600       if (mpz_isNeg(&b->z))
    2601       {
    2602         mpz_sub(&a->z,&a->z,&b->z);
     2600      if (mpz_isNeg(b->z))
     2601      {
     2602        mpz_sub(a->z,a->z,b->z);
    26032603      }
    26042604      else
    26052605      {
    2606         mpz_add(&a->z,&a->z,&b->z);
    2607       }
    2608       mpz_sub_ui(&a->z,&a->z,1);
    2609     }
    2610     MPZ_DIV(&a->z,&a->z,&b->z);
    2611     if (mpz_size1(&a->z)<=MP_SMALL)
    2612     {
    2613       int ui=(int)mpz_get_si(&a->z);
     2606        mpz_add(a->z,a->z,b->z);
     2607      }
     2608      mpz_sub_ui(a->z,a->z,1);
     2609    }
     2610    MPZ_DIV(a->z,a->z,b->z);
     2611    if (mpz_size1(a->z)<=MP_SMALL)
     2612    {
     2613      int ui=(int)mpz_get_si(a->z);
    26142614      if ((((ui<<3)>>3)==ui)
    2615       && (mpz_cmp_si(&a->z,(long)ui)==0))
    2616       {
    2617         mpz_clear(&a->z);
     2615      && (mpz_cmp_si(a->z,(long)ui)==0))
     2616      {
     2617        mpz_clear(a->z);
    26182618        omFreeBin((ADDRESS)a, rnumber_bin);
    26192619        a=INT_TO_SR(ui);
     
    26332633  else
    26342634  {
    2635     mpz_mul(&a->z,&a->z,&b->z);
     2635    mpz_mul(a->z,a->z,b->z);
    26362636    if (a->s==3)
    26372637    {
    26382638      if(b->s!=3)
    26392639      {
    2640         mpz_init_set(&a->n,&b->n);
     2640        mpz_init_set(a->n,b->n);
    26412641        a->s=0;
    26422642      }
     
    26462646      if(b->s!=3)
    26472647      {
    2648         mpz_mul(&a->n,&a->n,&b->n);
     2648        mpz_mul(a->n,a->n,b->n);
    26492649      }
    26502650      a->s=0;
     
    26552655number nlFarey(number nN, number nP)
    26562656{
    2657   MP_INT tmp; mpz_init(&tmp);
    2658   MP_INT A,B,C,D,E,N,P;
    2659   if (SR_HDL(nN) & SR_INT) mpz_init_set_si(&N,SR_TO_INT(nN));
    2660   else                     mpz_init_set(&N,&(nN->z));
    2661   if (SR_HDL(nP) & SR_INT) mpz_init_set_si(&P,SR_TO_INT(nP));
    2662   else                     mpz_init_set(&P,&(nP->z));
    2663   assume(!mpz_isNeg(&P));
    2664   if (mpz_isNeg(&N))  mpz_add(&N,&N,&P);
    2665   mpz_init_set_si(&A,(long)0);
    2666   mpz_init_set_ui(&B,(unsigned long)1);
    2667   mpz_init_set_si(&C,(long)0);
    2668   mpz_init(&D);
    2669   mpz_init_set(&E,&P);
     2657  mpz_t tmp; mpz_init(tmp);
     2658  mpz_t A,B,C,D,E,N,P;
     2659  if (SR_HDL(nN) & SR_INT) mpz_init_set_si(N,SR_TO_INT(nN));
     2660  else                     mpz_init_set(N,nN->z);
     2661  if (SR_HDL(nP) & SR_INT) mpz_init_set_si(P,SR_TO_INT(nP));
     2662  else                     mpz_init_set(P,nP->z);
     2663  assume(!mpz_isNeg(P));
     2664  if (mpz_isNeg(N))  mpz_add(N,N,P);
     2665  mpz_init_set_si(A,(long)0);
     2666  mpz_init_set_ui(B,(unsigned long)1);
     2667  mpz_init_set_si(C,(long)0);
     2668  mpz_init(D);
     2669  mpz_init_set(E,P);
    26702670  number z=INT_TO_SR(0);
    2671   while(mpz_cmp_si(&N,(long)0)!=0)
    2672   {
    2673     mpz_mul(&tmp,&N,&N);
    2674     mpz_add(&tmp,&tmp,&tmp);
    2675     if (mpz_cmp(&tmp,&P)<0)
     2671  while(mpz_cmp_si(N,(long)0)!=0)
     2672  {
     2673    mpz_mul(tmp,N,N);
     2674    mpz_add(tmp,tmp,tmp);
     2675    if (mpz_cmp(tmp,P)<0)
    26762676    {
    26772677       // return N/B
    26782678       z=(number)omAllocBin(rnumber_bin);
    2679        if (mpz_isNeg(&B))
     2679       if (mpz_isNeg(B))
    26802680       {
    2681          mpz_neg(&B,&B);
    2682          mpz_neg(&N,&N);
     2681         mpz_neg(B,B);
     2682         mpz_neg(N,N);
    26832683       }
    2684        mpz_init_set(&z->z,&N);
    2685        mpz_init_set(&z->n,&B);
     2684       mpz_init_set(z->z,N);
     2685       mpz_init_set(z->n,B);
    26862686       z->s = 0;
    26872687       nlNormalize(z);
    26882688       break;
    26892689    }
    2690     mpz_mod(&D,&E,&N);
    2691     mpz_div(&tmp,&E,&N);
    2692     mpz_mul(&tmp,&tmp,&B);
    2693     mpz_sub(&C,&A,&tmp);
    2694     mpz_set(&E,&N);
    2695     mpz_set(&N,&D);
    2696     mpz_set(&A,&B);
    2697     mpz_set(&B,&C);
    2698   }
    2699   mpz_clear(&tmp);
    2700   mpz_clear(&A);
    2701   mpz_clear(&B);
    2702   mpz_clear(&C);
    2703   mpz_clear(&D);
    2704   mpz_clear(&E);
    2705   mpz_clear(&N);
    2706   mpz_clear(&P);
     2690    mpz_mod(D,E,N);
     2691    mpz_div(tmp,E,N);
     2692    mpz_mul(tmp,tmp,B);
     2693    mpz_sub(C,A,tmp);
     2694    mpz_set(E,N);
     2695    mpz_set(N,D);
     2696    mpz_set(A,B);
     2697    mpz_set(B,C);
     2698  }
     2699  mpz_clear(tmp);
     2700  mpz_clear(A);
     2701  mpz_clear(B);
     2702  mpz_clear(C);
     2703  mpz_clear(D);
     2704  mpz_clear(E);
     2705  mpz_clear(N);
     2706  mpz_clear(P);
    27072707  return z;
    27082708}
     
    27372737    int ui=(int)mpz_get_si(&r->z);
    27382738    if ((((ui<<3)>>3)==ui)
    2739     && (mpz_cmp_si(&x->z,(long)ui)==0))
     2739    && (mpz_cmp_si(x->z,(long)ui)==0))
    27402740    {
    27412741      mpz_clear(&r->z);
Note: See TracChangeset for help on using the changeset viewer.