Changeset cfb500 in git for libpolys/polys/monomials
- Timestamp:
- May 20, 2011, 1:07:49 PM (13 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 502f5f6f3100e91a41cf8b3762727582bcdcc2fa
- Parents:
- 09ed7738e7d4dd96c01950a6f0736d8581f333d2
- git-author:
- Frank Seelisch <seelisch@mathematik.uni-kl.de>2011-05-20 13:07:49+02:00
- git-committer:
- Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 12:36:13+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/polys/monomials/p_polys.cc
r09ed77 rcfb500 1445 1445 poly p_PolyDiv(poly &p, poly divisor, BOOLEAN needResult, ring r) 1446 1446 { 1447 //printf("p_PolyDiv:\n");1448 1447 assume(divisor != NULL); 1449 1448 if (p == NULL) return NULL; … … 1452 1451 number divisorLC = p_GetCoeff(divisor, r); 1453 1452 int divisorLE = p_GetExp(divisor, 1, r); 1454 //p_Write(p, r); p_Write(divisor, r);1455 1453 while ((p != NULL) && (p_Deg(p, r) >= p_Deg(divisor, r))) 1456 1454 { … … 1462 1460 p_SetExp(t, 1, e, r); 1463 1461 p_Setm(t, r); 1464 //printf("t\n");1465 //p_Write(t, r);1466 1462 if (needResult) result = p_Add_q(result, p_Copy(t, r), r); 1467 1463 p = p_Add_q(p, p_Neg(p_Mult_q(t, p_Copy(divisor, r), r), r), r); 1468 //printf("p\n");1469 //p_Write(p, r);1470 1464 } 1471 1465 return result; … … 1483 1477 number lc = p_GetCoeff(p, r); 1484 1478 if (n_IsOne(lc, r->cf)) return; 1485 1486 if( pNext(p) == NULL ) 1487 { 1488 p_SetCoeff(p, n_Init(1, r->cf), r); // will delete the leading coeff 1st! 1489 return; 1490 } 1491 1492 // TODO: consider unsing 1xn_Inverse + n_Mult instead of multiple n_Div 1493 p_SetCoeff0(p, n_Init(1, r->cf), r); // no coeff destruction! 1494 1479 number lcInverse = n_Invers(lc, r->cf); 1480 number n = n_Init(1, r->cf); 1481 p_SetCoeff(p, n, r); // destroys old leading coefficient! 1495 1482 p = pIter(p); 1496 1497 1483 while (p != NULL) 1498 1484 { 1499 number c = p_GetCoeff(p, r); 1500 number n = n_Div(c, lc, r->cf); 1501 n_Delete(&c, r->cf); 1502 p_SetCoeff(p, n, r); 1485 number n = n_Mult(p_GetCoeff(p, r), lcInverse, r->cf); 1486 p_SetCoeff(p, n, r); // destroys old leading coefficient! 1503 1487 p = pIter(p); 1504 1488 } 1505 n_Delete(&lc , r->cf);1489 n_Delete(&lcInverse, r->cf); 1506 1490 p = pp; 1507 1491 } … … 1552 1536 qFactor = NULL; 1553 1537 pFactor = p_ISet(1, r); 1554 number n = p_GetCoeff(pFactor, r);1555 //printf("p_ExtGcdHelper0:\n");1556 //p_Write(p, r);1557 1538 p_SetCoeff(pFactor, n_Invers(p_GetCoeff(p, r), r->cf), r); 1558 n_Delete(&n, r->cf);1559 1539 p_Monic(p, r); 1560 1540 return p; … … 1562 1542 else 1563 1543 { 1564 //printf("p_ExtGcdHelper1:\n");1565 //p_Write(p, r); p_Write(q, r);1566 1544 poly pDivQ = p_PolyDiv(p, q, TRUE, r); 1567 1545 poly ppFactor = NULL; poly qqFactor = NULL; 1568 //printf("p_ExtGcdHelper2:\n");1569 //p_Write(p, r); p_Write(ppFactor, r);1570 //p_Write(q, r); p_Write(qqFactor, r);1571 1546 poly theGcd = p_ExtGcdHelper(q, qqFactor, p, ppFactor, r); 1572 //printf("p_ExtGcdHelper3:\n");1573 //p_Write(q, r); p_Write(qqFactor, r);1574 //p_Write(p, r); p_Write(ppFactor, r);1575 //p_Write(theGcd, r);1576 1547 pFactor = ppFactor; 1577 1548 qFactor = p_Add_q(qqFactor, 1578 1549 p_Neg(p_Mult_q(pDivQ, p_Copy(ppFactor, r), r), r), 1579 1550 r); 1580 //printf("p_ExtGcdHelper4:\n");1581 //p_Write(pFactor, r); p_Write(qFactor, r);1582 1551 return theGcd; 1583 1552 } … … 1594 1563 poly p_ExtGcd(poly p, poly &pFactor, poly q, poly &qFactor, ring r) 1595 1564 { 1596 //printf("p_ExtGcd1:\n");1597 //p_Write(p, r); p_Write(q, r);1598 1565 assume((p != NULL) || (q != NULL)); 1599 1566 poly a = p; poly b = q; BOOLEAN aCorrespondsToP = TRUE;
Note: See TracChangeset
for help on using the changeset viewer.