Changeset 5f9b47 in git for factory/facFactorize.h


Ignore:
Timestamp:
Oct 13, 2011, 4:28:33 PM (12 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
a6423611ab89e02788fee9f049f4e6b2e2dac782
Parents:
c79a9d3a83d34151b67ba9ac3b63b827a07b792f
Message:
use sqrfree factorization instead of sqrfree part extraction for factorization ove Q(a)


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

Legend:

Unmodified
Added
Removed
  • factory/facFactorize.h

    rc79a9d r5f9b47  
    3434///         element is the leading coefficient.
    3535inline
    36 CFList ratSqrfFactorize (const CanonicalForm & F, ///< [in] a multivariate poly
     36CFList ratSqrfFactorize (const CanonicalForm & G, ///< [in] a multivariate poly
    3737                         const Variable& v
    3838                       )
    3939{
    40   if (getNumVars (F) == 2)
    41     return ratBiSqrfFactorize (F, v);
     40  if (getNumVars (G) == 2)
     41    return ratBiSqrfFactorize (G, v);
     42  CanonicalForm F= G;
     43  if (isOn (SW_RATIONAL))
     44    F *= bCommonDen (F);
    4245  CFList result= multiFactorize (F, v);
    4346  if (isOn (SW_RATIONAL))
     
    5457///         multiplicity, the first element is the leading coefficient.
    5558inline
    56 CFFList ratFactorize (const CanonicalForm& F, ///< [in] a multivariate poly
     59CFFList ratFactorize (const CanonicalForm& G, ///< [in] a multivariate poly
    5760                      const Variable& v
    5861                    )
    5962{
    60   if (getNumVars (F) == 2)
     63  if (getNumVars (G) == 2)
    6164  {
    62     CFFList result= ratBiFactorize (F,v);
     65    CFFList result= ratBiFactorize (G,v);
    6366    return result;
    6467  }
    65   Variable a= Variable (1);
     68  CanonicalForm F= G;
    6669  CanonicalForm LcF= Lc (F);
     70  if (isOn (SW_RATIONAL))
     71    F *= bCommonDen (F);
    6772
    68   CanonicalForm sqrfP= sqrfPart (F);
    69   CFList buf;
    7073  CFFList result;
    71   buf= multiFactorize (sqrfP, v);
    72   CanonicalForm G= F;
    73   result= multiplicity (G, buf);
     74  CFFList sqrfFactors= sqrFree (F);
     75  for (CFFListIterator i= sqrfFactors; i.hasItem(); i++)
     76  {
     77    CFList tmp= ratSqrfFactorize (i.getItem().factor(), v);
     78    for (CFListIterator j= tmp; j.hasItem(); j++)
     79    {
     80      if (j.getItem().inCoeffDomain()) continue;
     81      result.append (CFFactor (j.getItem(), i.getItem().exp()));
     82    }
     83  }
    7484  if (isOn (SW_RATIONAL))
    7585  {
Note: See TracChangeset for help on using the changeset viewer.