Changeset 311902 in git for ntl/src/ZZ_pXFactoring.c


Ignore:
Timestamp:
Sep 14, 2004, 5:07:14 PM (20 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
Children:
3dc8190053bae3cfc78bef27aa2b85939c7ee5ed
Parents:
eb5966cd0255f880eee6d8155b270910331bcba8
Message:
*hannes: 5.3.2-C++-fix


git-svn-id: file:///usr/local/Singular/svn/trunk@7474 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ntl/src/ZZ_pXFactoring.c

    reb5966 r311902  
    9292   for (k = 0; k < n; k++) {
    9393
    94       if (verbose && k % 10 == 0) cerr << "+";
    95 
    9694      pos = -1;
    9795      for (i = l; i < n; i++) {
     
    164162   set(h);
    165163   for (j = 0; j < n; j++) {
    166       if (verbose && j % 10 == 0) cerr << "+";
    167164
    168165      m = deg(h);
     
    391388   ZZ_pX g, h;
    392389
    393    if (verbose) { cerr << "computing X^p..."; t = GetTime(); }
    394390   PowerXMod(g, p, F);
    395    if (verbose) { cerr << (GetTime()-t) << "\n"; }
    396391
    397392   vec_long D;
     
    400395   vec_ZZVec M;
    401396
    402    if (verbose) { cerr << "building matrix..."; t = GetTime(); }
    403397   BuildMatrix(M, n, g, F, verbose);
    404    if (verbose) { cerr << (GetTime()-t) << "\n"; }
    405 
    406    if (verbose) { cerr << "diagonalizing..."; t = GetTime(); }
     398
    407399   NullSpace(r, D, M, verbose);
    408    if (verbose) { cerr << (GetTime()-t) << "\n"; }
    409 
    410 
    411    if (verbose) cerr << "number of factors = " << r << "\n";
     400
    412401
    413402   if (r == 1) {
     
    416405      return;
    417406   }
    418 
    419    if (verbose) { cerr << "factor extraction..."; t = GetTime(); }
    420407
    421408   vec_ZZ_p roots;
     
    432419
    433420   while (factors.length() < r) {
    434       if (verbose) cerr << "+";
    435421      RandomBasisElt(g, D, M);
    436422      S.kill();
     
    456442   }
    457443
    458    if (verbose) { cerr << (GetTime()-t) << "\n"; }
    459 
    460    if (verbose) {
    461       cerr << "degrees:";
    462       long i;
    463       for (i = 0; i < factors.length(); i++)
    464          cerr << " " << deg(factors[i]);
    465       cerr << "\n";
    466    }
    467444}
    468445
     
    478455
    479456   
    480    if (verbose) { cerr << "square-free decomposition..."; t = GetTime(); }
    481457   SquareFreeDecomp(sfd, f);
    482    if (verbose) cerr << (GetTime()-t) << "\n";
    483458
    484459   factors.SetLength(0);
     
    487462
    488463   for (i = 0; i < sfd.length(); i++) {
    489       if (verbose) {
    490          cerr << "factoring multiplicity " << sfd[i].b
    491               << ", deg = " << deg(sfd[i].a) << "\n";
    492       }
    493464
    494465      SFBerlekamp(x, sfd[i].a, verbose);
     
    504475void AddFactor(vec_pair_ZZ_pX_long& factors, const ZZ_pX& g, long d, long verbose)
    505476{
    506    if (verbose)
    507       cerr << "degree=" << d << ", number=" << deg(g)/d << "\n";
    508477   append(factors, cons(g, d));
    509478}
     
    516485{
    517486   if (limit == 0) return;
    518 
    519    if (verbose) cerr << "+";
    520487
    521488   ZZ_pX t1;
     
    771738   double t;
    772739
    773    if (verbose) { cerr << "finding roots..."; t = GetTime(); }
    774740   FindRoots(roots, f);
    775    if (verbose) { cerr << (GetTime()-t) << "\n"; }
    776741
    777742   long r = roots.length();
     
    808773   ZZ_pX bb;
    809774
    810    if (verbose) cerr << "+";
    811 
    812775   EDFSplit(v, f, b, d);
    813776   for (i = 0; i < v.length(); i++) {
     
    854817
    855818   
    856    double t;
    857    if (verbose) {
    858       cerr << "computing EDF(" << d << "," << r << ")...";
    859       t = GetTime();
    860    }
    861 
    862819   factors.SetLength(0);
    863820
    864821   RecEDF(factors, f, b, d, verbose);
    865822
    866    if (verbose) cerr << (GetTime()-t) << "\n";
    867823}
    868824
     
    898854   ZZ_pX h;
    899855
    900    if (verbose) { cerr << "computing X^p..."; t = GetTime(); }
    901856   PowerXMod(h, p, F);
    902    if (verbose) { cerr << (GetTime()-t) << "\n"; }
    903857
    904858   vec_pair_ZZ_pX_long u;
    905    if (verbose) { cerr << "computing DDF..."; t = GetTime(); }
    906859   NewDDF(u, f, h, verbose);
    907    if (verbose) {
    908       t = GetTime()-t;
    909       cerr << "DDF time: " << t << "\n";
    910    }
    911860
    912861   ZZ_pX hh;
     
    952901
    953902   
    954    if (verbose) { cerr << "square-free decomposition..."; t = GetTime(); }
    955903   SquareFreeDecomp(sfd, f);
    956    if (verbose) cerr << (GetTime()-t) << "\n";
    957904
    958905   factors.SetLength(0);
     
    961908
    962909   for (i = 0; i < sfd.length(); i++) {
    963       if (verbose) {
    964          cerr << "factoring multiplicity " << sfd[i].b
    965               << ", deg = " << deg(sfd[i].a) << "\n";
    966       }
    967910
    968911      SFCanZass(x, sfd[i].a, verbose);
     
    14781421static vec_ZZ_pX GiantStepFile;
    14791422
    1480 static long use_files;
    1481 
    1482 
    14831423
    14841424static
     
    14991439
    15001440{
    1501    double t;
    1502 
    1503    if (verbose) { cerr << "generating baby steps..."; t = GetTime(); }
    1504 
    15051441   ZZ_pXModulus F;
    15061442   build(F, f);
     
    15141450   long i;
    15151451
    1516    if (!use_files) {
    15171452      BabyStepFile.kill();
    15181453      BabyStepFile.SetLength(k-1);
    1519    }
    15201454
    15211455   for (i = 1; i <= k-1; i++) {
    1522       if (use_files) {
    1523          ofstream s;
    1524          OpenWrite(s, FileName(ZZ_pX_stem, "baby", i));
    1525          s << h1 << "\n";
    1526          s.close();
    1527       }
    1528       else
    15291456         BabyStepFile(i) = h1;
    15301457
    15311458      CompMod(h1, h1, H, F);
    1532       if (verbose) cerr << "+";
    1533    }
    1534 
    1535    if (verbose)
    1536       cerr << (GetTime()-t) << "\n";
     1459   }
     1460
    15371461}
    15381462
     
    15411465void GenerateGiantSteps(const ZZ_pX& f, const ZZ_pX& h, long l, long verbose)
    15421466{
    1543 
    1544    double t;
    1545 
    1546    if (verbose) { cerr << "generating giant steps..."; t = GetTime(); }
    15471467
    15481468   ZZ_pXModulus F;
     
    15581478   long i;
    15591479
    1560    if (!use_files) {
    15611480      GiantStepFile.kill();
    15621481      GiantStepFile.SetLength(l);
    1563    }
    15641482
    15651483   for (i = 1; i <= l-1; i++) {
    1566       if (use_files) {
    1567          ofstream s;
    1568          OpenWrite(s, FileName(ZZ_pX_stem, "giant", i));
    1569          s << h1 << "\n";
    1570          s.close();
    1571       }
    1572       else
    15731484         GiantStepFile(i) = h1;
    15741485
    15751486      CompMod(h1, h1, H, F);
    1576       if (verbose) cerr << "+";
    1577    }
    1578 
    1579    if (use_files) {
    1580       ofstream s;
    1581       OpenWrite(s, FileName(ZZ_pX_stem, "giant", i));
    1582       s << h1 << "\n";
    1583       s.close();
    1584    }
    1585    else
     1487   }
     1488
    15861489      GiantStepFile(i) = h1;
    15871490
    1588    if (verbose)
    1589       cerr << (GetTime()-t) << "\n";
    15901491}
    15911492
     
    15931494void FileCleanup(long k, long l)
    15941495{
    1595    if (use_files) {
    1596       long i;
    1597 
    1598       for (i = 1; i <= k-1; i++)
    1599          remove(FileName(ZZ_pX_stem, "baby", i));
    1600 
    1601       for (i = 1; i <= l; i++)
    1602          remove(FileName(ZZ_pX_stem, "giant", i));
    1603    }
    1604    else {
    16051496      BabyStepFile.kill();
    16061497      GiantStepFile.kill();
    1607    }
    16081498}
    16091499
     
    16181508   u[len].b = m;
    16191509
    1620    if (verbose) {
    1621       cerr << "split " << m << " " << deg(g) << "\n";
    1622    }
    16231510}
    16241511
     
    16751562void FetchGiantStep(ZZ_pX& g, long gs, const ZZ_pXModulus& F)
    16761563{
    1677    if (use_files) {
    1678       ifstream s;
    1679    
    1680       OpenRead(s, FileName(ZZ_pX_stem, "giant", gs));
    1681    
    1682       s >> g;
    1683       s.close();
    1684    }
    1685    else
    16861564      g = GiantStepFile(gs);
    16871565
     
    16991577   long i;
    17001578   for (i = 1; i <= k-1; i++) {
    1701       if (use_files) {
    1702          ifstream s;
    1703          OpenRead(s, FileName(ZZ_pX_stem, "baby", i));
    1704          s >> v[i];
    1705          s.close();
    1706       }
    1707       else
    17081579         v[i] = BabyStepFile(i);
    17091580   }
     
    17171588
    17181589{
    1719    double t;
    1720 
    1721    if (verbose) {
    1722       cerr << "giant refine...";
    1723       t = GetTime();
    1724    }
    1725 
    17261590   u.SetLength(0);
    17271591
     
    17651629      }
    17661630
    1767       if (verbose && bs == 0) cerr << "+";
    1768 
    17691631      if (size == ZZ_pX_GCDTableSize && bs == 0) {
    17701632         NewProcessTable(u, f, F, buf, size, first_gs, k, verbose);
    1771          if (verbose) cerr << "*";
    17721633         size = 0;
    17731634      }
     
    17861647   if (size > 0) {
    17871648      NewProcessTable(u, f, F, buf, size, first_gs, k, verbose);
    1788       if (verbose) cerr << "*";
    17891649   }
    17901650
     
    17921652      NewAddFactor(u, f, 0, verbose);
    17931653
    1794    if (verbose) {
    1795       t = GetTime()-t;
    1796       cerr << "giant refine time: " << t << "\n";
    1797    }
    17981654}
    17991655
     
    18601716
    18611717{
    1862    double t;
    1863 
    1864    if (verbose) {
    1865       cerr << "baby refine...";
    1866       t = GetTime();
    1867    }
    18681718
    18691719   factors.SetLength(0);
     
    18841734      }
    18851735   }
    1886 
    1887    if (verbose) {
    1888       t = GetTime()-t;
    1889       cerr << "baby refine time: " << t << "\n";
    1890    }
    18911736}
    18921737
     
    19251770   ZZ_pX h1;
    19261771
    1927    if (CalcTableSize(deg(f), k + l - 1) > ZZ_pXFileThresh)
    1928       use_files = 1;
    1929    else
    1930       use_files = 0;
    1931 
    1932 
    19331772   GenerateBabySteps(h1, f, h, k, verbose);
    19341773
Note: See TracChangeset for help on using the changeset viewer.