Changeset 32d2a9 in git
- Timestamp:
- Jan 17, 2009, 11:19:17 AM (14 years ago)
- Branches:
- (u'spielwiese', '8d54773d6c9e2f1d2593a28bc68b7eeab54ed529')
- Children:
- 1d03c4e373b711862a7ef612718dc18f225aafd2
- Parents:
- 1378915d904a163ade5fd8be0a96eb3e73bac75c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/iparith.cc
r1378915 r32d2a9 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: iparith.cc,v 1.49 2 2009-01-16 02:21:09 motsakExp $ */4 /* $Id: iparith.cc,v 1.493 2009-01-17 10:19:17 Singular Exp $ */ 5 5 6 6 /* … … 261 261 { "hilb", 0, HILBERT_CMD , CMD_123}, 262 262 { "highcorner", 0, HIGHCORNER_CMD, CMD_1}, 263 { "homog", 0, HOMOG_CMD , CMD_12 },263 { "homog", 0, HOMOG_CMD , CMD_123}, 264 264 { "hres", 0, HRES_CMD , CMD_2}, 265 265 { "ideal", 0, IDEAL_CMD , IDEAL_CMD}, … … 898 898 { 899 899 Werror("matrix size not compatible(%dx%d, %dx%d)", 900 900 MATROWS(A),MATCOLS(A),MATROWS(B),MATCOLS(B)); 901 901 return TRUE; 902 902 } … … 977 977 { 978 978 Werror("matrix size not compatible(%dx%d, %dx%d)", 979 979 MATROWS(A),MATCOLS(A),MATROWS(B),MATCOLS(B)); 980 980 return TRUE; 981 981 } … … 1103 1103 { 1104 1104 Werror("matrix size not compatible(%dx%d, %dx%d)", 1105 1105 MATROWS(A),MATCOLS(A),MATROWS(B),MATCOLS(B)); 1106 1106 return TRUE; 1107 1107 } … … 2304 2304 WerrorS("variable must have weight 1"); 2305 2305 return (d!=1); 2306 } 2307 static BOOLEAN jjHOMOG1_W(leftv res, leftv v, leftv u) 2308 { 2309 intvec *w=new intvec(rVar(currRing)); 2310 intvec *vw=(intvec*)u->Data(); 2311 ideal v_id=(ideal)v->Data(); 2312 pFDegProc save_FDeg=pFDeg; 2313 pLDegProc save_LDeg=pLDeg; 2314 BOOLEAN save_pLexOrder=pLexOrder; 2315 pLexOrder=FALSE; 2316 kHomW=vw; 2317 kModW=w; 2318 pSetDegProcs(kHomModDeg); 2319 res->data=(void *)(long)idHomModule(v_id,currQuotient,&w); 2320 pLexOrder=save_pLexOrder; 2321 kHomW=NULL; 2322 kModW=NULL; 2323 pRestoreDegProcs(save_FDeg,save_LDeg); 2324 if (w!=NULL) delete w; 2325 return FALSE; 2306 2326 } 2307 2327 static BOOLEAN jjINDEPSET2(leftv res, leftv u, leftv v) … … 2819 2839 if (weights!=NULL) (*w) += add_row_shift; 2820 2840 atSet(res,omStrDup("isHomog"),w,INTVEC_CMD); 2821 delete w;2841 w=NULL; 2822 2842 } 2823 2843 else … … 3352 3372 ,{jjHILBERT2, HILBERT_CMD, INTVEC_CMD, IDEAL_CMD, INT_CMD NO_PLURAL} 3353 3373 ,{jjHILBERT2, HILBERT_CMD, INTVEC_CMD, MODUL_CMD, INT_CMD NO_PLURAL} 3374 ,{jjHOMOG1_W, HOMOG_CMD, INT_CMD, IDEAL_CMD, INTVEC_CMD ALLOW_PLURAL} 3375 ,{jjHOMOG1_W, HOMOG_CMD, INT_CMD, MODUL_CMD, INTVEC_CMD ALLOW_PLURAL} 3354 3376 ,{jjHOMOG_P, HOMOG_CMD, POLY_CMD, POLY_CMD, POLY_CMD ALLOW_PLURAL} 3355 3377 ,{jjHOMOG_P, HOMOG_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD ALLOW_PLURAL} … … 3934 3956 { 3935 3957 res->data=(void *)(long)idHomModule(v_id,currQuotient,&w); 3936 if ((res->data!=NULL) && (v->rtyp==IDHDL)) 3937 { 3938 char *isHomog=omStrDup("isHomog"); 3958 if (res->data!=NULL) 3959 { 3960 if (v->rtyp==IDHDL) 3961 { 3962 char *isHomog=omStrDup("isHomog"); 3963 if (v->e==NULL) 3964 atSet((idhdl)(v->data),isHomog,w,INTVEC_CMD); 3965 else 3966 atSet((idhdl)(v->LData()),isHomog,w,INTVEC_CMD); 3967 } 3968 else if (w!=NULL) delete w; 3969 } // if res->data==NULL then w==NULL 3970 } 3971 else 3972 { 3973 res->data=(void *)(long)idTestHomModule(v_id,currQuotient,w); 3974 if((res->data==NULL) && (v->rtyp==IDHDL)) 3975 { 3939 3976 if (v->e==NULL) 3940 at Set((idhdl)(v->data),isHomog,w,INTVEC_CMD);3977 atKill((idhdl)(v->data),"isHomog"); 3941 3978 else 3942 atSet((idhdl)(v->LData()),isHomog,w,INTVEC_CMD); 3943 } 3944 else if (w!=NULL) delete w; 3945 } 3946 else 3947 res->data=(void *)(long)idTestHomModule(v_id,currQuotient,w); 3979 atKill((idhdl)(v->LData()),"isHomog"); 3980 } 3981 } 3948 3982 return FALSE; 3949 3983 } … … 4054 4088 static BOOLEAN jjJACOB_M(leftv res, leftv a) 4055 4089 { 4056 4057 ideal id = (ideal)a->Data(); 4058 id = idTransp(id); 4059 int W = IDELEMS(id); 4060 4061 ideal result = idInit(W * pVariables, id->rank); 4062 poly *p = result->m; 4063 4064 for( int v = 1; v <= pVariables; v++ ) 4090 ideal id = (ideal)a->Data(); 4091 id = idTransp(id); 4092 int W = IDELEMS(id); 4093 4094 ideal result = idInit(W * pVariables, id->rank); 4095 poly *p = result->m; 4096 4097 for( int v = 1; v <= pVariables; v++ ) 4065 4098 { 4066 4099 poly* q = id->m; 4067 4068 4069 } 4070 4071 4072 4100 for( int i = 0; i < W; i++, p++, q++ ) 4101 *p = pDiff( *q, v ); 4102 } 4103 idDelete(&id); 4104 4105 res->data = (char *)result; 4073 4106 return FALSE; 4074 4107 } … … 5631 5664 return TRUE; 5632 5665 } 5666 static BOOLEAN jjHOMOG_ID_W(leftv res, leftv u, leftv v, leftv w) 5667 { 5668 PrintS("TODO\n"); 5669 int i=pVar((poly)v->Data()); 5670 if (i==0) 5671 { 5672 WerrorS("ringvar expected"); 5673 return TRUE; 5674 } 5675 poly p=pOne(); pSetExp(p,i,1); pSetm(p); 5676 int d=pWTotaldegree(p); 5677 pLmDelete(p); 5678 if (d==1) 5679 res->data = (char *)idHomogen((ideal)u->Data(),i); 5680 else 5681 WerrorS("variable must have weight 1"); 5682 return (d!=1); 5683 } 5684 static BOOLEAN jjHOMOG_P_W(leftv res, leftv u, leftv v,leftv w) 5685 { 5686 PrintS("TODO\n"); 5687 int i=pVar((poly)v->Data()); 5688 if (i==0) 5689 { 5690 WerrorS("ringvar expected"); 5691 return TRUE; 5692 } 5693 poly p=pOne(); pSetExp(p,i,1); pSetm(p); 5694 int d=pWTotaldegree(p); 5695 pLmDelete(p); 5696 if (d==1) 5697 res->data = (char *)pHomogen((poly)u->Data(),i); 5698 else 5699 WerrorS("variable must have weight 1"); 5700 return (d!=1); 5701 } 5633 5702 static BOOLEAN jjINTMAT3(leftv res, leftv u, leftv v,leftv w) 5634 5703 { … … 6090 6159 ,{jjHILBERT3, HILBERT_CMD,INTVEC_CMD, IDEAL_CMD, INT_CMD, INTVEC_CMD NO_PLURAL} 6091 6160 ,{jjHILBERT3, HILBERT_CMD,INTVEC_CMD, MODUL_CMD, INT_CMD, INTVEC_CMD NO_PLURAL} 6161 ,{jjHOMOG_P_W, HOMOG_CMD, POLY_CMD, POLY_CMD, POLY_CMD, INTVEC_CMD ALLOW_PLURAL} 6162 ,{jjHOMOG_P_W, HOMOG_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD, INTVEC_CMD ALLOW_PLURAL} 6163 ,{jjHOMOG_ID_W, HOMOG_CMD, IDEAL_CMD, IDEAL_CMD, POLY_CMD, INTVEC_CMD ALLOW_PLURAL} 6164 ,{jjHOMOG_ID_W, HOMOG_CMD, MODUL_CMD, MODUL_CMD, POLY_CMD, INTVEC_CMD ALLOW_PLURAL} 6092 6165 ,{jjCALL3MANY, IDEAL_CMD, IDEAL_CMD, DEF_CMD, DEF_CMD, DEF_CMD ALLOW_PLURAL} 6093 6166 ,{lInsert3, INSERT_CMD, LIST_CMD, LIST_CMD, DEF_CMD, INT_CMD ALLOW_PLURAL} … … 6357 6430 { 6358 6431 number b=(number)h->Data(); 6359 6432 number n=nInit_bigint(b); 6360 6433 if (!nIsZero(n)) 6361 6434 {
Note: See TracChangeset
for help on using the changeset viewer.