Changeset ace936 in git
- Timestamp:
- Feb 28, 2014, 4:27:12 PM (10 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- d469bf890482230cb7a3bd182e0fcc790589cf48
- Parents:
- b1a45330465577e955cfdf7d1befbe76825d088f
- git-author:
- Martin Lee <martinlee84@web.de>2014-02-28 16:27:12+01:00
- git-committer:
- Martin Lee <martinlee84@web.de>2014-03-06 11:04:13+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/cfNewtonPolygon.cc
rb1a453 race936 727 727 int k= 0; 728 728 Variable alpha; 729 mpz_t * exps= new mpz_t [2*size (F)]; 730 int count= 0; 729 731 for (CFIterator i= F; i.hasTerms(); i++) 730 732 { … … 749 751 mpz_set (minExpX, expX); 750 752 } 751 result += i.coeff()*power (x, mpz_get_si (expX))* 752 power (y, mpz_get_si (expY)); 753 mpz_init_set (exps[count], expX); 754 count++; 755 mpz_init_set (exps[count], expY); 756 count++; 753 757 continue; 754 758 } … … 766 770 mpz_set (minExpX, expX); 767 771 mpz_set (minExpY, expY); 768 result += j.coeff()*power (x, mpz_get_si (expX))* 769 power (y, mpz_get_si (expY)); 772 mpz_init_set (exps[count], expX); 773 count++; 774 mpz_init_set (exps[count], expY); 775 count++; 770 776 j++; 771 777 k= 1; … … 782 788 mpz_addmul_ui (expY, M[2], j.exp()); 783 789 784 result += j.coeff()*power (x, mpz_get_si (expX))* 785 power (y, mpz_get_si (expY)); 790 mpz_init_set (exps[count], expX); 791 count++; 792 mpz_init_set (exps[count], expY); 793 count++; 786 794 if (mpz_cmp (minExpY, expY) > 0) 787 795 mpz_set (minExpY, expY); … … 791 799 } 792 800 793 if (mpz_sgn (minExpX) < 0) 794 { 795 result *= power (x,-mpz_get_si(minExpX)); 796 result /= CanonicalForm (x, 0); 797 } 798 else 799 result /= power (x,mpz_get_si(minExpX)); 800 801 if (mpz_sgn (minExpY) < 0) 802 { 803 result *= power (y,-mpz_get_si(minExpY)); 804 result /= CanonicalForm (y, 0); 805 } 806 else 807 result /= power (y,mpz_get_si(minExpY)); 801 count= 0; 802 int mExpX= mpz_get_si (minExpX); 803 int mExpY= mpz_get_si (minExpY); 804 for (CFIterator i= F; i.hasTerms(); i++) 805 { 806 if (i.coeff().inCoeffDomain() && hasFirstAlgVar (i.coeff(), alpha)) 807 { 808 result += i.coeff()*power (x, mpz_get_si (exps[count])-mExpX)* 809 power (y, mpz_get_si (exps[count+1])-mExpY); 810 count += 2; 811 continue; 812 } 813 CFIterator j= i.coeff(); 814 for (; j.hasTerms(); j++) 815 { 816 result += j.coeff()*power (x, mpz_get_si (exps[count])-mExpX)* 817 power (y, mpz_get_si (exps[count+1])-mExpY); 818 count += 2; 819 } 820 } 808 821 809 822 CanonicalForm tmp= LC (result); … … 824 837 } 825 838 839 delete [] exps; 826 840 mpz_clear (expX); 827 841 mpz_clear (expY); … … 845 859 mpz_init (minExpY); 846 860 861 mpz_t * exps= new mpz_t [2*size(F)]; 862 int count= 0; 847 863 if (F.isUnivariate() && F.level() == 1) 848 864 { … … 861 877 mpz_set (minExpX, expX); 862 878 mpz_set (minExpY, expY); 863 result += i.coeff()*power (x, mpz_get_si (expX))* 864 power (y, mpz_get_si (expY)); 879 880 mpz_init_set (exps[count], expX); 881 mpz_init_set (exps[count+1], expY); 882 count += 2; 883 865 884 i++; 866 885 for (; i.hasTerms(); i++) … … 876 895 mpz_submul (expY, inverseM[3], A[1]); 877 896 878 result += i.coeff()*power (x, mpz_get_si (expX))* 879 power (y, mpz_get_si (expY)); 897 mpz_init_set (exps[count], expX); 898 mpz_init_set (exps[count+1], expY); 899 count += 2; 900 880 901 if (mpz_cmp (minExpY, expY) > 0) 881 902 mpz_set (minExpY, expY); … … 884 905 } 885 906 886 if (mpz_sgn (minExpX) < 0) 887 { 888 result *= power (x,-mpz_get_si(minExpX)); 889 result /= CanonicalForm (x, 0); 890 } 891 else 892 result /= power (x,mpz_get_si(minExpX)); 893 894 if (mpz_sgn (minExpY) < 0) 895 { 896 result *= power (y,-mpz_get_si(minExpY)); 897 result /= CanonicalForm (y, 0); 898 } 899 else 900 result /= power (y,mpz_get_si(minExpY)); 907 int mExpX= mpz_get_si (minExpX); 908 int mExpY= mpz_get_si (minExpY); 909 count= 0; 910 for (i= F; i.hasTerms(); i++) 911 { 912 result += i.coeff()*power (x, mpz_get_si (exps[count])-mExpX)* 913 power (y, mpz_get_si (exps[count+1])-mExpY); 914 count += 2; 915 } 901 916 902 917 mpz_clear (expX); … … 905 920 mpz_clear (minExpY); 906 921 922 delete [] exps; 907 923 return result/ Lc (result); //normalize 908 924 } … … 939 955 mpz_set (minExpX, expX); 940 956 } 941 result += i.coeff()*power (x, mpz_get_si (expX))* 942 power (y, mpz_get_si (expY)); 957 mpz_init_set (exps[count], expX); 958 mpz_init_set (exps[count+1], expY); 959 count += 2; 943 960 continue; 944 961 } … … 962 979 mpz_set (minExpX, expX); 963 980 mpz_set (minExpY, expY); 964 result += j.coeff()*power (x, mpz_get_si (expX))* 965 power (y, mpz_get_si (expY)); 981 982 mpz_init_set (exps[count], expX); 983 mpz_init_set (exps[count+1], expY); 984 count += 2; 985 966 986 j++; 967 987 k= 1; … … 984 1004 mpz_addmul (expY, tmp, inverseM[3]); 985 1005 986 result += j.coeff()*power (x, mpz_get_si (expX))* 987 power (y, mpz_get_si (expY)); 1006 mpz_init_set (exps[count], expX); 1007 mpz_init_set (exps[count+1], expY); 1008 count += 2; 1009 988 1010 if (mpz_cmp (minExpY, expY) > 0) 989 1011 mpz_set (minExpY, expY); … … 993 1015 } 994 1016 995 if (mpz_sgn (minExpX) < 0) 996 { 997 result *= power (x,-mpz_get_si(minExpX)); 998 result /= CanonicalForm (x, 0); 999 } 1000 else 1001 result /= power (x,mpz_get_si(minExpX)); 1002 1003 if (mpz_sgn (minExpY) < 0) 1004 { 1005 result *= power (y,-mpz_get_si(minExpY)); 1006 result /= CanonicalForm (y, 0); 1007 } 1008 else 1009 result /= power (y,mpz_get_si(minExpY)); 1017 int mExpX= mpz_get_si (minExpX); 1018 int mExpY= mpz_get_si (minExpY); 1019 count= 0; 1020 for (CFIterator i= F; i.hasTerms(); i++) 1021 { 1022 if (i.coeff().inCoeffDomain() && hasFirstAlgVar (i.coeff(), alpha)) 1023 { 1024 result += i.coeff()*power (x, mpz_get_si (exps[count])-mExpX)* 1025 power (y, mpz_get_si (exps[count+1])-mExpY); 1026 count += 2; 1027 continue; 1028 } 1029 for (CFIterator j= i.coeff(); j.hasTerms(); j++) 1030 { 1031 result += j.coeff()*power (x, mpz_get_si (exps[count])-mExpX)* 1032 power (y, mpz_get_si (exps[count+1])-mExpY); 1033 count += 2; 1034 } 1035 } 1010 1036 1011 1037 mpz_clear (expX); … … 1014 1040 mpz_clear (minExpY); 1015 1041 mpz_clear (tmp); 1042 1043 delete [] exps; 1016 1044 1017 1045 return result/Lc (result); //normalize
Note: See TracChangeset
for help on using the changeset viewer.