Changeset 01c1d0 in git
- Timestamp:
- Apr 21, 2011, 1:34:10 PM (12 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '0604212ebb110535022efecad887940825b97c3f')
- Children:
- 59a62bd935a023662ba918abaefcc861c4adbe81
- Parents:
- 0b7bf7ebce7bb8127ebbb274e87efef8dce670c7
- git-author:
- Oleksandr Motsak <motsak@mathematik.uni-kl.de>2011-04-21 13:34:10+02:00
- git-committer:
- Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 12:31:24+01:00
- Location:
- libpolys
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/coeffs/coeffs.h
r0b7bf7 r01c1d0 154 154 int ref; 155 155 n_coeffType type; 156 ////----------------------------------------- 157 char** parameter; /* names of parameters, rInit */ 158 number minpoly; /* for Q_a/Zp_a, rInit */ 156 //------------------------------------------- 157 char** parameter; //< names of parameters, rInit 158 short P; //< number of pars, rInit 159 number minpoly; //< for Q_a/Zp_a, rInit 159 160 160 161 #ifdef HAVE_RINGS -
libpolys/polys/OBSOLETE_pInitContent.cc
r0b7bf7 r01c1d0 43 43 } 44 44 else if ((rField_is_Extension(r)) 45 && ((rPar(r)>1)||(r-> minpoly==NULL)))45 && ((rPar(r)>1)||(r->cf->minpoly==NULL))) 46 46 { 47 47 h=pInitContent_a(ph); … … 751 751 qq = pInit(); 752 752 number n=nMap(pGetCoeff(p)); 753 if ((currRing-> minpoly!=NULL)753 if ((currRing->cf->minpoly!=NULL) 754 754 && ((rField_is_Zp_a()) || (rField_is_Q_a()))) 755 755 { … … 763 763 qq=pOne(); 764 764 aq=napPermNumber(pGetCoeff(p),par_perm,OldPar, oldRing); 765 if ((aq!=NULL) && (currRing-> minpoly!=NULL)765 if ((aq!=NULL) && (currRing->cf->minpoly!=NULL) 766 766 && ((rField_is_Zp_a()) || (rField_is_Q_a()))) 767 767 { … … 829 829 } 830 830 if (mapped_to_par 831 && (currRing-> minpoly!=NULL))831 && (currRing->cf->minpoly!=NULL)) 832 832 { 833 833 number n=pGetCoeff(qq); -
libpolys/polys/kbuckets.cc
r0b7bf7 r01c1d0 1155 1155 if (rField_is_Zp(r)) 1156 1156 return TRUE; 1157 if (r-> parameter==NULL)1157 if (r->cf->parameter==NULL) 1158 1158 { 1159 1159 return (r->cf->cfSize(n,r->cf)==1); -
libpolys/polys/monomials/maps.cc
r0b7bf7 r01c1d0 155 155 omFreeSize((ADDRESS)monoms,l*sizeof(poly)); 156 156 } 157 if (dst_r-> minpoly!=NULL) result=p_MinPolyNormalize(result, dst_r);157 if (dst_r->cf->minpoly!=NULL) result=p_MinPolyNormalize(result, dst_r); 158 158 } 159 159 return result; … … 270 270 int *perm=(int *)omAlloc0((r->N+1)*sizeof(int)); 271 271 //int *par_perm=(int *)omAlloc0(rPar(r)*sizeof(int)); 272 maFindPerm(r->names, r->N, r->parameter, r->P,273 dst_r->names, dst_r->N,dst_r->parameter, dst_r->P,274 perm,NULL, dst_r->c h);272 maFindPerm(r->names, rVar(r), r->cf->parameter, rPar(r), 273 dst_r->names, rVar(dst_r),dst_r->cf->parameter, rPar(dst_r), 274 perm,NULL, dst_r->cf->ch); 275 275 poly res=p_PermPoly(p,perm,r,dst_r, nMap /*,par_perm,rPar(r)*/); 276 276 omFreeSize((ADDRESS)perm,(r->N+1)*sizeof(int)); -
libpolys/polys/monomials/p_polys.cc
r0b7bf7 r01c1d0 1857 1857 } 1858 1858 else if ((rField_is_Extension(r)) 1859 && ((rPar(r)>1)||(r-> minpoly==NULL)))1859 && ((rPar(r)>1)||(r->cf->minpoly==NULL))) 1860 1860 { 1861 1861 h=p_InitContent_a(ph,r); … … 3240 3240 qq = p_Init(dst); 3241 3241 number n=nMap(pGetCoeff(p),oldRing->cf,dst->cf); 3242 if ((dst-> minpoly!=NULL)3242 if ((dst->cf->minpoly!=NULL) 3243 3243 && ((rField_is_Zp_a(dst)) || (rField_is_Q_a(dst)))) 3244 3244 { … … 3254 3254 #if 0 3255 3255 aq=naPermNumber(pGetCoeff(p),par_perm,OldPar, oldRing); 3256 if ((dst-> minpoly!=NULL)3256 if ((dst->cf->minpoly!=NULL) 3257 3257 && ((rField_is_Zp_a(dst)) || (rField_is_Q_a(dst)))) 3258 3258 { … … 3329 3329 } 3330 3330 if (mapped_to_par 3331 && (dst-> minpoly!=NULL))3331 && (dst->cf->minpoly!=NULL)) 3332 3332 { 3333 3333 number n=pGetCoeff(qq); -
libpolys/polys/monomials/ring.cc
r0b7bf7 r01c1d0 74 74 }; 75 75 76 #define rInternalChar(r) ((r)->c h)76 #define rInternalChar(r) ((r)->cf->ch) 77 77 78 78 const char * rSimpleOrdStr(int ord) … … 94 94 //BOOLEAN rField_is_R(ring r) 95 95 //{ 96 // if (r->c h== -1)96 // if (r->cf->ch== -1) 97 97 // { 98 98 // if (r->float_len==(short)0) return TRUE; … … 108 108 void rChangeCurrRing(ring r) 109 109 { 110 // if ((currRing!=NULL) && (currRing-> minpoly!=NULL))110 // if ((currRing!=NULL) && (currRing->cf->minpoly!=NULL)) 111 111 // { 112 // omCheckAddr(currRing-> minpoly);112 // omCheckAddr(currRing->cf->minpoly); 113 113 // } 114 114 //------------ set global ring vars -------------------------------- … … 140 140 assume( cf != NULL); 141 141 ring r=(ring) omAlloc0Bin(sip_sring_bin); 142 r->c h = n_GetChar(cf);142 r->cf->ch = n_GetChar(cf); 143 143 r->N = N; 144 144 r->cf = cf; 145 /*r ->P= 0; Alloc0 */145 /*rPar(r) = 0; Alloc0 */ 146 146 /*names*/ 147 147 r->names = (char **) omAlloc0(N * sizeof(char *)); … … 279 279 nblocks--; 280 280 281 281 n_CoeffWrite(r->cf); 282 #if 0 282 283 if (rField_is_GF(r)) 283 284 { 284 Print("// # ground field : %d\n",r->c h);285 Print("// # ground field : %d\n",r->cf->ch); 285 286 Print("// primitive element : %s\n", r->parameter[0]); 286 287 StringSetS("// minpoly : "); … … 313 314 else 314 315 Print ("%d\n",rChar(r)); /* Fp(a) */ 315 if (r-> parameter!=NULL)316 if (r->cf->parameter!=NULL) 316 317 { 317 318 Print ("// %d parameter : ",rPar(r)); 318 char **sp=r-> parameter;319 char **sp=r->cf->parameter; 319 320 int nop=0; 320 321 while (nop<rPar(r)) … … 328 329 { 329 330 // i^2+1: 330 Print("(%s^2+1)\n",r-> parameter[0]);331 } 332 else if (r-> minpoly==NULL)331 Print("(%s^2+1)\n",r->cf->parameter[0]); 332 } 333 else if (r->cf->minpoly==NULL) 333 334 { 334 335 PrintS("0\n"); … … 336 337 else 337 338 { 338 StringSetS(""); n_Write(r-> minpoly,r->cf); PrintS(StringAppendS("\n"));339 StringSetS(""); n_Write(r->cf->minpoly,r->cf); PrintS(StringAppendS("\n")); 339 340 } 340 341 //if (r->minideal!=NULL) … … 345 346 } 346 347 } 348 #endif 347 349 Print("// number of vars : %d",r->N); 348 350 … … 477 479 #endif 478 480 479 nKillChar(r->cf); 481 nKillChar(r->cf); r->cf = NULL; 480 482 rUnComplete(r); 481 483 // delete order stuff … … 512 514 513 515 // delete parameter 514 if (r-> parameter!=NULL)515 { 516 char **s=r-> parameter;516 if (r->cf->parameter!=NULL) 517 { 518 char **s=r->cf->parameter; 517 519 j = 0; 518 520 while (j < rPar(r)) … … 522 524 j++; 523 525 } 524 omFreeSize((ADDRESS)r->parameter,rPar(r)*sizeof(char *)); 525 } 526 #ifdef HAVE_RINGS 527 if (r->cf->modBase != NULL) 528 { 529 mpz_clear(r->cf->modBase); 530 omFree((ADDRESS)r->cf->modBase); 531 } 532 if (r->cf->modNumber != NULL) 533 { 534 mpz_clear(r->cf->modNumber); 535 omFree((ADDRESS)r->cf->modNumber); 536 } 537 #endif 526 omFreeSize((ADDRESS)r->cf->parameter,rPar(r)*sizeof(char *)); 527 } 538 528 omFreeBin(r, sip_sring_bin); 539 529 } … … 679 669 } 680 670 #endif 681 if (r-> parameter==NULL)682 { 683 i=r->c h;671 if (r->cf->parameter==NULL) 672 { 673 i=r->cf->ch; 684 674 if(i==-1) 685 675 s=omStrDup("real"); /* R */ … … 693 683 if (rField_is_long_C(r)) 694 684 { 695 s=(char *)omAlloc(21+strlen(r-> parameter[0]));696 sprintf(s,"complex,%d,%s",r->float_len,r-> parameter[0]); /* C */685 s=(char *)omAlloc(21+strlen(r->cf->parameter[0])); 686 sprintf(s,"complex,%d,%s",r->float_len,r->cf->parameter[0]); /* C */ 697 687 return s; 698 688 } … … 700 690 for(i=0; i<rPar(r);i++) 701 691 { 702 l+=(strlen(r-> parameter[i])+1);692 l+=(strlen(r->cf->parameter[i])+1); 703 693 } 704 694 s=(char *)omAlloc((long)(l+MAX_INT_LEN+1)); 705 695 s[0]='\0'; 706 if (r->c h<0) sprintf(s,"%d",-r->ch); /* Fp(a) */707 else if (r->c h==1) sprintf(s,"0"); /* Q(a) */696 if (r->cf->ch<0) sprintf(s,"%d",-r->cf->ch); /* Fp(a) */ 697 else if (r->cf->ch==1) sprintf(s,"0"); /* Q(a) */ 708 698 else 709 699 { 710 sprintf(s,"%d,%s",r->c h,r->parameter[0]); /* GF(q) */700 sprintf(s,"%d,%s",r->cf->ch,r->cf->parameter[0]); /* GF(q) */ 711 701 return s; 712 702 } … … 717 707 { 718 708 strcat(s,tt); 719 strcat(s,r-> parameter[i]);709 strcat(s,r->cf->parameter[i]); 720 710 } 721 711 return s; … … 724 714 char * rParStr(ring r) 725 715 { 726 if ((r==NULL)||(r-> parameter==NULL)) return omStrDup("");716 if ((r==NULL)||(r->cf->parameter==NULL)) return omStrDup(""); 727 717 728 718 int i; … … 731 721 for (i=0; i<rPar(r); i++) 732 722 { 733 l+=strlen(r-> parameter[i])+1;723 l+=strlen(r->cf->parameter[i])+1; 734 724 } 735 725 char *s=(char *)omAlloc((long)l); … … 737 727 for (i=0; i<rPar(r)-1; i++) 738 728 { 739 strcat(s,r-> parameter[i]);729 strcat(s,r->cf->parameter[i]); 740 730 strcat(s,","); 741 731 } 742 strcat(s,r-> parameter[i]);732 strcat(s,r->cf->parameter[i]); 743 733 return s; 744 734 } … … 759 749 int rIsExtension(const ring r) 760 750 { 761 return (r-> parameter!=NULL); /* R, Q, Fp: FALSE */751 return (r->cf->parameter!=NULL); /* R, Q, Fp: FALSE */ 762 752 } 763 753 … … 793 783 return 0; 794 784 if (!rIsExtension(r)) /* Q, Fp */ 795 return r->c h;785 return r->cf->ch; 796 786 if (rField_is_Zp_a(r)) /* Fp(a) */ 797 return -r->c h;787 return -r->cf->ch; 798 788 if (rField_is_Q_a(r)) /* Q(a) */ 799 789 return 0; 800 790 /*else*/ /* GF(p,n) */ 801 791 { 802 if ((r->c h & 1)==0) return 2;792 if ((r->cf->ch & 1)==0) return 2; 803 793 int i=3; 804 while ((r->c h % i)!=0) i+=2;794 while ((r->cf->ch % i)!=0) i+=2; 805 795 return i; 806 796 } … … 843 833 int rSumInternal(ring r1, ring r2, ring &sum, BOOLEAN vartest, BOOLEAN dp_dp) 844 834 { 835 845 836 ip_sring tmpR; 846 837 memset(&tmpR,0,sizeof(tmpR)); 847 838 /* check coeff. field =====================================================*/ 839 840 TODO(Hans, switch to the use of ->cf); 841 assume( tmpR.cf !=NULL ); // ???! 842 848 843 if ((rFieldType(r1)==rFieldType(r2)) 849 844 && (rInternalChar(r1)==rInternalChar(r2))) 850 845 { 851 tmpR.ch=r1->ch;852 846 if (rField_is_Q(r1)||rField_is_Zp(r1)||rField_is_GF(r1)) /*Q, Z/p, GF(p,n)*/ 853 847 { 854 if (r1-> parameter!=NULL)855 { 856 if (!vartest || (strcmp(r1-> parameter[0],r2->parameter[0])==0)) /* 1 par */848 if (r1->cf->parameter!=NULL) 849 { 850 if (!vartest || (strcmp(r1->cf->parameter[0],r2->cf->parameter[0])==0)) /* 1 par */ 857 851 { 858 852 //tmpR.parameter=(char **)omAllocBin(char *); 859 //tmpR.parameter[0]=omStrDup(r1-> parameter[0]);853 //tmpR.parameter[0]=omStrDup(r1->cf->parameter[0]); 860 854 //tmpR.P=1; 861 855 } … … 866 860 } 867 861 } 862 tmpR.cf->ch=r1->cf->ch; 868 863 } 869 864 else if (rField_is_Extension(r1)) /* Q(a),Z/p(a) */ 870 865 { 871 if (r1-> minpoly!=NULL)872 { 873 if (r2-> minpoly!=NULL)866 if (r1->cf->minpoly!=NULL) 867 { 868 if (r2->cf->minpoly!=NULL) 874 869 { 875 870 // HANNES: TODO: delete nSetChar … … 878 873 // rChangeCurrRing(r1); 879 874 880 if ((!vartest || (strcmp(r1-> parameter[0],r2->parameter[0])==0)) /* 1 par */881 && n_Equal(r1-> minpoly,r2->minpoly, r1->cf))875 if ((!vartest || (strcmp(r1->cf->parameter[0],r2->cf->parameter[0])==0)) /* 1 par */ 876 && n_Equal(r1->cf->minpoly,r2->cf->minpoly, r1->cf)) 882 877 { 883 878 //tmpR.parameter=(char **)omAllocBin(char *); 884 //tmpR.parameter[0]=omStrDup(r1-> parameter[0]);885 //tmpR.minpoly=n_Copy(r1-> minpoly, r1->cf);879 //tmpR.parameter[0]=omStrDup(r1->cf->parameter[0]); 880 //tmpR.minpoly=n_Copy(r1->cf->minpoly, r1->cf); 886 881 //tmpR.P=1; 887 882 // HANNES: TODO: delete nSetChar … … 896 891 else 897 892 { 898 if ((!vartest || (strcmp(r1-> parameter[0],r2->parameter[0])==0)) /* 1 par */893 if ((!vartest || (strcmp(r1->cf->parameter[0],r2->cf->parameter[0])==0)) /* 1 par */ 899 894 && (rPar(r2)==1)) 900 895 { 901 896 //tmpR.parameter=(char **)omAllocBin(char *); 902 //tmpR.parameter[0]=omStrDup(r1-> parameter[0]);897 //tmpR.parameter[0]=omStrDup(r1->cf->parameter[0]); 903 898 //tmpR.P=1; 904 //tmpR.minpoly=n_Copy(r1-> minpoly, r1->cf);899 //tmpR.minpoly=n_Copy(r1->cf->minpoly, r1->cf); 905 900 } 906 901 else … … 911 906 } 912 907 } 913 else /* r1-> minpoly==NULL */914 { 915 if (r2-> minpoly!=NULL)916 { 917 if ((!vartest || (strcmp(r1-> parameter[0],r2->parameter[0])==0)) /* 1 par */908 else /* r1->cf->minpoly==NULL */ 909 { 910 if (r2->cf->minpoly!=NULL) 911 { 912 if ((!vartest || (strcmp(r1->cf->parameter[0],r2->cf->parameter[0])==0)) /* 1 par */ 918 913 && (rPar(r1)==1)) 919 914 { 920 915 //tmpR.parameter=(char **)omAllocBin(char *); 921 //tmpR.parameter[0]=omStrDup(r1-> parameter[0]);916 //tmpR.parameter[0]=omStrDup(r1->cf->parameter[0]); 922 917 //tmpR.P=1; 923 //tmpR.minpoly=n_Copy(r2-> minpoly, r2->cf);918 //tmpR.minpoly=n_Copy(r2->cf->minpoly, r2->cf); 924 919 } 925 920 else … … 932 927 { 933 928 int len=rPar(r1)+rPar(r2); 934 tmpR. parameter=(char **)omAlloc0(len*sizeof(char *));929 tmpR.cf->parameter=(char **)omAlloc0(len*sizeof(char *)); 935 930 int i; 936 931 for (i=0;i<rPar(r1);i++) 937 932 { 938 tmpR. parameter[i]=omStrDup(r1->parameter[i]);933 tmpR.cf->parameter[i]=omStrDup(r1->cf->parameter[i]); 939 934 } 940 935 int j,l; … … 945 940 for(l=0;l<i;l++) 946 941 { 947 if(strcmp(tmpR. parameter[l],r2->parameter[j])==0)942 if(strcmp(tmpR.cf->parameter[l],r2->cf->parameter[j])==0) 948 943 break; 949 944 } … … 953 948 if (l==i) 954 949 { 955 tmpR. parameter[i]=omStrDup(r2->parameter[j]);950 tmpR.cf->parameter[i]=omStrDup(r2->cf->parameter[j]); 956 951 i++; 957 952 } … … 959 954 if (i!=len) 960 955 { 961 tmpR. parameter=(char**)omReallocSize(tmpR.parameter,956 tmpR.cf->parameter=(char**)omReallocSize(tmpR.cf->parameter, 962 957 len*sizeof(char *), 963 958 i*sizeof(char *)); 964 959 } 965 tmpR. P=i;960 tmpR.cf->P=i; 966 961 } 967 962 } … … 998 993 #endif 999 994 } 1000 else /* r1->c h!=r2->ch */1001 { 1002 if (r1->c h<-1) /* Z/p(a) */1003 { 1004 if ((r2->c h==0) /* Q */1005 || (r2->c h==-r1->ch)) /* Z/p */1006 { 1007 tmpR.c h=r1->ch;1008 tmpR. P=rPar(r1);1009 tmpR. parameter=(char **)omAlloc(rPar(r1)*sizeof(char *));995 else /* r1->cf->ch!=r2->cf->ch */ 996 { 997 if (r1->cf->ch<-1) /* Z/p(a) */ 998 { 999 if ((r2->cf->ch==0) /* Q */ 1000 || (r2->cf->ch==-r1->cf->ch)) /* Z/p */ 1001 { 1002 tmpR.cf->ch=r1->cf->ch; 1003 tmpR.cf->P=rPar(r1); 1004 tmpR.cf->parameter=(char **)omAlloc(rPar(r1)*sizeof(char *)); 1010 1005 int i; 1011 1006 for (i=0;i<rPar(r1);i++) 1012 1007 { 1013 tmpR. parameter[i]=omStrDup(r1->parameter[i]);1014 } 1015 if (r1-> minpoly!=NULL)1016 { 1017 tmpR. minpoly=n_Copy(r1->minpoly, r1->cf);1008 tmpR.cf->parameter[i]=omStrDup(r1->cf->parameter[i]); 1009 } 1010 if (r1->cf->minpoly!=NULL) 1011 { 1012 tmpR.cf->minpoly=n_Copy(r1->cf->minpoly, r1->cf); 1018 1013 } 1019 1014 } … … 1024 1019 } 1025 1020 } 1026 else if (r1->c h==-1) /* R */1021 else if (r1->cf->ch==-1) /* R */ 1027 1022 { 1028 1023 WerrorS("R+.."); 1029 1024 return -1; 1030 1025 } 1031 else if (r1->c h==0) /* Q */1032 { 1033 if ((r2->c h<-1)||(r2->ch==1)) /* Z/p(a),Q(a) */1034 { 1035 tmpR.c h=r2->ch;1036 tmpR. P=rPar(r2);1037 tmpR. parameter=(char **)omAlloc(rPar(r2)*sizeof(char *));1026 else if (r1->cf->ch==0) /* Q */ 1027 { 1028 if ((r2->cf->ch<-1)||(r2->cf->ch==1)) /* Z/p(a),Q(a) */ 1029 { 1030 tmpR.cf->ch=r2->cf->ch; 1031 tmpR.cf->P=rPar(r2); 1032 tmpR.cf->parameter=(char **)omAlloc(rPar(r2)*sizeof(char *)); 1038 1033 int i; 1039 1034 for (i=0;i<rPar(r2);i++) 1040 1035 { 1041 tmpR. parameter[i]=omStrDup(r2->parameter[i]);1042 } 1043 if (r2-> minpoly!=NULL)1044 { 1045 tmpR. minpoly=n_Copy(r2->minpoly, r2->cf);1046 } 1047 } 1048 else if (r2->c h>1) /* Z/p,GF(p,n) */1049 { 1050 tmpR.c h=r2->ch;1051 if (r2-> parameter!=NULL)1052 { 1053 tmpR. parameter=(char_ptr *)omAllocBin(char_ptr_bin);1054 tmpR. P=1;1055 tmpR. parameter[0]=omStrDup(r2->parameter[0]);1036 tmpR.cf->parameter[i]=omStrDup(r2->cf->parameter[i]); 1037 } 1038 if (r2->cf->minpoly!=NULL) 1039 { 1040 tmpR.cf->minpoly=n_Copy(r2->cf->minpoly, r2->cf); 1041 } 1042 } 1043 else if (r2->cf->ch>1) /* Z/p,GF(p,n) */ 1044 { 1045 tmpR.cf->ch=r2->cf->ch; 1046 if (r2->cf->parameter!=NULL) 1047 { 1048 tmpR.cf->parameter=(char_ptr *)omAllocBin(char_ptr_bin); 1049 tmpR.cf->P=1; 1050 tmpR.cf->parameter[0]=omStrDup(r2->cf->parameter[0]); 1056 1051 } 1057 1052 } … … 1062 1057 } 1063 1058 } 1064 else if (r1->c h==1) /* Q(a) */1065 { 1066 if (r2->c h==0) /* Q */1067 { 1068 tmpR.c h=r1->ch;1069 tmpR. P=rPar(r1);1070 tmpR. parameter=(char **)omAlloc(rPar(r1)*sizeof(char *));1059 else if (r1->cf->ch==1) /* Q(a) */ 1060 { 1061 if (r2->cf->ch==0) /* Q */ 1062 { 1063 tmpR.cf->ch=r1->cf->ch; 1064 tmpR.cf->P=rPar(r1); 1065 tmpR.cf->parameter=(char **)omAlloc(rPar(r1)*sizeof(char *)); 1071 1066 int i; 1072 1067 for(i=0;i<rPar(r1);i++) 1073 1068 { 1074 tmpR. parameter[i]=omStrDup(r1->parameter[i]);1075 } 1076 if (r1-> minpoly!=NULL)1077 { 1078 tmpR. minpoly=n_Copy(r1->minpoly, r1->cf);1069 tmpR.cf->parameter[i]=omStrDup(r1->cf->parameter[i]); 1070 } 1071 if (r1->cf->minpoly!=NULL) 1072 { 1073 tmpR.cf->minpoly=n_Copy(r1->cf->minpoly, r1->cf); 1079 1074 } 1080 1075 } … … 1085 1080 } 1086 1081 } 1087 else /* r1->c h >=2 , Z/p */1088 { 1089 if (r2->c h==0) /* Q */1090 { 1091 tmpR.c h=r1->ch;1092 } 1093 else if (r2->c h==-r1->ch) /* Z/p(a) */1094 { 1095 tmpR.c h=r2->ch;1096 tmpR. P=rPar(r2);1097 tmpR. parameter=(char **)omAlloc(rPar(r2)*sizeof(char *));1082 else /* r1->cf->ch >=2 , Z/p */ 1083 { 1084 if (r2->cf->ch==0) /* Q */ 1085 { 1086 tmpR.cf->ch=r1->cf->ch; 1087 } 1088 else if (r2->cf->ch==-r1->cf->ch) /* Z/p(a) */ 1089 { 1090 tmpR.cf->ch=r2->cf->ch; 1091 tmpR.cf->P=rPar(r2); 1092 tmpR.cf->parameter=(char **)omAlloc(rPar(r2)*sizeof(char *)); 1098 1093 int i; 1099 1094 for(i=0;i<rPar(r2);i++) 1100 1095 { 1101 tmpR. parameter[i]=omStrDup(r2->parameter[i]);1102 } 1103 if (r2-> minpoly!=NULL)1104 { 1105 tmpR. minpoly=n_Copy(r2->minpoly, r2->cf);1096 tmpR.cf->parameter[i]=omStrDup(r2->cf->parameter[i]); 1097 } 1098 if (r2->cf->minpoly!=NULL) 1099 { 1100 tmpR.cf->minpoly=n_Copy(r2->cf->minpoly, r2->cf); 1106 1101 } 1107 1102 } … … 1127 1122 if (*(r1->names[i]) == '\0') 1128 1123 b = FALSE; 1129 else if ((r2-> parameter!=NULL) && (strlen(r1->names[i])==1))1124 else if ((r2->cf->parameter!=NULL) && (strlen(r1->names[i])==1)) 1130 1125 { 1131 1126 if (vartest) … … 1133 1128 for(j=0;j<rPar(r2);j++) 1134 1129 { 1135 if (strcmp(r1->names[i],r2-> parameter[j])==0)1130 if (strcmp(r1->names[i],r2->cf->parameter[j])==0) 1136 1131 { 1137 1132 b=FALSE; … … 1159 1154 if (*(r2->names[i]) == '\0') 1160 1155 b = FALSE; 1161 else if ((r1-> parameter!=NULL) && (strlen(r2->names[i])==1))1156 else if ((r1->cf->parameter!=NULL) && (strlen(r2->names[i])==1)) 1162 1157 { 1163 1158 if (vartest) … … 1165 1160 for(j=0;j<rPar(r1);j++) 1166 1161 { 1167 if (strcmp(r2->names[i],r1-> parameter[j])==0)1162 if (strcmp(r2->names[i],r1->cf->parameter[j])==0) 1168 1163 { 1169 1164 b=FALSE; … … 1421 1416 if (rPar(R2)!=0) par_perm2=(int *)omAlloc0((rPar(R2)+1)*sizeof(int)); 1422 1417 1423 maFindPerm(R1->names, rVar(R1), R1-> parameter, rPar(R1),1424 sum->names, rVar(sum), sum-> parameter, rPar(sum),1425 perm1, par_perm1, sum->c h);1426 1427 maFindPerm(R2->names, rVar(R2), R2-> parameter, rPar(R2),1428 sum->names, rVar(sum), sum-> parameter, rPar(sum),1429 perm2, par_perm2, sum->c h);1418 maFindPerm(R1->names, rVar(R1), R1->cf->parameter, rPar(R1), 1419 sum->names, rVar(sum), sum->cf->parameter, rPar(sum), 1420 perm1, par_perm1, sum->cf->ch); 1421 1422 maFindPerm(R2->names, rVar(R2), R2->cf->parameter, rPar(R2), 1423 sum->names, rVar(sum), sum->cf->parameter, rPar(sum), 1424 perm2, par_perm2, sum->cf->ch); 1430 1425 1431 1426 … … 1526 1521 int *par_perm1 = NULL; 1527 1522 if (rPar(r1)!=0) par_perm1=(int *)omAlloc0((rPar(r1)+1)*sizeof(int)); 1528 maFindPerm(r1->names, rVar(r1), r1-> parameter, rPar(r1),1529 sum->names, rVar(sum), sum-> parameter, rPar(sum),1530 perm1, par_perm1, sum->c h);1523 maFindPerm(r1->names, rVar(r1), r1->cf->parameter, rPar(r1), 1524 sum->names, rVar(sum), sum->cf->parameter, rPar(sum), 1525 perm1, par_perm1, sum->cf->ch); 1531 1526 nMapFunc nMap1 = n_SetMap(r1->cf,sum->cf); 1532 1527 Q1 = idInit(IDELEMS(r1->qideal),1); … … 1549 1544 int *par_perm2 = NULL; 1550 1545 if (rPar(r2)!=0) par_perm2=(int *)omAlloc0((rPar(r2)+1)*sizeof(int)); 1551 maFindPerm(r2->names, rVar(r2), r2-> parameter, rPar(r2),1552 sum->names, rVar(sum), sum-> parameter, rPar(sum),1553 perm2, par_perm2, sum->c h);1546 maFindPerm(r2->names, rVar(r2), r2->cf->parameter, rPar(r2), 1547 sum->names, rVar(sum), sum->cf->parameter, rPar(sum), 1548 perm2, par_perm2, sum->cf->ch); 1554 1549 nMapFunc nMap2 = n_SetMap(r2->cf,sum->cf); 1555 1550 Q2 = idInit(IDELEMS(r2->qideal),1); … … 1620 1615 //struct omBin PolyBin; /* Bin from where monoms are allocated */ 1621 1616 //memset: res->PolyBin=NULL; // rComplete 1622 res->c h=r->ch; /* characteristic */1617 res->cf->ch=r->cf->ch; /* characteristic */ 1623 1618 #ifdef HAVE_RINGS 1624 1619 res->cf->ringtype = r->cf->ringtype; // cring = 0 => coefficient field, cring = 1 => coeffs from Z/2^m … … 1640 1635 res->float_len2=r->float_len2; /* additional char-flags */ 1641 1636 1642 res->N=r ->N; /* number of vars */1643 res-> P=r->P; /* number of pars */1637 res->N=rVar(r); /* number of vars */ 1638 res->cf->P=rPar(r); /* number of pars */ 1644 1639 res->OrdSgn=r->OrdSgn; /* 1 for polynomial rings, -1 otherwise */ 1645 1640 … … 1697 1692 res->algring=r->algring; 1698 1693 //memset: res->minideal=NULL; 1699 if (r-> parameter!=NULL)1700 { 1701 if (r-> minpoly!=NULL) res->minpoly=n_Copy(r->minpoly,r->cf);1694 if (r->cf->parameter!=NULL) 1695 { 1696 if (r->cf->minpoly!=NULL) res->cf->minpoly=n_Copy(r->cf->minpoly,r->cf); 1702 1697 int l=rPar(r); 1703 res-> parameter=(char **)omAlloc(l*sizeof(char *));1698 res->cf->parameter=(char **)omAlloc(l*sizeof(char *)); 1704 1699 int i; 1705 1700 for(i=0;i<rPar(r);i++) 1706 1701 { 1707 res-> parameter[i]=omStrDup(r->parameter[i]);1702 res->cf->parameter[i]=omStrDup(r->cf->parameter[i]); 1708 1703 } 1709 1704 if (r->minideal!=NULL) … … 1845 1840 for (i=0; i<rPar(r1);i++) 1846 1841 { 1847 if (strcmp(r1-> parameter[i], r2->parameter[i])!=0)1842 if (strcmp(r1->cf->parameter[i], r2->cf->parameter[i])!=0) 1848 1843 return FALSE; 1849 1844 } 1850 1845 1851 if (r1-> minpoly != NULL)1852 { 1853 if (r2-> minpoly == NULL) return FALSE;1854 if (! n_Equal(r1-> minpoly, r2->minpoly, r1->cf)) return FALSE;1855 } 1856 else if (r2-> minpoly != NULL) return FALSE;1846 if (r1->cf->minpoly != NULL) 1847 { 1848 if (r2->cf->minpoly == NULL) return FALSE; 1849 if (! n_Equal(r1->cf->minpoly, r2->cf->minpoly, r1->cf)) return FALSE; 1850 } 1851 else if (r2->cf->minpoly != NULL) return FALSE; 1857 1852 1858 1853 if (qr) … … 2276 2271 } 2277 2272 } 2278 if (r-> minpoly!=NULL)2279 { 2280 omCheckAddr(r-> minpoly);2273 if (r->cf->minpoly!=NULL) 2274 { 2275 omCheckAddr(r->cf->minpoly); 2281 2276 } 2282 2277 //assume(r->cf!=NULL); … … 3160 3155 { 3161 3156 int i; 3162 if (r-> parameter!=NULL)3157 if (r->cf->parameter!=NULL) 3163 3158 { 3164 3159 for (i=0;i<rPar(r);i++) 3165 3160 { 3166 if(strlen(r-> parameter[i])>1)3161 if(strlen(r->cf->parameter[i])>1) 3167 3162 { 3168 3163 r->ShortOut=FALSE; … … 5505 5500 5506 5501 assume(MATELEM(src->GetNC()->C,i,j) != NULL); 5507 MATELEM(C,nj,ni) = p_PermPoly(MATELEM(src->GetNC()->C,i,j),perm,src,r, nMap,par_perm, src->P);5502 MATELEM(C,nj,ni) = p_PermPoly(MATELEM(src->GetNC()->C,i,j),perm,src,r, nMap,par_perm,rPar(src)); 5508 5503 5509 5504 if(MATELEM(src->GetNC()->D,i,j) != NULL) 5510 MATELEM(D,nj,ni) = p_PermPoly(MATELEM(src->GetNC()->D,i,j),perm,src,r, nMap,par_perm, src->P);5505 MATELEM(D,nj,ni) = p_PermPoly(MATELEM(src->GetNC()->D,i,j),perm,src,r, nMap,par_perm,rPar(src)); 5511 5506 } 5512 5507 } -
libpolys/polys/monomials/ring.h
r0b7bf7 r01c1d0 196 196 int* block0; /* starting pos., rInit/rSleftvOrdering2Ordering*/ 197 197 int* block1; /* ending pos., rInit/rSleftvOrdering2Ordering*/ 198 char** parameter; /* names of parameters, rInit */199 number minpoly; /* for Q_a/Zp_a, rInit */198 // char** parameter; /* names of parameters, rInit */ 199 // number minpoly; /* for Q_a/Zp_a, rInit */ 200 200 ideal minideal; 201 201 int** wvhdl; /* array of weight vectors, rInit/rSleftvOrdering2Ordering */ … … 234 234 unsigned long options; /* ring dependent options */ 235 235 236 int ch; /* characteristic, rInit */236 // int ch; /* characteristic, rInit */ 237 237 int ref; /* reference counter to the ring, interpreter */ 238 238 … … 242 242 short N; /* number of vars, rInit */ 243 243 244 short P; /* number of pars, rInit */245 244 short OrdSgn; /* 1 for polynomial rings, -1 otherwise, rInit */ 246 245 … … 259 258 BOOLEAN LexOrder; // TRUE if the monomial ordering has polynomial and power series blocks 260 259 BOOLEAN MixedOrder; // TRUE for global/local mixed orderings, FALSE otherwise 261 BOOLEAN pLexOrder; /* TRUE if the monomial ordering is not compatible with pFDeg */260 BOOLEAN pLexOrder; /* TRUE if the monomial ordering is not compatible with pFDeg */ 262 261 263 262 BOOLEAN ComponentOrder; // ??? … … 402 401 char * rString(ring r); 403 402 int rChar(ring r); 404 #define rPar(r) (r-> P)403 #define rPar(r) (r->cf->P) 405 404 #define rVar(r) (r->N) 406 405 char * rParStr(ring r); … … 451 450 452 451 static inline BOOLEAN rField_is_Zp(const ring r, int p) 453 { assume(r != NULL); return (getCoeffType(r->cf) == n_Zp) && (r->c h == p); }452 { assume(r != NULL); return (getCoeffType(r->cf) == n_Zp) && (r->cf->ch == p); } 454 453 455 454 static inline BOOLEAN rField_is_Q(const ring r) -
libpolys/polys/nc/gring.cc
r0b7bf7 r01c1d0 3771 3771 // else 3772 3772 { 3773 int *perm = (int *)omAlloc0(( srcRing->N+1)*sizeof(int));3774 int *par_perm = (int *)omAlloc0(( srcRing->P+1)*sizeof(int));3775 // int *par_perm = (int *)omAlloc0(( srcRing->P+1)*sizeof(int));3773 int *perm = (int *)omAlloc0((rVar(srcRing)+1)*sizeof(int)); 3774 int *par_perm = (int *)omAlloc0((rPar(srcRing)+1)*sizeof(int)); 3775 // int *par_perm = (int *)omAlloc0((rPar(srcRing)+1)*sizeof(int)); 3776 3776 int i; 3777 3777 // if (srcRing->P > 0) … … 3780 3780 // par_perm[i]=-i; 3781 3781 // } 3782 if ((shift<0) || (shift > srcRing->N)) // ???3782 if ((shift<0) || (shift > rVar(srcRing))) // ??? 3783 3783 { 3784 3784 Werror("bad shifts in p_CopyEmbed"); … … 3789 3789 perm[i] = shift+i; 3790 3790 } 3791 q = p_PermPoly(p,perm,srcRing, dstRing, nMap,par_perm, srcRing->P);3791 q = p_PermPoly(p,perm,srcRing, dstRing, nMap,par_perm, rPar(srcRing)); 3792 3792 } 3793 3793 return(q); -
libpolys/polys/polys0.cc
r0b7bf7 r01c1d0 36 36 n_Write(p->coef,r->cf); 37 37 wroteCoef=(rShortOut(r) == FALSE) 38 || (r-> parameter!=NULL)38 || (r->cf->parameter!=NULL) 39 39 || rField_is_R(r) || (rField_is_long_R(r)) || (rField_is_long_C(r)); 40 40 writeGen=TRUE; … … 46 46 n_Write(p->coef,r->cf); 47 47 wroteCoef=(rShortOut(r) == FALSE) 48 || (r-> parameter!=NULL)48 || (r->cf->parameter!=NULL) 49 49 || rField_is_R(r) || (rField_is_long_R(r)) || (rField_is_long_C(r)); 50 50 writeGen=TRUE; -
libpolys/polys/templates/p_Procs_Set.h
r0b7bf7 r01c1d0 155 155 extern poly p_Mult_nn_pthread(poly p, const number n, const ring r); 156 156 #ifdef NV_OPS 157 if ((field==FieldZp) && (r->c h>NV_MAX_PRIME))157 if ((field==FieldZp) && (r->cf->ch>NV_MAX_PRIME)) 158 158 { 159 159 // set all (mult/div.) routines to FieldGeneral-variants
Note: See TracChangeset
for help on using the changeset viewer.