Ignore:
Timestamp:
Mar 5, 2013, 4:43:58 PM (10 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '1d362c315e551a5b527ab0759f8839cf0e94f3a5')
Children:
803cb2d20d4037b513adf020767d48f6893fc9a2
Parents:
161e20729b9213f0aaa51ebeacdbd63260916ff6
Message:
fix: normalization for trans. ext.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpolys/polys/monomials/p_polys.cc

    r161e20 re5c9e5  
    20612061    assume( pNext(ph) != NULL );
    20622062#if CLEARENUMERATORS
    2063     if( nCoeff_is_Q(r->cf) || nCoeff_is_Q_a(r->cf) )
     2063    if( nCoeff_is_Q(r->cf) )
    20642064    {
    20652065      // experimentall (recursive enumerator treatment) of alg. Ext!
     
    21112111        //  StringSetS("** div0:");nWrite(pGetCoeff(p));StringAppendS("/");
    21122112        //  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);
    21142114        //}
    21152115        //nDelete(&tmp);
     
    24242424        //  StringSetS("** div0:");nWrite(pGetCoeff(p));StringAppendS("/");
    24252425        //  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);
    24272427        //}
    24282428        //nDelete(&tmp);
     
    24452445/* ---------------------------------------------------------------------------*/
    24462446/* cleardenom suff                                                           */
    2447 poly p_Cleardenom(poly ph, const ring r)
    2448 {
    2449   if( ph == NULL )
     2447poly p_Cleardenom(poly p, const ring r)
     2448{
     2449  if( p == NULL )
    24502450    return NULL;
    24512451
     
    24552455  if( 0 )
    24562456  {
    2457     CPolyCoeffsEnumerator itr(ph);
     2457    CPolyCoeffsEnumerator itr(p);
    24582458
    24592459    n_ClearDenominators(itr, C);
     
    24612461    n_ClearContent(itr, C); // divide out the content
    24622462
    2463     p_Test(ph, r); n_Test(pGetCoeff(ph), C);
    2464     assume(n_GreaterZero(pGetCoeff(ph), C)); // ??
    2465 //    if(!n_GreaterZero(pGetCoeff(ph),C)) ph = p_Neg(ph,r);
    2466 
    2467     return ph;
    2468   }
    2469 #endif
    2470 
    2471   poly start=ph;
     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;
    24722472
    24732473  number d, h;
    2474   poly p;
    24752474
    24762475#ifdef HAVE_RINGS
    24772476  if (rField_is_Ring(r))
    24782477  {
    2479     p_Content(ph,r);
    2480     assume( n_GreaterZero(pGetCoeff(ph),C) );
    2481     if(!n_GreaterZero(pGetCoeff(ph),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);
    24822481    return start;
    24832482  }
     
    24862485  if (rField_is_Zp(r) && TEST_OPT_INTSTRATEGY)
    24872486  {
    2488     if(!n_GreaterZero(pGetCoeff(ph),C)) ph = p_Neg(ph,r);
     2487    if(!n_GreaterZero(pGetCoeff(p),C)) p = p_Neg(p,r);
    24892488    return start;
    24902489  }
    2491   p = ph;
    24922490
    24932491  assume(p != NULL);
     
    25112509      p_SetCoeff(p,n_Init(1,r->cf),r);
    25122510
    2513     assume( n_GreaterZero(pGetCoeff(ph),C) );
    2514     if(!n_GreaterZero(pGetCoeff(ph),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);
    25152513
    25162514    return start;
     
    25212519#if 0 && CLEARENUMERATORS
    25222520//CF: does not seem to work that well..
    2523  
     2521
    25242522  if( nCoeff_is_Q(C) || nCoeff_is_Q_a(C) )
    25252523  {
    2526     CPolyCoeffsEnumerator itr(ph);
     2524    CPolyCoeffsEnumerator itr(p);
    25272525
    25282526    n_ClearDenominators(itr, C);
     
    25302528    n_ClearContent(itr, C); // divide out the content
    25312529
    2532     p_Test(ph, r); n_Test(pGetCoeff(ph), C);
    2533     assume(n_GreaterZero(pGetCoeff(ph), C)); // ??
    2534 //    if(!n_GreaterZero(pGetCoeff(ph),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);
    25352533
    25362534    return start;
     
    25522550    if(!n_IsOne(h,r->cf))
    25532551    {
    2554       p = ph;
     2552      p = start;
    25552553      while (p!=NULL)
    25562554      {
     
    25722570      }
    25732571      n_Delete(&h,r->cf);
    2574       if (n_GetChar(r->cf)==1)
    2575       {
    2576         loop
    2577         {
    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           else
    2612           {
    2613             n_Delete(&h,r->cf);
    2614             break;
    2615           }
    2616         }
    2617       }
    26182572    }
    26192573    if (h!=NULL) n_Delete(&h,r->cf);
    2620 
    2621     p_Content(ph,r);
     2574    p=start;
     2575
     2576    p_Content(p,r);
    26222577#ifdef HAVE_RATGRING
    26232578    if (rIsRatGRing(r))
    26242579    {
    26252580      /* quick unit detection in the rational case is done in gr_nc_bba */
    2626       pContentRat(ph);
    2627       start=ph;
    2628     }
    2629 #endif
    2630   }
    2631 
    2632   assume( n_GreaterZero(pGetCoeff(ph),C) );
    2633   if(!n_GreaterZero(pGetCoeff(ph),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);
    26342589
    26352590  return start;
     
    28442799    assume( n_GreaterZero(pGetCoeff(ph),C) );
    28452800    if(!n_GreaterZero(pGetCoeff(ph),C)) ph = p_Neg(ph,r);
    2846     return; 
     2801    return;
    28472802  }
    28482803  p = ph;
Note: See TracChangeset for help on using the changeset viewer.