Changeset 4e76a6 in git
- Timestamp:
- Jul 31, 2013, 7:18:58 PM (10 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
- Children:
- ae1735dae5c3034d933f9a8b0c463ff13b4b3521
- Parents:
- 92bbbcc0bed082d961421c5dc103f86fb569feab
- git-author:
- Martin Lee <martinlee84@web.de>2013-07-31 19:18:58+02:00
- git-committer:
- Martin Lee <martinlee84@web.de>2013-08-30 13:48:27+02:00
- Location:
- factory
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facAbsBiFact.cc
r92bbbc r4e76a6 692 692 #endif 693 693 694 #ifdef HAVE_NTL 695 /// absolute factorization of bivariate poly over Q 696 /// 697 /// @return absFactorize returns a list whose entries contain three entities: 698 /// an absolute irreducible factor, an irreducible univariate polynomial 699 /// that defines the minimal field extension over which the irreducible 700 /// factor is defined and the multiplicity of the absolute irreducible 701 /// factor 702 CFAFList absFactorize (const CanonicalForm& G ///<[in] bivariate poly over Q 703 ) 704 { 705 //TODO handle homogeneous input 706 ASSERT (getNumVars (G) <= 2, "expected bivariate input"); 707 ASSERT (getCharacteristic() == 0, "expected poly over Q"); 708 709 CFMap N; 710 CanonicalForm F= compress (G, N); 711 bool isRat= isOn (SW_RATIONAL); 712 if (isRat) 713 F *= bCommonDen (F); 714 715 Off (SW_RATIONAL); 716 F /= icontent (F); 717 if (isRat) 718 On (SW_RATIONAL); 719 720 CanonicalForm contentX= content (F, 1); 721 CanonicalForm contentY= content (F, 2); 722 F /= (contentX*contentY); 723 CFAFList contentXFactors, contentYFactors; 724 contentXFactors= uniAbsFactorize (contentX); 725 contentYFactors= uniAbsFactorize (contentY); 726 727 if (contentXFactors.getFirst().factor().inCoeffDomain()) 728 contentXFactors.removeFirst(); 729 if (contentYFactors.getFirst().factor().inCoeffDomain()) 730 contentYFactors.removeFirst(); 731 if (F.inCoeffDomain()) 732 { 733 CFAFList result; 734 for (CFAFListIterator i= contentXFactors; i.hasItem(); i++) 735 result.append (CFAFactor (N (i.getItem().factor()), i.getItem().minpoly(), 736 i.getItem().exp())); 737 for (CFAFListIterator i= contentYFactors; i.hasItem(); i++) 738 result.append (CFAFactor (N (i.getItem().factor()),i.getItem().minpoly(), 739 i.getItem().exp())); 740 normalize (result); 741 result.insert (CFAFactor (Lc (G), 1, 1)); 742 return result; 743 } 744 CFFList rationalFactors= factorize (F); 745 746 CFAFList result, resultBuf; 747 748 CFAFListIterator iter; 749 CFFListIterator i= rationalFactors; 750 i++; 751 for (; i.hasItem(); i++) 752 { 753 resultBuf= absFactorizeMain (i.getItem().factor()); 754 for (iter= resultBuf; iter.hasItem(); iter++) 755 iter.getItem()= CFAFactor (iter.getItem().factor(), 756 iter.getItem().minpoly(), i.getItem().exp()); 757 result= Union (result, resultBuf); 758 } 759 760 for (CFAFListIterator i= result; i.hasItem(); i++) 761 i.getItem()= CFAFactor (N (i.getItem().factor()), i.getItem().minpoly(), 762 i.getItem().exp()); 763 for (CFAFListIterator i= contentXFactors; i.hasItem(); i++) 764 result.append (CFAFactor (N(i.getItem().factor()), i.getItem().minpoly(), 765 i.getItem().exp())); 766 for (CFAFListIterator i= contentYFactors; i.hasItem(); i++) 767 result.append (CFAFactor (N(i.getItem().factor()), i.getItem().minpoly(), 768 i.getItem().exp())); 769 normalize (result); 770 result.insert (CFAFactor (Lc(G), 1, 1)); 771 772 return result; 773 } 774 #endif 775 776 694 -
factory/facAbsBiFact.h
r92bbbc r4e76a6 15 15 #define FAC_ABS_BI_FACT_H 16 16 17 #include "cf_assert.h" 18 19 #include "cf_algorithm.h" 20 #include "cf_map.h" 17 #include "canonicalform.h" 21 18 22 19 #ifdef HAVE_NTL -
factory/facAbsFact.cc
r92bbbc r4e76a6 2 2 * Computer Algebra System SINGULAR 3 3 \*****************************************************************************/ 4 /** @file facAbs MultiFact.cc4 /** @file facAbsFact.cc 5 5 * 6 6 * @author Martin Lee … … 8 8 **/ 9 9 /*****************************************************************************/ 10 11 #ifdef HAVE_CONFIG_H 12 #include "config.h" 13 #endif /* HAVE_CONFIG_H */ 10 14 11 15 #include "timing.h" … … 371 375 TIMING_START (abs_fac_evaluation); 372 376 bufEvaluation= evalPoints4AbsFact (bufA, bufAeval, E); 373 TIMING_END_AND_PRINT (abs_fac_evaluation, 377 TIMING_END_AND_PRINT (abs_fac_evaluation, 374 378 "time to find evaluation point in abs fact: "); 375 379 E.nextpoint(); -
factory/facAbsFact.h
r92bbbc r4e76a6 2 2 * Computer Algebra System SINGULAR 3 3 \*****************************************************************************/ 4 /** @file facAbs MultiFact.h4 /** @file facAbsFact.h 5 5 * 6 6 * absolute multivariate factorization over Q
Note: See TracChangeset
for help on using the changeset viewer.