Changeset d51d87 in git for factory/facFqFactorize.cc


Ignore:
Timestamp:
Aug 30, 2013, 7:45:42 PM (11 years ago)
Author:
Oleksandr Motsak <motsak@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
c44f0c47dd0522db3b9d26283ffefec28e6d53aa
Parents:
62e51f3a438d0476a7cc82ebe3df5d93b7a740b0035b6439d8381335d8497466228554322c60d1de
Message:
Merge pull request #354 from mmklee/multi_sw

Multi sw: absolute factorization
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/facFqFactorize.cc

    r62e51f rd51d87  
    88 *
    99 * ABSTRACT: "Efficient Multivariate Factorization over Finite Fields" by
    10  * L. Bernardin & M. Monagon. Precomputation of leading coefficients is 
     10 * L. Bernardin & M. Monagon. Precomputation of leading coefficients is
    1111 * described in "Sparse Hensel lifting" by E. Kaltofen
    1212 *
     
    743743  int k= F.level() - 1;
    744744  Variable x= Variable (1);
     745  CanonicalForm LCF=LC (F, x);
     746  CFList LCFeval;
     747
    745748  CFList result;
    746749  FFRandom genFF;
     
    818821    int l= F.level();
    819822    eval.insert (F);
     823    LCFeval.insert (LCF);
    820824    bool bad= false;
    821825    for (CFListIterator i= result; i.hasItem(); i++, l--)
    822826    {
    823827      eval.insert (eval.getFirst()(i.getItem(), l));
     828      LCFeval.insert (LCFeval.getFirst()(i.getItem(), l));
    824829      if (degree (eval.getFirst(), l - 1) != degree (F, l - 1))
    825830      {
     
    828833        result= CFList();
    829834        eval= CFList();
     835        LCFeval= CFList();
     836        bad= true;
     837        break;
     838      }
     839      if ((l != 2) && (degree (LCFeval.getFirst(), l-1) != degree (LCF, l-1)))
     840      {
     841        if (!find (list, random))
     842          list.append (random);
     843        result= CFList();
     844        eval= CFList();
     845        LCFeval= CFList();
    830846        bad= true;
    831847        break;
     
    841857        list.append (random);
    842858      result= CFList();
     859      LCFeval= CFList();
    843860      eval= CFList();
    844861      continue;
     
    852869        list.append (random);
    853870      result= CFList();
     871      LCFeval= CFList();
    854872      eval= CFList();
    855873      continue;
     
    863881        list.append (random);
    864882      result= CFList();
     883      LCFeval= CFList();
    865884      eval= CFList();
    866885      continue;
     
    20142033    }
    20152034    s++;
    2016     if (T.length() < 2*s || T.length() == s) 
     2035    if (T.length() < 2*s || T.length() == s)
    20172036    {
    20182037      delete [] v;
     
    36383657#endif
    36393658/* HAVE_NTL */
    3640 
Note: See TracChangeset for help on using the changeset viewer.