Changeset 8fd62c in git
- Timestamp:
- Oct 17, 2018, 3:09:37 PM (6 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- fab4706447a1dd4c936f1e7b0fd3c1c9920279de
- Parents:
- 6a0ad7542c11c59c63743cd18b8e8f68f098d75f
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/iparith.cc
r6a0ad75 r8fd62c 3158 3158 res->data = (char*)l; 3159 3159 return FALSE; 3160 } 3161 static BOOLEAN jjRMINUS(leftv res, leftv u, leftv v) 3162 { 3163 ring r=rMinusVar((ring)u->Data(),(char*)v->Data()); 3164 res->data = (char *)r; 3165 return r==NULL; 3166 } 3167 static BOOLEAN jjRPLUS(leftv res, leftv u, leftv v) 3168 { 3169 int left; 3170 if (u->Typ()==RING_CMD) left=0; 3171 else 3172 { 3173 leftv h=u;u=v;v=h; 3174 left=1; 3175 } 3176 ring r=rPlusVar((ring)u->Data(),(char*)v->Data(),left); 3177 res->data = (char *)r; 3178 return r==NULL; 3160 3179 } 3161 3180 static BOOLEAN jjRSUM(leftv res, leftv u, leftv v) -
Singular/ipshell.cc
r6a0ad75 r8fd62c 2937 2937 (rField_is_Q(currRing) || rField_is_Q_a(currRing) || 2938 2938 rField_is_Zp(currRing) || rField_is_Zp_a(currRing) || 2939 2939 rField_is_Zn(currRing))) 2940 2940 || 2941 2941 (rField_is_Zp_a(orig_ring) && // Zp(a..) -> Zp(a..) || Zp … … 5643 5643 ch=32003; 5644 5644 } 5645 5645 #ifndef TEST_ZN_AS_ZP 5646 5646 cf = nInitChar(n_Zp, (void*)(long)ch); 5647 5647 #else 5648 5648 mpz_t modBase; 5649 5649 mpz_init_set_ui(modBase, (long)ch); … … 5655 5655 cf->is_domain=1; 5656 5656 cf->has_simple_Inverse=1; 5657 5657 #endif 5658 5658 } 5659 5659 else -
Singular/table.h
r6a0ad75 r8fd62c 352 352 ,{D(lAdd), '+', LIST_CMD, LIST_CMD, LIST_CMD, ALLOW_NC | ALLOW_RING} 353 353 ,{D(jjRSUM), '+', RING_CMD, RING_CMD, RING_CMD, ALLOW_NC | ALLOW_RING} 354 ,{D(jjPLUS_B_P), '+', BUCKET_CMD, BUCKET_CMD, POLY_CMD, ALLOW_NC | ALLOW_RING} 354 ,{D(jjRPLUS), '+', RING_CMD, RING_CMD, STRING_CMD, ALLOW_NC | ALLOW_RING} 355 ,{D(jjRPLUS), '+', RING_CMD, STRING_CMD, RING_CMD, ALLOW_NC | ALLOW_RING} 356 ,{D(jjPLUS_B_P), '+', BUCKET_CMD, BUCKET_CMD, POLY_CMD, ALLOW_NC | ALLOW_RING} 355 357 ,{D(jjMINUS_I), '-', INT_CMD, INT_CMD, INT_CMD, ALLOW_NC | ALLOW_RING} 356 358 ,{D(jjMINUS_BI), '-', BIGINT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_NC | ALLOW_RING} … … 365 367 ,{D(jjOP_BIM_I), '-', BIGINTMAT_CMD, BIGINTMAT_CMD, INT_CMD, ALLOW_NC | ALLOW_RING} 366 368 ,{D(jjOP_I_BIM), '-', BIGINTMAT_CMD, INT_CMD, BIGINTMAT_CMD, ALLOW_NC | ALLOW_RING} 367 ,{D(jjOP_BIM_BI), '-',BIGINTMAT_CMD, BIGINTMAT_CMD, BIGINT_CMD, ALLOW_NC | ALLOW_RING}368 ,{D(jjOP_BI_BIM), '-',BIGINTMAT_CMD, BIGINT_CMD, BIGINTMAT_CMD, ALLOW_NC | ALLOW_RING}369 ,{D(jjOP_BIM_BI), '-', BIGINTMAT_CMD, BIGINTMAT_CMD, BIGINT_CMD, ALLOW_NC | ALLOW_RING} 370 ,{D(jjOP_BI_BIM), '-', BIGINTMAT_CMD, BIGINT_CMD, BIGINTMAT_CMD, ALLOW_NC | ALLOW_RING} 369 371 ,{D(jjOP_IV_I), '-', INTVEC_CMD, INTVEC_CMD, INT_CMD, ALLOW_NC | ALLOW_RING} 370 372 ,{D(jjOP_IM_I), '-', INTMAT_CMD, INTMAT_CMD, INT_CMD, ALLOW_NC | ALLOW_RING} … … 382 384 ,{D(jjMINUS_BIM), '-', CMATRIX_CMD, CMATRIX_CMD,CMATRIX_CMD, ALLOW_NC | ALLOW_RING} 383 385 #endif 386 ,{D(jjRMINUS), '-', RING_CMD, RING_CMD, STRING_CMD, ALLOW_NC | ALLOW_RING} 384 387 ,{D(jjMINUS_B_P), '-', BUCKET_CMD, BUCKET_CMD, POLY_CMD, ALLOW_NC | ALLOW_RING} 385 388 ,{ jjWRONG2 , '-', NONE, IDEAL_CMD, IDEAL_CMD, ALLOW_NC | ALLOW_RING} -
libpolys/polys/monomials/ring.cc
r6a0ad75 r8fd62c 40 40 #define BITS_PER_LONG 8*SIZEOF_LONG 41 41 42 typedef char * char_ptr; 42 43 omBin sip_sring_bin = omGetSpecBin(sizeof(ip_sring)); 43 omBin char_ptr_bin = omGetSpecBin(sizeof(char *));44 omBin char_ptr_bin = omGetSpecBin(sizeof(char_ptr)); 44 45 45 46 … … 684 685 int rChar(ring r) { return r->cf->ch; } 685 686 686 // typedef char * char_ptr;687 // omBin char_ptr_bin = omGetSpecBin(sizeof(char_ptr)); // deallocation?688 687 689 688 … … 3015 3014 // are introduced, but their names are never set 3016 3015 // hence, we do the following awkward trick 3017 int N = omSizeOfAddr(r->names)/sizeof(char *);3016 int N = omSizeOfAddr(r->names)/sizeof(char_ptr); 3018 3017 if (r->N < N) N = r->N; 3019 3018 … … 5665 5664 return 0; 5666 5665 } 5666 5667 ring rPlusVar(const ring r, char *v,int left) 5668 { 5669 if (r->order[2]!=0) 5670 { 5671 WerrorS("only for rings with an ordering of one block"); 5672 return NULL; 5673 } 5674 int p; 5675 if((r->order[0]==ringorder_C) 5676 ||(r->order[0]==ringorder_c)) 5677 p=1; 5678 else 5679 p=0; 5680 if((r->order[p]!=ringorder_dp) 5681 && (r->order[p]!=ringorder_Dp) 5682 && (r->order[p]!=ringorder_lp) 5683 && (r->order[p]!=ringorder_rp) 5684 && (r->order[p]!=ringorder_ds) 5685 && (r->order[p]!=ringorder_Ds) 5686 && (r->order[p]!=ringorder_ls)) 5687 { 5688 WerrorS("ordering must be dp,Dp,lp,rp,ds,Ds or ls"); 5689 return NULL; 5690 } 5691 for(int i=r->N-1;i>=0;i--) 5692 { 5693 if (strcmp(r->names[i],v)==0) 5694 { 5695 Werror("duplicate variable name >>%s<<",v); 5696 return NULL; 5697 } 5698 } 5699 ring R=rCopy0(r); 5700 char **names; 5701 #ifdef HAVESHIFTBBA 5702 if (rIsLPRing(r)) 5703 { 5704 WerrorS("not yet implemnted"); 5705 return NULL; 5706 } 5707 else 5708 #endif 5709 { 5710 R->N++; 5711 names=(char**)omAlloc(R->N*sizeof(char_ptr)); 5712 if (left) 5713 { 5714 names[0]=omStrDup(v); 5715 for(int i=R->N-1;i>0;i--) names[i]=R->names[i-1]; 5716 } 5717 else 5718 { 5719 names[R->N-1]=omStrDup(v); 5720 for(int i=R->N-2;i>=0;i--) names[i]=R->names[i]; 5721 } 5722 } 5723 omFreeSize(R->names,r->N*sizeof(char_ptr)); 5724 R->names=names; 5725 R->block1[p]=R->N; 5726 rComplete(R); 5727 return R; 5728 } 5729 5730 ring rMinusVar(const ring r, char *v) 5731 { 5732 if (r->order[2]!=0) 5733 { 5734 WerrorS("only for rings with an ordering of one block"); 5735 return NULL; 5736 } 5737 int p; 5738 if((r->order[0]==ringorder_C) 5739 ||(r->order[0]==ringorder_c)) 5740 p=1; 5741 else 5742 p=0; 5743 if((r->order[p]!=ringorder_dp) 5744 && (r->order[p]!=ringorder_Dp) 5745 && (r->order[p]!=ringorder_lp) 5746 && (r->order[p]!=ringorder_rp) 5747 && (r->order[p]!=ringorder_ds) 5748 && (r->order[p]!=ringorder_Ds) 5749 && (r->order[p]!=ringorder_ls)) 5750 { 5751 WerrorS("ordering must be dp,Dp,lp,rp,ds,Ds or ls"); 5752 return NULL; 5753 } 5754 ring R=rCopy0(r); 5755 int i=R->N; 5756 while(i>0) 5757 { 5758 if (strcmp(R->names[i],v)==0) 5759 { 5760 R->N--; 5761 omFree(R->names[i]); 5762 for(int j=i;j<R->N;j++) R->names[j]=R->names[j+1]; 5763 R->names=(char**)omReallocSize(R->names,r->N*sizeof(char_ptr),R->N*sizeof(char_ptr)); 5764 } 5765 else i--; 5766 } 5767 R->block1[p]=R->N; 5768 rComplete(R); 5769 return R; 5770 } -
libpolys/polys/monomials/ring.h
r6a0ad75 r8fd62c 827 827 828 828 extern omBin sip_sring_bin; 829 #endif 829 830 // ring manipulation 831 /// K[x],"y" -> K[x,y] resp. K[y,x] 832 ring rPlusVar(const ring r, char *v,int left); 833 834 /// undo rPlusVar 835 ring rMinusVar(const ring r, char *v); 836 #endif
Note: See TracChangeset
for help on using the changeset viewer.