Changeset 90934a in git
 Timestamp:
 Mar 15, 2012, 7:37:03 PM (12 years ago)
 Branches:
 (u'fiekerDuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '3720ae8bfcff4a4649ee98a15552089151d2d59b')
 Children:
 4d94c97313de2ce07f4bfae84308b31c1294a569
 Parents:
 55e2df02f4f427087fcfc2be9320bbce5142bfe9
 gitauthor:
 Oleksandr Motsak <motsak@mathematik.unikl.de>20120315 19:37:03+01:00
 gitcommitter:
 Oleksandr Motsak <motsak@mathematik.unikl.de>20120316 19:36:35+01:00
 Location:
 libpolys/polys/monomials
 Files:

 2 edited
Legend:
 Unmodified
 Added
 Removed

libpolys/polys/monomials/ring.cc
r55e2df0 r90934a 1645 1645 } 1646 1646 1647 // returns TRUE, if r1 equals r2 FALSE, otherwise Equality is1648 // determined componentwise, if qr == 1, then qrideal equality is1649 // tested, as well1650 1647 BOOLEAN rEqual(ring r1, ring r2, BOOLEAN qr) 1651 1648 { 1649 if( !rSamePolyRep(r1, r2) ) 1650 return FALSE; 1651 1652 1652 int i, j; 1653 1653 1654 1654 if (r1 == r2) return TRUE; 1655 1656 1655 if (r1 == NULL  r2 == NULL) return FALSE; 1657 1656 1658 if ((r1>cf>type != r2>cf>type) 1657 assume( r1>cf == r2>cf ); 1658 assume( rVar(r1) == rVar(r2) ); 1659 1660 for (i=0; i<rVar(r1); i++) 1661 { 1662 if (r1>names[i] != NULL && r2>names[i] != NULL) 1663 { 1664 if (strcmp(r1>names[i], r2>names[i])) return FALSE; 1665 } 1666 else if ((r1>names[i] != NULL) ^ (r2>names[i] != NULL)) 1667 { 1668 return FALSE; 1669 } 1670 } 1671 1672 if (qr) 1673 { 1674 if (r1>qideal != NULL) 1675 { 1676 ideal id1 = r1>qideal, id2 = r2>qideal; 1677 int i, n; 1678 poly *m1, *m2; 1679 1680 if (id2 == NULL) return FALSE; 1681 if ((n = IDELEMS(id1)) != IDELEMS(id2)) return FALSE; 1682 1683 { 1684 m1 = id1>m; 1685 m2 = id2>m; 1686 for (i=0; i<n; i++) 1687 if (! p_EqualPolys(m1[i],m2[i], r1, r2)) return FALSE; 1688 } 1689 } 1690 else if (r2>qideal != NULL) return FALSE; 1691 } 1692 1693 return TRUE; 1694 } 1695 1696 BOOLEAN rSamePolyRep(ring r1, ring r2) 1697 { 1698 int i, j; 1699 1700 if (r1 == r2) return TRUE; 1701 1702 if (r1 == NULL  r2 == NULL) return FALSE; 1703 1704 if ((r1>cf != r2>cf) 1659 1705  (rVar(r1) != rVar(r2)) 1660  (r1>OrdSgn != r2>OrdSgn) 1661  (rPar(r1) != rPar(r2))) 1706  (r1>OrdSgn != r2>OrdSgn)) 1662 1707 return FALSE; 1663 1664 for (i=0; i<rVar(r1); i++)1665 {1666 if (r1>names[i] != NULL && r2>names[i] != NULL)1667 {1668 if (strcmp(r1>names[i], r2>names[i])) return FALSE;1669 }1670 else if ((r1>names[i] != NULL) ^ (r2>names[i] != NULL))1671 {1672 return FALSE;1673 }1674 }1675 1708 1676 1709 i=0; … … 1695 1728 if (r2>order[i] != 0) return FALSE; 1696 1729 1697 for (i=0; i<rPar(r1);i++) 1698 { 1699 if (strcmp(rParameter(r1)[i], rParameter(r2)[i])!=0) 1700 return FALSE; 1701 } 1702 1703 if ( !rMinpolyIsNULL(r1) ) 1704 { 1705 if ( rMinpolyIsNULL(r2) ) return FALSE; 1706 if (! p_EqualPolys(r1>cf>extRing>minideal>m[0], 1707 r2>cf>extRing>minideal>m[0], 1708 r1>cf>extRing)) 1709 return FALSE; 1710 } 1711 else if (!rMinpolyIsNULL(r2)) return FALSE; 1712 1713 if (qr) 1714 { 1715 if (r1>qideal != NULL) 1716 { 1717 ideal id1 = r1>qideal, id2 = r2>qideal; 1718 int i, n; 1719 poly *m1, *m2; 1720 1721 if (id2 == NULL) return FALSE; 1722 if ((n = IDELEMS(id1)) != IDELEMS(id2)) return FALSE; 1723 1724 { 1725 m1 = id1>m; 1726 m2 = id2>m; 1727 for (i=0; i<n; i++) 1728 if (! p_EqualPolys(m1[i],m2[i],r1)) return FALSE; 1729 } 1730 } 1731 else if (r2>qideal != NULL) return FALSE; 1732 } 1733 1734 return TRUE; 1735 } 1736 1737 // returns TRUE, if r1 and r2 represents the monomials in the same way 1738 // FALSE, otherwise 1739 // this is an analogue to rEqual but not so strict 1740 BOOLEAN rSamePolyRep(ring r1, ring r2) 1741 { 1742 int i, j; 1743 1744 if (r1 == r2) return TRUE; 1745 1746 if (r1 == NULL  r2 == NULL) return FALSE; 1747 1748 if ((r1>cf>type != r2>cf>type) 1749  (rVar(r1) != rVar(r2)) 1750  (r1>OrdSgn != r2>OrdSgn) 1751  (rPar(r1) != rPar(r2))) 1752 return FALSE; 1753 1754 if (rVar(r1)!=rVar(r2)) return FALSE; 1755 if (rPar(r1)!=rPar(r2)) return FALSE; 1756 1757 i=0; 1758 while (r1>order[i] != 0) 1759 { 1760 if (r2>order[i] == 0) return FALSE; 1761 if ((r1>order[i] != r2>order[i]) 1762  (r1>block0[i] != r2>block0[i]) 1763  (r1>block1[i] != r2>block1[i])) 1764 return FALSE; 1765 if (r1>wvhdl[i] != NULL) 1766 { 1767 if (r2>wvhdl[i] == NULL) 1768 return FALSE; 1769 for (j=0; j<r1>block1[i]r1>block0[i]+1; j++) 1770 if (r2>wvhdl[i][j] != r1>wvhdl[i][j]) 1771 return FALSE; 1772 } 1773 else if (r2>wvhdl[i] != NULL) return FALSE; 1774 i++; 1775 } 1776 if (r2>order[i] != 0) return FALSE; 1777 1730 // we do not check variable names 1778 1731 // we do not check minpoly/minideal 1779 1732 // we do not check qideal 
libpolys/polys/monomials/ring.h
r55e2df0 r90934a 392 392 int rSumInternal(ring r1, ring r2, ring &sum, BOOLEAN vartest, BOOLEAN dp_dp); 393 393 394 BOOLEAN rEqual(ring r1, ring r2, BOOLEAN qr = 1); 394 /// returns TRUE, if r1 equals r2 FALSE, otherwise Equality is 395 /// determined componentwise, if qr == 1, then qrideal equality is 396 /// tested, as well 397 BOOLEAN rEqual(ring r1, ring r2, BOOLEAN qr = TRUE); 398 399 /// returns TRUE, if r1 and r2 represents the monomials in the same way 400 /// FALSE, otherwise 401 /// this is an analogue to rEqual but not so strict 395 402 BOOLEAN rSamePolyRep(ring r1, ring r2); 403 396 404 void rUnComplete(ring r); 397 405
Note: See TracChangeset
for help on using the changeset viewer.