Changeset bb9a5a in git


Ignore:
Timestamp:
Apr 19, 2007, 4:17:58 PM (16 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '0604212ebb110535022efecad887940825b97c3f')
Children:
6b589f923a8179fd15e8d38488a17a06492d9f2a
Parents:
1134b5b8cb28b554f8a08701cf30c20def285743
Message:
*hannes: nlIntDiv simplified


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

Legend:

Unmodified
Added
Removed
  • kernel/longrat.cc

    r1134b5 rbb9a5a  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: longrat.cc,v 1.16 2007-04-12 16:58:38 Singular Exp $ */
     4/* $Id: longrat.cc,v 1.17 2007-04-19 14:17:58 Singular Exp $ */
    55/*
    66* ABSTRACT: computation with long rational numbers (Hubert Grassmann)
     
    623623      return nlRInit(1<<28);
    624624    }
    625     /* consider the signs of a and b:
    626     *  + + -> u=a+b-1
    627     *  + - -> u=a-b-1
    628     *  - + -> u=a-b+1
    629     *  - - -> u=a+b+1
    630     */
    631625    int aa=SR_TO_INT(a);
    632626    int bb=SR_TO_INT(b);
    633     if (aa>0)
    634     {
    635       if (bb>0)
    636         return INT_TO_SR((aa+bb-1)/bb);
    637       else
    638         return INT_TO_SR((aa-bb-1)/bb);
    639     }
    640     else
    641     {
    642       if (bb>0)
    643       {
    644         return INT_TO_SR((aa-bb+1)/bb);
    645       }
    646       else
    647       {
    648         return INT_TO_SR((aa+bb+1)/bb);
    649       }
    650     }
     627    return INT_TO_SR(aa/bb);
    651628  }
    652629  if (SR_HDL(a) & SR_INT)
     
    676653  assume(b->s==3);
    677654  mpz_init_set(&u->z,&a->z);
    678   /* consider the signs of a and b:
    679   *  + + -> u=a+b-1
    680   *  + - -> u=a-b-1
    681   *  - + -> u=a-b+1
    682   *  - - -> u=a+b+1
    683   */
    684   if (mpz_isNeg(&a->z))
    685   {
    686     if (mpz_isNeg(&b->z))
    687     {
    688       mpz_add(&u->z,&u->z,&b->z);
    689     }
    690     else
    691     {
    692       mpz_sub(&u->z,&u->z,&b->z);
    693     }
    694     mpz_add_ui(&u->z,&u->z,1);
    695   }
    696   else
    697   {
    698     if (mpz_isNeg(&b->z))
    699     {
    700       mpz_sub(&u->z,&u->z,&b->z);
    701     }
    702     else
    703     {
    704       mpz_add(&u->z,&u->z,&b->z);
    705     }
    706     mpz_sub_ui(&u->z,&u->z,1);
    707   }
    708655  /* u=u/b */
    709656  u->s = 3;
Note: See TracChangeset for help on using the changeset viewer.