Changeset a0707f8 in git


Ignore:
Timestamp:
Mar 13, 2017, 2:19:10 PM (7 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
17c3150d26605e770ae78cd36b6201409f4f1ab3
Parents:
a5b3bfc89e0d6875d26d979d8393b09e12c97621
Message:
code review: rings with Zn Znm, Z2m coefficients, changed nlGMP
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • Singular/ipshell.cc

    ra5b3bf ra0707f8  
    56905690  {
    56915691    // TODO: change to use coeffs_BIGINT!?
    5692     modBase = (mpz_ptr) omAlloc(sizeof(mpz_t));
     5692    mpz_t modBase;
    56935693    mpz_init_set_si(modBase, 0);
    56945694    if (pn->next!=NULL)
     
    57135713      {
    57145714        number p=(number)pnn->next->CopyD();
    5715         nlGMP(p,(number)modBase,coeffs_BIGINT); // TODO? // extern void   nlGMP(number &i, number n, const coeffs r); // FIXME: n_MPZ( modBase, p, coeffs_BIGINT); ?
     5715        nlGMP(p,modBase,coeffs_BIGINT); // TODO? // extern void   nlGMP(number &i, mpz_t n, const coeffs r); // FIXME: n_MPZ( modBase, p, coeffs_BIGINT); ?
    57165716        n_Delete(&p,coeffs_BIGINT);
    57175717      }
     
    57405740        //ringtype = 1;       // Use Z/2^ch
    57415741        cf=nInitChar(n_Z2m,(void*)(long)modExponent);
    5742         mpz_clear(modBase);
    5743         omFreeSize (modBase, sizeof (mpz_t));
    57445742      }
    57455743      else
     
    57725770    }
    57735771    assume( cf != NULL );
     5772    mpz_clear(modBase);
    57745773  }
    57755774#endif
  • Singular/number2.cc

    ra5b3bf ra0707f8  
    4646    {
    4747      ZnmInfo info;
    48       mpz_ptr modBase= (mpz_ptr) omAlloc(sizeof(mpz_t));
     48      mpz_t modBase;
    4949      mpz_init_set_ui(modBase,i2);
    5050      info.base= modBase;
    5151      info.exp= 1;
     52      if (mpz_popcount((mpz_ptr)modBase)==1) // is a power of 2
     53      {
     54        // is exponent <=2^(8*sizeof(unsigned long))
     55        if (i2<(8*sizeof(unsigned long)))
     56        {
     57          mpz_clear(modBase);
     58          res->data=(void *) nInitChar(n_Z2m,(void*)(long)i2);
     59          return FALSE;
     60        }
     61        else
     62        {
     63          mpz_set_ui(modBase,2);
     64          info.exp=i2;
     65          res->data=(void *) nInitChar(n_Znm,&info);
     66          mpz_clear(modBase);
     67          return FALSE;
     68        }
     69      }
    5270      res->data=(void *)nInitChar(n_Zn,&info);
     71      mpz_clear(modBase);
    5372    }
    5473    return FALSE;
     
    6382  {
    6483    ZnmInfo info;
    65     number modBase= (number) omAlloc(sizeof(mpz_t));
    66     nlGMP(i2,modBase,coeffs_BIGINT); // FIXME? TODO? // extern void   nlGMP(number &i, number n, const coeffs r); // to be replaced with n_MPZ(modBase,i2,coeffs_BIGINT); // ?
     84    mpz_t modBase;
     85    mpz_init(modBase);
     86    nlGMP(i2,modBase,coeffs_BIGINT); // FIXME? TODO? // extern void   nlGMP(number &i, mpz_t n, const coeffs r); // to be replaced with n_MPZ(modBase,i2,coeffs_BIGINT); // ?
    6787    info.base= (mpz_ptr)modBase;
    6888    info.exp= 1;
     89    if (mpz_popcount(modBase)==1) // is a power of 2
     90    {
     91      // is exponent <=2^(8*sizeof(unsigned long))
     92      mp_bitcnt_t l=mpz_scan1 (modBase,0);
     93      if ((l>0) && (l<=8*sizeof(unsigned long)))
     94      {
     95        res->data=(void *) nInitChar(n_Z2m,(void*)(long)l);
     96      }
     97      else
     98      {
     99        mpz_set_ui(modBase,2);
     100        info.exp= l;
     101        res->data=(void *) nInitChar(n_Znm,&info);
     102      }
     103      mpz_clear(modBase);
     104      return FALSE;
     105    }
    69106    res->data=(void *)nInitChar(n_Zn,&info);
     107    mpz_clear(modBase);
    70108    return FALSE;
    71109  }
  • Tst/Short/bug_tr237.res.gz.uu

    ra5b3bf ra0707f8  
    11begin 640 bug_tr237.res.gz
    2 M'XL("*=C15@``V)U9U]T<C(S-RYR97,`S5?1;ILP%'V/U'^PT!Z@803;F-!4
    3 MY6'=RZ1I4I<])6HK$IP,C9((W"W=U\].,%P(I%+72N4EY.;>X\/AW&MG^N/S
    4 MEV\((1RBKU\^(4,4PDF3A7%Y-IB6/Y$0R>A]DB7"M&1<W:`P1(O'];W("1T[
    5 M&?_C%"(250D-45WO.6@T0LN?45Z('`WYCB\?!9^@/,G6*.?;G!<\BT2RR>H:
    6 MYB"9K!*F@(D/8<=.B>#&6W2%3-<6EFWN["?+CK>@*`A+*',1%5S=J(>`Z6:\
    7 M-8EE7UM5S46H^3:*9(U.P6Z(IG)9X\!!*J`X&,.CLJ$A%S"&Z'<KCM0/QM!(
    8 MMY=`;"S?@WKB!BJ@*K.K5/E>2BW-J04@I/AZ%1E5TF_X:I4L$YZ)8H)N;DQA
    9 MJ7#V^+#@.=JL]MS0!!$5+:]%NEG^4KZ0\4T>[]%0N@49]35!6?3`"W6[0T\=
    10 M(`2"7%=$/?`Z,=N[Y.,+KAK#=P!@Y8^9U##)!%_SO,,?N,<?LUFO/?`%($Y<
    11 MI],KLUF5@6$Z<=["-X1V^*9^!&`;XK5L(U4_/Y=]&/.5[&Q=;O8C53H0=MII
    12 M4H)W8#,"IP89_[_-2`!L1BXJFP5**6VTH&L64;?/:Z.@UVT4VH>2/K>-@BJ'
    13 MOLEHHEZGQ6KFP&240<ZR+5_@N`9PK<;X.<^-%LE:O@4S>!=#C@90B=(L:5*(
    14 MQNN;X]O)0&+H3WF51MI'214%"6IKTU$"HWB@OX/L70OH:3"G1TE-="E$)[R-
    15 M3Y*Z[JQR!W/O\/U>IE^Y6A+/!?IX6#>3LD#.H]1F[L$%]M]F*WFDNY7*HD:=
    16 M:BD*6\J#YQ//.UH4N\?K'IM6._946;TD.\$7/\<7CC!/;VS+[]AEKEI]N7G8
    17 MIGP'<5IJ!:>[9I5N(C%/;C72!+LHEFTD"AM%<9RHPUF4(J:CULA,[L@0O[#%
    18 MXE=M,0]NQZQG.VY(9"=5.H:S\J#H:PU,1L#`;$"WR'0,4$:[#W<,GID8T\[U
    19 MY;2`NX]O2__L&A9@?N_>8Y83T[?NJ*7('"R(H079N/M(W"ZO\N'<8]4FR5I$
    20 MV3%1OW^3U"NQ$T1]_"Q1!HGZ!!#UJ29*6D1)!U&OGR@Y09#U$R20&&QZ?PS.
    21 ;'+X\@*A_9.HOUV,AT2\_G`W^`6TF]4;)#0``
     2M'XL("/N6QE@``V)U9U]T<C(S-RYR97,`S5=!;YLP%+[S*RRT`S2,8!L3FJ@<
     3MUETJ39.Z[)2HK4AP,C1*(G"V=+]^=H*Q"9!J72O5%^#QWN>/Y^\]F^GWSS=?
     4M`0`P`E]N/@&3E<S-TH4Y,:;5&Q0!;GQ(\Y19]L005Q!%8+%;/[`"X9&;T]]N
     5MR6)61^`(U/>^"X9#L/P1%R4KP(#NZ7+'Z!@4:;X&!=T6M*1YS-)-7H<0%W!?
     6M\7ZJ6`0:YLBMPKUD"ZZ`Y3G,=JR]\V0[R5:%A%&%8RWBDHH;3E]WMI*MA6SG
     7MVJY#+B-)58_A(=(#>A&8\CG-(P'^Z8*`.6A%#4R.;P[`KQ,[$"_,@9EM)RK'
     8MD&>??VL#4^.9J8^"?#6J'%I36YEYRN44$T,D?$-7JW29TIR58W![:S%;F//=
     9MXX(68+,Z\`)C@(2U&HMLL_PII,#MFR(Y@(%LJWFH,09Y_$A+<;L'3QT@2`>Y
     10MKGGZ:ADA.4CCXPM&#1&X"JY6Q8RG+\T97=.BK0K8K8K9K%<4\%)Q1I[;)9#9
     11MK':`FC-RWT`K"+>UHMAK4D%^4RH\UQ<7O.02NN(U+*.M?J`Z`XB<51?_^G<@
     12M+:1U"#3Z;VFA4$D+7=;2"D66I+C"CJZ#O1Y]#<->A6%--!CU*&P8UB[X+7H0
     13M]KMTI5AKRL)$X\M+\-]5UH!5>1@]H[.AA>[#=]'(<*BEH))'EI9,7[,YO!L;
     14M'$%>^:B4<["BVJHYB`FE%>G6T)#/FO?^!.C)F..64Q.=IZ$+'CKP+*GKSBC/
     15MF/O'YP?N?N7)C/B>RHX/9?&(I2]HG#G$.ZZ^\Z=1.C[J+)TJI!$E2@CK)>1K
     16M9P[?;\T(O=:D;:%*E9Z)4O.1?J[P.:Y:I_+EKK7\!CWBB:F7F\=M1O<Z3#--
     17MX=DJ666;F,W3.XDSAAY(TG7*2@?$29**HU:<`2*M]M!*[]$`OK"LDE<M*U_;
     18M:TGW7MM(CY/6WE!OBL=LOE)G)$AUQ@;P"96.3DEPYW&-:,<@0J1:`]X=].TE
     19M<+AL]OK2DZ!O<[$6?#%S9@7V/;8%D:/NH*X[,NH\W9Y&U^Y:BR/U#DA.2)(6
     20MR:!W!Y33D#,D`_@<2:*3#)`B&6!)$IV01&V2?B])=(8<Z26'=%):@0<C=8X(
     217^)E"_$J)GZ5=R:$G'XR_!H<%.(`-````
    2222`
    2323end
  • Tst/Short/bug_tr237.stat

    ra5b3bf ra0707f8  
    1 1 >> tst_memory_0 :: 1480942444:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:120648
    2 1 >> tst_memory_1 :: 1480942444:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:2228224
    3 1 >> tst_memory_2 :: 1480942444:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:2228224
    4 1 >> tst_timer_1 :: 1480942444:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:1
     11 >> tst_memory_0 :: 1489409787:4102, 64 bit:4.1.0:x86_64-Linux:nepomuck:95944
     21 >> tst_memory_1 :: 1489409787:4102, 64 bit:4.1.0:x86_64-Linux:nepomuck:2211840
     31 >> tst_memory_2 :: 1489409787:4102, 64 bit:4.1.0:x86_64-Linux:nepomuck:2211840
     41 >> tst_timer_1 :: 1489409787:4102, 64 bit:4.1.0:x86_64-Linux:nepomuck:1
  • libpolys/coeffs/longrat.cc

    ra5b3bf ra0707f8  
    983983  else
    984984  {
    985     mpz_ptr dummy;
    986     dummy = (mpz_ptr) omAlloc(sizeof(mpz_t));
     985    mpz_t dummy;
    987986    mpz_init_set_ui(dummy, ch);
    988987    ZnmInfo info;
     
    990989    info.exp = (unsigned long) 1;
    991990    rr = nInitChar(n_Zn, (void*)&info);
     991    mpz_clear(dummy);
    992992  }
    993993  #endif
     
    14801480* convert number i (from Q) to GMP and warn if denom != 1
    14811481*/
    1482 void nlGMP(number &i, number n, const coeffs r)
     1482void nlGMP(number &i, mpz_t n, const coeffs r)
    14831483{
    14841484  // Hier brauche ich einfach die GMP Zahl
     
    14871487  if (SR_HDL(i) & SR_INT)
    14881488  {
    1489     mpz_set_si((mpz_ptr) n, SR_TO_INT(i));
     1489    mpz_set_si(n, SR_TO_INT(i));
    14901490    return;
    14911491  }
     
    14941494     WarnS("Omitted denominator during coefficient mapping !");
    14951495  }
    1496   mpz_set((mpz_ptr) n, i->z);
     1496  mpz_set(n, i->z);
    14971497}
    14981498#endif
  • libpolys/coeffs/longrat.h

    ra5b3bf ra0707f8  
    128128// FIXME: TODO:  why only if HAVE_RINGS? bug?
    129129#  ifdef HAVE_RINGS
    130 void   nlGMP(number &i, number n, const coeffs r); // to be replaced with n_MPZ(number n, number &i,const coeffs r)???
     130void   nlGMP(number &i, mpz_t n, const coeffs r); // to be replaced with n_MPZ(number n, number &i,const coeffs r)???
    131131number nlMapGMP(number from, const coeffs src, const coeffs dst);
    132132#  endif
  • libpolys/coeffs/rintegers.cc

    ra5b3bf ra0707f8  
    333333  mpz_ptr erg = (mpz_ptr) omAllocBin(gmp_nrz_bin);
    334334  mpz_init(erg);
    335   nlGMP(from, (number) erg, src); // FIXME? TODO? // extern void   nlGMP(number &i, number n, const coeffs r); // to be replaced with n_MPZ(erg, from, src); // ?
     335  nlGMP(from, erg, src); // FIXME? TODO? // extern void   nlGMP(number &i, number n, const coeffs r); // to be replaced with n_MPZ(erg, from, src); // ?
    336336  return (number) erg;
    337337}
     
    481481{
    482482    long ch = r->cfInt(c, r);
    483     mpz_ptr dummy;
    484     dummy = (mpz_ptr) omAlloc(sizeof(mpz_t));
     483    mpz_t dummy;
    485484    mpz_init_set_ui(dummy, ch);
    486485    ZnmInfo info;
     
    488487    info.exp = (unsigned long) 1;
    489488    coeffs rr = nInitChar(n_Zn, (void*)&info);
     489    mpz_clear(dummy);
    490490    return(rr);
    491491}
     
    17851785static coeffs nrzQuot1(number c, const coeffs r)
    17861786{
    1787     mpz_ptr dummy;
    1788     dummy = (mpz_ptr) omAlloc(sizeof(mpz_t));
     1787    mpz_t dummy;
    17891788    if(n_Z_IS_SMALL(c))
    17901789    {
     
    18001799    info.exp = (unsigned long) 1;
    18011800    coeffs rr = nInitChar(n_Zn, (void*)&info);
     1801    mpz_clear(dummy);
    18021802    return(rr);
    18031803}
  • libpolys/coeffs/rmodulo2m.cc

    ra5b3bf ra0707f8  
    624624  mpz_ptr gmp = (mpz_ptr)omAllocBin(gmp_nrz_bin);
    625625  mpz_init(gmp);
    626   nlGMP(from, (number)gmp, src); // FIXME? TODO? // extern void   nlGMP(number &i, number n, const coeffs r); // to be replaced with n_MPZ(erg, from, src); // ?
     626  nlGMP(from, gmp, src); // FIXME? TODO? // extern void   nlGMP(number &i, number n, const coeffs r); // to be replaced with n_MPZ(erg, from, src); // ?
    627627  number res=nr2mMapGMP((number)gmp,src,dst);
    628628  mpz_clear(gmp); omFree((ADDRESS)gmp);
  • libpolys/coeffs/rmodulon.cc

    ra5b3bf ra0707f8  
    9898    mpz_init_set(a, r->modNumber);
    9999    mpz_init_set_ui(b, ch);
    100     mpz_ptr gcd;
    101     gcd = (mpz_ptr) omAlloc(sizeof(mpz_t));
     100    mpz_t gcd;
    102101    mpz_init(gcd);
    103102    mpz_gcd(gcd, a,b);
    104103    if(mpz_cmp_ui(gcd, 1) == 0)
    105         {
    106             WerrorS("constant in q-ideal is coprime to modulus in ground ring");
    107             WerrorS("Unable to create qring!");
    108             return NULL;
    109         }
     104    {
     105      WerrorS("constant in q-ideal is coprime to modulus in ground ring");
     106      WerrorS("Unable to create qring!");
     107      return NULL;
     108    }
    110109    if(r->modExponent == 1)
    111110    {
    112         ZnmInfo info;
    113         info.base = gcd;
    114         info.exp = (unsigned long) 1;
    115         rr = nInitChar(n_Zn, (void*)&info);
     111      ZnmInfo info;
     112      info.base = gcd;
     113      info.exp = (unsigned long) 1;
     114      rr = nInitChar(n_Zn, (void*)&info);
    116115    }
    117116    else
    118117    {
    119         ZnmInfo info;
    120         info.base = r->modBase;
    121         int kNew = 1;
    122         mpz_t baseTokNew;
    123         mpz_init(baseTokNew);
    124         mpz_set(baseTokNew, r->modBase);
    125         while(mpz_cmp(gcd, baseTokNew) > 0)
    126         {
    127           kNew++;
    128           mpz_mul(baseTokNew, baseTokNew, r->modBase);
    129         }
    130         //printf("\nkNew = %i\n",kNew);
    131         info.exp = kNew;
    132         mpz_clear(baseTokNew);
    133         rr = nInitChar(n_Znm, (void*)&info);
     118      ZnmInfo info;
     119      info.base = r->modBase;
     120      int kNew = 1;
     121      mpz_t baseTokNew;
     122      mpz_init(baseTokNew);
     123      mpz_set(baseTokNew, r->modBase);
     124      while(mpz_cmp(gcd, baseTokNew) > 0)
     125      {
     126        kNew++;
     127        mpz_mul(baseTokNew, baseTokNew, r->modBase);
     128      }
     129      //printf("\nkNew = %i\n",kNew);
     130      info.exp = kNew;
     131      mpz_clear(baseTokNew);
     132      rr = nInitChar(n_Znm, (void*)&info);
    134133    }
     134    mpz_clear(gcd);
    135135    return(rr);
    136136}
     
    690690  mpz_ptr erg = (mpz_ptr)omAllocBin(gmp_nrz_bin);
    691691  mpz_init(erg);
    692   nlGMP(from, (number)erg, src); // FIXME? TODO? // extern void   nlGMP(number &i, number n, const coeffs r); // to be replaced with n_MPZ(erg, from, src); // ?
     692  nlGMP(from, erg, src); // FIXME? TODO? // extern void   nlGMP(number &i, number n, const coeffs r); // to be replaced with n_MPZ(erg, from, src); // ?
    693693  mpz_mod(erg, erg, dst->modNumber);
    694694  return (number)erg;
     
    933933  r->cfIntMod      = nrnMod;
    934934  r->cfExactDiv    = nrnDiv;
    935   r->cfInpNeg         = nrnNeg;
     935  r->cfInpNeg      = nrnNeg;
    936936  r->cfInvers      = nrnInvers;
    937937  r->cfDivBy       = nrnDivBy;
Note: See TracChangeset for help on using the changeset viewer.