Changeset bc8a609 in git
- Timestamp:
- Mar 18, 2019, 5:09:12 PM (5 years ago)
- Branches:
- (u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
- Children:
- 5e8ecdbc3b543a3a045897b074162b8ff5053c87
- Parents:
- c854b9a4ef6bb168095febb6c5bb20cf579a7ff4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/extra.cc
rc854b9 rbc8a609 10 10 11 11 #define HAVE_WALK 1 12 13 #ifdef HAVE_CCLUSTER 14 #include "ccluster/ccluster.h" 15 #endif 12 16 13 17 #include "kernel/mod2.h" … … 3757 3761 else 3758 3762 #endif 3763 /* ccluster --------------------------------------------------------------*/ 3764 #ifdef HAVE_CCLUSTER 3765 if(strcmp(sys_cmd,"ccluster")==0) 3766 { 3767 if (rField_is_Q(currRing)) 3768 { 3769 const short t[]={5,POLY_CMD,NUMBER_CMD,NUMBER_CMD,NUMBER_CMD,NUMBER_CMD}; 3770 if (iiCheckTypes(h,t,1)) 3771 { 3772 // convert first arg. to fmpq_poly_t 3773 fmpq_poly_t f; 3774 convSingPFlintP(f,(poly)h->Data(),currRing); h=h->next; 3775 // convert box-center(re,im), box-size, epsilon 3776 fmpq_t center_re,center_im,boxsize,eps; 3777 convSingNFlintN(center_re,(number)h->Data()); h=h->next; 3778 convSingNFlintN(center_im,(number)h->Data()); h=h->next; 3779 convSingNFlintN(boxsize,(number)h->Data()); h=h->next; 3780 convSingNFlintN(eps,(number)h->Data()); h=h->next; 3781 // alloc arrays 3782 int n=fmpq_poly_length(f); 3783 fmpq_t* re_part=(fmpq_t*)omAlloc(n*sizeof(fmpq_t)); 3784 fmpq_t* im_part=(fmpq_t*)omAlloc(n*sizeof(fmpq_t)); 3785 int *mult =(int*) omAlloc(n*sizeof(int)); 3786 for(int i=0; i<n;i++) 3787 { fmpq_init(re_part[i]); fmpq_init(im_part[i]); } 3788 // call cccluster, adjust n 3789 int nn=ccluster_interface_poly_real(re_part,im_part,mult,f,center_re,center_im,boxsize,eps,23,1); 3790 // convert to list 3791 lists l=(lists)omAlloc0Bin(slists_bin); 3792 l->Init(nn); 3793 for(int i=0; i<nn;i++) 3794 { 3795 lists ll=(lists)omAlloc0Bin(slists_bin); 3796 l->m[i].rtyp=LIST_CMD; 3797 l->m[i].data=ll; 3798 ll->Init(2); 3799 ll->m[0].rtyp=NUMBER_CMD; 3800 ll->m[1].rtyp=NUMBER_CMD; 3801 ll->m[0].data=convFlintNSingN(re_part[i]); 3802 ll->m[1].data=convFlintNSingN(im_part[i]); 3803 } 3804 // clear re, im 3805 for(int i=n-1;i>=0;i--) { fmpq_clear(re_part[i]); fmpq_clear(im_part[i]); } 3806 omFree(re_part); 3807 omFree(im_part); 3808 // result 3809 res->rtyp=LIST_CMD; 3810 res->data=l; 3811 return FALSE; 3812 } 3813 } 3814 return TRUE; 3815 } 3816 else 3817 #endif 3759 3818 /*==================== Error =================*/ 3760 3819 Werror( "(extended) system(\"%s\",...) %s", sys_cmd, feNotImplemented );
Note: See TracChangeset
for help on using the changeset viewer.