Changeset 9f11ab in git
- Timestamp:
- Feb 16, 2007, 8:24:12 AM (17 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 8324cc32fb89526d0957452cb54e691d6c81ef3f
- Parents:
- 6881be5a0364e2c5f737071fdc615a582d56cff1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/tgb.cc
r6881be5 r9f11ab 5 5 * Computer Algebra System SINGULAR * 6 6 ****************************************/ 7 /* $Id: tgb.cc,v 1.13 8 2007-02-15 15:16:32 bricken Exp $ */7 /* $Id: tgb.cc,v 1.139 2007-02-16 07:24:12 bricken Exp $ */ 8 8 /* 9 9 * ABSTRACT: slimgb and F4 implementation … … 2274 2274 } 2275 2275 }; 2276 class SparseRow{ 2277 public: 2278 int* idx_array; 2279 number* coef_array; 2280 int len; 2281 SparseRow(){ 2282 len=0; 2283 idx_array=NULL; 2284 coef_array=NULL; 2285 } 2286 SparseRow(int n){ 2287 len=n; 2288 idx_array=(int*) omalloc(n*sizeof(int)); 2289 coef_array=(number*) omalloc(n*sizeof(number)); 2290 } 2291 ~SparseRow(){ 2292 omfree(idx_array); 2293 omfree(coef_array); 2294 } 2295 }; 2276 2296 2277 2297 class DataNoroCacheNode:public NoroCacheNode{ … … 2280 2300 int value_len; 2281 2301 poly value_poly; 2302 #ifdef NORO_SPARSE_ROWS_PRE 2303 SparseRow* row; 2304 #else 2282 2305 DenseRow* row; 2306 #endif 2283 2307 int term_index; 2284 2308 DataNoroCacheNode(poly p, int len){ … … 2421 2445 DataNoroCacheNode* dn=(DataNoroCacheNode*) node; 2422 2446 if (dn->value_len!=backLinkCode){ 2447 #ifndef NORO_SPARSE_ROWS_PRE 2423 2448 dn->row=new DenseRow(); 2424 2449 DenseRow* row=dn->row; … … 2444 2469 row->array=(number*) omalloc((len)*sizeof(number)); 2445 2470 memcpy(row->array,a+row->begin,len*sizeof(number)); 2446 /*dn->row->array=(number*) omalloc(nIrreducibleMonomials*sizeof(number)); 2447 dn->row->begin=0; 2448 dn->row->end=nIrreducibleMonomials; 2449 number* row= dn->row->array; 2450 int i; 2451 for(i=0;i<nIrreducibleMonomials;i++){ 2452 row[i]=npInit(0); 2453 } 2454 poly p=dn->value_poly; 2455 i=0; 2471 #else 2472 assume(dn->value_len==dn->value_poly); 2473 dn->row=new SparseRow(dn->value_len); 2474 SparseRow* row=dn->row; 2475 int i=0; 2456 2476 while(p){ 2457 2458 if (i==0){ 2459 dn->row->begin=idx; 2460 } 2461 dn->row->end=idx+1; 2477 DataNoroCacheNode* ref=getCacheReference(p); 2478 2479 idx=ref->term_index; 2480 assume(idx>=0); 2481 row->idx_array[i]=idx; 2482 row->coef_array[i]=p_GetCoeff(p,currRing); 2483 2462 2484 i++; 2463 assume(idx>=0);2464 //Print("idx:%d\n",idx);2465 row[idx]=p_GetCoeff(p,currRing);2466 2485 pIter(p); 2467 }*/ 2486 } 2487 if (i!=dn->value_len){ 2488 Print("F4 calc wrong, as poly len was wrong\n"); 2489 } 2490 assume(i==dn->value_len); 2491 #endif 2468 2492 2469 //p_Delete(&dn->value_poly,currRing);2470 2493 } 2471 2494 } … … 2480 2503 row[ref->term_index]=npAdd(row[ref->term_index],coef); 2481 2504 } else { 2505 #ifndef NORO_SPARSE_ROWS_PRE 2482 2506 DenseRow* ref_row=ref->row; 2483 2507 if (ref_row==NULL) continue; … … 2504 2528 2505 2529 } 2530 2531 #else 2532 SparseRow* ref_row=ref->row; 2533 if (ref_row==NULL) continue; 2534 int n=ref_row->len; 2535 int j; 2536 int* idx_array=ref_row->idx_array; 2537 number* coef_array=ref_row->coef_array; 2538 for(j=0;j<n;j++){ 2539 int idx=idx_array[j]; 2540 number ref_coef=coef_array[j]; 2541 row[idx]=npAdd(row[idx],npMult(coef,ref_coef)); 2542 } 2543 #endif 2506 2544 } 2507 2545
Note: See TracChangeset
for help on using the changeset viewer.