Changeset 9c48f08 in git
- Timestamp:
- Jul 27, 2016, 4:45:25 PM (8 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 353e59740153da5f7c66ce40ec97f46571896b9a
- Parents:
- 8c03353daff3c76202c4a0cc2cff34080bbd7981
- git-author:
- Andreas Steenpass <steenpass@mathematik.uni-kl.de>2016-07-27 16:45:25+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
r8c0335 r9c48f08 15 15 #include <map> 16 16 17 typedef struct { 18 poly lt; 19 unsigned long sev; 20 unsigned int label; 21 } CLeadingTerm_struct; 22 23 typedef std::vector<const CLeadingTerm_struct*> TReducers_test; 24 typedef std::map<long, TReducers_test> CReducersHash_test; 25 17 26 static poly TraverseTail_test(poly multiplier, const int tail, 18 const ideal m_idTails_test, const std::vector<bool> &m_lcm); 27 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 28 const CReducersHash_test *m_div); 19 29 static poly ComputeImage_test(poly multiplier, const int tail, 20 const ideal m_idTails_test, const std::vector<bool> &m_lcm); 30 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 31 const CReducersHash_test *m_div); 21 32 static poly TraverseTail_test(poly multiplier, poly tail, 22 const ideal m_idTails_test, const std::vector<bool> &m_lcm); 33 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 34 const CReducersHash_test *m_div); 23 35 static inline poly ReduceTerm_test(poly multiplier, poly term4reduction, 24 36 poly syztermCheck, const ideal m_idTails_test, 25 const std::vector<bool> &m_lcm );37 const std::vector<bool> &m_lcm, const CReducersHash_test *m_div); 26 38 static poly leadmonom_test(const poly p, const ring r, const bool bSetZeroComp = true); 27 39 … … 59 71 60 72 static poly TraverseNF_test(const poly a, ideal m_idLeads_test, 61 const ideal m_idTails_test, const std::vector<bool> &m_lcm) 73 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 74 const CReducersHash_test *m_div) 62 75 { 63 76 const ideal& L = m_idLeads_test; … … 65 78 const int r = p_GetComp(a, R) - 1; 66 79 poly aa = leadmonom_test(a, R); 67 poly t = TraverseTail_test(aa, r, m_idTails_test, m_lcm); 68 t = p_Add_q(t, ReduceTerm_test(aa, L->m[r], a, m_idTails_test, m_lcm), R); 80 poly t = TraverseTail_test(aa, r, m_idTails_test, m_lcm, m_div); 81 t = p_Add_q(t, 82 ReduceTerm_test(aa, L->m[r], a, m_idTails_test, m_lcm, m_div), R); 69 83 p_Delete(&aa, R); 70 84 return t; … … 122 136 123 137 static poly TraverseTail_test(poly multiplier, const int tail, 124 const ideal m_idTails_test, const std::vector<bool> &m_lcm) 138 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 139 const CReducersHash_test *m_div) 125 140 { 126 141 const ring& r = currRing; … … 144 159 return p; 145 160 } 146 const poly p = ComputeImage_test(multiplier, tail, m_idTails_test, m_lcm); 161 const poly p 162 = ComputeImage_test(multiplier, tail, m_idTails_test, m_lcm, m_div); 147 163 itr = T.find(multiplier); 148 164 if( itr == T.end() ) … … 155 171 } 156 172 #endif // CACHE 157 const poly p = ComputeImage_test(multiplier, tail, m_idTails_test, m_lcm); 173 const poly p 174 = ComputeImage_test(multiplier, tail, m_idTails_test, m_lcm, m_div); 158 175 #if CACHE 159 176 top_itr = m_cache_test.find(tail); … … 182 199 183 200 static poly ComputeImage_test(poly multiplier, const int tail, 184 const ideal m_idTails_test, const std::vector<bool> &m_lcm) 201 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 202 const CReducersHash_test *m_div) 185 203 { 186 204 const poly t = m_idTails_test->m[tail]; 187 205 if(t != NULL) 188 206 { 189 const poly p = TraverseTail_test(multiplier, t, m_idTails_test, m_lcm); 207 const poly p 208 = TraverseTail_test(multiplier, t, m_idTails_test, m_lcm, m_div); 190 209 return p; 191 210 } … … 200 219 201 220 static poly TraverseTail_test(poly multiplier, poly tail, 202 const ideal m_idTails_test, const std::vector<bool> &m_lcm) 221 const ideal m_idTails_test, const std::vector<bool> &m_lcm, 222 const CReducersHash_test *m_div) 203 223 { 204 224 const ring r = currRing; … … 217 237 { 218 238 const poly rt 219 = ReduceTerm_test(multiplier, p, NULL, m_idTails_test, m_lcm );239 = ReduceTerm_test(multiplier, p, NULL, m_idTails_test, m_lcm, m_div); 220 240 #if BUCKETS == 0 221 241 sum.Add(rt); … … 292 312 } 293 313 294 typedef struct {295 poly lt;296 unsigned long sev;297 unsigned int label;298 } CLeadingTerm_struct;299 300 typedef std::vector<const CLeadingTerm_struct*> TReducers_test;301 typedef std::map<long, TReducers_test> CReducersHash_test;302 303 314 static void deleteCRH(CReducersHash_test *C) 304 315 { … … 323 334 324 335 static CReducersHash_test m_checker; 325 static CReducersHash_test m_div;326 336 327 337 bool IsDivisible(const CReducersHash_test *C, const poly product); 328 338 329 339 poly FindReducer(const poly multiplier, const poly t, const poly syzterm, 330 const CReducersHash_test &syz_checker )340 const CReducersHash_test &syz_checker, const CReducersHash_test *m_div) 331 341 { 332 342 const ring r = currRing; 333 343 CReducersHash_test::const_iterator m_itr 334 = m_div .find(p_GetComp(t, currRing));335 if (m_itr == m_div .end()) {344 = m_div->find(p_GetComp(t, currRing)); 345 if (m_itr == m_div->end()) { 336 346 return NULL; 337 347 } … … 402 412 static inline poly ReduceTerm_test(poly multiplier, poly term4reduction, 403 413 poly syztermCheck, const ideal m_idTails_test, 404 const std::vector<bool> &m_lcm )414 const std::vector<bool> &m_lcm, const CReducersHash_test *m_div) 405 415 { 406 416 const ring r = currRing; … … 408 418 if( CLCM_test_Check(m_lcm, multiplier) ) 409 419 { 410 s = FindReducer(multiplier, term4reduction, syztermCheck, m_checker); 420 s = FindReducer(multiplier, term4reduction, syztermCheck, m_checker, 421 m_div); 411 422 } 412 423 if( s == NULL ) … … 416 427 poly b = leadmonom_test(s, r); 417 428 const int c = p_GetComp(s, r) - 1; 418 const poly t = TraverseTail_test(b, c, m_idTails_test, m_lcm );429 const poly t = TraverseTail_test(b, c, m_idTails_test, m_lcm, m_div); 419 430 pDelete(&b); 420 431 if( t != NULL ) … … 620 631 const ideal m_idLeads_test, const ideal m_syzLeads_test) 621 632 { 622 redefine(&m_div, m_idLeads_test);623 633 redefine(&m_checker, m_syzLeads_test); 624 634 #if CACHE … … 652 662 } 653 663 std::vector<bool> m_lcm = CLCM_test_redefine(m_idLeads_test); 664 CReducersHash_test m_div; 665 initialize(m_div, m_idLeads_test); 654 666 ideal m_syzLeads_test = idCopy(res[index]); 655 667 for (int i = IDELEMS(res[index])-1; i >= 0; i--) { … … 664 676 p->next = NULL; 665 677 res[index]->m[j]->next 666 = TraverseNF_test(p, m_idLeads_test, m_idTails_test, m_lcm); 667 } 678 = TraverseNF_test(p, m_idLeads_test, m_idTails_test, m_lcm, &m_div); 679 } 680 deleteCRH(&m_div); 668 681 m_lcm.clear(); 669 682 idDelete(&m_idLeads_test); … … 733 746 734 747 deleteCRH(&m_checker); 735 deleteCRH(&m_div);736 748 #if CACHE 737 749 for (TCache_test::iterator it = m_cache_test.begin();
Note: See TracChangeset
for help on using the changeset viewer.