Changeset 2a22cff in git
- Timestamp:
- Mar 9, 2003, 12:39:26 PM (21 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 9685005c0bab8517e454c02e230b36d2946c838d
- Parents:
- 32f58cd398994310d68f0171a7b1eda5d17811ba
- Location:
- Singular
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/tgb.cc
r32f58c r2a22cff 2390 2390 return l; 2391 2391 } 2392 void red_object::reduction_step(int reduction_id, poly reductor_full, int full_len, poly reductor_part, reduction_accumulator* join_to, calc_dat* c) 2393 { 2394 //we have to add support later for building new sums at this points, this involves a change in the interface 2395 2396 } 2392 2397 2393 2398 2394 … … 2428 2424 } 2429 2425 void reduction_step::reduce(red_object* r, int l, int u){} 2426 void simple_reducer::target_is_no_sum_reduce(red_object & ro){ 2427 kBucketPolyRed(ro.bucket,p, 2428 p_len, 2429 c->strat->kNoether); 2430 } 2431 2432 void simple_reducer::target_is_a_sum_reduce(red_object & ro){ 2433 assume(ro.sum!=NULL); 2434 assume(ro.sum->ac!=NULL); 2435 if(ro.sum->ac->last_reduction_id!=reduction_id){ 2436 number n1=kBucketPolyRed(ro.sum->ac->bucket,p, p_len, c->strat->kNoether); 2437 number n2=nMult(n1,ro.sum->ac->multiplied); 2438 nDelete(&ro.sum->ac->multiplied); 2439 nDelete(&n1); 2440 ro.sum->ac->multiplied=n2; 2441 } 2442 } 2430 2443 void simple_reducer::reduce(red_object* r, int l, int u){ 2431 2444 int i; 2432 2445 for(i=l;i<=u;i++){ 2433 2446 if(r[i].sum==NULL) 2434 kBucketPolyRed(r[i].bucket,p, 2435 p_len, 2436 c->strat->kNoether); 2447 this->target_is_no_sum_reduce(r[i]); 2448 2437 2449 else 2438 2450 { 2439 assume(r[i].sum->ac!=NULL); 2440 if(r[i].sum->ac->last_reduction_id!=reduction_id){ 2441 number n1=kBucketPolyRed(r[i].sum->ac->bucket,p, p_len, c->strat->kNoether); 2442 number n2=nMult(n1,r[i].sum->ac->multiplied); 2443 nDelete(&r[i].sum->ac->multiplied); 2444 nDelete(&n1); 2445 r[i].sum->ac->multiplied=n2; 2446 } 2451 this->target_is_a_sum_reduce(r[i]); 2447 2452 //reduce and adjust multiplied 2448 2453 r[i].sum->ac->last_reduction_id=reduction_id; 2449 2454 2450 2455 } 2456 //most elegant would be multimethods at this point and subclassing 2457 //red_object for sum 2451 2458 2452 2459 } -
Singular/tgb.h
r32f58c r2a22cff 118 118 void flatten(); 119 119 void validate(); 120 void reduction_step(int reduction_id, poly reductor_full, int full_len, poly reductor_part, reduction_accumulator* join_to, calc_dat* c);121 120 void adjust_coefs(number c_r, number c_ac_r); 122 121 int guess_quality(calc_dat* c); … … 185 184 kBucket_pt fill_back; 186 185 int p_len; 187 188 v oid reduce(red_object* r, int l, int u);186 187 virtual void reduce(red_object* r, int l, int u); 189 188 ~simple_reducer(); 189 protected: 190 virtual void target_is_a_sum_reduce(red_object & ro); 191 virtual void target_is_no_sum_reduce(red_object & ro); 190 192 }; 191 193 //class sum_canceling_reducer:public reduction_step {
Note: See TracChangeset
for help on using the changeset viewer.