Changeset 65148c4 in git for factory/cf_gcd.cc
- 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/cf_gcd.cc
ra1da6f r65148c4 607 607 gcd_poly_p( const CanonicalForm & f, const CanonicalForm & g ) 608 608 { 609 if (f.inCoeffDomain() || g.inCoeffDomain()) //zero case should be caught by gcd 610 return 1; 609 611 CanonicalForm pi, pi1; 610 612 CanonicalForm C, Ci, Ci1, Hi, bi, pi2; 611 bool bpure ;613 bool bpure, ezgcdon= isOn (SW_USE_EZGCD_P); 612 614 int delta = degree( f ) - degree( g ); 613 615 … … 620 622 pi = g; pi1 = f; delta = -delta; 621 623 } 622 Ci = content( pi ); Ci1 = content( pi1 ); 623 pi1 = pi1 / Ci1; pi = pi / Ci; 624 if (pi.isUnivariate()) 625 Ci= 1; 626 else 627 { 628 if (!ezgcdon) 629 On (SW_USE_EZGCD_P); 630 Ci = content( pi ); 631 if (!ezgcdon) 632 Off (SW_USE_EZGCD_P); 633 pi = pi / Ci; 634 } 635 if (pi1.isUnivariate()) 636 Ci1= 1; 637 else 638 { 639 if (!ezgcdon) 640 On (SW_USE_EZGCD_P); 641 Ci1 = content( pi1 ); 642 if (!ezgcdon) 643 Off (SW_USE_EZGCD_P); 644 pi1 = pi1 / Ci1; 645 } 624 646 C = gcd( Ci, Ci1 ); 625 647 int d= 0; … … 683 705 pi = pi1; pi1 = pi2; 684 706 maxNumVars= tmax (getNumVars (pi), getNumVars (pi1)); 685 if (! (pi1.isUnivariate()) && (size (pi1)/maxNumVars > 500))707 if (!pi1.isUnivariate() && (size (pi1)/maxNumVars > 500)) 686 708 { 687 709 On (SW_USE_FF_MOD_GCD); … … 701 723 if (!(pi.isUnivariate() && pi1.isUnivariate())) 702 724 { 703 if (size (Hi)*size (pi)/(maxNumVars*3) > 500) //maybe this needs more tuning725 if (size (Hi)*size (pi)/(maxNumVars*3) > 1500) //maybe this needs more tuning 704 726 { 705 727 On (SW_USE_FF_MOD_GCD); … … 717 739 return C; 718 740 } 719 pi /= content( pi ); 741 if (!pi.isUnivariate()) 742 { 743 if (!ezgcdon) 744 On (SW_USE_EZGCD_P); 745 Ci= gcd (LC (oldPi,v), LC (oldPi1,v)); 746 pi /= LC (pi,v)/Ci; 747 Ci= content (pi); 748 pi /= Ci; 749 if (!ezgcdon) 750 Off (SW_USE_EZGCD_P); 751 } 720 752 if ( bpure ) 721 753 pi /= pi.lc();
Note: See TracChangeset
for help on using the changeset viewer.