Changeset 7d73a53 in git


Ignore:
Timestamp:
Feb 23, 2016, 5:09:19 PM (8 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
Children:
ca5f5ec50e7d7e43e956e80b9cff948d8a89ee55
Parents:
6828dc2a9db4f0616aef09df69cf620b2f3ace02
Message:
div and mod for Z
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/atkins.lib

    r6828dc r7d73a53  
    200200"
    201201{
    202   if((D>=0)||((D mod 4)==-2)||((D mod 4)==-1)||(absValue(D)>=4*p))
     202  if((D>=0)||((D mod 4)==2)||((D mod 4)==3)||(absValue(D)>=4*p))
    203203  {                                  // (0)[Test if assumptions well-defined]
    204204    return(0);
     
    231231      {
    232232        x(0)=squareRoot(D,p);        // (3)[Compute square root]
    233         if((x(0) mod 2)!=(-(D mod 2))) // D is <0
     233        if((x(0) mod 2)!=(D mod 2)) // D is <0
    234234        {
    235235          x(0)=p-x(0);
     
    248248        if((((4*p-b^2) mod absValue(D))!=0)||(c!=root_c^2))
    249249        {
     250        "3";
    250251          return(-1);
    251252          // ERROR("The Diophantine equation has no solution!");
  • Tst/Manual/Schoof.res.gz.uu

    r6828dc r7d73a53  
    1 begin 644 Schoof.res.gz
    2 M'XL(")JNRU```U-C:&]O9BYR97,`"PYQ\?134%`PM%/P\7124"HI+M'+R4Q2
     1begin 640 Schoof.res.gz
     2M'XL(".B`S%8``U-C:&]O9BYR97,`"PYQ\?134%`PM%/P\7124"HI+M'+R4Q2
    33MLE8`LN(S\S)+-#2MN4"T@IV=0G!R1GY^FEY>:KE><4EB"5<P5+<15'=R465!
    4 M23[$`+BDL9U"469>ND*0@JV"@4Z53DH!0LX$9J:&L9&!@;&.N:&.F8$1T$9C
    5 >$V-C0[@R4SNP<T!VEA9K&&I:JW`!`+6AQ42Y````
     4M23[$`+BDL9U"469>ND*0@JV"@4Z53DH!0LX$9J:&L9&!@;&.N:&.F8$1T$8@
     5<U\@0KLS4#NP<D)VEQ1J&FM8J7`#Q;,(BN0``````
    66`
    77end
  • Tst/Manual/bigint_operations.res.gz.uu

    r6828dc r7d73a53  
    1 begin 644 bigint_operations.res.gz
    2 M'XL("(.NRU```V)I9VEN=%]O<&5R871I;VYS+G)E<P!%CL$*PC`,AN]]BB`>
    3 M5K$CS=;.4>A!O`S$RSP[-C:DH)VXJJ^O$S=/27[^?'SE<5<<`$!:V!=;6(0A
    4 MQ!?7+`Q\MLIY%R)NV#C!6FC<V?E0];?N7@?7^R'VW2L>0AU8^0/1U(H47]%Z
    5 M.HB?)**0:)A$D*0SK5`C$FV(\A1EFNL,$T*5:#W#DADF%(?6/>%/')-KWP(9
    6 9)@B$G)]2^W4?K1Y#)+E9LC=-JX5/Y@``````
     1begin 640 bigint_operations.res.gz
     2M'XL(",Z!S%8``V)I9VEN=%]O<&5R871I;VYS+G)E<P"=E<MNG#`4AO<\Q1'*
     3M`M*!^((A%`V+JIM(53?INB,SH5,K#$0#:56-^NZU"=@0CPH)"^S#\??[W"3N
     4MOWV^^PH`.(<O=Y_`[=HNK$3A9B!W.U&+SO,S1ZV0YU"(@ZB[7?-4GG@GFKH-
     5MZ_)WV':\<^X'(3*>\IA_33:C0?SO&*$`H\S!"#")DYBA&"%";@E)(X2C-$X0
     6M)8C1.-9B5(L%S(<'\0N,HOIR;!Z`9$Y``6LFRD'O60A/IV8/^Y_E_G$G>0EX
     7M+SSP40D*7P-Q"&=M)*%\B1_@>;R_N_"OBP]RKVXM_.V6&RY51S6)L3(!W/;Y
     8M",TC_^-FVD65ZZ\VF3++JBWUEV0NE0Y2,H"/[F8(1,N1\2894^_N8S-N:@*1
     9M[HMY;%S@"I5K(=<)S&:ADJ$<GB;S+?+A[+;B4`]9FL/IF!><P1V`28!&ELH,
     10MC"&GY^8&VB.OJJ!_:X_,9-;%9$/E8(X%=G00&I!S\`H(%@CVB@B6D=A&%HC$
     11M9`A!Q4\'W7EZ:Z>(]/-_U?1"LBO9"%U*>RV,+Q1@+?O2[+X&\V9'5K.-Y$)]
     12M(ZOM$W2AFY$]`&^`[5%8'W0RJ<1L)B)K)J:B:PMM3<<LK94JS)Z3=\G8$_..
     139E)B<'?6#4K^>Y];#?G;E_`-SNM#'RP8`````
    714`
    815end
  • Tst/Manual/bigint_operations.stat

    r6828dc r7d73a53  
    1 1 >> tst_memory_0 :: 1355525762:3150:3-1-5:x86_64-Linux:snork:184288
    2 1 >> tst_memory_1 :: 1355525762:3150:3-1-5:x86_64-Linux:snork:2240216
    3 1 >> tst_memory_2 :: 1355525762:3150:3-1-5:x86_64-Linux:snork:2273016
    4 1 >> tst_timer_1 :: 1355525762:3150:3-1-5:x86_64-Linux:snork:3
     11 >> tst_memory_0 :: 1456243150:4030, 64 bit:4.0.3:x86_64-Linux:nepomuck:104680
     21 >> tst_memory_1 :: 1456243150:4030, 64 bit:4.0.3:x86_64-Linux:nepomuck:2228224
     31 >> tst_memory_2 :: 1456243150:4030, 64 bit:4.0.3:x86_64-Linux:nepomuck:2228224
     41 >> tst_timer_1 :: 1456243150:4030, 64 bit:4.0.3:x86_64-Linux:nepomuck:0
  • Tst/Manual/bigint_operations.tst

    r6828dc r7d73a53  
    22bigint(5)*2, bigint(2)^100-10;
    33bigint(-5) div 2, bigint(-5) mod 2;
     4
     5proc check_divmod(bigint a, bigint b)
     6{
     7  if ((a div b)*b+(a mod b)==a)
     8  {
     9    "sum okay";
     10  }
     11  else
     12  {
     13    "div:",a div b;
     14    "mod:",a mod b;
     15    "sum:",(a div b)*b+(a mod b)," a:",a," b:",b;
     16  }
     17  if((a mod b)>=0) {"sign okay";}
     18  else { "a mod b:",a mod b; }
     19}
     20// small-small
     21check_divmod(7,3);
     22check_divmod(7,-3);
     23check_divmod(-7,-3);
     24check_divmod(-7,3);
     25// small -large
     26check_divmod(7,30000000000);
     27check_divmod(7,-30000000000);
     28check_divmod(-7,-30000000000);
     29check_divmod(-7,30000000000);
     30// large-small
     31check_divmod(70000000000,3);
     32check_divmod(70000000000,-3);
     33check_divmod(-70000000000,-3);
     34check_divmod(-70000000000,3);
     35// large-large
     36check_divmod(70000000000,30000000000);
     37check_divmod(70000000000,-30000000000);
     38check_divmod(-70000000000,-30000000000);
     39check_divmod(-70000000000,30000000000);
    440tst_status(1);$
  • Tst/Manual/chineseRem.res.gz.uu

    r6828dc r7d73a53  
    1 begin 644 chineseRem.res.gz
    2 M'XL("(6NRU```V-H:6YE<V5296TN<F5S``L.<?'T4U!0,+13\/%T4E`J*2[1
     1begin 640 chineseRem.res.gz
     2M'XL("#M_S%8``V-H:6YE<V5296TN<F5S``L.<?'T4U!0,+13\/%T4E`J*2[1
    33MR\E,4K)6`++B,_,R2S0TK;E`M(*=G4)R1F9>:G%J4&JN7EYJN5YQ26()5S#4
    44M!".H"<E%E04E^1!#X)+&=@I%F7GI"D$*M@H&.A4Z*04(.1-D<S5R,HM+-(Q,
    5 M=`Q-=<PU=2`\'6,=4TV@,W0-+>"Z3.W`+@0YH;18PU#36H4+`'1Z&C_,````
     5L=`Q-=<PU=2`\'6,=4TV@,PR-X)I,[<`.!+F@M%C#4--:A0L`SAN<F\L`````
    66`
    77end
  • Tst/Manual/coeffmod.res.gz.uu

    r6828dc r7d73a53  
    11begin 640 coeffmod.res.gz
    2 M'XL(".[^FE,``V-O969F;6]D+G)E<P!%C\T.@C`0A.\\Q89XX$\BI14-H0?C
    3 MA<1X$.^F""4-6(C46-]>4`*GW>S,MYG)KL?T#``!A5-Z`%/URF]$;L8P;#<A
    4 MA;+LV!@G4`KWMN3\T1:^+-]^KY@RLHE'$\_JGM7L_V(60PI/(2NX0`(;3WM%
    5 MMVB80M<V'^`)PB1R-'8)"C%Q=+C>[QR-7+)X"85<5$(JD$FXG+=+,(M[<L@[
    6 :P&A`T6R)Z*_/&/G56X$=KXPO<-+XE?H`````
     2M'XL("/U^S%8``V-O969F;6]D+G)E<P!%C\T.@C`0A.\\Q89XX$\B+14-H0?C
     3MA<1X$.\&A)(&+$1JK&\O**&GW>S,;+[)KL?T#``!A5-Z`%,.TF]Y8<8P;C<N
     4MN+3LV)@F4`KWKF+LT96^J-[^('-I9',>S?F\&?(F_[]81$SAR44-%TA@XRFO
     5M[+464NB[]@,L02&)'!6Z!.&0.`JO]SM'(9=H+Z%0\)H+"2+!^KS58!;SQ,BK
     6:L#LFT>*(Z*_.1/P:K,".5\87X.574OD`````
    77`
    88end
  • Tst/Manual/powerpolyX.res.gz.uu

    r6828dc r7d73a53  
    11begin 640 powerpolyX.res.gz
    2 M'XL("&<$FU,``W!O=V5R<&]L>5@N<F5S`$V//0^",!"&=W[%Q3B@%&*I^!'2
    3 M#L;%Q#B(@YNIT9A&4J"MH?Q[00EENLL]E^?NS2[[PPD`,(/C80<3HTV4B_LD
    4 MA;:["2F,/TN]K@)C4!;U4Y5%WEPC^:PC;;CQLMX0]P;^UOS-_Y(!$@9*R!><
    5 MZ0)9]"@=67;6O`%.R=R2T,9!XF#20T7M.L1NOF)P%R\A#504Q\2!]0`D'7DV
    6 JX]?]"DG$D6IS$9N$Q"X#2X+V,![VM^P7O\OWT3Z>I5/O"Y74O)TI`0``
     2M'XL("(-_S%8``W!O=V5R<&]L>5@N<F5S`$V//0^",!"&=W[%Q3B@%&);$`UI
     3M!^-B8AS4P<W4:$@#*5\UE'\O**%.=[GG\MR]E^O^<`(`S.%XV,%,-SK(Y6.6
     4M0-_=I9+:723.4(%S*(OV59=%WMT"]6J#1@OM7$8#&0TB:T0F?I()4@ZU5"F<
     5MV0H9]"PM"0=KWH%@=&FH;X@761B-L&8F]K&=KSD\9"J5AHIA0BV()Z#8GV?S
     6J_[I;(84$JOM<U$0>,:%GJ-<?QM/^EG_C#_G>C8L7R=SY`"R^3(8I`0``
    77`
    88end
  • libpolys/coeffs/coeffs.h

    r6828dc r7d73a53  
    613613/// raises an error if 'b' is not invertible in r
    614614/// exception in Z: raises an error if 'a' is not divisible by 'b'
     615/// always: n_Div(a,b,r)*b+n_IntMod(a,b,r)==a
    615616static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
    616617{ STATISTIC(n_Div); assume(r != NULL); assume(r->cfDiv!=NULL); return r->cfDiv(a,b,r); }
     
    624625
    625626/// for r a field, return n_Init(0,r)
    626 /// otherwise: n_Div(a,b,r)*b+n_IntMod(a,b,r)==a
     627/// always: n_Div(a,b,r)*b+n_IntMod(a,b,r)==a
     628/// n_IntMod(a,b,r) >=0
    627629static FORCE_INLINE number n_IntMod(number a, number b, const coeffs r)
    628630{ STATISTIC(n_IntMod); assume(r != NULL); return r->cfIntMod(a,b,r); }
  • libpolys/coeffs/longrat.cc

    r6828dc r7d73a53  
    160160#define mpz_limb_size(A) ((A)->_mp_size)
    161161#define mpz_limb_d(A) ((A)->_mp_d)
    162 #define MPZ_DIV(A,B,C) mpz_tdiv_q((A),(B),(C))
    163 #define MPZ_EXACTDIV(A,B,C) mpz_divexact((A),(B),(C))
    164162
    165163void    _nlDelete_NoImm(number *a);
     
    624622  long ul;
    625623  mpz_init(tmp);
    626   MPZ_DIV(tmp,i->z,i->n);
     624  mpz_tdiv_q(tmp,i->z,i->n);
    627625  if(mpz_size1(tmp)>MP_SMALL) ul=0;
    628626  else
     
    648646  }
    649647  number tmp=nlRInit(1);
    650   MPZ_DIV(tmp->z,i->z,i->n);
     648  mpz_tdiv_q(tmp->z,i->z,i->n);
    651649  tmp=nlShort3(tmp);
    652650  return tmp;
     
    769767  /* u=a/b */
    770768  u->s = 3;
    771   MPZ_EXACTDIV(u->z,a->z,b->z);
     769  mpz_divexact(u->z,a->z,b->z);
    772770  if (bb!=NULL)
    773771  {
     
    803801      return nlRInit(POW_2_28);
    804802    }
    805     long aa=SR_TO_INT(a);
    806     long bb=SR_TO_INT(b);
    807     return INT_TO_SR(aa/bb);
    808   }
     803    LONG aa=SR_TO_INT(a);
     804    LONG bb=SR_TO_INT(b);
     805    LONG rr=aa%bb;
     806    if (rr<0) rr+=ABS(bb);
     807    LONG cc=(aa-rr)/bb;
     808    return INT_TO_SR(cc);
     809  }
     810  number aa=NULL;
    809811  if (SR_HDL(a) & SR_INT)
    810812  {
     
    817819      }
    818820    }
    819     /* a is a small and b is a large int: -> 0 */
    820     return INT_TO_SR(0);
     821    aa=nlRInit(SR_TO_INT(a));
     822    a=aa;
    821823  }
    822824  number bb=NULL;
     
    835837  /* u=u/b */
    836838  u->s = 3;
    837   MPZ_DIV(u->z,u->z,b->z);
     839  number rr=nlIntMod(a,b,r);
     840  if (SR_HDL(rr) &  SR_INT) mpz_sub_ui(u->z,u->z,SR_TO_INT(rr));
     841  else                      mpz_sub(u->z,u->z,rr->z);
     842  mpz_divexact(u->z,u->z,b->z);
     843  if (aa!=NULL)
     844  {
     845    mpz_clear(aa->z);
     846#if defined(LDEBUG)
     847    aa->debug=654324;
     848#endif
     849    FREE_RNUMBER(aa);
     850  }
    838851  if (bb!=NULL)
    839852  {
     
    864877  if (SR_HDL(a) & SR_HDL(b) & SR_INT)
    865878  {
     879    LONG aa=SR_TO_INT(a);
    866880    LONG bb=SR_TO_INT(b);
    867     LONG c=SR_TO_INT(a) % bb;
     881    LONG c=aa % bb;
     882    if (c<0) c+=ABS(bb);
    868883    return INT_TO_SR(c);
    869884  }
    870885  if (SR_HDL(a) & SR_INT)
    871886  {
     887    LONG ai=SR_TO_INT(a);
    872888    mpz_t aa;
    873     mpz_init(aa);
    874     mpz_set_si(aa, SR_TO_INT(a));
     889    mpz_init_set_si(aa, ai);
    875890    u=ALLOC_RNUMBER();
    876891#if defined(LDEBUG)
     
    879894    u->s = 3;
    880895    mpz_init(u->z);
    881     mpz_t q;
    882     mpz_init(q);
    883     mpz_tdiv_qr(q,u->z, aa, b->z);
    884     mpz_clear(q);
     896    mpz_mod(u->z, aa, b->z);
    885897    mpz_clear(aa);
    886898    u=nlShort3(u);
     
    900912  mpz_init(u->z);
    901913  u->s = 3;
    902   mpz_t q;
    903   mpz_init(q);
    904   mpz_tdiv_qr(q, u->z, a->z, b->z);
    905   mpz_clear(q);
     914  mpz_mod(u->z, a->z, b->z);
    906915  if (bb!=NULL)
    907916  {
     
    13491358      if (mpz_cmp_si(gcd,(long)1)!=0)
    13501359      {
    1351         MPZ_EXACTDIV(x->z,x->z,gcd);
    1352         MPZ_EXACTDIV(x->n,x->n,gcd);
     1360        mpz_divexact(x->z,x->z,gcd);
     1361        mpz_divexact(x->n,x->n,gcd);
    13531362        if (mpz_cmp_si(x->n,(long)1)==0)
    13541363        {
     
    13941403    mpz_t bt;
    13951404    mpz_init_set(bt,b->n);
    1396     MPZ_EXACTDIV(bt,bt,gcd);
     1405    mpz_divexact(bt,bt,gcd);
    13971406    if (SR_HDL(a) & SR_INT)
    13981407      mpz_mul_si(result->z,bt,SR_TO_INT(a));
     
    16461655  if (mpz_cmp_si(gcd,(long)1)!=0)
    16471656  {
    1648     MPZ_EXACTDIV(x->z,x->z,gcd);
    1649     MPZ_EXACTDIV(x->n,x->n,gcd);
     1657    mpz_divexact(x->z,x->z,gcd);
     1658    mpz_divexact(x->n,x->n,gcd);
    16501659    if (mpz_cmp_si(x->n,(long)1)==0)
    16511660    {
     
    28032812  else
    28042813  {
    2805     if (mpz_isNeg(a->z))
    2806     {
    2807       if (mpz_isNeg(b->z))
    2808       {
    2809         mpz_add(a->z,a->z,b->z);
    2810       }
    2811       else
    2812       {
    2813         mpz_sub(a->z,a->z,b->z);
    2814       }
    2815       mpz_add_ui(a->z,a->z,1);
    2816     }
    2817     else
    2818     {
    2819       if (mpz_isNeg(b->z))
    2820       {
    2821         mpz_sub(a->z,a->z,b->z);
    2822       }
    2823       else
    2824       {
    2825         mpz_add(a->z,a->z,b->z);
    2826       }
    2827       mpz_sub_ui(a->z,a->z,1);
    2828     }
    2829     MPZ_DIV(a->z,a->z,b->z);
     2814    number rr=nlIntMod(a,b,r);
     2815    if (SR_HDL(rr) &  SR_INT) mpz_sub_ui(a->z,a->z,SR_TO_INT(rr));
     2816    else                      mpz_sub(a->z,a->z,rr->z);
     2817    mpz_divexact(a->z,a->z,b->z);
    28302818    a=nlShort3_noinline(a);
    28312819  }
Note: See TracChangeset for help on using the changeset viewer.