Changeset 4819c4 in git
- Timestamp:
- Nov 13, 2018, 1:15:30 PM (5 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- 21627ce8138b555fd3149fbe3683998b56b92633
- Parents:
- c6363181cd15d8f5d14b9a1cd20f08907c4c13b6
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/dyn_modules/freegb/freegb.cc
rc636318 r4819c4 20 20 return TRUE; 21 21 } 22 ring R=rCopy0(r); 23 int p; 24 if((r->order[0]==ringorder_C) 25 ||(r->order[0]==ringorder_c)) 26 p=1; 27 else 28 p=0; 29 // create R->N 30 R->N=r->N*d; 31 R->isLPring=r->N; 32 R->block1[p]=R->N; /* only dp,Dp,wp,Wp; will be discarded for lp*/ 33 // create R->order 34 switch(r->order[p]) 35 { 36 case ringorder_dp: 37 case ringorder_Dp: 38 break; 39 case ringorder_wp: 40 case ringorder_Wp: 41 { 42 omFree(R->wvhdl[p]); 43 int *w=(int*)omAlloc(R->N*sizeof(int)); 44 for(int b=1;b<d;b++) 45 { 46 for(int i=r->N-1;i>=0;i--) 47 w[b*r->N+i]=r->wvhdl[p][i]; 48 } 49 R->wvhdl[p]=w; 50 break; 51 } 52 case ringorder_lp: 53 case ringorder_rp: 54 { 55 int ** wvhdl=(int**)omAlloc0((r->N+2)*sizeof(int*)); 56 rRingOrder_t* ord=(rRingOrder_t*)omAlloc0((r->N+2)*sizeof(rRingOrder_t)); 57 int* blk0=(int*)omAlloc0((r->N+2)*sizeof(int)); 58 int* blk1=(int*)omAlloc0((r->N+2)*sizeof(int)); 59 omFree(R->wvhdl); R->wvhdl=wvhdl; 60 omFree(R->order); R->order=ord; 61 omFree(R->block0); R->block0=blk0; 62 omFree(R->block1); R->block1=blk1; 63 for(int i=0;i<r->N;i++) 64 { 65 ord[i+p]=ringorder_a; 66 blk0[i+p]=1; 67 blk1[i+p]=R->N; 68 wvhdl[i+p]=(int*)omAlloc0(R->N*sizeof(int)); 69 for(int j=0;j<d;j++) 70 { 71 assume(j*r->N+i<R->N); 72 if (r->order[p]==ringorder_lp) 73 wvhdl[i+p][j*r->N+i]=1; 74 else 75 wvhdl[i+p][(j+1)*r->N-i-1]=1; 76 } 77 } 78 ord[r->N+p]=r->order[p]; /* lp or rp */ 79 blk0[r->N+p]=1; 80 blk1[r->N+p]=R->N; 81 // copy component order 82 if (p==1) ord[0]=r->order[0]; 83 else /*p==0*/ ord[r->N+1]=r->order[1]; 84 break; 85 } 86 default: WerrorS("ordering not implemented for LP-rings"); 87 return TRUE; 88 } 89 // create R->names 90 char **names=(char**)omAlloc(R->N*sizeof(char_ptr)); 91 for(int b=0;b<d;b++) 92 { 93 for(int i=r->N-1;i>=0;i--) 94 names[b*r->N+i]=omStrDup(r->names[i]); 95 } 96 for(int i=r->N-1;i>=0;i--) omFree(R->names[i]); 97 omFree(R->names); 98 R->names=names; 99 100 rComplete(R,TRUE); 22 ring R=freeAlgebra(r,d); 101 23 res->rtyp=RING_CMD; 102 24 res->data=R; 103 return FALSE;25 return R==NULL; 104 26 } 105 27 return TRUE; -
Singular/libsingular.h
rc636318 r4819c4 16 16 #include "polys/clapsing.h" 17 17 #include "polys/monomials/maps.h" 18 #include "polys/shiftop.h" 18 19 #include "kernel/GBEngine/kutil.h" 19 20 #include "kernel/GBEngine/kstd1.h" -
libpolys/polys/shiftop.cc
rc636318 r4819c4 661 661 } 662 662 663 #endif 663 ring freeAlgebra(ring r, int d) 664 { 665 ring R=rCopy0(r); 666 int p; 667 if((r->order[0]==ringorder_C) 668 ||(r->order[0]==ringorder_c)) 669 p=1; 670 else 671 p=0; 672 // create R->N 673 R->N=r->N*d; 674 R->isLPring=r->N; 675 R->block1[p]=R->N; /* only dp,Dp,wp,Wp; will be discarded for lp*/ 676 // create R->order 677 switch(r->order[p]) 678 { 679 case ringorder_dp: 680 case ringorder_Dp: 681 break; 682 case ringorder_wp: 683 case ringorder_Wp: 684 { 685 omFree(R->wvhdl[p]); 686 int *w=(int*)omAlloc(R->N*sizeof(int)); 687 for(int b=1;b<d;b++) 688 { 689 for(int i=r->N-1;i>=0;i--) 690 w[b*r->N+i]=r->wvhdl[p][i]; 691 } 692 R->wvhdl[p]=w; 693 break; 694 } 695 case ringorder_lp: 696 case ringorder_rp: 697 { 698 int ** wvhdl=(int**)omAlloc0((r->N+2)*sizeof(int*)); 699 rRingOrder_t* ord=(rRingOrder_t*)omAlloc0((r->N+2)*sizeof(rRingOrder_t)); 700 int* blk0=(int*)omAlloc0((r->N+2)*sizeof(int)); 701 int* blk1=(int*)omAlloc0((r->N+2)*sizeof(int)); 702 omFree(R->wvhdl); R->wvhdl=wvhdl; 703 omFree(R->order); R->order=ord; 704 omFree(R->block0); R->block0=blk0; 705 omFree(R->block1); R->block1=blk1; 706 for(int i=0;i<r->N;i++) 707 { 708 ord[i+p]=ringorder_a; 709 blk0[i+p]=1; 710 blk1[i+p]=R->N; 711 wvhdl[i+p]=(int*)omAlloc0(R->N*sizeof(int)); 712 for(int j=0;j<d;j++) 713 { 714 assume(j*r->N+i<R->N); 715 if (r->order[p]==ringorder_lp) 716 wvhdl[i+p][j*r->N+i]=1; 717 else 718 wvhdl[i+p][(j+1)*r->N-i-1]=1; 719 } 720 } 721 ord[r->N+p]=r->order[p]; /* lp or rp */ 722 blk0[r->N+p]=1; 723 blk1[r->N+p]=R->N; 724 // copy component order 725 if (p==1) ord[0]=r->order[0]; 726 else /*p==0*/ ord[r->N+1]=r->order[1]; 727 break; 728 } 729 default: WerrorS("ordering not implemented for LP-rings"); 730 return NULL; 731 } 732 // create R->names 733 char **names=(char**)omAlloc(R->N*sizeof(char*)); 734 for(int b=0;b<d;b++) 735 { 736 for(int i=r->N-1;i>=0;i--) 737 names[b*r->N+i]=omStrDup(r->names[i]); 738 } 739 for(int i=r->N-1;i>=0;i--) omFree(R->names[i]); 740 omFree(R->names); 741 R->names=names; 742 743 rComplete(R,TRUE); 744 return R; 745 } 746 #endif -
libpolys/polys/shiftop.h
rc636318 r4819c4 48 48 #define pmIsInV(p) p_mIsInV(p, currRing) 49 49 50 ring freeAlgebra(ring r, int d); 50 51 #endif 51 52 #endif
Note: See TracChangeset
for help on using the changeset viewer.