Changeset 8fe22c in git
- Timestamp:
- Feb 25, 2002, 7:13:45 PM (21 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
- Children:
- 962b1f0a4db237d3ca3ca0a559c3f5d44649ebaf
- Parents:
- 2ca72f72ba5811479c336c3a36c9d120db4edfc7
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/iparith.cc
r2ca72f r8fe22c 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: iparith.cc,v 1.27 4 2002-02-06 08:52:21 SingularExp $ */4 /* $Id: iparith.cc,v 1.275 2002-02-25 18:13:45 mschulze Exp $ */ 5 5 6 6 /* … … 4814 4814 return FALSE; 4815 4815 } 4816 4817 static BOOLEAN jjDIVISION4(leftv res, leftv v) 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!"); 4823 return TRUE; 4824 } 4825 ideal P=(ideal)v->Data(); 4826 v=v->next; 4827 if(v->Typ()!=typ) 4828 { 4829 Warn("2nd argument must be an ideal or module!"); 4830 return TRUE; 4831 } 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!"); 4838 return TRUE; 4839 } 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!"); 4845 return TRUE; 4846 } 4847 short *w=iv2array((intvec *)v->Data()); 4848 4849 int N=0; 4850 for(int i=IDELEMS(Q)-1;i>=0;i--) 4851 N=max(N,pDegW(Q->m[i],w)); 4852 N+=n; 4853 4854 matrix T=mpNew(IDELEMS(Q),IDELEMS(P)); 4855 ideal R=idInit(IDELEMS(P),P->rank); 4856 matrix U=mpNew(P->rank,P->rank); 4857 for(int i=MATROWS(U);i>=1;i--) 4858 MATELEM(U,i,i)=pOne(); 4859 4860 for(int i=IDELEMS(P)-1;i>=0;i--) 4861 { 4862 poly p=ppJetW(P->m[i],N,w); 4863 4864 int j=IDELEMS(Q)-1; 4865 while(p!=NULL) 4866 { 4867 if(pDivisibleBy(Q->m[j],p)) 4868 { 4869 poly p0=pDivideM(pHead(p),pHead(Q->m[j])); 4870 if(pDegW(p0,w)>n) 4871 pDelete(&p0); 4872 else 4873 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); 4876 pDelete(&p0); 4877 j=IDELEMS(Q)-1; 4878 } 4879 else 4880 { 4881 if(j==0) 4882 { 4883 poly p0=p; 4884 pIter(p); 4885 pNext(p0)=NULL; 4886 if(pDegW(p0,w)>n) 4887 pDelete(&p0); 4888 else 4889 R->m[i]=pAdd(R->m[i],p0); 4890 j=IDELEMS(Q)-1; 4891 } 4892 else 4893 j--; 4894 } 4895 } 4896 } 4897 4898 omFree(w); 4899 4900 lists L=(lists)omAllocBin(slists_bin); 4901 L->Init(3); 4902 L->m[0].rtyp=MATRIX_CMD; 4903 L->m[0].data=(void *)T; 4904 L->m[1].rtyp=MATRIX_CMD; 4905 L->m[1].data=(void *)U; 4906 L->m[2].rtyp=typ; 4907 L->m[2].data=(void *)R; 4908 res->data=L; 4909 res->rtyp=LIST_CMD; 4910 4911 return FALSE; 4912 } 4913 4816 4914 static BOOLEAN jjIDEAL_PL(leftv res, leftv v) 4817 4915 {
Note: See TracChangeset
for help on using the changeset viewer.