Changeset b17fa5 in git for factory/facAlgFuncUtil.cc


Ignore:
Timestamp:
May 9, 2014, 10:54:58 AM (10 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
Children:
abde36b449ab6a0f2a38cfd641d669db6be6a1b9
Parents:
5a06b22d913c4ebbbafbc22723d9ebfed2f0c830
git-author:
Martin Lee <martinlee84@web.de>2014-05-09 10:54:58+02:00
git-committer:
Martin Lee <martinlee84@web.de>2014-05-12 14:35:03+02:00
Message:
chg: format
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/facAlgFuncUtil.cc

    r5a06b22 rb17fa5  
    320320      G= q;
    321321    }
    322     iter.getItem()= CFFactor (iter.getItem().factor(), iter.getItem().exp()+count);
     322    iter.getItem()= CFFactor (iter.getItem().factor(),
     323                              iter.getItem().exp() + count);
    323324  }
    324325}
     
    435436
    436437CanonicalForm
    437 Sprem ( const CanonicalForm &f, const CanonicalForm &g, CanonicalForm & m, CanonicalForm & q )
     438Sprem (const CanonicalForm &f, const CanonicalForm &g, CanonicalForm & m,
     439       CanonicalForm & q )
    438440{
    439441  CanonicalForm ff, gg, l, test, retvalue;
     
    442444  Variable vf, vg, v;
    443445
    444   if ( (vf = f.mvar()) < (vg = g.mvar()) )
    445   {
    446     m=CanonicalForm(0); q=CanonicalForm(0);
     446  if ((vf = f.mvar()) < (vg = g.mvar()))
     447  {
     448    m= 0;
     449    q= 0;
    447450    return f;
    448451  }
     
    451454    if ( vf == vg )
    452455    {
    453       ff = f; gg = g;
    454       reord = false;
    455       v = vg; // == x
    456     }
    457     else
    458     {
    459       v = Variable(level(f.mvar()) + 1);
    460       ff = swapvar(f,vg,v); // == r
    461       gg = swapvar(g,vg,v); // == v
     456      ff= f;
     457      gg= g;
     458      reord= false;
     459      v= vg; // == x
     460    }
     461    else
     462    {
     463      v= Variable (f.level() + 1);
     464      ff= swapvar (f, vg, v); // == r
     465      gg= swapvar (g, vg, v); // == v
    462466      reord=true;
    463467    }
    464     dg = degree( gg, v ); // == dv
    465     df = degree( ff, v ); // == dr
    466     if (dg <= df) {l=LC(gg); gg = gg -LC(gg)*power(v,dg);}
    467     else { l = 1; }
     468    dg= degree (gg, v); // == dv
     469    df= degree (ff, v); // == dr
     470    if (dg <= df)
     471    {
     472      l= LC (gg);
     473      gg= gg - LC(gg)*power(v,dg);
     474    }
     475    else
     476      l = 1;
    468477    n= 0;
    469     while ( ( dg <= df  ) && ( !ff.isZero()) )
    470     {
    471       test= power(v,df-dg) * gg * LC(ff);
    472       if ( df == 0 ){ff= ff.genZero();}
    473       else {ff= ff - LC(ff)*power(v,df);}
    474       ff = l*ff-test;
    475       df= degree(ff,v);
     478    while ((dg <= df) && (!ff.isZero()))
     479    {
     480      test= gg*LC (ff)*power (v, df - dg);
     481      if (df == 0)
     482        ff= 0;
     483      else
     484        ff= ff - LC(ff)*power(v,df);
     485      ff= l*ff - test;
     486      df= degree (ff, v);
    476487      n++;
    477488    }
    478     if ( reord )
    479     {
    480       retvalue= swapvar( ff, vg, v );
    481     }
    482     else
    483     {
     489
     490    if (reord)
     491      retvalue= swapvar (ff, vg, v);
     492    else
    484493      retvalue= ff;
    485     }
    486     m= power(l,n);
    487     if ( fdivides(g,m*f-retvalue) )
    488       q= (m*f-retvalue)/g;
    489     else
    490       q= CanonicalForm(0);
     494
     495    m= power (l, n);
     496    if (fdivides (g, m*f - retvalue))
     497      q= (m*f - retvalue)/g;
     498    else
     499      q= 0;
    491500    return retvalue;
    492501  }
     
    542551  int charac= getCharacteristic();
    543552  setCharacteristic(0); // need it for k !
    544   int k=1, m=1, length=degreelist.length();
     553  int k= 1, m= 1, length= degreelist.length();
    545554  IntListIterator i;
    546555
    547   for (i=degreelist; i.hasItem(); i++) m= m*i.getItem();
    548   int q=charac;
    549   while (q <= ((n*m)*(n*m)/2)) { k= k+1; q= q*charac;}
    550   int l=0;
    551   do {
    552     for (i=degreelist; i.hasItem(); i++){
    553       l= l+1;
    554       if ( igcd(k,i.getItem()) == 1){
    555         if ( l==length ){ setCharacteristic(charac);  return k; }
     556  for (i= degreelist; i.hasItem(); i++)
     557     m= m*i.getItem();
     558  int q= charac;
     559  while (q <= ((n*m)*(n*m)/2))
     560  {
     561    k= k+1;
     562    q= q*charac;
     563  }
     564  int l= 0;
     565  do
     566  {
     567    for (i= degreelist; i.hasItem(); i++)
     568    {
     569      l= l + 1;
     570      if (igcd (k, i.getItem()) == 1)
     571      {
     572        if (l == length)
     573        {
     574          setCharacteristic (charac);
     575          return k;
     576        }
    556577      }
    557       else { break; }
    558     }
    559     k= k+1; l=0;
    560   }
    561   while ( 1 );
     578      else
     579        break;
     580    }
     581    k= k + 1;
     582    l= 0;
     583  }
     584  while (1);
    562585}
    563586
     
    587610  while (degree (pi1,x) > 0)
    588611  {
    589     psqr( pi, pi1, q, pi2, m, x);
     612    psqr (pi, pi1, q, pi2, m, x);
    590613    pi2 /= bi;
    591614
     
    594617    t0= tmp;
    595618    t1 /= bi;
    596     pi = pi1; pi1 = pi2;
    597     if ( degree ( pi1, x ) > 0 )
    598     {
    599       delta = degree( pi, x ) - degree( pi1, x );
    600       if ( (delta+1) % 2 )
    601         bi = LC( pi, x ) * power( Hi, delta );
     619    pi= pi1;
     620    pi1= pi2;
     621    if (degree (pi1, x) > 0)
     622    {
     623      delta= degree (pi, x) - degree (pi1, x);
     624      if ((delta + 1) % 2)
     625        bi= LC (pi, x)*power (Hi, delta);
    602626      else
    603         bi = -LC( pi, x ) * power( Hi, delta );
    604       Hi = power( LC( pi1, x ), delta ) / power( Hi, delta-1 );
     627        bi= -LC (pi, x)*power (Hi, delta);
     628      Hi= power (LC (pi1, x), delta)/power (Hi, delta - 1);
    605629    }
    606630  }
Note: See TracChangeset for help on using the changeset viewer.