Changeset 761e453 in git


Ignore:
Timestamp:
Apr 27, 2018, 11:38:34 AM (5 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
f1182f8cdb0e421624b6bd4cb12a67c87b44ec12
Parents:
945000cb5ab9a7e19901cbd2d68659fde7c7b939
Message:
add: sBucket additions: sBucketCanonicalize, sBucketString, sBucketPrint
Location:
libpolys/polys
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • libpolys/polys/sbuckets.cc

    r945000 r761e453  
    398398  return pn;
    399399}
     400
     401void sBucketCanonicalize(sBucket_pt bucket)
     402{
     403  poly pr = NULL;
     404  int  lr = 0;
     405  int i = 0;
     406
     407  while (bucket->buckets[i].p == NULL)
     408  {
     409    assume( bucket->buckets[i].length == 0 );
     410    i++;
     411    if (i > bucket->max_bucket) goto done;
     412  }
     413
     414  pr = bucket->buckets[i].p;
     415  lr = bucket->buckets[i].length;
     416
     417  assume( pr != NULL && (lr > 0) );
     418
     419  bucket->buckets[i].p = NULL;
     420  bucket->buckets[i].length = 0;
     421  i++;
     422
     423  while (i <= bucket->max_bucket)
     424  {
     425    if (bucket->buckets[i].p != NULL)
     426    {
     427      assume( bucket->buckets[i].length == pLength(bucket->buckets[i].p) );
     428
     429      pr = p_Add_q(pr, bucket->buckets[i].p, lr, bucket->buckets[i].length,
     430                   bucket->bucket_ring);
     431
     432      bucket->buckets[i].p = NULL;
     433      bucket->buckets[i].length = 0;
     434    }
     435
     436    assume( bucket->buckets[i].p == NULL );
     437    assume( bucket->buckets[i].length == 0 );
     438    i++;
     439  }
     440
     441done:
     442  if (pr!=NULL)
     443  {
     444    i = SI_LOG2(lr);
     445    bucket->buckets[i].p = pr;
     446    bucket->buckets[i].length = lr;
     447    bucket->max_bucket = i;
     448  }
     449}
     450
     451char* sBucketString(sBucket_pt bucket)
     452{
     453  sBucketCanonicalize(bucket);
     454  StringSetS("bucket: ");
     455  StringAppendS(p_String(bucket->buckets[bucket->max_bucket].p,bucket->bucket_ring));
     456  return StringEndS();
     457}
     458
     459void sBucketPrint(sBucket_pt bucket)
     460{
     461  sBucketCanonicalize(bucket);
     462  PrintS("bucket: ");
     463  p_Write(bucket->buckets[bucket->max_bucket].p,bucket->bucket_ring);
     464}
  • libpolys/polys/sbuckets.h

    r945000 r761e453  
    100100
    101101
     102void sBucketCanonicalize(sBucket_pt bucket);
     103char* sBucketString(sBucket_pt bucket);
     104void sBucketPrint(sBucket_pt bucket);
    102105#endif // P_BUCKET_SORT
Note: See TracChangeset for help on using the changeset viewer.