Changeset 65148c4 in git for factory/facFqFactorize.h
- Timestamp:
- Feb 18, 2013, 5:54:37 PM (11 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 77ed18101c07cdbb767d8703e5ea1d0f7c8b05f6
- Parents:
- 71a4d7b8fea297969227779896a8ec8fc63aaedaa1da6f6fa3cfce502fec23270a8a572c1290577d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facFqFactorize.h
ra1da6f r65148c4 608 608 /// normalize precomputed leading coefficients such that leading coefficients 609 609 /// evaluated at @a evaluation in K^(n-2) equal the leading coeffs wrt 610 /// Variable(1) of bivariate factors 611 void 612 prepareLeadingCoeffs (CFList*& LCs, ///<[in,out] 610 /// Variable(1) of bivariate factors and change @a A and @a Aeval accordingly 611 void 612 prepareLeadingCoeffs (CFList*& LCs, ///<[in,out] 613 CanonicalForm& A, ///<[in,out] 614 CFList& Aeval, ///<[in,out] 613 615 int n, ///<[in] level of poly to be 614 616 ///< factored … … 684 686 ); 685 687 688 /// changes the second variable to be @a w and updates all relevant data 689 void 690 changeSecondVariable (CanonicalForm& A, ///<[in,out] a multivariate poly 691 CFList& biFactors, ///<[in,out] bivariate factors 692 CFList& evaluation, ///<[in,out] evaluation point 693 CFList*& oldAeval, ///<[in,out] old bivariate factors 694 ///< wrt. different second vars 695 int lengthAeval2, ///<[in] length of oldAeval 696 const CFList& uniFactors,///<[in] univariate factors 697 const Variable& w ///<[in] some variable 698 ); 699 700 /// distributes a divisor LCmultiplier of LC(A,1) on the bivariate factors and 701 /// the precomputed leading coefficients 702 void 703 distributeLCmultiplier (CanonicalForm& A, ///<[in,out] some poly 704 CFList& leadingCoeffs, ///<[in,out] leading 705 ///< coefficients 706 CFList& biFactors, ///<[in,out] bivariate 707 ///< factors 708 const CFList& evaluation, ///<[in] eval. point 709 const CanonicalForm& LCmultipler///<[in] multiplier 710 ); 711 712 /// heuristic to distribute @a LCmultiplier onto factors based on the variables 713 /// that occur in @a LCmultiplier and in the leading coeffs of bivariate factors 714 void 715 LCHeuristic (CanonicalForm& A, ///<[in,out] a poly 716 const CanonicalForm& LCmultiplier,///<[in,out] divisor of LC (A,1) 717 CFList& biFactors, ///<[in,out] bivariate factors 718 CFList*& leadingCoeffs, ///<[in,out] leading coeffs 719 const CFList* oldAeval, ///<[in] bivariate factors wrt. 720 ///< different second vars 721 int lengthAeval, ///<[in] length of oldAeval 722 const CFList& evaluation, ///<[in] evaluation point 723 const CFList& oldBiFactors ///<[in] bivariate factors 724 ///< without LCmultiplier 725 ///< distributed on them 726 ); 727 728 /// checks if prod(LCs)==LC (oldA,1) and if so divides elements of leadingCoeffs 729 /// by elements in contents, sets A to oldA and sets foundTrueMultiplier to true 730 void 731 LCHeuristicCheck (const CFList& LCs, ///<[in] leading coeffs computed 732 const CFList& contents, ///<[in] content of factors 733 CanonicalForm& A, ///<[in,out] oldA*LCmultiplier^m 734 const CanonicalForm& oldA,///<[in] some poly 735 CFList& leadingCoeffs, ///<[in,out] leading coefficients 736 bool& foundTrueMultiplier ///<[in,out] success? 737 ); 738 739 /// heuristic to distribute @a LCmultiplier onto factors based on the contents 740 /// of @a factors. @a factors are assumed to come from LucksWangSparseHeuristic. 741 /// If not successful @a contents will contain the content of each element of @a 742 /// factors and @a LCs will contain the LC of each element of @a factors divided 743 /// by its content 744 void 745 LCHeuristic2 (const CanonicalForm& LCmultiplier,///<[in] divisor of LC (A,1) 746 const CFList& factors, ///<[in] result of 747 ///< LucksWangSparseHeuristic 748 CFList& leadingCoeffs, ///<[in,out] leading coeffs 749 CFList& contents, ///<[in,out] content of factors 750 CFList& LCs, ///<[in,out] LC of factors 751 ///< divided by content of 752 ///< factors 753 bool& foundTrueMultiplier ///<[in,out] success? 754 ); 755 756 /// heuristic to remove @a LCmultiplier from a factor based on the contents 757 /// of @a factors. @a factors are assumed to come from LucksWangSparseHeuristic. 758 void 759 LCHeuristic3 (const CanonicalForm& LCmultiplier,///<[in] divisor of LC (A,1) 760 const CFList& factors, ///<[in] result of 761 ///< LucksWangSparseHeuristic 762 const CFList& oldBiFactors, ///<[in] bivariate factors 763 ///< without LCmultiplier 764 ///< distributed on them 765 const CFList& contents, ///<[in] content of factors 766 const CFList* oldAeval, ///<[in] bivariate factors wrt. 767 ///< different second vars 768 CanonicalForm& A, ///<[in,out] poly 769 CFList*& leadingCoeffs, ///<[in,out] leading coeffs 770 int lengthAeval, ///<[in] length of oldAeval 771 bool& foundMultiplier ///<[in,out] success? 772 ); 773 774 /// heuristic to remove factors of @a LCmultiplier from @a factors. 775 /// More precisely checks if elements of @a contents divide @a LCmultiplier. 776 /// Assumes LCHeuristic3 is run before it and was successful. 777 void 778 LCHeuristic4 (const CFList& oldBiFactors, ///<[in] bivariate factors 779 ///< without LCmultiplier 780 ///< distributed on them 781 const CFList* oldAeval, ///<[in] bivariate factors wrt. 782 ///< different second vars 783 const CFList& contents, ///<[in] content of factors 784 const CFList& factors, ///<[in] result of 785 ///< LucksWangSparseHeuristic 786 const CanonicalForm& testVars,///<[in] product of second vars that 787 ///< occur among oldAeval 788 int lengthAeval, ///<[in] length of oldAeval 789 CFList*& leadingCoeffs, ///<[in,out] leading coeffs 790 CanonicalForm& A, ///<[in,out] poly 791 CanonicalForm& LCmultiplier, ///<[in,out] divisor of LC (A,1) 792 bool& foundMultiplier ///<[in] success? 793 ); 794 686 795 #endif 687 796 /* FAC_FQ_FACTORIZE_H */
Note: See TracChangeset
for help on using the changeset viewer.