Changeset 353e59 in git
- Timestamp:
- Jul 27, 2016, 5:00:31 PM (8 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 836c32b3197962be95ef162f975a4a1adc2142c2
- Parents:
- 9c48f0827286be71babfeda0326922f9a1fc91e1
- git-author:
- Andreas Steenpass <steenpass@mathematik.uni-kl.de>2016-07-27 17:00:31+02:00
- git-committer:
- Andreas Steenpass <steenpass@mathematik.uni-kl.de>2017-12-15 12:17:07+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/GBEngine/syz4.cc
r9c48f08 r353e59 26 26 static poly TraverseTail_test(poly multiplier, const int tail, 27 27 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 28 const CReducersHash_test *m_div );28 const CReducersHash_test *m_div, const CReducersHash_test *m_checker); 29 29 static poly ComputeImage_test(poly multiplier, const int tail, 30 30 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 31 const CReducersHash_test *m_div );31 const CReducersHash_test *m_div, const CReducersHash_test *m_checker); 32 32 static poly TraverseTail_test(poly multiplier, poly tail, 33 33 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 34 const CReducersHash_test *m_div );34 const CReducersHash_test *m_div, const CReducersHash_test *m_checker); 35 35 static inline poly ReduceTerm_test(poly multiplier, poly term4reduction, 36 36 poly syztermCheck, const ideal m_idTails_test, 37 const std::vector<bool> &m_lcm, const CReducersHash_test *m_div); 37 const std::vector<bool> &m_lcm, const CReducersHash_test *m_div, 38 const CReducersHash_test *m_checker); 38 39 static poly leadmonom_test(const poly p, const ring r, const bool bSetZeroComp = true); 39 40 … … 72 73 static poly TraverseNF_test(const poly a, ideal m_idLeads_test, 73 74 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 74 const CReducersHash_test *m_div )75 const CReducersHash_test *m_div, const CReducersHash_test *m_checker) 75 76 { 76 77 const ideal& L = m_idLeads_test; … … 78 79 const int r = p_GetComp(a, R) - 1; 79 80 poly aa = leadmonom_test(a, R); 80 poly t = TraverseTail_test(aa, r, m_idTails_test, m_lcm, m_div );81 poly t = TraverseTail_test(aa, r, m_idTails_test, m_lcm, m_div, m_checker); 81 82 t = p_Add_q(t, 82 ReduceTerm_test(aa, L->m[r], a, m_idTails_test, m_lcm, m_div), R); 83 ReduceTerm_test(aa, L->m[r], a, m_idTails_test, m_lcm, m_div, m_checker), 84 R); 83 85 p_Delete(&aa, R); 84 86 return t; … … 137 139 static poly TraverseTail_test(poly multiplier, const int tail, 138 140 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 139 const CReducersHash_test *m_div )141 const CReducersHash_test *m_div, const CReducersHash_test *m_checker) 140 142 { 141 143 const ring& r = currRing; … … 159 161 return p; 160 162 } 161 const poly p 162 = ComputeImage_test(multiplier, tail, m_idTails_test, m_lcm, m_div);163 const poly p = ComputeImage_test(multiplier, tail, m_idTails_test, m_lcm, 164 m_div, m_checker); 163 165 itr = T.find(multiplier); 164 166 if( itr == T.end() ) … … 171 173 } 172 174 #endif // CACHE 173 const poly p 174 = ComputeImage_test(multiplier, tail, m_idTails_test, m_lcm, m_div);175 const poly p = ComputeImage_test(multiplier, tail, m_idTails_test, m_lcm, 176 m_div, m_checker); 175 177 #if CACHE 176 178 top_itr = m_cache_test.find(tail); … … 200 202 static poly ComputeImage_test(poly multiplier, const int tail, 201 203 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 202 const CReducersHash_test *m_div )204 const CReducersHash_test *m_div, const CReducersHash_test *m_checker) 203 205 { 204 206 const poly t = m_idTails_test->m[tail]; 205 207 if(t != NULL) 206 208 { 207 const poly p 208 = TraverseTail_test(multiplier, t, m_idTails_test, m_lcm, m_div);209 const poly p = TraverseTail_test(multiplier, t, m_idTails_test, m_lcm, 210 m_div, m_checker); 209 211 return p; 210 212 } … … 220 222 static poly TraverseTail_test(poly multiplier, poly tail, 221 223 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 222 const CReducersHash_test *m_div )224 const CReducersHash_test *m_div, const CReducersHash_test *m_checker) 223 225 { 224 226 const ring r = currRing; … … 236 238 for(poly p = tail; p != NULL; p = pNext(p)) // iterate over the tail 237 239 { 238 const poly rt 239 = ReduceTerm_test(multiplier, p, NULL, m_idTails_test, m_lcm, m_div);240 const poly rt = ReduceTerm_test(multiplier, p, NULL, m_idTails_test, m_lcm, 241 m_div, m_checker); 240 242 #if BUCKETS == 0 241 243 sum.Add(rt); … … 325 327 } 326 328 327 static void initialize(CReducersHash_test &C, const ideal L);328 329 static void redefine(CReducersHash_test *C, const ideal L)330 {331 deleteCRH(C);332 initialize(*C, L);333 }334 335 static CReducersHash_test m_checker;336 337 329 bool IsDivisible(const CReducersHash_test *C, const poly product); 338 330 339 331 poly FindReducer(const poly multiplier, const poly t, const poly syzterm, 340 const CReducersHash_test &syz_checker, const CReducersHash_test *m_div)332 const CReducersHash_test *syz_checker, const CReducersHash_test *m_div) 341 333 { 342 334 const ring r = currRing; … … 354 346 if (syzterm != NULL) 355 347 c = p_GetComp(syzterm, r) - 1; 356 const BOOLEAN to_check = !syz_checker .empty();348 const BOOLEAN to_check = !syz_checker->empty(); 357 349 const poly q = p_New(r); 358 350 pNext(q) = NULL; … … 380 372 continue; 381 373 } 382 if (to_check && IsDivisible( &syz_checker, q)) {374 if (to_check && IsDivisible(syz_checker, q)) { 383 375 continue; 384 376 } … … 412 404 static inline poly ReduceTerm_test(poly multiplier, poly term4reduction, 413 405 poly syztermCheck, const ideal m_idTails_test, 414 const std::vector<bool> &m_lcm, const CReducersHash_test *m_div) 406 const std::vector<bool> &m_lcm, const CReducersHash_test *m_div, 407 const CReducersHash_test *m_checker) 415 408 { 416 409 const ring r = currRing; … … 427 420 poly b = leadmonom_test(s, r); 428 421 const int c = p_GetComp(s, r) - 1; 429 const poly t = TraverseTail_test(b, c, m_idTails_test, m_lcm, m_div); 422 const poly t 423 = TraverseTail_test(b, c, m_idTails_test, m_lcm, m_div, m_checker); 430 424 pDelete(&b); 431 425 if( t != NULL ) … … 631 625 const ideal m_idLeads_test, const ideal m_syzLeads_test) 632 626 { 633 redefine(&m_checker, m_syzLeads_test);634 627 #if CACHE 635 628 for (TCache_test::iterator it = m_cache_test.begin(); … … 669 662 m_syzLeads_test->m[i]->next = NULL; 670 663 } 664 CReducersHash_test m_checker; 665 initialize(m_checker, m_syzLeads_test); 671 666 setGlobalVariables(res, index, m_idLeads_test, m_syzLeads_test); 672 667 poly p; … … 675 670 pDelete(&res[index]->m[j]->next); 676 671 p->next = NULL; 677 res[index]->m[j]->next 678 = TraverseNF_test(p, m_idLeads_test, m_idTails_test, m_lcm, &m_div); 679 } 672 res[index]->m[j]->next = TraverseNF_test(p, m_idLeads_test, 673 m_idTails_test, m_lcm, &m_div, &m_checker); 674 } 675 deleteCRH(&m_checker); 680 676 deleteCRH(&m_div); 681 677 m_lcm.clear(); … … 744 740 length = computeResolution(res, length, syzHead); 745 741 sortPolys(res, length); 746 747 deleteCRH(&m_checker);748 742 #if CACHE 749 743 for (TCache_test::iterator it = m_cache_test.begin();
Note: See TracChangeset
for help on using the changeset viewer.