Changeset f9b112 in git
- Timestamp:
- Nov 30, 2014, 2:55:22 AM (9 years ago)
- Branches:
- (u'spielwiese', 'd1b01e9d51ade4b46b745d3bada5c5f3696be3a8')
- Children:
- 0ab2c4c1fc27408db639cea5d0dd682f902463b4
- Parents:
- e1419f3535e85a849df97ea435b49ca0b2caf946
- git-author:
- Oleksandr Motsak <motsak@mathematik.uni-kl.de>2014-11-30 02:55:22+01:00
- git-committer:
- Oleksandr Motsak <motsak@mathematik.uni-kl.de>2014-11-30 03:26:48+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/dyn_modules/syzextra/syzextra.cc
re1419f rf9b112 148 148 }; 149 149 150 static inlinepoly pp_Add_qq( const poly a, const poly b, const ring R)150 static FORCE_INLINE poly pp_Add_qq( const poly a, const poly b, const ring R) 151 151 { 152 152 return p_Add_q( p_Copy(a, R), p_Copy(b, R), R ); 153 153 } 154 154 155 static inlinepoly p_VectorProductLT( poly s, const ideal& L, const ideal& T, const ring& R)155 static FORCE_INLINE poly p_VectorProductLT( poly s, const ideal& L, const ideal& T, const ring& R) 156 156 { 157 157 assume( IDELEMS(L) == IDELEMS(T) ); … … 183 183 } 184 184 185 static inlineint atGetInt(idhdl rootRingHdl, const char* attribute, long def)185 static FORCE_INLINE int atGetInt(idhdl rootRingHdl, const char* attribute, long def) 186 186 { 187 187 return ((int)(long)(atGet(rootRingHdl, attribute, INT_CMD, (void*)def))); … … 451 451 452 452 453 453 static FORCE_INLINE poly myp_Head(const poly p, const ring r) 454 { 455 p_Test(p,r); 456 const poly pp = p_Head(p, r); 457 p_Test(pp,r); 458 return pp; 459 } 460 454 461 455 462 /// return a new term: leading coeff * leading monomial of p … … 457 464 poly leadmonom(const poly p, const ring r, const bool bSetZeroComp) 458 465 { 459 poly m = NULL; 460 461 if( p != NULL ) 462 { 466 if( UNLIKELY(p == NULL ) ) 467 return NULL; 468 463 469 assume( p != NULL ); 464 470 p_LmTest(p, r); 465 471 466 m = p_LmInit(p, r);472 poly m = p_LmInit(p, r); 467 473 p_SetCoeff0(m, n_Copy(p_GetCoeff(p, r), r), r); 468 474 469 475 if( bSetZeroComp ) 470 476 p_SetComp(m, 0, r); 477 471 478 p_Setm(m, r); 472 473 479 474 480 assume( m != NULL ); … … 478 484 if( bSetZeroComp ) 479 485 assume( p_GetComp(m, r) == 0 ); 480 } 481 486 482 487 return m; 483 488 } … … 487 492 poly p_Tail(const poly p, const ring r) 488 493 { 489 if( p == NULL)494 if( UNLIKELY(p == NULL) ) 490 495 return NULL; 491 496 else … … 496 501 ideal id_Tail(const ideal id, const ring r) 497 502 { 498 if( id == NULL)503 if( UNLIKELY(id == NULL) ) 499 504 return NULL; 500 505 … … 1441 1446 #if NOPRODUCT 1442 1447 syz_2 = m_div.FindReducer(syz_lead, L->m[rr], syz_lead, m_checker); 1448 p_Test(syz_2, r); 1443 1449 1444 1450 if( UNLIKELY( __TREEOUTPUT__ ) ) … … 1456 1462 1457 1463 syz_2 = m_div.FindReducer(aa, syz_lead, m_checker); 1464 p_Test(syz_2, r); 1458 1465 1459 1466 p_Delete(&aa, r); … … 1508 1515 kbTest(bucket); 1509 1516 poly t = m_div.FindReducer(spoly, NULL, m_checker); 1517 p_Test(t, r); 1510 1518 1511 1519 if( t != NULL ) … … 1586 1594 assume(m_idTails != NULL && m_idTails->m != NULL); 1587 1595 assume( tail >= 0 && tail < IDELEMS(m_idTails) ); 1596 1597 p_Test(multiplier, r); 1588 1598 1589 1599 if( UNLIKELY(__NOCACHING__) ) … … 1619 1629 1620 1630 poly p = p_Copy(itr->second, r); // COPY!!! 1631 1632 p_Test(multiplier, r); 1621 1633 1622 1634 if( !n_Equal( pGetCoeff(multiplier), pGetCoeff(itr->first), r) ) // normalize coeffs!? … … 1648 1660 if( __DEBUG__ ) { m_div.Verify(); m_checker.Verify(); } 1649 1661 #endif 1662 p_Test(multiplier, r); 1650 1663 1651 1664 return p; … … 1658 1671 } 1659 1672 1673 p_Test(multiplier, r); 1674 1660 1675 const poly p = ComputeImage(multiplier, tail); 1661 1676 … … 1666 1681 1667 1682 if( UNLIKELY(__PROT__) ) ++ m_stat[8]; // PrintS("S"); // store 1668 1669 T.insert( TP2PCache::value_type(p_Copy(multiplier, r), p) ); // T[ multiplier ] = p; 1683 1684 p_Test(multiplier, r); 1685 1686 T.insert( TP2PCache::value_type(myp_Head(multiplier, r), p) ); // T[ multiplier ] = p; 1687 1688 p_Test(multiplier, r); 1670 1689 1671 1690 // if( p == NULL ) … … 1685 1704 Print("{ \"proc\": \"TTStore%d\", \"nodelabel\": \"", 0); writeLatexTerm(multiplier, r, false); Print(" \\\\GEN{%d}\", \"children\": [", tail + 1); 1686 1705 } 1687 1706 1688 1707 const poly p = ComputeImage(multiplier, tail); 1689 1708 … … 1716 1735 assume( tail >= 0 && tail < IDELEMS(m_idTails) ); 1717 1736 1737 p_Test(multiplier, r); 1738 1718 1739 const poly t = m_idTails->m[tail]; // !!! 1719 1740 … … 1730 1751 1731 1752 const poly p = TraverseTail(multiplier, t); 1753 1754 p_Test(multiplier, r); 1732 1755 1733 1756 if( UNLIKELY(__TREEOUTPUT__) ) … … 1757 1780 assume( T != NULL ); 1758 1781 1782 p_Test(multiplier, r); 1783 1759 1784 #ifndef SING_NDEBUG 1760 1785 if( __DEBUG__ ) { m_div.Verify(); m_checker.Verify(); } … … 1842 1867 } 1843 1868 1869 p_Test(multiplier, r); 1870 1844 1871 return s; 1845 1846 1872 } 1847 1873 … … 1868 1894 assume( T != NULL ); 1869 1895 1896 p_Test(multiplier, r); 1897 1870 1898 // simple implementation with FindReducer: 1871 1899 poly s = NULL; 1872 1900 1873 if( UNLIKELY( (!__TAILREDSYZ__) || m_lcm.Check(multiplier) ) ) // TODO????1901 if( (!__TAILREDSYZ__) || m_lcm.Check(multiplier) ) // TODO: UNLIKELY / LIKELY ???? 1874 1902 { 1875 1903 #if NOPRODUCT 1876 s = m_div.FindReducer(multiplier, term4reduction, syztermCheck, m_checker); 1904 s = m_div.FindReducer(multiplier, term4reduction, syztermCheck, m_checker); // s ???? 1905 p_Test(s, r); 1877 1906 1907 p_Test(multiplier, r); 1908 1878 1909 if( s == NULL ) // No Reducer? 1879 1910 { 1880 if( UNLIKELY(__PROT__) ) ++ m_stat[4]; // PrintS("$"); // LOT 1881 1882 return s; 1911 if( UNLIKELY(__PROT__) ) ++ m_stat[4]; // PrintS("$"); // LOT 1912 return NULL; 1883 1913 } 1884 1914 … … 1892 1922 #else 1893 1923 // NOTE: only LT(term4reduction) should be used in the following: 1894 poly product = pp_Mult_mm(multiplier, term4reduction, r); 1924 poly product = pp_Mult_mm(multiplier, term4reduction, r); 1925 p_Test(product, r); 1926 1895 1927 s = m_div.FindReducer(product, syztermCheck, m_checker); // ?? 1896 1928 p_Test(s, r); 1929 1930 p_Test(multiplier, r); 1931 1897 1932 if( s == NULL ) // No Reducer? 1898 1933 { 1899 1934 if( UNLIKELY(__PROT__) ) ++ m_stat[4]; // PrintS("$"); // LOT 1900 1901 return s; 1935 return NULL; 1902 1936 } 1903 1937 … … 1918 1952 { 1919 1953 if( UNLIKELY(__TAILREDSYZ__ && __PROT__) ) ++ m_stat[5]; // PrintS("%"); // check LCM ! 1920 1921 return s; 1922 } 1923 1954 return NULL; 1955 } 1956 1957 p_Test(multiplier, r); 1958 p_Test(s, r); 1959 1924 1960 poly b = leadmonom(s, r); 1925 1961 1962 p_Test(b, r); 1963 1926 1964 const int c = p_GetComp(s, r) - 1; 1927 1965 assume( c >= 0 && c < IDELEMS(T) ); … … 1949 1987 } 1950 1988 1989 p_Test(multiplier, r); 1951 1990 1952 1991 if( t != NULL ) … … 1958 1997 #endif 1959 1998 1999 p_Test(multiplier, r); 1960 2000 1961 2001 return s; … … 2001 2041 m_sev( p_GetShortExpVector(_lt, R) ), m_label( _label ), m_lt( _lt ) 2002 2042 #ifndef SING_NDEBUG 2003 , _R(R), m_lt_copy( p_Head(_lt, R) )2043 , _R(R), m_lt_copy( myp_Head(_lt, R) ) 2004 2044 #endif 2005 2045 { … … 2179 2219 assume( (p_GetComp(lt(), r) == p_GetComp(t, r)) || (p_GetComp(lt(), r) == 0) ); 2180 2220 2221 p_Test(m, r); 2222 p_Test(t, r); 2181 2223 // const int k = label(); 2182 2224 // assume( m_L->m[k] == p ); … … 2451 2493 assume ( !n_IsZero( p_GetCoeff(m, m_rBaseRing), m_rBaseRing ) ); 2452 2494 assume ( !n_IsZero( p_GetCoeff(t, m_rBaseRing), m_rBaseRing ) ); 2453 2495 2496 p_Test(m, m_rBaseRing); 2497 2454 2498 // assume( p_GetComp(m_multiplier, m_rBaseRing) == 0 ); 2455 2499 #ifndef SING_NDEBUG … … 2530 2574 const CReducerFinder& syz_checker) const 2531 2575 { 2576 const ring& r = m_rBaseRing; 2577 2532 2578 #ifndef SING_NDEBUG 2533 2579 if( __DEBUG__ ) { Verify(); syz_checker.Verify(); } 2534 2580 #endif 2581 2582 p_Test(multiplier, r); 2535 2583 2536 2584 CDivisorEnumerator2 itr(*this, multiplier, t); … … 2540 2588 // don't care about the module component of multiplier (as it may be the syzygy term) 2541 2589 // product = multiplier * t? 2542 const ring& r = m_rBaseRing;2543 2590 2544 2591 assume( multiplier != NULL ); assume( t != NULL ); … … 2553 2600 assume( c >= 0 && c < IDELEMS(L) ); 2554 2601 2602 p_Test(multiplier, r); 2603 2555 2604 if (UNLIKELY( __DEBUG__ && (syzterm != NULL) )) 2556 2605 { … … 2574 2623 const BOOLEAN to_check = (syz_checker.IsNonempty()); // __TAILREDSYZ__ && 2575 2624 2625 // const poly q = p_One(r); 2576 2626 const poly q = p_New(r); pNext(q) = NULL; 2577 2627 2578 2628 if( UNLIKELY(__DEBUG__) ) 2579 2629 p_SetCoeff0(q, 0, r); // for printing q 2580 2630 2631 assume( pNext(q) == NULL ); 2632 2633 p_Test(multiplier, r); 2581 2634 while( itr.MoveNext() ) 2582 2635 { … … 2592 2645 p_Setm(q, r); 2593 2646 2647 p_Test(multiplier, r); 2648 2594 2649 // cannot allow something like: a*gen(i) - a*gen(i) 2595 2650 if (syzterm != NULL && (k == c)) … … 2631 2686 2632 2687 p_SetCoeff0(q, n_InpNeg(n, r), r); 2633 n_Delete(&n, r);2688 // n_Delete(&n, r); 2634 2689 2635 2690 #ifndef SING_NDEBUG 2636 2691 if( __DEBUG__ ) { Verify(); syz_checker.Verify(); } 2637 2692 #endif 2693 p_Test(multiplier, r); 2694 p_Test(q, r); 2638 2695 2639 2696 assume( itr.Current().CheckLT( L ) ); // ??? … … 2731 2788 if( __DEBUG__ ) { Verify(); syz_checker.Verify(); } 2732 2789 #endif 2790 2791 p_Test(multiplier, r); 2733 2792 2734 2793 return NULL;
Note: See TracChangeset
for help on using the changeset viewer.