Changeset 3be219 in git
- Timestamp:
- Mar 5, 2001, 5:43:14 PM (22 years ago)
- Branches:
- (u'spielwiese', '8d54773d6c9e2f1d2593a28bc68b7eeab54ed529')
- Children:
- a1df019ac85bd902853f9b914a948442541c16b0
- Parents:
- 7e30dd301152a4f9cb4143f7ae78d529b3af303b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/iparith.cc
r7e30dd r3be219 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: iparith.cc,v 1.25 8 2001-02-27 18:11:57mschulze Exp $ */4 /* $Id: iparith.cc,v 1.259 2001-03-05 16:43:14 mschulze Exp $ */ 5 5 6 6 /* … … 202 202 { "intvec", 0, INTVEC_CMD , ROOT_DECL_LIST}, 203 203 { "jacob", 0, JACOB_CMD , CMD_1}, 204 { "jet", 0, JET_CMD , CMD_ 23},204 { "jet", 0, JET_CMD , CMD_M}, 205 205 { "kbase", 0, KBASE_CMD , CMD_12}, 206 206 { "keepring", 0, KEEPRING_CMD , KEEPRING_CMD}, … … 4161 4161 static BOOLEAN jjJET_P_P(leftv res, leftv u, leftv v, leftv w) 4162 4162 { 4163 poly ww=(poly)w->Data(); 4164 if (!pIsUnit(ww)) 4165 { 4166 WerrorS("3rd argument must be a unit"); 4163 if (!pIsUnit((poly)v->Data())) 4164 { 4165 WerrorS("2rd argument must be a unit"); 4167 4166 return TRUE; 4168 4167 } 4169 res->data = (char *)pSeries((int) v->Data(),(poly)u->CopyD(),(poly)w->CopyD());4168 res->data = (char *)pSeries((int)w->Data(),(poly)u->CopyD(),(poly)v->CopyD()); 4170 4169 return FALSE; 4171 4170 } … … 4178 4177 static BOOLEAN jjJET_ID_M(leftv res, leftv u, leftv v, leftv w) 4179 4178 { 4180 matrix ww=(matrix)w->Data(); 4181 if (!mpIsDiagUnit(ww)) 4182 { 4183 WerrorS("3rd argument must be a diagonal matrix of units"); 4179 if (!mpIsDiagUnit((matrix)v->Data())) 4180 { 4181 WerrorS("2rd argument must be a diagonal matrix of units"); 4184 4182 return TRUE; 4185 4183 } 4186 res->data = (char *)idSeries((int) v->Data(),(ideal)u->CopyD(),4187 (matrix) w->CopyD());4184 res->data = (char *)idSeries((int)w->Data(),(ideal)u->CopyD(), 4185 (matrix)v->CopyD()); 4188 4186 return FALSE; 4189 4187 } … … 4434 4432 return TRUE; 4435 4433 } 4436 res->data = (char *)redNF((ideal) v->CopyD(),(poly)u->CopyD(),4437 (poly) w->CopyD());4434 res->data = (char *)redNF((ideal)w->CopyD(),(poly)u->CopyD(), 4435 (poly)v->CopyD()); 4438 4436 return FALSE; 4439 4437 } … … 4446 4444 return TRUE; 4447 4445 } 4448 res->data = (char *)redNF((ideal) v->CopyD(),(ideal)u->CopyD(),4449 (matrix) w->CopyD());4446 res->data = (char *)redNF((ideal)w->CopyD(),(ideal)u->CopyD(), 4447 (matrix)v->CopyD()); 4450 4448 return FALSE; 4451 4449 } … … 4569 4567 ,{jjJET_P_IV, JET_CMD, VECTOR_CMD, VECTOR_CMD, INT_CMD, INTVEC_CMD } 4570 4568 ,{jjJET_ID_IV, JET_CMD, MODUL_CMD, MODUL_CMD, INT_CMD, INTVEC_CMD } 4571 ,{jjJET_P_P, JET_CMD, POLY_CMD, POLY_CMD, INT_CMD, POLY_CMD }4572 ,{jjJET_P_P, JET_CMD, VECTOR_CMD, VECTOR_CMD, INT_CMD, POLY_CMD }4573 ,{jjJET_ID_M, JET_CMD, IDEAL_CMD, IDEAL_CMD, INT_CMD, MATRIX_CMD }4574 ,{jjJET_ID_M, JET_CMD, MODUL_CMD, MODUL_CMD, INT_CMD, MATRIX_CMD }4569 ,{jjJET_P_P, JET_CMD, POLY_CMD, POLY_CMD, POLY_CMD, INT_CMD } 4570 ,{jjJET_P_P, JET_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD, INT_CMD } 4571 ,{jjJET_ID_M, JET_CMD, IDEAL_CMD, IDEAL_CMD, MATRIX_CMD, INT_CMD } 4572 ,{jjJET_ID_M, JET_CMD, MODUL_CMD, MODUL_CMD, MATRIX_CMD, INT_CMD } 4575 4573 ,{jjWRONG3, JET_CMD, POLY_CMD, POLY_CMD, INT_CMD, INT_CMD } 4576 4574 ,{mpKoszul, KOSZUL_CMD, MATRIX_CMD, INT_CMD, INT_CMD, IDEAL_CMD } … … 4596 4594 ,{jjREDUCE3_ID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, MODUL_CMD, INT_CMD } 4597 4595 ,{jjREDUCE3_ID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, IDEAL_CMD, INT_CMD } 4598 ,{jjREDUCE3_CP, REDUCE_CMD, POLY_CMD, POLY_CMD, IDEAL_CMD, POLY_CMD }4599 ,{jjREDUCE3_CP, REDUCE_CMD, VECTOR_CMD, VECTOR_CMD, MODUL_CMD, POLY_CMD }4600 ,{jjREDUCE3_CID, REDUCE_CMD, IDEAL_CMD, IDEAL_CMD, IDEAL_CMD, MATRIX_CMD }4601 ,{jjREDUCE3_CID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, M ODUL_CMD, MATRIX_CMD }4596 ,{jjREDUCE3_CP, REDUCE_CMD, POLY_CMD, POLY_CMD, POLY_CMD, IDEAL_CMD } 4597 ,{jjREDUCE3_CP, REDUCE_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD, MODUL_CMD } 4598 ,{jjREDUCE3_CID, REDUCE_CMD, IDEAL_CMD, IDEAL_CMD, MATRIX_CMD, IDEAL_CMD } 4599 ,{jjREDUCE3_CID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, MATRIX_CMD, MODUL_CMD } 4602 4600 #ifdef OLD_RES 4603 4601 ,{jjRES3, RES_CMD, NONE, IDEAL_CMD, INT_CMD, ANY_TYPE } … … 4867 4865 return FALSE; 4868 4866 } 4867 static BOOLEAN jjJET4(leftv res, leftv u) 4868 { 4869 leftv u1=u; 4870 leftv u2=u1->next; 4871 leftv u3=u2->next; 4872 leftv u4=u3->next; 4873 if((u1->Typ()==POLY_CMD)&&(u2->Typ()==POLY_CMD)&&(u3->Typ()==INT_CMD)&& 4874 (u4->Typ()==INTVEC_CMD)|| 4875 (u1->Typ()==VECTOR_CMD)&&(u2->Typ()==POLY_CMD)&&(u3->Typ()==INT_CMD)&& 4876 (u4->Typ()==INTVEC_CMD)) 4877 { 4878 if(!pIsUnit((poly)u2->Data())) 4879 { 4880 Werror("2nd argument must be a unit"); 4881 return TRUE; 4882 } 4883 res->rtyp=u1->Typ(); 4884 res->data=(char*)pSeries((int)u3->Data(),pCopy((poly)u1->Data()), 4885 pCopy((poly)u2->Data()),(intvec*)u4->Data()); 4886 return FALSE; 4887 } 4888 else 4889 if((u1->Typ()==IDEAL_CMD)&&(u2->Typ()==MATRIX_CMD)&&(u3->Typ()==INT_CMD)&& 4890 (u4->Typ()==INTVEC_CMD)|| 4891 (u1->Typ()==MODUL_CMD)&&(u2->Typ()==MATRIX_CMD)&&(u3->Typ()==INT_CMD)&& 4892 (u4->Typ()==INTVEC_CMD)) 4893 { 4894 if(!mpIsDiagUnit((matrix)u2->Data())) 4895 { 4896 Werror("2nd argument must be a diagonal matrix of units"); 4897 return TRUE; 4898 } 4899 res->rtyp=u1->Typ(); 4900 res->data=(char*)idSeries((int)u3->Data(),idCopy((ideal)u1->Data()), 4901 mpCopy((matrix)u2->Data()),(intvec*)u4->Data()); 4902 return FALSE; 4903 } 4904 else 4905 { 4906 Werror("%s(`poly`,`poly`,`int`,`intvec`) exppected", 4907 Tok2Cmdname(iiOp)); 4908 return TRUE; 4909 } 4910 } 4869 4911 static BOOLEAN jjKLAMMER_PL(leftv res, leftv u) 4870 4912 { … … 4950 4992 return setOption(res,v); 4951 4993 } 4952 static BOOLEAN jjREDUCE4(leftv res, leftv v) 4953 { 4954 // poly, ideal, deg, weights 4955 leftv u1=v; 4956 leftv u2=v->next; 4957 leftv u3=u2->next; u2->next=NULL; 4994 static BOOLEAN jjREDUCE4(leftv res, leftv u) 4995 { 4996 leftv u1=u; 4997 leftv u2=u1->next; 4998 leftv u3=u2->next; 4958 4999 leftv u4=u3->next; 4959 if ((u3->Typ()!=INT_CMD)||(u4->Typ()!=INTVEC_CMD)) 4960 { 4961 Werror("%s(`poly`,`ideal`,`int`,`intvec`) exppected",Tok2Cmdname(iiOp)); 5000 if((u3->Typ()==INT_CMD)&&(u4->Typ()==INTVEC_CMD)) 5001 { 5002 int save_d=Kstd1_deg; 5003 Kstd1_deg=(int)u3->Data(); 5004 kModW=(intvec *)u4->Data(); 5005 BITSET save=verbose; 5006 verbose|=Sy_bit(V_DEG_STOP); 5007 u2->next=NULL; 5008 BOOLEAN r=jjCALL2ARG(res,u); 5009 kModW=NULL; 5010 Kstd1_deg=save_d; 5011 verbose=save; 5012 u->next->next=u3; 5013 return r; 5014 } 5015 else 5016 if((u1->Typ()==IDEAL_CMD)&&(u2->Typ()==MATRIX_CMD)&&(u3->Typ()==IDEAL_CMD)&& 5017 (u4->Typ()==INT_CMD)) 5018 { 5019 if(!mpIsDiagUnit((matrix)u2->Data())) 5020 { 5021 Werror("2rd argument must be a diagonal matrix of units"); 5022 return TRUE; 5023 } 5024 res->rtyp=IDEAL_CMD; 5025 res->data=(char*)redNF(idCopy((ideal)u3->Data()),idCopy((ideal)u1->Data()), 5026 mpCopy((matrix)u2->Data()),(int)u4->Data()); 5027 return FALSE; 5028 } 5029 else 5030 if((u1->Typ()==POLY_CMD)&&(u2->Typ()==POLY_CMD)&&(u3->Typ()==IDEAL_CMD)&& 5031 (u4->Typ()==INT_CMD)) 5032 { 5033 if(!pIsUnit((poly)u2->Data())) 5034 { 5035 Werror("2rd argument must be a unit"); 5036 return TRUE; 5037 } 5038 res->rtyp=POLY_CMD; 5039 res->data=(char*)redNF(idCopy((ideal)u3->Data()),pCopy((poly)u1->Data()), 5040 pCopy((poly)u2->Data()),(int)u4->Data()); 5041 return FALSE; 5042 } 5043 else 5044 { 5045 Werror("%s(`poly`,`ideal`,`int`,`intvec`) expected",Tok2Cmdname(iiOp)); 4962 5046 return TRUE; 4963 5047 } 4964 int save_d=Kstd1_deg; 4965 Kstd1_deg=(int)u3->Data(); 4966 kModW=(intvec *)u4->Data(); 4967 BITSET save=verbose; 4968 verbose|=Sy_bit(V_DEG_STOP); 4969 BOOLEAN r=jjCALL2ARG(res,v); 4970 kModW=NULL; 4971 Kstd1_deg=save_d; 4972 verbose=save; 4973 v->next->next=u3; 4974 return r; 4975 } 4976 static BOOLEAN jjREDUCE5(leftv res, leftv v) 4977 { 4978 leftv u1=v; 4979 leftv u2=v->next; 5048 } 5049 static BOOLEAN jjREDUCE5(leftv res, leftv u) 5050 { 5051 leftv u1=u; 5052 leftv u2=u1->next; 4980 5053 leftv u3=u2->next; 4981 5054 leftv u4=u3->next; 4982 5055 leftv u5=u4->next; 4983 if((u1->Typ()==IDEAL_CMD)&&(u2->Typ()== IDEAL_CMD)&&(u3->Typ()==MATRIX_CMD)&&5056 if((u1->Typ()==IDEAL_CMD)&&(u2->Typ()==MATRIX_CMD)&&(u3->Typ()==IDEAL_CMD)&& 4984 5057 (u4->Typ()==INT_CMD)&&(u5->Typ()==INTVEC_CMD)) 4985 5058 { 4986 if(!mpIsDiagUnit((matrix)u 3->Data()))4987 { 4988 Werror(" 3rd argument must be a diagonal matrix of units");4989 return FALSE;5059 if(!mpIsDiagUnit((matrix)u2->Data())) 5060 { 5061 Werror("2rd argument must be a diagonal matrix of units"); 5062 return TRUE; 4990 5063 } 4991 5064 res->rtyp=IDEAL_CMD; 4992 res->data=(char*)redNF(idCopy((ideal)u 2->Data()),idCopy((ideal)u1->Data()),4993 mpCopy((matrix)u 3->Data()),5065 res->data=(char*)redNF(idCopy((ideal)u3->Data()),idCopy((ideal)u1->Data()), 5066 mpCopy((matrix)u2->Data()), 4994 5067 (int)u4->Data(),(intvec*)u5->Data()); 4995 5068 return FALSE; 4996 5069 } 4997 5070 else 4998 if((u1->Typ()==POLY_CMD)&&(u2->Typ()== IDEAL_CMD)&&(u3->Typ()==POLY_CMD)&&5071 if((u1->Typ()==POLY_CMD)&&(u2->Typ()==POLY_CMD)&&(u3->Typ()==IDEAL_CMD)&& 4999 5072 (u4->Typ()==INT_CMD)&&(u5->Typ()==INTVEC_CMD)) 5000 5073 { 5001 if(!pIsUnit((poly)u 3->Data()))5002 { 5003 Werror(" 3rd argument must be a unit");5004 return FALSE;5074 if(!pIsUnit((poly)u2->Data())) 5075 { 5076 Werror("2rd argument must be a unit"); 5077 return TRUE; 5005 5078 } 5006 5079 res->rtyp=POLY_CMD; 5007 res->data=(char*)redNF(idCopy((ideal)u 2->Data()),pCopy((poly)u1->Data()),5008 pCopy((poly)u 3->Data()),5080 res->data=(char*)redNF(idCopy((ideal)u3->Data()),pCopy((poly)u1->Data()), 5081 pCopy((poly)u2->Data()), 5009 5082 (int)u4->Data(),(intvec*)u5->Data()); 5010 5083 return FALSE; … … 5247 5320 ,{jjCALL1ARG, INTVEC_CMD, INTVEC_CMD, 1 } 5248 5321 ,{jjINTVEC_PL, INTVEC_CMD, INTVEC_CMD, -2 } 5322 ,{jjCALL2ARG, JET_CMD, POLY_CMD,/*or set by p*/ 2 } 5323 ,{jjCALL3ARG, JET_CMD, POLY_CMD,/*or set by p*/ 3 } 5324 ,{jjJET4, JET_CMD, POLY_CMD,/*or set by p*/ 4 } 5249 5325 ,{jjLIST_PL, LIST_CMD, LIST_CMD, -1 } 5250 5326 ,{jjCALL1ARG, MODUL_CMD, MODUL_CMD, 1 }
Note: See TracChangeset
for help on using the changeset viewer.