Changeset a604c3 in git for kernel/longrat.cc
- Timestamp:
- Apr 16, 2010, 12:15:43 PM (14 years ago)
- Branches:
- (u'spielwiese', '6e5adcba05493683b94648c659a729c189812c77')
- Children:
- 0f7301e691bd462913428c33f8962015a37bb532
- Parents:
- 603aebf126f77cf0b8c041b0833934960300078a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/longrat.cc
r603aebf ra604c3 123 123 z->debug=123456; 124 124 #endif 125 mpz_init_set( &z->z,(MP_INT*) from);125 mpz_init_set(z->z,(mpz_ptr) from); 126 126 //mpz_init_set_ui(&z->n,1); 127 127 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); 132 132 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); 136 136 omFreeBin((ADDRESS)z, rnumber_bin); 137 137 return INT_TO_SR(ui); … … 150 150 z->debug=123456; 151 151 #endif 152 mpz_init_set_ui( &z->z,(unsigned long) from);152 mpz_init_set_ui(z->z,(unsigned long) from); 153 153 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); 158 158 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); 162 162 omFreeBin((ADDRESS)z, rnumber_bin); 163 163 return INT_TO_SR(ui); … … 235 235 return FALSE; 236 236 } 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) 239 239 Print("!!longrat:z->alloc=0 in %s:%d\n",f,l); 240 240 241 241 if (a->s<2) 242 242 { 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) 245 245 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)) 247 247 { 248 248 Print("!!longrat:integer as rational in %s:%d\n",f,l); 249 249 return FALSE; 250 250 } 251 else if (mpz_isNeg( &a->n))251 else if (mpz_isNeg(a->n)) 252 252 { 253 253 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); 256 256 return FALSE; 257 257 } … … 263 263 return FALSE; 264 264 } 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); 267 267 if ((((ui<<3)>>3)==ui) 268 && (mpz_cmp_si( &a->z,(long)ui)==0))268 && (mpz_cmp_si(a->z,(long)ui)==0)) 269 269 { 270 270 Print("!!longrat:im int %d in %s:%d\n",ui,f,l); … … 298 298 } 299 299 number r=nlRInit(1); 300 mpz_set_d( &(r->z),f);300 mpz_set_d(r->z,f); 301 301 memcpy4(&(r->n),&h1,sizeof(h1)); 302 302 r->s=0; /* not normalized */ … … 311 311 mpf_t *f=ff->_mpfp(); 312 312 number res; 313 lint *dest,*ndest;313 mpz_ptr dest,ndest; 314 314 int size, i,negative; 315 315 int e,al,bl; … … 339 339 res->debug=123456; 340 340 #endif 341 dest = &(res->z);341 dest = res->z; 342 342 343 343 if (e<0) … … 351 351 nn[bl-1] = 1; 352 352 for (i=bl-2;i>=0;i--) nn[i] = 0; 353 ndest = &(res->n);353 ndest = res->n; 354 354 ndest->_mp_d = nn; 355 355 ndest->_mp_alloc = ndest->_mp_size = bl; … … 372 372 if (res->s==0) 373 373 nlNormalize(res); 374 else if (mpz_size1( &res->z)<=MP_SMALL)374 else if (mpz_size1(res->z)<=MP_SMALL) 375 375 { 376 376 // 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); 378 378 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); 382 382 #if defined(LDEBUG) 383 383 res->debug=654324; … … 464 464 if (SR_HDL(a) & SR_INT) 465 465 return 1; /* immidiate int */ 466 int s=a->z ._mp_alloc;466 int s=a->z[0]._mp_alloc; 467 467 // while ((s>0) &&(a->z._mp_d[s]==0L)) s--; 468 468 //#if SIZEOF_LONG == 8 … … 473 473 if (a->s<2) 474 474 { 475 int d=a->n ._mp_alloc;475 int d=a->n[0]._mp_alloc; 476 476 // while ((d>0) && (a->n._mp_d[d]==0L)) d--; 477 477 //#if SIZEOF_LONG == 8 … … 496 496 if (i->s==3) 497 497 { 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; 501 501 return ul; 502 502 } 503 lint tmp;503 mpz_t tmp; 504 504 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; 508 508 else 509 509 { 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); 514 514 return ul; 515 515 } … … 530 530 } 531 531 number tmp=nlRInit(1); 532 MPZ_DIV( &tmp->z,&i->z,&i->n);532 MPZ_DIV(tmp->z,i->z,i->n); 533 533 nlNormalize(tmp); 534 534 return tmp; … … 562 562 if ((long)a>0L) 563 563 { 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)); 566 566 } 567 567 else 568 568 { 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)); 571 571 } 572 572 #ifdef LDEBUG … … 581 581 { 582 582 n->s=a->s; 583 mpz_init_set( &n->n,&a->z);583 mpz_init_set(n->n,a->z); 584 584 switch (a->s) 585 585 { 586 586 case 0: 587 587 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*/ 590 590 { 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); 593 593 } 594 if (mpz_cmp_si( &n->n,(long)1)==0)594 if (mpz_cmp_si(n->n,(long)1)==0) 595 595 { 596 mpz_clear( &n->n);596 mpz_clear(n->n); 597 597 n->s=3; 598 if (mpz_size1( &n->z)<=MP_SMALL)598 if (mpz_size1(n->z)<=MP_SMALL) 599 599 { 600 int ui=(int)mpz_get_si( &n->z);600 int ui=(int)mpz_get_si(n->z); 601 601 if ((((ui<<3)>>3)==ui) 602 && (mpz_cmp_si( &n->z,(long)ui)==0))602 && (mpz_cmp_si(n->z,(long)ui)==0)) 603 603 { 604 mpz_clear( &n->z);604 mpz_clear(n->z); 605 605 #if defined(LDEBUG) 606 606 n->debug=654324; … … 614 614 case 3: 615 615 n->s=1; 616 if (mpz_isNeg( &n->n)) /* && n->s<2*/616 if (mpz_isNeg(n->n)) /* && n->s<2*/ 617 617 { 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); 620 620 } 621 621 else 622 622 { 623 mpz_init_set_si( &n->z,(long)1);623 mpz_init_set_si(n->z,(long)1); 624 624 } 625 625 break; … … 667 667 u->debug=123456; 668 668 #endif 669 mpz_init( &u->z);669 mpz_init(u->z); 670 670 /* u=a/b */ 671 671 u->s = 3; 672 MPZ_EXACTDIV( &u->z,&a->z,&b->z);672 MPZ_EXACTDIV(u->z,a->z,b->z); 673 673 if (bb!=NULL) 674 674 { 675 mpz_clear( &bb->z);675 mpz_clear(bb->z); 676 676 #if defined(LDEBUG) 677 677 bb->debug=654324; … … 679 679 omFreeBin((ADDRESS)bb, rnumber_bin); 680 680 } 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); 684 684 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); 688 688 #if defined(LDEBUG) 689 689 u->debug=654324; … … 728 728 if (a==INT_TO_SR(-(1<<28))) 729 729 { 730 if(mpz_cmp_si( &b->z,(long)(1<<28))==0)730 if(mpz_cmp_si(b->z,(long)(1<<28))==0) 731 731 { 732 732 return INT_TO_SR(-1); … … 748 748 assume(a->s==3); 749 749 assume(b->s==3); 750 mpz_init_set( &u->z,&a->z);750 mpz_init_set(u->z,a->z); 751 751 /* u=u/b */ 752 752 u->s = 3; 753 MPZ_DIV( &u->z,&u->z,&b->z);753 MPZ_DIV(u->z,u->z,b->z); 754 754 if (bb!=NULL) 755 755 { 756 mpz_clear( &bb->z);756 mpz_clear(bb->z); 757 757 #if defined(LDEBUG) 758 758 bb->debug=654324; … … 760 760 omFreeBin((ADDRESS)bb, rnumber_bin); 761 761 } 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); 765 765 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); 769 769 #if defined(LDEBUG) 770 770 u->debug=654324; … … 823 823 if ((long)a<0L) 824 824 { 825 if (mpz_isNeg( &b->z))825 if (mpz_isNeg(b->z)) 826 826 return nlSub(a,b); 827 827 /*else*/ … … 841 841 u->debug=123456; 842 842 #endif 843 mpz_init( &u->z);843 mpz_init(u->z); 844 844 u->s = 3; 845 mpz_mod( &u->z,&a->z,&b->z);845 mpz_mod(u->z,a->z,b->z); 846 846 if (bb!=NULL) 847 847 { 848 mpz_clear( &bb->z);848 mpz_clear(bb->z); 849 849 #if defined(LDEBUG) 850 850 bb->debug=654324; … … 852 852 omFreeBin((ADDRESS)bb, rnumber_bin); 853 853 } 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); 858 858 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); 864 864 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); 868 868 #if defined(LDEBUG) 869 869 u->debug=654324; … … 906 906 return INT_TO_SR(i/j); 907 907 } 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); 910 910 } 911 911 else 912 912 { 913 mpz_init( &u->z);913 mpz_init(u->z); 914 914 // ---------- short / long ------------------------------------ 915 915 if (SR_HDL(a) & SR_INT) … … 918 918 if (b->s<2) 919 919 { 920 mpz_mul_si( &u->z,&b->n,SR_TO_INT(a));920 mpz_mul_si(u->z,b->n,SR_TO_INT(a)); 921 921 } 922 922 else 923 923 // short a / long z -> a/z 924 924 { 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); 930 930 omFreeBin((ADDRESS)u, rnumber_bin); 931 931 return INT_TO_SR(1); 932 932 } 933 mpz_init_set( &u->n,&b->z);933 mpz_init_set(u->n,b->z); 934 934 } 935 935 // ---------- long / short ------------------------------------ 936 936 else if (SR_HDL(b) & SR_INT) 937 937 { 938 mpz_set( &u->z,&a->z);938 mpz_set(u->z,a->z); 939 939 // (z/n) / b -> z/(n*b) 940 940 if (a->s<2) 941 941 { 942 mpz_init_set( &u->n,&a->n);942 mpz_init_set(u->n,a->n); 943 943 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)); 945 945 else 946 946 { 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); 949 949 } 950 950 } … … 952 952 // long z / short b -> z/b 953 953 { 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)); 956 956 } 957 957 } … … 959 959 else 960 960 { 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); 978 978 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); 982 982 omFreeBin((ADDRESS)u, rnumber_bin); 983 983 return INT_TO_SR(ui); … … 1015 1015 (*u)->debug=123456; 1016 1016 #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); 1019 1019 if (x->s<2) 1020 1020 { 1021 if (mpz_cmp_si( &x->n,(long)1)==0)1021 if (mpz_cmp_si(x->n,(long)1)==0) 1022 1022 { 1023 1023 x->s=3; 1024 mpz_clear( &x->n);1024 mpz_clear(x->n); 1025 1025 } 1026 1026 else 1027 1027 { 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); 1030 1030 } 1031 1031 } 1032 1032 (*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); 1036 1036 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); 1040 1040 omFreeBin((ADDRESS)*u, rnumber_bin); 1041 1041 *u=INT_TO_SR(ui); … … 1044 1044 if (aa!=NULL) 1045 1045 { 1046 mpz_clear( &aa->z);1046 mpz_clear(aa->z); 1047 1047 omFreeBin((ADDRESS)aa, rnumber_bin); 1048 1048 } … … 1066 1066 #endif 1067 1067 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)); 1069 1069 } 1070 1070 … … 1140 1140 if (SR_HDL(a) & SR_INT) 1141 1141 { 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))); 1143 1143 return INT_TO_SR((int)t); 1144 1144 } … … 1146 1146 if (SR_HDL(b) & SR_INT) 1147 1147 { 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))); 1149 1149 return INT_TO_SR((int)t); 1150 1150 } … … 1152 1152 { 1153 1153 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); 1159 1159 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); 1163 1163 omFreeBin((ADDRESS)result, rnumber_bin); 1164 1164 return INT_TO_SR(ui); … … 1177 1177 { 1178 1178 assume(x->s<2); 1179 if (mpz_cmp_ui( &x->z,(long)0)==0)1179 if (mpz_cmp_ui(x->z,(long)0)==0) 1180 1180 { 1181 1181 _nlDelete_NoImm(&x); … … 1184 1184 if (x->s<2) 1185 1185 { 1186 if (mpz_cmp( &x->z,&x->n)==0)1186 if (mpz_cmp(x->z,x->n)==0) 1187 1187 { 1188 1188 _nlDelete_NoImm(&x); … … 1195 1195 { 1196 1196 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); 1201 1201 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); 1205 1205 omFreeBin((ADDRESS)x, rnumber_bin); 1206 1206 return INT_TO_SR(ui); … … 1226 1226 else if (x->s==0) 1227 1227 { 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); 1234 1234 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); 1238 1238 #if defined(LDEBUG) 1239 1239 x->debug=654324; … … 1248 1248 else 1249 1249 { 1250 MP_INTgcd;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); 1253 1253 x->s=1; 1254 if (mpz_cmp_si( &gcd,(long)1)!=0)1255 { 1256 MP_INTr;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) 1267 1267 { 1268 int ui=(int)mpz_get_si( &x->z);1268 int ui=(int)mpz_get_si(x->z); 1269 1269 if ((((ui<<3)>>3)==ui) 1270 && (mpz_cmp_si( &x->z,(long)ui)==0))1270 && (mpz_cmp_si(x->z,(long)ui)==0)) 1271 1271 { 1272 mpz_clear( &x->z);1273 mpz_clear( &gcd);1272 mpz_clear(x->z); 1273 mpz_clear(gcd); 1274 1274 #if defined(LDEBUG) 1275 1275 x->debug=654324; … … 1283 1283 } 1284 1284 } 1285 mpz_clear( &gcd);1285 mpz_clear(gcd); 1286 1286 } 1287 1287 } … … 1312 1312 #endif 1313 1313 result->s=3; 1314 MP_INTgcd;1315 mpz_init( &gcd);1316 mpz_init( &result->z);1314 mpz_t gcd; 1315 mpz_init(gcd); 1316 mpz_init(result->z); 1317 1317 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))); 1319 1319 else 1320 mpz_gcd( &gcd,&a->z,&b->n);1321 if (mpz_cmp_si( &gcd,(long)1)!=0)1322 { 1323 MP_INTbt;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); 1326 1326 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)); 1328 1328 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); 1331 1331 } 1332 1332 else 1333 1333 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)); 1335 1335 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); 1341 1341 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); 1345 1345 omFreeBin((ADDRESS)result, rnumber_bin); 1346 1346 return INT_TO_SR(ui); … … 1361 1361 return i%p; 1362 1362 } 1363 int iz=(int)mpz_fdiv_ui( &n->z,(unsigned long)p);1363 int iz=(int)mpz_fdiv_ui(n->z,(unsigned long)p); 1364 1364 if (n->s!=3) 1365 1365 { 1366 int in=mpz_fdiv_ui( &n->n,(unsigned long)p);1366 int in=mpz_fdiv_ui(n->n,(unsigned long)p); 1367 1367 #ifdef NV_OPS 1368 1368 if (npPrimeM>NV_MAX_PRIME) … … 1387 1387 if (SR_HDL(i) & SR_INT) 1388 1388 { 1389 mpz_set_si(( MP_INT*) n, (long) SR_TO_INT(i));1389 mpz_set_si((mpz_ptr) n, (long) SR_TO_INT(i)); 1390 1390 return; 1391 1391 } … … 1394 1394 WarnS("Omitted denominator during coefficient mapping !"); 1395 1395 } 1396 mpz_set(( MP_INT*) n, &i->z);1396 mpz_set((mpz_ptr) n, i->z); 1397 1397 } 1398 1398 #endif … … 1418 1418 u->debug=123456; 1419 1419 #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); 1423 1423 if ((((ui<<3)>>3)==ui) 1424 && (mpz_cmp_si( &u->z,(long)ui)==0))1424 && (mpz_cmp_si(u->z,(long)ui)==0)) 1425 1425 { 1426 mpz_clear( &u->z);1426 mpz_clear(u->z); 1427 1427 omFreeBin((ADDRESS)u, rnumber_bin); 1428 1428 return INT_TO_SR(ui); … … 1454 1454 #endif 1455 1455 u->s=3; 1456 mpz_init_set( &u->z,&n->z);1456 mpz_init_set(u->z,n->z); 1457 1457 if (n->s!=3) 1458 1458 { 1459 int ui=(int)mpz_get_si( &u->z);1459 int ui=(int)mpz_get_si(u->z); 1460 1460 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); 1464 1464 omFreeBin((ADDRESS)u, rnumber_bin); 1465 1465 return INT_TO_SR(ui); … … 1492 1492 if (b->s!=0) 1493 1493 return FALSE; 1494 if (((long)a > 0L) && (mpz_isNeg( &b->z)))1494 if (((long)a > 0L) && (mpz_isNeg(b->z))) 1495 1495 return FALSE; 1496 if (((long)a < 0L) && (!mpz_isNeg( &b->z)))1496 if (((long)a < 0L) && (!mpz_isNeg(b->z))) 1497 1497 return FALSE; 1498 MP_INTbb;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); 1503 1503 return bo; 1504 1504 } … … 1507 1507 || ((b->s==1) && (a->s==3))) 1508 1508 return FALSE; 1509 if (mpz_isNeg( &a->z)&&(!mpz_isNeg(&b->z)))1509 if (mpz_isNeg(a->z)&&(!mpz_isNeg(b->z))) 1510 1510 return FALSE; 1511 if (mpz_isNeg( &b->z)&&(!mpz_isNeg(&a->z)))1511 if (mpz_isNeg(b->z)&&(!mpz_isNeg(a->z))) 1512 1512 return FALSE; 1513 MP_INTaa;1514 MP_INTbb;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); 1522 1522 return bo; 1523 1523 } … … 1538 1538 case 0: 1539 1539 case 1: 1540 mpz_init_set( &b->n,&a->n);1540 mpz_init_set(b->n,a->n); 1541 1541 case 3: 1542 mpz_init_set( &b->z,&a->z);1542 mpz_init_set(b->z,a->z); 1543 1543 break; 1544 1544 } … … 1557 1557 case 0: 1558 1558 case 1: 1559 mpz_clear( &(*a)->n);1559 mpz_clear((*a)->n); 1560 1560 case 3: 1561 mpz_clear( &(*a)->z);1561 mpz_clear((*a)->z); 1562 1562 #ifdef LDEBUG 1563 1563 (*a)->s=2; … … 1571 1571 { 1572 1572 { 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); 1577 1577 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); 1581 1581 omFreeBin((ADDRESS)a, rnumber_bin); 1582 1582 a=INT_TO_SR(ui); … … 1596 1596 u->debug=123456; 1597 1597 #endif 1598 mpz_init( &u->z);1598 mpz_init(u->z); 1599 1599 if (SR_HDL(b) & SR_INT) 1600 1600 { … … 1610 1610 case 1:/* a:short, b:1 */ 1611 1611 { 1612 MP_INTx;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); 1620 1620 omFreeBin((ADDRESS)u, rnumber_bin); 1621 1621 return INT_TO_SR(0); 1622 1622 } 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); 1626 1626 omFreeBin((ADDRESS)u, rnumber_bin); 1627 1627 return INT_TO_SR(1); 1628 1628 } 1629 mpz_init_set( &u->n,&b->n);1629 mpz_init_set(u->n,b->n); 1630 1630 u->s = 0; 1631 1631 break; … … 1634 1634 { 1635 1635 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)); 1637 1637 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); 1642 1642 omFreeBin((ADDRESS)u, rnumber_bin); 1643 1643 return INT_TO_SR(0); 1644 1644 } 1645 1645 //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); 1649 1649 if ((((ui<<3)>>3)==ui) 1650 && (mpz_cmp_si( &u->z,(long)ui)==0))1650 && (mpz_cmp_si(u->z,(long)ui)==0)) 1651 1651 { 1652 mpz_clear( &u->z);1652 mpz_clear(u->z); 1653 1653 omFreeBin((ADDRESS)u, rnumber_bin); 1654 1654 return INT_TO_SR(ui); … … 1672 1672 case 1: 1673 1673 { 1674 MP_INTx;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) 1683 1683 { 1684 mpz_clear( &u->z);1684 mpz_clear(u->z); 1685 1685 omFreeBin((ADDRESS)u, rnumber_bin); 1686 1686 return INT_TO_SR(0); 1687 1687 } 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) 1691 1691 { 1692 mpz_clear( &u->z);1693 mpz_clear( &u->n);1692 mpz_clear(u->z); 1693 mpz_clear(u->n); 1694 1694 omFreeBin((ADDRESS)u, rnumber_bin); 1695 1695 return INT_TO_SR(1); … … 1700 1700 case 3: /* a:1 b:3 */ 1701 1701 { 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) 1705 1705 { 1706 mpz_clear( &u->z);1706 mpz_clear(u->z); 1707 1707 omFreeBin((ADDRESS)u, rnumber_bin); 1708 1708 return INT_TO_SR(0); 1709 1709 } 1710 if (mpz_cmp( &u->z,&a->n)==0)1710 if (mpz_cmp(u->z,a->n)==0) 1711 1711 { 1712 mpz_clear( &u->z);1712 mpz_clear(u->z); 1713 1713 omFreeBin((ADDRESS)u, rnumber_bin); 1714 1714 return INT_TO_SR(1); 1715 1715 } 1716 mpz_init_set( &u->n,&a->n);1716 mpz_init_set(u->n,a->n); 1717 1717 u->s = 0; 1718 1718 break; … … 1728 1728 case 1:/* a:3, b:1 */ 1729 1729 { 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) 1733 1733 { 1734 mpz_clear( &u->z);1734 mpz_clear(u->z); 1735 1735 omFreeBin((ADDRESS)u, rnumber_bin); 1736 1736 return INT_TO_SR(0); 1737 1737 } 1738 if (mpz_cmp( &u->z,&b->n)==0)1738 if (mpz_cmp(u->z,b->n)==0) 1739 1739 { 1740 mpz_clear( &u->z);1740 mpz_clear(u->z); 1741 1741 omFreeBin((ADDRESS)u, rnumber_bin); 1742 1742 return INT_TO_SR(1); 1743 1743 } 1744 mpz_init_set( &u->n,&b->n);1744 mpz_init_set(u->n,b->n); 1745 1745 u->s = 0; 1746 1746 break; … … 1748 1748 case 3: 1749 1749 { 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) 1752 1752 { 1753 mpz_clear( &u->z);1753 mpz_clear(u->z); 1754 1754 omFreeBin((ADDRESS)u, rnumber_bin); 1755 1755 return INT_TO_SR(0); 1756 1756 } 1757 if (mpz_size1( &u->z)<=MP_SMALL)1757 if (mpz_size1(u->z)<=MP_SMALL) 1758 1758 { 1759 int ui=(int)mpz_get_si( &u->z);1759 int ui=(int)mpz_get_si(u->z); 1760 1760 if ((((ui<<3)>>3)==ui) 1761 && (mpz_cmp_si( &u->z,(long)ui)==0))1761 && (mpz_cmp_si(u->z,(long)ui)==0)) 1762 1762 { 1763 mpz_clear( &u->z);1763 mpz_clear(u->z); 1764 1764 omFreeBin((ADDRESS)u, rnumber_bin); 1765 1765 return INT_TO_SR(ui); … … 1786 1786 u->debug=123456; 1787 1787 #endif 1788 mpz_init( &u->z);1788 mpz_init(u->z); 1789 1789 if (SR_HDL(a) & SR_INT) 1790 1790 { … … 1794 1794 case 1:/* a:short, b:1 */ 1795 1795 { 1796 MP_INTx;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); 1804 1804 omFreeBin((ADDRESS)u, rnumber_bin); 1805 1805 return INT_TO_SR(0); 1806 1806 } 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); 1810 1810 omFreeBin((ADDRESS)u, rnumber_bin); 1811 1811 return INT_TO_SR(1); 1812 1812 } 1813 mpz_init_set( &u->n,&b->n);1813 mpz_init_set(u->n,b->n); 1814 1814 u->s = 0; 1815 1815 break; … … 1819 1819 if ((long)a>0L) 1820 1820 { 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); 1823 1823 } 1824 1824 else 1825 1825 { 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); 1832 1832 omFreeBin((ADDRESS)u, rnumber_bin); 1833 1833 return INT_TO_SR(0); 1834 1834 } 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); 1838 1838 if ((((ui<<3)>>3)==ui) 1839 && (mpz_cmp_si( &u->z,(long)ui)==0))1839 && (mpz_cmp_si(u->z,(long)ui)==0)) 1840 1840 { 1841 mpz_clear( &u->z);1841 mpz_clear(u->z); 1842 1842 omFreeBin((ADDRESS)u, rnumber_bin); 1843 1843 return INT_TO_SR(ui); … … 1856 1856 case 1:/* b:short, a:1 */ 1857 1857 { 1858 MP_INTx;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); 1866 1866 omFreeBin((ADDRESS)u, rnumber_bin); 1867 1867 return INT_TO_SR(0); 1868 1868 } 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); 1872 1872 omFreeBin((ADDRESS)u, rnumber_bin); 1873 1873 return INT_TO_SR(1); 1874 1874 } 1875 mpz_init_set( &u->n,&a->n);1875 mpz_init_set(u->n,a->n); 1876 1876 u->s = 0; 1877 1877 break; … … 1881 1881 if ((long)b>0L) 1882 1882 { 1883 mpz_sub_ui( &u->z,&a->z,SR_TO_INT(b));1883 mpz_sub_ui(u->z,a->z,SR_TO_INT(b)); 1884 1884 } 1885 1885 else 1886 1886 { 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); 1892 1892 omFreeBin((ADDRESS)u, rnumber_bin); 1893 1893 return INT_TO_SR(0); 1894 1894 } 1895 1895 //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); 1899 1899 if ((((ui<<3)>>3)==ui) 1900 && (mpz_cmp_si( &u->z,(long)ui)==0))1900 && (mpz_cmp_si(u->z,(long)ui)==0)) 1901 1901 { 1902 mpz_clear( &u->z);1902 mpz_clear(u->z); 1903 1903 omFreeBin((ADDRESS)u, rnumber_bin); 1904 1904 return INT_TO_SR(ui); … … 1922 1922 case 1: 1923 1923 { 1924 MP_INTx;1925 MP_INTy;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) 1934 1934 { 1935 mpz_clear( &u->z);1935 mpz_clear(u->z); 1936 1936 omFreeBin((ADDRESS)u, rnumber_bin); 1937 1937 return INT_TO_SR(0); 1938 1938 } 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) 1942 1942 { 1943 mpz_clear( &u->z);1944 mpz_clear( &u->n);1943 mpz_clear(u->z); 1944 mpz_clear(u->n); 1945 1945 omFreeBin((ADDRESS)u, rnumber_bin); 1946 1946 return INT_TO_SR(1); … … 1951 1951 case 3: /* a:1, b:3 */ 1952 1952 { 1953 MP_INTx;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) 1959 1959 { 1960 mpz_clear( &u->z);1960 mpz_clear(u->z); 1961 1961 omFreeBin((ADDRESS)u, rnumber_bin); 1962 1962 return INT_TO_SR(0); 1963 1963 } 1964 if (mpz_cmp( &u->z,&a->n)==0)1964 if (mpz_cmp(u->z,a->n)==0) 1965 1965 { 1966 mpz_clear( &u->z);1966 mpz_clear(u->z); 1967 1967 omFreeBin((ADDRESS)u, rnumber_bin); 1968 1968 return INT_TO_SR(1); 1969 1969 } 1970 mpz_init_set( &u->n,&a->n);1970 mpz_init_set(u->n,a->n); 1971 1971 u->s = 0; 1972 1972 break; … … 1982 1982 case 1: /* a:3, b:1 */ 1983 1983 { 1984 MP_INTx;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) 1990 1990 { 1991 mpz_clear( &u->z);1991 mpz_clear(u->z); 1992 1992 omFreeBin((ADDRESS)u, rnumber_bin); 1993 1993 return INT_TO_SR(0); 1994 1994 } 1995 if (mpz_cmp( &u->z,&b->n)==0)1995 if (mpz_cmp(u->z,b->n)==0) 1996 1996 { 1997 mpz_clear( &u->z);1997 mpz_clear(u->z); 1998 1998 omFreeBin((ADDRESS)u, rnumber_bin); 1999 1999 return INT_TO_SR(1); 2000 2000 } 2001 mpz_init_set( &u->n,&b->n);2001 mpz_init_set(u->n,b->n); 2002 2002 u->s = 0; 2003 2003 break; … … 2005 2005 case 3: /* a:3 , b:3 */ 2006 2006 { 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) 2009 2009 { 2010 mpz_clear( &u->z);2010 mpz_clear(u->z); 2011 2011 omFreeBin((ADDRESS)u, rnumber_bin); 2012 2012 return INT_TO_SR(0); 2013 2013 } 2014 2014 //u->s = 3; 2015 if (mpz_size1( &u->z)<=MP_SMALL)2015 if (mpz_size1(u->z)<=MP_SMALL) 2016 2016 { 2017 int ui=(int)mpz_get_si( &u->z);2017 int ui=(int)mpz_get_si(u->z); 2018 2018 if ((((ui<<3)>>3)==ui) 2019 && (mpz_cmp_si( &u->z,(long)ui)==0))2019 && (mpz_cmp_si(u->z,(long)ui)==0)) 2020 2020 { 2021 mpz_clear( &u->z);2021 mpz_clear(u->z); 2022 2022 omFreeBin((ADDRESS)u, rnumber_bin); 2023 2023 return INT_TO_SR(ui); … … 2046 2046 #endif 2047 2047 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)); 2050 2050 #ifdef LDEBUG 2051 2051 nlTest(u); … … 2062 2062 u->debug=123456; 2063 2063 #endif 2064 mpz_init( &u->z);2064 mpz_init(u->z); 2065 2065 if (SR_HDL(b) & SR_INT) 2066 2066 { … … 2075 2075 if ((long)a>0L) 2076 2076 { 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)); 2078 2078 } 2079 2079 else … … 2081 2081 if (a==INT_TO_SR(-1)) 2082 2082 { 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); 2085 2085 u->s=b->s; 2086 2086 } 2087 2087 else 2088 2088 { 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); 2091 2091 } 2092 2092 } 2093 2093 if (u->s<2) 2094 2094 { 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); 2098 2098 omFreeBin((ADDRESS)u, rnumber_bin); 2099 2099 return INT_TO_SR(1); 2100 2100 } 2101 mpz_init_set( &u->n,&b->n);2101 mpz_init_set(u->n,b->n); 2102 2102 } 2103 2103 else //u->s==3 2104 2104 { 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); 2108 2108 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); 2112 2112 omFreeBin((ADDRESS)u, rnumber_bin); 2113 2113 return INT_TO_SR(ui); … … 2118 2118 else 2119 2119 { 2120 mpz_mul( &u->z,&a->z,&b->z);2120 mpz_mul(u->z,a->z,b->z); 2121 2121 u->s = 0; 2122 2122 if(a->s==3) … … 2128 2128 else 2129 2129 { 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); 2133 2133 omFreeBin((ADDRESS)u, rnumber_bin); 2134 2134 return INT_TO_SR(1); 2135 2135 } 2136 mpz_init_set( &u->n,&b->n);2136 mpz_init_set(u->n,b->n); 2137 2137 } 2138 2138 } … … 2141 2141 if(b->s==3) 2142 2142 { 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); 2146 2146 omFreeBin((ADDRESS)u, rnumber_bin); 2147 2147 return INT_TO_SR(1); 2148 2148 } 2149 mpz_init_set( &u->n,&a->n);2149 mpz_init_set(u->n,a->n); 2150 2150 } 2151 2151 else 2152 2152 { 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); 2159 2159 omFreeBin((ADDRESS)u, rnumber_bin); 2160 2160 return INT_TO_SR(1); … … 2178 2178 z->debug=123456; 2179 2179 #endif 2180 mpz_init_set_si( &z->z,(long)i);2180 mpz_init_set_si(z->z,(long)i); 2181 2181 z->s = 3; 2182 2182 return z; … … 2192 2192 z->debug=123456; 2193 2193 #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); 2196 2196 z->s = 0; 2197 2197 nlNormalize(z); … … 2205 2205 z->debug=123456; 2206 2206 #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); 2209 2209 z->s = 0; 2210 2210 nlNormalize(z); … … 2277 2277 { 2278 2278 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); 2280 2280 } 2281 2281 … … 2367 2367 case 1:/* b:short, a:1 */ 2368 2368 { 2369 MP_INTx;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); 2374 2374 a->s = 0; 2375 2375 a=nlShort1(a); … … 2379 2379 { 2380 2380 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)); 2382 2382 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)); 2384 2384 a->s = 3; 2385 2385 a=nlShort3(a); … … 2396 2396 u->debug=123456; 2397 2397 #endif 2398 mpz_init( &u->z);2398 mpz_init(u->z); 2399 2399 switch (b->s) 2400 2400 { … … 2402 2402 case 1:/* a:short, b:1 */ 2403 2403 { 2404 MP_INTx;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); 2410 2410 // result cannot be 0, if coeffs are normalized 2411 mpz_init_set( &u->n,&b->n);2411 mpz_init_set(u->n,b->n); 2412 2412 u->s = 0; 2413 2413 u=nlShort1(u); … … 2417 2417 { 2418 2418 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)); 2420 2420 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)); 2422 2422 // result cannot be 0, if coeffs are normalized 2423 2423 u->s = 3; … … 2443 2443 case 1: /* a:1 b:1 */ 2444 2444 { 2445 MP_INTx;2446 MP_INTy;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); 2455 2455 a->s = 0; 2456 2456 break; … … 2458 2458 case 3: /* a:1 b:3 */ 2459 2459 { 2460 MP_INTx;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); 2465 2465 a->s = 0; 2466 2466 break; … … 2477 2477 case 1:/* a:3, b:1 */ 2478 2478 { 2479 MP_INTx;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); 2485 2485 a->s = 0; 2486 2486 a=nlShort1(a); … … 2489 2489 case 3: 2490 2490 { 2491 mpz_add( &a->z,&a->z,&b->z);2491 mpz_add(a->z,a->z,b->z); 2492 2492 a->s = 3; 2493 2493 a=nlShort3(a); … … 2560 2560 else 2561 2561 { 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); 2566 2566 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); 2570 2570 omFreeBin((ADDRESS)a, rnumber_bin); 2571 2571 a=INT_TO_SR(ui); … … 2584 2584 else 2585 2585 { 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); 2591 2591 } 2592 2592 else 2593 2593 { 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); 2597 2597 } 2598 2598 else 2599 2599 { 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); 2603 2603 } 2604 2604 else 2605 2605 { 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); 2614 2614 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); 2618 2618 omFreeBin((ADDRESS)a, rnumber_bin); 2619 2619 a=INT_TO_SR(ui); … … 2633 2633 else 2634 2634 { 2635 mpz_mul( &a->z,&a->z,&b->z);2635 mpz_mul(a->z,a->z,b->z); 2636 2636 if (a->s==3) 2637 2637 { 2638 2638 if(b->s!=3) 2639 2639 { 2640 mpz_init_set( &a->n,&b->n);2640 mpz_init_set(a->n,b->n); 2641 2641 a->s=0; 2642 2642 } … … 2646 2646 if(b->s!=3) 2647 2647 { 2648 mpz_mul( &a->n,&a->n,&b->n);2648 mpz_mul(a->n,a->n,b->n); 2649 2649 } 2650 2650 a->s=0; … … 2655 2655 number nlFarey(number nN, number nP) 2656 2656 { 2657 MP_INT tmp; mpz_init(&tmp);2658 MP_INTA,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); 2670 2670 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) 2676 2676 { 2677 2677 // return N/B 2678 2678 z=(number)omAllocBin(rnumber_bin); 2679 if (mpz_isNeg( &B))2679 if (mpz_isNeg(B)) 2680 2680 { 2681 mpz_neg( &B,&B);2682 mpz_neg( &N,&N);2681 mpz_neg(B,B); 2682 mpz_neg(N,N); 2683 2683 } 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); 2686 2686 z->s = 0; 2687 2687 nlNormalize(z); 2688 2688 break; 2689 2689 } 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); 2707 2707 return z; 2708 2708 } … … 2737 2737 int ui=(int)mpz_get_si(&r->z); 2738 2738 if ((((ui<<3)>>3)==ui) 2739 && (mpz_cmp_si( &x->z,(long)ui)==0))2739 && (mpz_cmp_si(x->z,(long)ui)==0)) 2740 2740 { 2741 2741 mpz_clear(&r->z);
Note: See TracChangeset
for help on using the changeset viewer.