Changeset b1d287 in git for factory/facFqBivar.h


Ignore:
Timestamp:
Aug 1, 2012, 2:25:24 AM (11 years ago)
Author:
Oleksandr Motsak <motsak@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'ad2543eab51733612ba7d118afc77edca719600e')
Children:
0df59c8a8e59eded04e4aca4e57cfed188a00cf1
Parents:
09afeb85ea17e564813761786f76281c8162dad0362fc6799a207ad61d3be8abe0206e52b5782e50
Message:
Merge pull request #157 from mmklee/factory_catch_up_sw

Factory catch up sw
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/facFqBivar.h

    r09afeb rb1d287  
    88 *
    99 * @author Martin Lee
    10  *
    11  * @internal @version \$Id$
    1210 *
    1311 **/
     
    263261  decompress (contentXFactors, N);
    264262  decompress (contentYFactors, N);
    265   CFFList result, resultRoot;
     263  CFFList result;
    266264  if (F.inCoeffDomain())
    267265  {
     
    274272  vec_ZZ S;
    275273  F= compress (F, M, S);
    276   CanonicalForm pthRoot, A;
    277   CanonicalForm sqrfP= sqrfPart (F/Lc(F), pthRoot, info.getAlpha());
    278   CFList buf, bufRoot;
    279   int p= getCharacteristic();
    280   int l;
    281   if (degree (pthRoot) > 0)
    282   {
    283     pthRoot= maxpthRoot (pthRoot, p, l);
    284     result= FpBiFactorize (pthRoot, false);
    285     result.removeFirst();
    286     for (CFFListIterator i= result; i.hasItem(); i++)
    287       i.getItem()= CFFactor (N (decompress (i.getItem().factor(), M, S)),
    288                              i.getItem().exp()*ipower (p,l));
    289     result= Union (result, contentXFactors);
    290     result= Union (result, contentYFactors);
    291     normalize (result);
    292     result.insert (CFFactor (LcF, 1));
    293     return result;
    294   }
    295   else
    296   {
    297     buf= biFactorize (sqrfP, info);
    298     A= F/LcF;
    299     result= multiplicity (A, buf);
    300     for (CFFListIterator i= result; i.hasItem(); i++)
    301       i.getItem()= CFFactor (N (decompress (i.getItem().factor(), M, S)),
    302                              i.getItem().exp());
    303   }
    304   if (degree (A) > 0)
    305   {
    306     resultRoot= FpBiFactorize (A, false);
    307     resultRoot.removeFirst();
    308     for (CFFListIterator i= resultRoot; i.hasItem(); i++)
    309       i.getItem()= CFFactor (N (decompress (i.getItem().factor(), M, S)),
    310                              i.getItem().exp());
    311     result= Union (result, resultRoot);
    312   }
     274
     275  CFFList sqrf= FpSqrf (F, false);
     276  CFList bufResult;
     277  sqrf.removeFirst();
     278  CFListIterator i;
     279  for (CFFListIterator iter= sqrf; iter.hasItem(); iter++)
     280  {
     281    bufResult= biFactorize (iter.getItem().factor(), info);
     282    for (i= bufResult; i.hasItem(); i++)
     283      result.append (CFFactor (N (decompress (i.getItem(), M, S)),
     284                               iter.getItem().exp()));
     285  }
     286
    313287  result= Union (result, contentXFactors);
    314288  result= Union (result, contentYFactors);
     
    388362  decompress (contentXFactors, N);
    389363  decompress (contentYFactors, N);
    390   CFFList result, resultRoot;
     364  CFFList result;
    391365  if (F.inCoeffDomain())
    392366  {
     
    399373  vec_ZZ S;
    400374  F= compress (F, M, S);
    401   CanonicalForm pthRoot, A, tmp;
    402   CanonicalForm sqrfP= sqrfPart (F/Lc(F), pthRoot, alpha);
    403   CFList buf, bufRoot;
    404   int p= getCharacteristic();
    405   int q= ipower (p, degree (getMipo (alpha)));
    406   int l;
    407   if (degree (pthRoot) > 0)
    408   {
    409     pthRoot= maxpthRoot (pthRoot, q, l);
    410     result= FqBiFactorize (pthRoot, alpha, false);
    411     result.removeFirst();
    412     for (CFFListIterator i= result; i.hasItem(); i++)
    413       i.getItem()= CFFactor (N (decompress (i.getItem().factor(), M, S)),
    414                              i.getItem().exp()*ipower (p,l));
    415     result= Union (result, contentXFactors);
    416     result= Union (result, contentYFactors);
    417     normalize (result);
    418     result.insert (CFFactor (LcF, 1));
    419     return result;
    420   }
    421   else
    422   {
    423     buf= biFactorize (sqrfP, info);
    424     A= F/LcF;
    425     result= multiplicity (A, buf);
    426     for (CFFListIterator i= result; i.hasItem(); i++)
    427       i.getItem()= CFFactor (N (decompress (i.getItem().factor(), M, S)),
    428                              i.getItem().exp());
    429   }
    430   if (degree (A) > 0)
    431   {
    432     resultRoot= FqBiFactorize (A, alpha, false);
    433     resultRoot.removeFirst();
    434     for (CFFListIterator i= resultRoot; i.hasItem(); i++)
    435       i.getItem()= CFFactor (N (decompress (i.getItem().factor(), M, S)),
    436                              i.getItem().exp());
    437     result= Union (result, resultRoot);
    438   }
     375
     376  CFFList sqrf= FqSqrf (F, alpha, false);
     377  CFList bufResult;
     378  sqrf.removeFirst();
     379  CFListIterator i;
     380  for (CFFListIterator iter= sqrf; iter.hasItem(); iter++)
     381  {
     382    bufResult= biFactorize (iter.getItem().factor(), info);
     383    for (i= bufResult; i.hasItem(); i++)
     384      result.append (CFFactor (N (decompress (i.getItem(), M, S)),
     385                               iter.getItem().exp()));
     386  }
     387
    439388  result= Union (result, contentXFactors);
    440389  result= Union (result, contentYFactors);
     
    515464  decompress (contentXFactors, N);
    516465  decompress (contentYFactors, N);
    517   CFFList result, resultRoot;
     466  CFFList result;
    518467  if (F.inCoeffDomain())
    519468  {
     
    526475  vec_ZZ S;
    527476  F= compress (F, M, S);
    528   CanonicalForm pthRoot, A;
    529   CanonicalForm sqrfP= sqrfPart (F/LcF, pthRoot, info.getAlpha());
    530   CFList buf;
    531   int p= getCharacteristic();
    532   int q= ipower (p, getGFDegree());
    533   int l;
    534   if (degree (pthRoot) > 0)
    535   {
    536     pthRoot= maxpthRoot (pthRoot, q, l);
    537     result= GFBiFactorize (pthRoot, false);
    538     result.removeFirst();
    539     for (CFFListIterator i= result; i.hasItem(); i++)
    540       i.getItem()= CFFactor (N (decompress (i.getItem().factor(), M, S)),
    541                              i.getItem().exp()*ipower (p,l));
    542     result= Union (result, contentXFactors);
    543     result= Union (result, contentYFactors);
    544     normalize (result);
    545     result.insert (CFFactor (LcF, 1));
    546     return result;
    547   }
    548   else
    549   {
    550     buf= biFactorize (sqrfP, info);
    551     A= F/LcF;
    552     result= multiplicity (A, buf);
    553     for (CFFListIterator i= result; i.hasItem(); i++)
    554       i.getItem()= CFFactor (N (decompress (i.getItem().factor(), M, S)),
    555                              i.getItem().exp());
    556   }
    557   if (degree (A) > 0)
    558   {
    559     resultRoot= GFBiFactorize (A, false);
    560     resultRoot.removeFirst();
    561     for (CFFListIterator i= resultRoot; i.hasItem(); i++)
    562       i.getItem()= CFFactor (N (decompress (i.getItem().factor(), M, S)),
    563                              i.getItem().exp());
    564     result= Union (result, resultRoot);
    565   }
     477
     478  CFFList sqrf= GFSqrf (F, false);
     479  CFList bufResult;
     480  sqrf.removeFirst();
     481  CFListIterator i;
     482  for (CFFListIterator iter= sqrf; iter.hasItem(); iter++)
     483  {
     484    bufResult= biFactorize (iter.getItem().factor(), info);
     485    for (i= bufResult; i.hasItem(); i++)
     486      result.append (CFFactor (N (decompress (i.getItem(), M, S)),
     487                               iter.getItem().exp()));
     488  }
     489
    566490  result= Union (result, contentXFactors);
    567491  result= Union (result, contentYFactors);
Note: See TracChangeset for help on using the changeset viewer.