Changeset 7b4ca1f in git
- Timestamp:
- Jan 30, 2017, 7:18:36 PM (6 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 347543e34be451b4f7f8394141a8c49ecfc42c17ab9451896d9e00fb71ed53755c19641f7eb4b68e
- Parents:
- ee8cdb02450fdfa9053b378628d72181b97f0d85
- Location:
- libpolys/polys
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/polys/clapsing.cc
ree8cdb r7b4ca1f 119 119 return res; 120 120 } 121 if (p_IsConstant(g, r)) 122 { 123 coeffs cf=r->cf; 124 number G=pGetCoeff(g); 125 G=n_Copy(G,cf); 126 if(n_IsOne(G,cf)) return p_NSet(G,r);; 127 poly ff=f; 128 do 129 { 130 number n=n_SubringGcd(G,pGetCoeff(ff),cf); 131 n_Delete(&G,cf); 132 G=n; 133 if (n_IsOne(G,cf)) break; 134 pIter(ff); 135 } while(ff!=NULL); 136 if(n_IsOne(G,cf)) return p_NSet(G,r); 137 f=p_Div_nn(f,G,r); p_Normalize(f,r); 138 g=p_Div_nn(g,G,r); p_Normalize(g,r); 139 return p_NSet(G,r); 140 } 141 else if (p_IsConstant(f, r)) 142 { 143 coeffs cf=r->cf; 144 number G=pGetCoeff(f); 145 G=n_Copy(G,cf); 146 if(n_IsOne(G,cf)) return p_NSet(G,r);; 147 poly ff=g; 148 do 149 { 150 number n=n_SubringGcd(G,pGetCoeff(ff),cf); 151 n_Delete(&G,cf); 152 G=n; 153 if (n_IsOne(G,cf)) break; 154 pIter(ff); 155 } while(ff!=NULL); 156 if(n_IsOne(G,cf)) return p_NSet(G,r); 157 f=p_Div_nn(f,G,r); 158 g=p_Div_nn(g,G,r); 159 return p_NSet(G,r); 121 if (pNext(g)==NULL) 122 { 123 poly G=p_GcdMon(g,f,r); 124 if (!n_IsOne(pGetCoeff(G),r->cf) 125 || (!p_IsConstant(G,r))) 126 { 127 f=p_Div_mm(f,G,r); 128 g=p_Div_mm(g,G,r); 129 } 130 return G; 131 } 132 else if (pNext(f)==NULL) 133 { 134 poly G=p_GcdMon(f,g,r); 135 if (!n_IsOne(pGetCoeff(G),r->cf) 136 || (!p_IsConstant(G,r))) 137 { 138 f=p_Div_mm(f,G,r); 139 g=p_Div_mm(g,G,r); 140 } 141 return G; 160 142 } 161 143 -
libpolys/polys/monomials/p_polys.cc
ree8cdb r7b4ca1f 1485 1485 p_SetCoeff(p,nc,r); 1486 1486 prev=p; 1487 pIter(p); 1488 } 1489 else 1490 { 1491 if (prev==NULL) 1492 { 1493 p_LmDelete(&result,r); 1494 p=result; 1495 } 1496 else 1497 { 1498 p_LmDelete(&pNext(prev),r); 1499 p=pNext(prev); 1500 } 1501 } 1502 } 1503 p_Test(result,r); 1504 return(result); 1505 } 1506 1507 poly p_Div_mm(poly p, const poly m, const ring r) 1508 { 1509 p_Test(p, r); 1510 p_Test(m, r); 1511 poly result = p; 1512 poly prev = NULL; 1513 number n=pGetCoeff(m); 1514 while (p!=NULL) 1515 { 1516 number nc = n_Div(pGetCoeff(p),n,r->cf); 1517 n_Normalize(nc,r->cf); 1518 if (!n_IsZero(nc,r->cf)) 1519 { 1520 p_SetCoeff(p,nc,r); 1521 prev=p; 1522 p_ExpVectorSub(p,m,r); 1487 1523 pIter(p); 1488 1524 } … … 4763 4799 { 4764 4800 if (h==NULL) break; 4765 one_coeff=TRUE;4766 4801 if(!one_coeff) 4767 4802 { -
libpolys/polys/monomials/p_polys.h
ree8cdb r7b4ca1f 2027 2027 /// polynomial gcd for f=mon 2028 2028 poly p_GcdMon(poly f, poly g, const ring r); 2029 2030 /// divide polynomial by monomial 2031 poly p_Div_mm(poly p, const poly m, const ring r); 2029 2032 #endif // P_POLYS_H 2030 2033
Note: See TracChangeset
for help on using the changeset viewer.