Changeset e5c9e5 in git
- Timestamp:
- Mar 5, 2013, 4:43:58 PM (11 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 803cb2d20d4037b513adf020767d48f6893fc9a2
- Parents:
- 161e20729b9213f0aaa51ebeacdbd63260916ff6
- Location:
- libpolys/polys
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/polys/ext_fields/transext.cc
r161e20 re5c9e5 152 152 assume( _p_Test(den, ntRing,1) ); 153 153 154 if(p_IsConstant(den, ntRing) && (n_IsOne(pGetCoeff(den), nt Ring->cf)))154 if(p_IsConstant(den, ntRing) && (n_IsOne(pGetCoeff(den), ntCoeffs))) 155 155 { 156 156 Print("?/1 in %s:%d\n",f,l); … … 158 158 } 159 159 160 if( !n_GreaterZero(pGetCoeff(den), nt Ring->cf) )160 if( !n_GreaterZero(pGetCoeff(den), ntCoeffs) ) 161 161 { 162 162 Print("negative sign of DEN. of a fraction in %s:%d\n",f,l); … … 300 300 301 301 302 n_ClearDenominators(itr, g, nt Ring->cf);303 304 if( !n_GreaterZero(g, nt Ring->cf) )302 n_ClearDenominators(itr, g, ntCoeffs); 303 304 if( !n_GreaterZero(g, ntCoeffs) ) 305 305 { 306 306 NUM (f) = p_Neg(NUM (f), ntRing); // Ugly :((( 307 g = n_Neg(g, nt Ring->cf);307 g = n_Neg(g, ntCoeffs); 308 308 } 309 309 310 310 // g should be a positive integer now! 311 assume( n_GreaterZero(g, nt Ring->cf) );312 313 if( !n_IsOne(g, nt Ring->cf) )311 assume( n_GreaterZero(g, ntCoeffs) ); 312 313 if( !n_IsOne(g, ntCoeffs) ) 314 314 { 315 315 DEN (f) = p_NSet(g, ntRing); // update COM(f)??? … … 318 318 } 319 319 else 320 n_Delete(&g, nt Ring->cf);320 n_Delete(&g, ntCoeffs); 321 321 322 322 ntTest(a); … … 386 386 CPolyCoeffsEnumerator itr(NUM(f)); 387 387 388 n_ClearDenominators(itr, g, nt Ring->cf); // may return -1 :(((389 390 if( !n_GreaterZero(g, nt Ring->cf) )388 n_ClearDenominators(itr, g, ntCoeffs); // may return -1 :((( 389 390 if( !n_GreaterZero(g, ntCoeffs) ) 391 391 { 392 392 // NUM (f) = p_Neg(NUM (f), ntRing); // Ugly :((( 393 // g = n_Neg(g, nt Ring->cf);393 // g = n_Neg(g, ntCoeffs); 394 394 NUM (f) = p_Neg(NUM (f), ntRing); // Ugly :((( 395 g = n_Neg(g, nt Ring->cf);395 g = n_Neg(g, ntCoeffs); 396 396 } 397 397 398 398 // g should be a positive integer now! 399 assume( n_GreaterZero(g, nt Ring->cf) );400 401 if( !n_IsOne(g, nt Ring->cf) )402 { 403 assume( n_GreaterZero(g, nt Ring->cf) );404 assume( !n_IsOne(g, nt Ring->cf) );399 assume( n_GreaterZero(g, ntCoeffs) ); 400 401 if( !n_IsOne(g, ntCoeffs) ) 402 { 403 assume( n_GreaterZero(g, ntCoeffs) ); 404 assume( !n_IsOne(g, ntCoeffs) ); 405 405 406 406 DEN (f) = p_NSet(g, ntRing); // update COM(f)??? … … 413 413 { // common denom == 1? 414 414 NUM (result)= p_NSet(g, ntRing); // p_Copy (DEN (f), ntRing); 415 // n_Delete(&g, nt Ring->cf);415 // n_Delete(&g, ntCoeffs); 416 416 } 417 417 … … 419 419 // else 420 420 // g= p_GetAllDenom (num, ntRing); 421 // result= (fraction) ntSetMap (nt Ring->cf, cf) (g, ntRing->cf, cf);421 // result= (fraction) ntSetMap (ntCoeffs, cf) (g, ntCoeffs, cf); 422 422 423 423 ntTest((number)result); … … 533 533 if (p == NULL) return NULL; 534 534 535 fraction f = (fraction)omAlloc0Bin(fractionObjectBin); 536 537 if (nCoeff_is_Q(ntCoeffs)) 538 { 535 539 number g; 536 540 // TODO/NOTE: the following should not be necessary (due to 537 541 // Hannes!) as NUM (f) should be over Z!!! 542 // but it is not: normalize it 538 543 CPolyCoeffsEnumerator itr(p); 539 544 540 n_ClearDenominators(itr, g, nt Ring->cf);541 542 if( !n_GreaterZero(g, nt Ring->cf) )543 { 544 p = p_Neg(p, ntRing); // Ugly :(((545 g = n_Neg(g, nt Ring->cf);545 n_ClearDenominators(itr, g, ntCoeffs); 546 547 if( !n_GreaterZero(g, ntCoeffs) ) 548 { 549 p = p_Neg(p, ntRing); 550 g = n_Neg(g, ntCoeffs); 546 551 } 547 552 548 553 // g should be a positive integer now! 549 assume( n_GreaterZero(g, ntRing->cf) ); 550 551 fraction f = (fraction)omAlloc0Bin(fractionObjectBin); 552 553 if( !n_IsOne(g, ntRing->cf) ) 554 assume( n_GreaterZero(g, ntCoeffs) ); 555 556 if( !n_IsOne(g, ntCoeffs) ) 554 557 { 555 558 DEN (f) = p_NSet(g, ntRing); 556 // COM (f) ++; // update COM(f)???557 559 assume( DEN (f) != NULL ); 558 560 } 559 561 else 560 562 { 561 DEN(f) = NULL; 562 n_Delete(&g, ntRing->cf); 563 } 564 565 NUM(f) = p; 566 COM(f) = 0; 567 568 ntTest((number)f); 569 return (number)f; 563 //DEN(f) = NULL; // done by omAlloc0 564 n_Delete(&g, ntCoeffs); 565 } 566 } 567 568 NUM(f) = p; 569 COM(f) = 0; 570 571 ntTest((number)f); 572 return (number)f; 570 573 } 571 574 … … 633 636 number aa; 634 637 number bb; 635 if (bDenCoeff==NULL) aa=n_Copy(aNumCoeff,nt Ring->cf);636 else aa=n_Mult(aNumCoeff,bDenCoeff,nt Ring->cf);637 if (aDenCoeff==NULL) bb=n_Copy(bNumCoeff,nt Ring->cf);638 else bb=n_Mult(bNumCoeff,aDenCoeff,nt Ring->cf);638 if (bDenCoeff==NULL) aa=n_Copy(aNumCoeff,ntCoeffs); 639 else aa=n_Mult(aNumCoeff,bDenCoeff,ntCoeffs); 640 if (aDenCoeff==NULL) bb=n_Copy(bNumCoeff,ntCoeffs); 641 else bb=n_Mult(bNumCoeff,aDenCoeff,ntCoeffs); 639 642 BOOLEAN rr= n_Greater(aa, bb, ntCoeffs); 640 n_Delete(&aa,nt Ring->cf);641 n_Delete(&bb,nt Ring->cf);643 n_Delete(&aa,ntCoeffs); 644 n_Delete(&bb,ntCoeffs); 642 645 return rr; 643 646 } … … 849 852 fraction result = (fraction)omAlloc0Bin(fractionObjectBin); 850 853 NUM(result) = g; 851 if (!n_GreaterZero(pGetCoeff(f),nt Ring->cf))854 if (!n_GreaterZero(pGetCoeff(f),ntCoeffs)) 852 855 { 853 856 g=p_Neg(g,ntRing); … … 855 858 NUM(result) = g; 856 859 } 857 if (!p_IsConstant(f,ntRing) || !n_IsOne(pGetCoeff(f),nt Ring->cf))860 if (!p_IsConstant(f,ntRing) || !n_IsOne(pGetCoeff(f),ntCoeffs)) 858 861 { 859 862 DEN(result) = f; … … 1282 1285 definiteGcdCancellation(a, cf, FALSE); 1283 1286 if ((DEN(a)!=NULL) 1284 &&(!n_GreaterZero(pGetCoeff(DEN(a)),nt Ring->cf)))1287 &&(!n_GreaterZero(pGetCoeff(DEN(a)),ntCoeffs))) 1285 1288 { 1286 1289 NUM(a)=p_Neg(NUM(a),ntRing); … … 1450 1453 { 1451 1454 poly num_f=NUM(f); 1452 BOOLEAN neg= !n_GreaterZero(pGetCoeff(num_f),nt Ring->cf);1455 BOOLEAN neg= !n_GreaterZero(pGetCoeff(num_f),ntCoeffs); 1453 1456 if (neg) 1454 1457 { -
libpolys/polys/monomials/p_polys.cc
r161e20 re5c9e5 2061 2061 assume( pNext(ph) != NULL ); 2062 2062 #if CLEARENUMERATORS 2063 if( nCoeff_is_Q(r->cf) || nCoeff_is_Q_a(r->cf))2063 if( nCoeff_is_Q(r->cf) ) 2064 2064 { 2065 2065 // experimentall (recursive enumerator treatment) of alg. Ext! … … 2111 2111 // StringSetS("** div0:");nWrite(pGetCoeff(p));StringAppendS("/"); 2112 2112 // nWrite(h);StringAppendS("=");nWrite(d);StringAppendS(" int:"); 2113 // nWrite(tmp);Print(StringEndS("\n")); // NOTE/TODO: use StringAppendS("\n"); omFree(s); 2113 // nWrite(tmp);Print(StringEndS("\n")); // NOTE/TODO: use StringAppendS("\n"); omFree(s); 2114 2114 //} 2115 2115 //nDelete(&tmp); … … 2424 2424 // StringSetS("** div0:");nWrite(pGetCoeff(p));StringAppendS("/"); 2425 2425 // nWrite(h);StringAppendS("=");nWrite(d);StringAppendS(" int:"); 2426 // nWrite(tmp);Print(StringEndS("\n")); // NOTE/TODO: use StringAppendS("\n"); omFree(s); 2426 // nWrite(tmp);Print(StringEndS("\n")); // NOTE/TODO: use StringAppendS("\n"); omFree(s); 2427 2427 //} 2428 2428 //nDelete(&tmp); … … 2445 2445 /* ---------------------------------------------------------------------------*/ 2446 2446 /* cleardenom suff */ 2447 poly p_Cleardenom(poly p h, const ring r)2448 { 2449 if( p h== NULL )2447 poly p_Cleardenom(poly p, const ring r) 2448 { 2449 if( p == NULL ) 2450 2450 return NULL; 2451 2451 … … 2455 2455 if( 0 ) 2456 2456 { 2457 CPolyCoeffsEnumerator itr(p h);2457 CPolyCoeffsEnumerator itr(p); 2458 2458 2459 2459 n_ClearDenominators(itr, C); … … 2461 2461 n_ClearContent(itr, C); // divide out the content 2462 2462 2463 p_Test(p h, r); n_Test(pGetCoeff(ph), C);2464 assume(n_GreaterZero(pGetCoeff(p h), C)); // ??2465 // if(!n_GreaterZero(pGetCoeff(p h),C)) ph = p_Neg(ph,r);2466 2467 return p h;2468 } 2469 #endif 2470 2471 poly start=p h;2463 p_Test(p, r); n_Test(pGetCoeff(p), C); 2464 assume(n_GreaterZero(pGetCoeff(p), C)); // ?? 2465 // if(!n_GreaterZero(pGetCoeff(p),C)) p = p_Neg(p,r); 2466 2467 return p; 2468 } 2469 #endif 2470 2471 poly start=p; 2472 2472 2473 2473 number d, h; 2474 poly p;2475 2474 2476 2475 #ifdef HAVE_RINGS 2477 2476 if (rField_is_Ring(r)) 2478 2477 { 2479 p_Content(p h,r);2480 assume( n_GreaterZero(pGetCoeff(p h),C) );2481 if(!n_GreaterZero(pGetCoeff(p h),C)) ph = p_Neg(ph,r);2478 p_Content(p,r); 2479 assume( n_GreaterZero(pGetCoeff(p),C) ); 2480 if(!n_GreaterZero(pGetCoeff(p),C)) p = p_Neg(p,r); 2482 2481 return start; 2483 2482 } … … 2486 2485 if (rField_is_Zp(r) && TEST_OPT_INTSTRATEGY) 2487 2486 { 2488 if(!n_GreaterZero(pGetCoeff(p h),C)) ph = p_Neg(ph,r);2487 if(!n_GreaterZero(pGetCoeff(p),C)) p = p_Neg(p,r); 2489 2488 return start; 2490 2489 } 2491 p = ph;2492 2490 2493 2491 assume(p != NULL); … … 2511 2509 p_SetCoeff(p,n_Init(1,r->cf),r); 2512 2510 2513 assume( n_GreaterZero(pGetCoeff(p h),C) );2514 if(!n_GreaterZero(pGetCoeff(p h),C)) ph = p_Neg(ph,r);2511 assume( n_GreaterZero(pGetCoeff(p),C) ); 2512 if(!n_GreaterZero(pGetCoeff(p),C)) p = p_Neg(p,r); 2515 2513 2516 2514 return start; … … 2521 2519 #if 0 && CLEARENUMERATORS 2522 2520 //CF: does not seem to work that well.. 2523 2521 2524 2522 if( nCoeff_is_Q(C) || nCoeff_is_Q_a(C) ) 2525 2523 { 2526 CPolyCoeffsEnumerator itr(p h);2524 CPolyCoeffsEnumerator itr(p); 2527 2525 2528 2526 n_ClearDenominators(itr, C); … … 2530 2528 n_ClearContent(itr, C); // divide out the content 2531 2529 2532 p_Test(p h, r); n_Test(pGetCoeff(ph), C);2533 assume(n_GreaterZero(pGetCoeff(p h), C)); // ??2534 // if(!n_GreaterZero(pGetCoeff(p h),C)) ph = p_Neg(ph,r);2530 p_Test(p, r); n_Test(pGetCoeff(p), C); 2531 assume(n_GreaterZero(pGetCoeff(p), C)); // ?? 2532 // if(!n_GreaterZero(pGetCoeff(p),C)) p = p_Neg(p,r); 2535 2533 2536 2534 return start; … … 2552 2550 if(!n_IsOne(h,r->cf)) 2553 2551 { 2554 p = ph;2552 p = start; 2555 2553 while (p!=NULL) 2556 2554 { … … 2572 2570 } 2573 2571 n_Delete(&h,r->cf); 2574 if (n_GetChar(r->cf)==1)2575 {2576 loop2577 {2578 h = n_Init(1,r->cf);2579 p=ph;2580 while (p!=NULL)2581 {2582 d=n_Lcm(h,pGetCoeff(p),r->cf);2583 n_Delete(&h,r->cf);2584 h=d;2585 pIter(p);2586 }2587 /* contains the 1/lcm of all denominators */2588 if(!n_IsOne(h,r->cf))2589 {2590 p = ph;2591 while (p!=NULL)2592 {2593 /* should be:2594 * number hh;2595 * nGetDenom(p->coef,&hh);2596 * nMult(&h,&hh,&d);2597 * nNormalize(d);2598 * nDelete(&hh);2599 * nMult(d,p->coef,&hh);2600 * nDelete(&d);2601 * nDelete(&(p->coef));2602 * p->coef =hh;2603 */2604 d=n_Mult(h,pGetCoeff(p),r->cf);2605 n_Normalize(d,r->cf);2606 p_SetCoeff(p,d,r);2607 pIter(p);2608 }2609 n_Delete(&h,r->cf);2610 }2611 else2612 {2613 n_Delete(&h,r->cf);2614 break;2615 }2616 }2617 }2618 2572 } 2619 2573 if (h!=NULL) n_Delete(&h,r->cf); 2620 2621 p_Content(ph,r); 2574 p=start; 2575 2576 p_Content(p,r); 2622 2577 #ifdef HAVE_RATGRING 2623 2578 if (rIsRatGRing(r)) 2624 2579 { 2625 2580 /* quick unit detection in the rational case is done in gr_nc_bba */ 2626 pContentRat(p h);2627 start=p h;2628 } 2629 #endif 2630 } 2631 2632 assume( n_GreaterZero(pGetCoeff(p h),C) );2633 if(!n_GreaterZero(pGetCoeff(p h),C)) ph = p_Neg(ph,r);2581 pContentRat(p); 2582 start=p; 2583 } 2584 #endif 2585 } 2586 2587 assume( n_GreaterZero(pGetCoeff(p),C) ); 2588 if(!n_GreaterZero(pGetCoeff(p),C)) p = p_Neg(p,r); 2634 2589 2635 2590 return start; … … 2844 2799 assume( n_GreaterZero(pGetCoeff(ph),C) ); 2845 2800 if(!n_GreaterZero(pGetCoeff(ph),C)) ph = p_Neg(ph,r); 2846 return; 2801 return; 2847 2802 } 2848 2803 p = ph;
Note: See TracChangeset
for help on using the changeset viewer.