Changeset 2a22cff in git


Ignore:
Timestamp:
Mar 9, 2003, 12:39:26 PM (21 years ago)
Author:
Michael Brickenstein <bricken@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
9685005c0bab8517e454c02e230b36d2946c838d
Parents:
32f58cd398994310d68f0171a7b1eda5d17811ba
Message:
*bricken: work in progress


git-svn-id: file:///usr/local/Singular/svn/trunk@6587 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
Singular
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/tgb.cc

    r32f58c r2a22cff  
    23902390  return l;
    23912391}
    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
    23972393 
    23982394
     
    24282424}
    24292425void reduction_step::reduce(red_object* r, int l, int u){}
     2426void simple_reducer::target_is_no_sum_reduce(red_object & ro){
     2427  kBucketPolyRed(ro.bucket,p,
     2428                 p_len,
     2429                 c->strat->kNoether);
     2430}
     2431
     2432void 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}
    24302443void simple_reducer::reduce(red_object* r, int l, int u){
    24312444  int i;
    24322445  for(i=l;i<=u;i++){
    24332446    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
    24372449    else
    24382450    {
    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]);
    24472452      //reduce and adjust multiplied
    24482453      r[i].sum->ac->last_reduction_id=reduction_id;
    24492454     
    24502455    }
     2456    //most elegant would be multimethods at this point and subclassing
     2457    //red_object for sum
    24512458 
    24522459  }
  • Singular/tgb.h

    r32f58c r2a22cff  
    118118  void flatten();
    119119  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);
    121120  void adjust_coefs(number c_r, number c_ac_r);
    122121  int guess_quality(calc_dat* c);
     
    185184  kBucket_pt fill_back;
    186185  int p_len;
    187 
    188   void reduce(red_object* r, int l, int u);
     186 
     187  virtual void reduce(red_object* r, int l, int u);
    189188  ~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);
    190192};
    191193//class sum_canceling_reducer:public reduction_step {
Note: See TracChangeset for help on using the changeset viewer.