Changeset 06ee23 in git
- Timestamp:
- Feb 15, 2007, 9:28:08 AM (16 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 77f10ac0b42b5c408bdf79a5f410a02810a233d3
- Parents:
- b3daab03c4cc77a25533037671204cd7b2ba146f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/tgb.cc
rb3daab r06ee23 5 5 * Computer Algebra System SINGULAR * 6 6 ****************************************/ 7 /* $Id: tgb.cc,v 1.13 2 2007-02-15 07:43:36bricken Exp $ */7 /* $Id: tgb.cc,v 1.133 2007-02-15 08:28:08 bricken Exp $ */ 8 8 /* 9 9 * ABSTRACT: slimgb and F4 implementation … … 2328 2328 DataNoroCacheNode* getCacheReference(poly term); 2329 2329 NoroCache(){ 2330 buffer=NULL; 2330 2331 #ifdef NORO_RED_ARRAY_RESERVER 2331 2332 reserved=0; 2332 2333 2333 recursionPolyBuffer=(poly*)omalloc(1000000*sizeof(poly)); 2334 2334 #endif … … 2388 2388 //cache_map impl; 2389 2389 NoroCacheNode root; 2390 2390 number* buffer; 2391 2391 }; 2392 2392 void NoroCache::evaluateRows(){ 2393 2393 //after that can evaluate placeholders 2394 2394 int i; 2395 buffer=(number*) omalloc(nIrreducibleMonomials*sizeof(number)); 2395 2396 for(i=0;i<root.branches_len;i++){ 2396 2397 evaluateRows(1,root.branches[i]); 2397 2398 } 2399 omfree(buffer); 2400 buffer=NULL; 2398 2401 } 2399 2402 void NoroCache::evaluateRows(int level, NoroCacheNode* node){ … … 2409 2412 if (dn->value_len!=backLinkCode){ 2410 2413 dn->row=new DenseRow(); 2411 dn->row->array=(number*) omalloc(nIrreducibleMonomials*sizeof(number)); 2414 DenseRow* row=dn->row; 2415 memset(buffer,0,sizeof(number)*nIrreducibleMonomials); 2416 poly p=dn->value_poly; 2417 if (p==NULL) {row->array=NULL;row->begin=0;row->end=0; return;} 2418 int i=0; 2419 int idx; 2420 number* a=buffer; 2421 while(p){ 2422 DataNoroCacheNode* ref=getCacheReference(p); 2423 2424 idx=ref->term_index; 2425 assume(idx>=0); 2426 a[idx]=p_GetCoeff(p,currRing); 2427 if (i==0) row->begin=idx; 2428 i++; 2429 pIter(p); 2430 } 2431 row->end=idx+1; 2432 assume(row->end>row->begin); 2433 int len=row->end-row->begin; 2434 row->array=(number*) omalloc((len)*sizeof(number)); 2435 memcpy(row->array,a+row->begin,len*sizeof(number)); 2436 /*dn->row->array=(number*) omalloc(nIrreducibleMonomials*sizeof(number)); 2412 2437 dn->row->begin=0; 2413 2438 dn->row->end=nIrreducibleMonomials; … … 2420 2445 i=0; 2421 2446 while(p){ 2422 DataNoroCacheNode* ref=getCacheReference(p); 2423 2424 int idx=ref->term_index; 2447 2425 2448 if (i==0){ 2426 2449 dn->row->begin=idx; … … 2432 2455 row[idx]=p_GetCoeff(p,currRing); 2433 2456 pIter(p); 2434 } 2457 }*/ 2458 2435 2459 //p_Delete(&dn->value_poly,currRing); 2436 2460 } … … 2447 2471 } else { 2448 2472 DenseRow* ref_row=ref->row; 2449 int j; 2473 if (ref_row==NULL) continue; 2474 number* ref_begin=ref_row->array; 2475 number* ref_end=ref_row->array+(ref_row->end-ref_row->begin); 2476 number* my_pos=row+ref_row->begin; 2477 //TODO npisOne distinction 2478 while(ref_begin!=ref_end){ 2479 2480 *my_pos=npAdd(*my_pos,npMult(coef,*ref_begin)); 2481 ++ref_begin; 2482 ++my_pos; 2483 } 2484 /*int j; 2450 2485 if (!(npIsOne(coef))){ 2451 2486 for(j=ref_row->begin;j<ref_row->end;j++){ … … 2453 2488 } 2454 2489 } else{ 2490 2455 2491 for(j=ref_row->begin;j<ref_row->end;j++) 2456 2492 row[j]=npAdd(row[j],ref_row->array[j]); 2457 } 2493 }*/ 2458 2494 } 2459 2495 } … … 2993 3029 } 2994 3030 mass_add(p,pn,c); 3031 omfree(p); 2995 3032 return; 2996 3033 /*if (TEST_OPT_PROT)
Note: See TracChangeset
for help on using the changeset viewer.