Changeset 3b8515 in git
- Timestamp:
- Feb 26, 2002, 10:01:11 AM (21 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
- Children:
- 3c1bbe74e9f803249a7ac22c4a3f339963ec0a1b
- Parents:
- 97403d7b5d41e537394fcbd7c261d7b70302488c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/iparith.cc
r97403d r3b8515 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: iparith.cc,v 1.27 5 2002-02-25 18:13:45mschulze Exp $ */4 /* $Id: iparith.cc,v 1.276 2002-02-26 09:01:11 mschulze Exp $ */ 5 5 6 6 /* … … 153 153 { "dim", 0, DIM_CMD , CMD_1}, 154 154 { "div", 0, INTDIV_CMD , MULDIV_OP}, 155 { "division", 0, DIVISION_CMD , CMD_ 2},155 { "division", 0, DIVISION_CMD , CMD_M}, 156 156 #ifdef DRING 157 157 { "dring", 0, DRING_CMD , DRING_CMD}, … … 4817 4817 static BOOLEAN jjDIVISION4(leftv res, leftv v) 4818 4818 { 4819 int typ=v->Typ(); 4820 if(v->Typ()!=MODUL_CMD&&v->Typ()!=IDEAL_CMD) 4821 { 4822 Warn("1st argument must be an ideal or module!"); 4819 leftv v1=v; 4820 leftv v2=v1->next; 4821 leftv v3=v2->next; 4822 leftv v4=v3->next; 4823 4824 if(v1->Typ()!=IDEAL_CMD&&v1->Typ()!=MODUL_CMD&&v1->Typ()!=MATRIX_CMD) 4825 { 4826 Warn("1st argument must be ideal, module, or matrix!"); 4823 4827 return TRUE; 4824 4828 } 4825 i deal P=(ideal)v->Data();4826 v=v->next;4827 if(v->Typ()!=typ)4828 { 4829 Warn("2nd argument must be an ideal or module!");4829 if(v1->Typ()!=v2->Typ()&& 4830 (v1->Typ()!=MATRIX_CMD||v2->Typ()!=MODUL_CMD)&& 4831 (v1->Typ()!=MODUL_CMD||v2->Typ()!=MATRIX_CMD)) 4832 { 4833 Warn("2nd argument must be ideal, module, or matrix!"); 4830 4834 return TRUE; 4831 4835 } 4832 assumeStdFlag(v); 4833 ideal Q=(ideal)v->Data(); 4834 v=v->next; 4835 if(v->Typ()!=INT_CMD) 4836 { 4837 Warn("3rd argument must be an int!"); 4836 assumeStdFlag(v2); 4837 if(v3->Typ()!=INT_CMD) 4838 { 4839 Warn("3rd argument must be int!"); 4838 4840 return TRUE; 4839 4841 } 4840 int n=(int)v->Data(); 4841 v=v->next; 4842 if(v->Typ()!=INTVEC_CMD) 4843 { 4844 Warn("4th argument must be an intvec!"); 4842 if(v4->Typ()!=INTVEC_CMD) 4843 { 4844 Warn("4th argument must be intvec!"); 4845 4845 return TRUE; 4846 4846 } 4847 short *w=iv2array((intvec *)v->Data()); 4847 4848 ideal P; 4849 if(v1->Typ()==MATRIX_CMD) 4850 P=idMatrix2Module(mpCopy((matrix)v1->Data())); 4851 else 4852 P=(ideal)v1->Data(); 4853 ideal Q; 4854 if(v2->Typ()==MATRIX_CMD) 4855 Q=idMatrix2Module(mpCopy((matrix)v2->Data())); 4856 else 4857 Q=(ideal)v2->Data(); 4858 int n=(int)v3->Data(); 4859 short *w=iv2array((intvec *)v4->Data()); 4848 4860 4849 4861 int N=0; … … 4868 4880 { 4869 4881 poly p0=pDivideM(pHead(p),pHead(Q->m[j])); 4882 p=pSub(p,ppMult_mm(Q->m[j],p0)); 4870 4883 if(pDegW(p0,w)>n) 4871 4884 pDelete(&p0); 4872 4885 else 4873 4886 MATELEM(T,j+1,i+1)=pAdd(MATELEM(T,j+1,i+1),p0); 4874 p0=ksOldSpolyRed(Q->m[j],p,0); 4875 p=ppJetW(p0,N,w); 4887 p=ppJetW(p0=p,N,w); 4876 4888 pDelete(&p0); 4877 4889 j=IDELEMS(Q)-1; … … 4896 4908 } 4897 4909 4910 if(v1->Typ()==MATRIX_CMD) 4911 idDelete(&P); 4912 if(v2->Typ()==MATRIX_CMD) 4913 idDelete(&Q); 4898 4914 omFree(w); 4899 4915 … … 4904 4920 L->m[1].rtyp=MATRIX_CMD; 4905 4921 L->m[1].data=(void *)U; 4906 L->m[2].rtyp=typ; 4907 L->m[2].data=(void *)R; 4922 L->m[2].rtyp=v1->Typ(); 4923 if(v1->Typ()==MATRIX_CMD) 4924 L->m[2].data=(void *)idModule2Matrix(R); 4925 else 4926 L->m[2].data=(void *)R; 4908 4927 res->data=L; 4909 4928 res->rtyp=LIST_CMD; … … 5540 5559 ,{jjCALL2ARG, COEF_CMD, MATRIX_CMD, 2 } 5541 5560 ,{jjCOEF_M, COEF_CMD, NONE, 4 } 5561 ,{jjCALL2ARG, DIVISION_CMD, ANY_TYPE/*or set by p*/,2 } 5562 ,{jjDIVISION4, DIVISION_CMD, ANY_TYPE/*or set by p*/,4 } 5542 5563 ,{jjDBPRINT, DBPRINT_CMD, NONE, -2 } 5543 5564 ,{jjCALL1ARG, IDEAL_CMD, IDEAL_CMD, 1 }
Note: See TracChangeset
for help on using the changeset viewer.