Changeset bb9a5a in git
- Timestamp:
- Apr 19, 2007, 4:17:58 PM (16 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '0604212ebb110535022efecad887940825b97c3f')
- Children:
- 6b589f923a8179fd15e8d38488a17a06492d9f2a
- Parents:
- 1134b5b8cb28b554f8a08701cf30c20def285743
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/longrat.cc
r1134b5 rbb9a5a 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: longrat.cc,v 1.1 6 2007-04-12 16:58:38 Singular Exp $ */4 /* $Id: longrat.cc,v 1.17 2007-04-19 14:17:58 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: computation with long rational numbers (Hubert Grassmann) … … 623 623 return nlRInit(1<<28); 624 624 } 625 /* consider the signs of a and b:626 * + + -> u=a+b-1627 * + - -> u=a-b-1628 * - + -> u=a-b+1629 * - - -> u=a+b+1630 */631 625 int aa=SR_TO_INT(a); 632 626 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); 651 628 } 652 629 if (SR_HDL(a) & SR_INT) … … 676 653 assume(b->s==3); 677 654 mpz_init_set(&u->z,&a->z); 678 /* consider the signs of a and b:679 * + + -> u=a+b-1680 * + - -> u=a-b-1681 * - + -> u=a-b+1682 * - - -> u=a+b+1683 */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 else691 {692 mpz_sub(&u->z,&u->z,&b->z);693 }694 mpz_add_ui(&u->z,&u->z,1);695 }696 else697 {698 if (mpz_isNeg(&b->z))699 {700 mpz_sub(&u->z,&u->z,&b->z);701 }702 else703 {704 mpz_add(&u->z,&u->z,&b->z);705 }706 mpz_sub_ui(&u->z,&u->z,1);707 }708 655 /* u=u/b */ 709 656 u->s = 3;
Note: See TracChangeset
for help on using the changeset viewer.