Changeset 849b7c in git
- Timestamp:
- Aug 21, 2013, 1:33:17 PM (10 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
- Children:
- 033e00f6e4890efd144712c5719cdffdd79e8598
- Parents:
- 44cd9a84967624b3cb752fb6646f1824acd60ae1
- git-author:
- Martin Lee <martinlee84@web.de>2013-08-21 13:33:17+02:00
- git-committer:
- Martin Lee <martinlee84@web.de>2013-08-30 13:48:37+02:00
- Location:
- factory
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facAbsBiFact.cc
r44cd9a r849b7c 74 74 } 75 75 result.insert (CFAFactor (LcF, 1, 1)); 76 return result;77 }78 79 80 /// absolute factorization of bivariate poly over Q81 ///82 /// @return absFactorize returns a list whose entries contain three entities:83 /// an absolute irreducible factor, an irreducible univariate polynomial84 /// that defines the minimal field extension over which the irreducible85 /// factor is defined and the multiplicity of the absolute irreducible86 /// factor87 CFAFList absBiFactorize (const CanonicalForm& G ///<[in] bivariate poly over Q88 )89 {90 //TODO handle homogeneous input91 ASSERT (getNumVars (G) <= 2, "expected bivariate input");92 ASSERT (getCharacteristic() == 0, "expected poly over Q");93 94 CFMap N;95 CanonicalForm F= compress (G, N);96 bool isRat= isOn (SW_RATIONAL);97 if (isRat)98 F *= bCommonDen (F);99 100 Off (SW_RATIONAL);101 F /= icontent (F);102 if (isRat)103 On (SW_RATIONAL);104 105 CanonicalForm contentX= content (F, 1);106 CanonicalForm contentY= content (F, 2);107 F /= (contentX*contentY);108 CFAFList contentXFactors, contentYFactors;109 contentXFactors= uniAbsFactorize (contentX);110 contentYFactors= uniAbsFactorize (contentY);111 112 if (contentXFactors.getFirst().factor().inCoeffDomain())113 contentXFactors.removeFirst();114 if (contentYFactors.getFirst().factor().inCoeffDomain())115 contentYFactors.removeFirst();116 if (F.inCoeffDomain())117 {118 CFAFList result;119 for (CFAFListIterator i= contentXFactors; i.hasItem(); i++)120 result.append (CFAFactor (N (i.getItem().factor()), i.getItem().minpoly(),121 i.getItem().exp()));122 for (CFAFListIterator i= contentYFactors; i.hasItem(); i++)123 result.append (CFAFactor (N (i.getItem().factor()),i.getItem().minpoly(),124 i.getItem().exp()));125 normalize (result);126 result.insert (CFAFactor (Lc (G), 1, 1));127 return result;128 }129 CFFList rationalFactors= factorize (F);130 131 CFAFList result, resultBuf;132 133 CFAFListIterator iter;134 CFFListIterator i= rationalFactors;135 i++;136 for (; i.hasItem(); i++)137 {138 resultBuf= absBiFactorizeMain (i.getItem().factor());139 for (iter= resultBuf; iter.hasItem(); iter++)140 iter.getItem()= CFAFactor (iter.getItem().factor(),141 iter.getItem().minpoly(), i.getItem().exp());142 result= Union (result, resultBuf);143 }144 145 for (CFAFListIterator i= result; i.hasItem(); i++)146 i.getItem()= CFAFactor (N (i.getItem().factor()), i.getItem().minpoly(),147 i.getItem().exp());148 for (CFAFListIterator i= contentXFactors; i.hasItem(); i++)149 result.append (CFAFactor (N(i.getItem().factor()), i.getItem().minpoly(),150 i.getItem().exp()));151 for (CFAFListIterator i= contentYFactors; i.hasItem(); i++)152 result.append (CFAFactor (N(i.getItem().factor()), i.getItem().minpoly(),153 i.getItem().exp()));154 normalize (result);155 result.insert (CFAFactor (Lc(G), 1, 1));156 157 76 return result; 158 77 } -
factory/facAbsBiFact.h
r44cd9a r849b7c 56 56 ); 57 57 58 /*BEGINPUBLIC*/59 60 #ifdef HAVE_NTL61 CFAFList absBiFactorize (const CanonicalForm& G);62 58 #endif 63 64 /*ENDPUBLIC*/65 66 #endif -
factory/factory.template
r44cd9a r849b7c 107 107 108 108 /*MAKEHEADER PUBLIC ONLY*/ 109 #include "facAbsBiFact.h"110 111 /*MAKEHEADER PUBLIC ONLY*/112 109 #include "facAbsFact.h" 113 110
Note: See TracChangeset
for help on using the changeset viewer.