Changeset 7b2896 in git


Ignore:
Timestamp:
Feb 23, 2007, 9:34:40 AM (17 years ago)
Author:
Michael Brickenstein <bricken@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
abce2eb6b4be7725a8a5bc3b6feeb4821927af5b
Parents:
05023393670050d3a3678f07351eda09ade7a6eb
Message:
*bricken: tuned noro F4


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

Legend:

Unmodified
Added
Removed
  • kernel/tgb.cc

    r050233 r7b2896  
    55*  Computer Algebra System SINGULAR     *
    66****************************************/
    7 /* $Id: tgb.cc,v 1.147 2007-02-22 14:46:49 bricken Exp $ */
     7/* $Id: tgb.cc,v 1.148 2007-02-23 08:34:40 bricken Exp $ */
    88/*
    99* ABSTRACT: slimgb and F4 implementation
     
    25242524
    25252525  SparseRow** srows=(SparseRow**) omalloc(pn*sizeof(SparseRow*));
    2526 
     2526  int non_zeros=0;
    25272527  for(j=0;j<pn;j++){
    25282528   
     
    25332533
    25342534
    2535     srows[j]=noro_red_to_non_poly(h,h_len,&cache,c);
    2536 
     2535    srows[non_zeros]=noro_red_to_non_poly(h,h_len,&cache,c);
     2536    if (srows[non_zeros]!=NULL) non_zeros++;
    25372537  }
    25382538  std::vector<DataNoroCacheNode*> irr_nodes;
     
    25692569  //if (TEST_OPT_PROT)
    25702570  //  Print("Evaluate Rows \n");
    2571 
     2571  pn=non_zeros;
    25722572  number_type* number_array=(number_type*) omalloc(n*pn*sizeof(number_type));
    25732573  memset(number_array,0,sizeof(number_type)*n*pn);
     
    25822582
    25832583    SparseRow* srow=srows[j];
     2584    if (srow){
    25842585    for(i=0;i<srow->len;i++){
    25852586      int idx=old_to_new_indices[srow->idx_array[i]];
     
    25872588    }
    25882589    delete srow;
    2589 
     2590    }
    25902591  }
    25912592 
  • kernel/tgb_internal.h

    r050233 r7b2896  
    55*  Computer Algebra System SINGULAR     *
    66****************************************/
    7 /* $Id: tgb_internal.h,v 1.57 2007-02-22 14:46:50 bricken Exp $ */
     7/* $Id: tgb_internal.h,v 1.58 2007-02-23 08:34:40 bricken Exp $ */
    88/*
    99 * ABSTRACT: tgb internal .h file
     
    583583    nReducibleMonomials=0;
    584584    temp_term=pOne();
     585    tempBufferSize=3000;
     586    tempBuffer=omalloc(tempBufferSize);
     587  }
     588  void ensureTempBufferSize(size_t size){
     589    if (tempBufferSize<size){
     590      tempBufferSize=2*size;
     591      omfree(tempBuffer);
     592      tempBuffer=omalloc(tempBufferSize);
     593    }
    585594  }
    586595#ifdef NORO_RED_ARRAY_RESERVER
     
    604613    omfree(recursionPolyBuffer);
    605614#endif
     615   omfree(tempBuffer);
    606616  }
    607617 
    608618  int nIrreducibleMonomials;
    609619  int nReducibleMonomials;
     620  void* tempBuffer;
     621  size_t tempBufferSize;
    610622protected:
    611623  DataNoroCacheNode* treeInsert(poly term,poly nf,int len){
     
    679691  len=i;
    680692  //in the loop before nIrreducibleMonomials increases, so position here is important
    681   storage_type* temp_array=(storage_type*) omalloc(cache->nIrreducibleMonomials*sizeof(storage_type));
     693  size_t temp_size_bytes=cache->nIrreducibleMonomials*sizeof(storage_type);
     694  cache->ensureTempBufferSize(temp_size_bytes);
     695  storage_type* temp_array=(storage_type*) cache->tempBuffer;//omalloc(cache->nIrreducibleMonomials*sizeof(storage_type));
    682696  int temp_size=cache->nIrreducibleMonomials;
    683   memset(temp_array,0,sizeof(storage_type)*cache->nIrreducibleMonomials);
     697  memset(temp_array,0,temp_size_bytes);
    684698  for(i=0;i<len;i++){
    685699    MonRedResNP red=mon[i];
     
    715729  int non_zeros=0;
    716730  for(i=0;i<cache->nIrreducibleMonomials;i++){
    717     if (!(temp_array[i]==0)){
    718       non_zeros++;
    719     }
     731    //if (!(temp_array[i]==0)){
     732    //  non_zeros++;
     733    //}
     734    assume(((temp_array[i]!=0)==0)|| (((temp_array[i]!=0)==1)));
     735    non_zeros+=(temp_array[i]!=0);
     736  }
     737 
     738  if (non_zeros==0){
     739    omfree(mon);
     740    return NULL;
    720741  }
    721742  SparseRow* res=new SparseRow(non_zeros);
     
    727748      res->coef_array[pos]=(number) temp_array[i];
    728749
    729       pos++; 
     750      pos++;
     751      non_zeros--;
     752      if (non_zeros==0) break;
    730753    }
    731754   
    732755  }
    733   omfree(temp_array);
     756  //omfree(temp_array);
    734757
    735758  omfree(mon);
Note: See TracChangeset for help on using the changeset viewer.