Changeset 23f3c87 in git
- Timestamp:
- Jun 2, 2014, 12:18:15 PM (9 years ago)
- Branches:
- (u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
- Children:
- 6e4bb02f0a7a82f90f9ed86e463736bad0637b46
- Parents:
- 3056723f8ded0bf113146118e3fddcb035d965b2
- git-author:
- Martin Lee <martinlee84@web.de>2014-06-02 12:18:15+02:00
- git-committer:
- Martin Lee <martinlee84@web.de>2014-06-04 11:54:57+02:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facAlgFunc.cc
r305672 r23f3c87 599 599 } 600 600 601 /// algorithm of A. Steel described in "Conquering Inseparability: Primary 602 /// decomposition and multivariate factorization over algebraic function fields603 /// of positive characteristic" with the following modifications: we use604 /// characteristic sets in IdealOverSubfield and Trager's primitive element605 /// algorithm instead of FGLM606 CF FList607 SteelTrager (const CanonicalForm & f, const CFList & AS)601 602 /// map elements in AS into a PIE L and record where the variables are mapped to 603 /// in varsMapLevel, i.e varsMapLevel contains a list of pairs of variables 604 /// $v_i$ and integers $e_i$ such that 605 /// $L=K(\sqrt[p^{e_1}]{v_1}, \ldots, \sqrt[p^{e_n}]{v_n})$ 606 CFList 607 mapIntoPIE (CFFList& varsMapLevel, CanonicalForm& lcmVars, const CFList & AS) 608 608 { 609 CanonicalForm F= f, lcmVars= 1; 609 CanonicalForm varsG; 610 int j, exp= 0, tmpExp; 611 bool recurse= false; 610 612 CFList asnew, as= AS; 611 CFListIterator i, ii; 612 613 bool derivZeroF= false; 614 int j, exp=0, expF= 0, tmpExp; 615 CFFList varsMapLevel; 613 CFListIterator i= as, ii; 614 CFFList varsGMapLevel, tmp; 616 615 CFFListIterator iter; 617 618 // check if F is separable619 if (F.deriv().isZero())620 {621 derivZeroF= true;622 deflateDegree (F, expF, F.level());623 }624 625 CanonicalForm varsF= getVars (F);626 varsF /= F.mvar();627 628 lcmVars= lcm (varsF, lcmVars);629 630 if (derivZeroF)631 as.append (F);632 633 CFFList varsGMapLevel;634 CFFList tmp;635 616 CFFList * varsGMap= new CFFList [as.length()]; 636 617 for (j= 0; j < as.length(); j++) 637 618 varsGMap[j]= CFFList(); 638 639 CanonicalForm varsG;640 619 j= 0; 641 bool recurse= false;642 i= as;643 // make minimal polys and F separable644 620 while (i.hasItem()) 645 621 { … … 648 624 deflateDegree (i.getItem(), exp, i.getItem().level()); 649 625 i.getItem()= deflatePoly (i.getItem(), exp, i.getItem().level()); 650 626 651 627 varsG= getVars (i.getItem()); 652 628 varsG /= i.getItem().mvar(); … … 750 726 } 751 727 752 // compute how to map variables in F753 728 for (j= 0; j < as.length(); j++) 754 729 { … … 771 746 delete [] varsGMap; 772 747 748 return asnew; 749 } 750 751 /// algorithm of A. Steel described in "Conquering Inseparability: Primary 752 /// decomposition and multivariate factorization over algebraic function fields 753 /// of positive characteristic" with the following modifications: we use 754 /// characteristic sets in IdealOverSubfield and Trager's primitive element 755 /// algorithm instead of FGLM 756 CFFList 757 SteelTrager (const CanonicalForm & f, const CFList & AS) 758 { 759 CanonicalForm F= f, lcmVars= 1; 760 CFList asnew, as= AS; 761 CFListIterator i, ii; 762 763 bool derivZeroF= false; 764 int j, expF= 0, tmpExp; 765 CFFList varsMapLevel, tmp; 766 CFFListIterator iter; 767 768 // check if F is separable 769 if (F.deriv().isZero()) 770 { 771 derivZeroF= true; 772 deflateDegree (F, expF, F.level()); 773 } 774 775 CanonicalForm varsF= getVars (F); 776 varsF /= F.mvar(); 777 778 lcmVars= lcm (varsF, lcmVars); 779 773 780 if (derivZeroF) 774 { 775 as.removeLast(); 781 as.append (F); 782 783 asnew= mapIntoPIE (varsMapLevel, lcmVars, as); 784 785 if (derivZeroF) 786 { 776 787 asnew.removeLast(); 777 788 F= deflatePoly (F, expF, F.level());
Note: See TracChangeset
for help on using the changeset viewer.