Changeset 3426de2 in git for factory/facHensel.cc


Ignore:
Timestamp:
Sep 6, 2011, 3:08:38 PM (13 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
725e6002e0b07ad1474e14f72296c0c85a47ae4d
Parents:
96f9fdfab406c4f1b69b407c26a25d199352b8c5
Message:
optimizations for division with remainder and lattice recombination


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

Legend:

Unmodified
Added
Removed
  • factory/facHensel.cc

    r96f9fdf r3426de2  
    13801380    return 0;
    13811381
     1382  Variable v;
    13821383  CanonicalForm Q;
    13831384  if (degB <= 1 || CFFactory::gettype() == GaloisFieldDomain)
     
    13881389  else
    13891390  {
    1390     CanonicalForm R= reverse (A, degA);
    1391     CanonicalForm revB= reverse (B, degB);
    1392     revB= newtonInverse (revB, m + 1, M);
    1393     Q= mulMod2 (R, revB, M);
    1394     Q= mod (Q, power (x, m + 1));
    1395     Q= reverse (Q, m);
     1391    if (hasFirstAlgVar (A, v) || hasFirstAlgVar (B, v))
     1392    {
     1393      CanonicalForm R= reverse (A, degA);
     1394      CanonicalForm revB= reverse (B, degB);
     1395      revB= newtonInverse (revB, m + 1, M);
     1396      Q= mulMod2 (R, revB, M);
     1397      Q= mod (Q, power (x, m + 1));
     1398      Q= reverse (Q, m);
     1399    }
     1400    else
     1401    {
     1402      zz_pX mipo= convertFacCF2NTLzzpX (M);
     1403      Variable y= Variable (2);
     1404      zz_pEX NTLA, NTLB;
     1405      NTLA= convertFacCF2NTLzz_pEX (swapvar (A, x, y), mipo);
     1406      NTLB= convertFacCF2NTLzz_pEX (swapvar (B, x, y), mipo);
     1407      div (NTLA, NTLA, NTLB);
     1408      Q= convertNTLzz_pEX2CF (NTLA, x, y);
     1409    }
    13961410  }
    13971411
     
    14171431  }
    14181432
     1433  Variable v;
    14191434  if (degB <= 1 || CFFactory::gettype() == GaloisFieldDomain)
    14201435  {
     
    14231438  else
    14241439  {
    1425     R= reverse (A, degA);
    1426 
    1427     CanonicalForm revB= reverse (B, degB);
    1428     revB= newtonInverse (revB, m + 1, M);
    1429     Q= mulMod2 (R, revB, M);
    1430 
    1431     Q= mod (Q, power (x, m + 1));
    1432     Q= reverse (Q, m);
    1433 
    1434     R= A - mulMod2 (Q, B, M);
     1440    if (hasFirstAlgVar (A, v) || hasFirstAlgVar (B, v))
     1441    {
     1442      R= reverse (A, degA);
     1443
     1444      CanonicalForm revB= reverse (B, degB);
     1445      revB= newtonInverse (revB, m + 1, M);
     1446      Q= mulMod2 (R, revB, M);
     1447
     1448      Q= mod (Q, power (x, m + 1));
     1449      Q= reverse (Q, m);
     1450
     1451      R= A - mulMod2 (Q, B, M);
     1452    }
     1453    else
     1454    {
     1455      zz_pX mipo= convertFacCF2NTLzzpX (M);
     1456      Variable y= Variable (2);
     1457      zz_pEX NTLA, NTLB;
     1458      NTLA= convertFacCF2NTLzz_pEX (swapvar (A, x, y), mipo);
     1459      NTLB= convertFacCF2NTLzz_pEX (swapvar (B, x, y), mipo);
     1460      zz_pEX NTLQ, NTLR;
     1461      DivRem (NTLQ, NTLR, NTLA, NTLB);
     1462      Q= convertNTLzz_pEX2CF (NTLQ, x, y);
     1463      R= convertNTLzz_pEX2CF (NTLR, x, y);
     1464    }
    14351465  }
    14361466}
Note: See TracChangeset for help on using the changeset viewer.