Changeset 6918d65 in git for factory/cf_algorithm.cc


Ignore:
Timestamp:
May 16, 2008, 3:10:43 PM (16 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
ef20c7f187d2cee703db198bb13baadf2e349296
Parents:
f0aec5f202b35e6e5b438f20d75f4b4259253ecd
Message:
*hannes: format


git-svn-id: file:///usr/local/Singular/svn/trunk@10719 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/cf_algorithm.cc

    rf0aec5 r6918d65  
    11/* emacs edit mode for this file is -*- C++ -*- */
    2 /* $Id: cf_algorithm.cc,v 1.11 2006-05-16 13:43:18 Singular Exp $ */
     2/* $Id: cf_algorithm.cc,v 1.12 2008-05-16 13:10:14 Singular Exp $ */
    33
    44//{{{ docu
     
    8686psr ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x )
    8787{
    88    
     88
    8989    ASSERT( x.level() > 0, "type error: polynomial variable expected" );
    9090    ASSERT( ! g.isZero(), "math error: division by zero" );
     
    101101    int gDegree = degree( G, X );
    102102    if ( fDegree < 0 || fDegree < gDegree )
    103         return f;
     103        return f;
    104104    else {
    105         CanonicalForm xresult = (power( LC( G, X ), fDegree-gDegree+1 ) * F) ;
    106         CanonicalForm result = xresult -(xresult/G)*G;
    107         return swapvar( result, x, X );
     105        CanonicalForm xresult = (power( LC( G, X ), fDegree-gDegree+1 ) * F) ;
     106        CanonicalForm result = xresult -(xresult/G)*G;
     107        return swapvar( result, x, X );
    108108    }
    109109}
     
    174174    int gDegree = degree( G, X );
    175175    if ( fDegree < 0 || fDegree < gDegree )
    176         return 0;
     176        return 0;
    177177    else {
    178         CanonicalForm result = (power( LC( G, X ), fDegree-gDegree+1 ) * F) / G;
    179         return swapvar( result, x, X );
     178        CanonicalForm result = (power( LC( G, X ), fDegree-gDegree+1 ) * F) / G;
     179        return swapvar( result, x, X );
    180180    }
    181181}
     
    224224    int gDegree = degree( G, X );
    225225    if ( fDegree < 0 || fDegree < gDegree ) {
    226         q = 0; r = f;
     226        q = 0; r = f;
    227227    } else {
    228         divrem( power( LC( G, X ), fDegree-gDegree+1 ) * F, G, q, r );
    229         q = swapvar( q, x, X );
    230         r = swapvar( r, x, X );
     228        divrem( power( LC( G, X ), fDegree-gDegree+1 ) * F, G, q, r );
     229        q = swapvar( q, x, X );
     230        r = swapvar( r, x, X );
    231231    }
    232232}
     
    251251{
    252252    if ( f.inBaseDomain() )
    253         return f.den();
     253        return f.den();
    254254    else {
    255         CanonicalForm result = 1;
    256         for ( CFIterator i = f; i.hasTerms(); i++ )
    257             result = blcm( result, internalBCommonDen( i.coeff() ) );
    258         return result;
     255        CanonicalForm result = 1;
     256        for ( CFIterator i = f; i.hasTerms(); i++ )
     257            result = blcm( result, internalBCommonDen( i.coeff() ) );
     258        return result;
    259259    }
    260260}
     
    283283{
    284284    if ( getCharacteristic() == 0 && isOn( SW_RATIONAL ) ) {
    285         // otherwise `bgcd()' returns one
    286         Off( SW_RATIONAL );
    287         CanonicalForm result = internalBCommonDen( f );
    288         On( SW_RATIONAL );
    289         return result;
     285        // otherwise `bgcd()' returns one
     286        Off( SW_RATIONAL );
     287        CanonicalForm result = internalBCommonDen( f );
     288        On( SW_RATIONAL );
     289        return result;
    290290    } else
    291         return CanonicalForm( 1 );
     291        return CanonicalForm( 1 );
    292292}
    293293//}}}
     
    330330    // trivial cases
    331331    if ( g.isZero() )
    332         return true;
     332        return true;
    333333    else if ( f.isZero() )
    334         return false;
     334        return false;
    335335
    336336    if ( (f.inCoeffDomain() || g.inCoeffDomain())
    337         && ((getCharacteristic() == 0 && isOn( SW_RATIONAL ))
    338              || (getCharacteristic() > 0 && CFFactory::gettype() != PrimePowerDomain)) )
    339         // if we are in a field all elements not equal to zero are units
    340         if ( f.inCoeffDomain() )
    341             return true;
    342         else
    343             // g.inCoeffDomain()
    344             return false;
     337        && ((getCharacteristic() == 0 && isOn( SW_RATIONAL ))
     338             || (getCharacteristic() > 0 && CFFactory::gettype() != PrimePowerDomain)) )
     339        // if we are in a field all elements not equal to zero are units
     340        if ( f.inCoeffDomain() )
     341            return true;
     342        else
     343            // g.inCoeffDomain()
     344            return false;
    345345
    346346    // we may assume now that both levels either equal LEVELBASE
     
    349349    int gLevel = g.level();
    350350    if ( gLevel > 0 && fLevel == gLevel )
    351         // f and g are polynomials in the same main variable
    352         if ( degree( f ) <= degree( g )
    353              && fdivides( f.tailcoeff(), g.tailcoeff() )
    354              && fdivides( f.LC(), g.LC() ) ) {
    355             CanonicalForm q, r;
    356             return divremt( g, f, q, r ) && r.isZero();
    357         }
    358         else
    359             return false;
     351        // f and g are polynomials in the same main variable
     352        if ( degree( f ) <= degree( g )
     353             && fdivides( f.tailcoeff(), g.tailcoeff() )
     354             && fdivides( f.LC(), g.LC() ) ) {
     355            CanonicalForm q, r;
     356            return divremt( g, f, q, r ) && r.isZero();
     357        }
     358        else
     359            return false;
    360360    else if ( gLevel < fLevel )
    361         // g is a coefficient w.r.t. f
    362         return false;
     361        // g is a coefficient w.r.t. f
     362        return false;
    363363    else {
    364         // either f is a coefficient w.r.t. polynomial g or both
    365         // f and g are from a base domain (should be Z or Z/p^n,
    366         // then)
    367         CanonicalForm q, r;
    368         return divremt( g, f, q, r ) && r.isZero();
     364        // either f is a coefficient w.r.t. polynomial g or both
     365        // f and g are from a base domain (should be Z or Z/p^n,
     366        // then)
     367        CanonicalForm q, r;
     368        return divremt( g, f, q, r ) && r.isZero();
    369369    }
    370370}
     
    391391{
    392392    if ( f.inBaseDomain() )
    393         return abs( f );
     393        return abs( f );
    394394    else {
    395         CanonicalForm result = 0;
    396         for ( CFIterator i = f; i.hasTerms(); i++ ) {
    397             CanonicalForm coeffMaxNorm = maxNorm( i.coeff() );
    398             if ( coeffMaxNorm > result )
    399                 result = coeffMaxNorm;
    400         }
    401         return result;
     395        CanonicalForm result = 0;
     396        for ( CFIterator i = f; i.hasTerms(); i++ ) {
     397            CanonicalForm coeffMaxNorm = maxNorm( i.coeff() );
     398            if ( coeffMaxNorm > result )
     399                result = coeffMaxNorm;
     400        }
     401        return result;
    402402    }
    403403}
     
    421421{
    422422    ASSERT( (f.inBaseDomain() || f.isUnivariate()) && f.LC().inZ(),
    423             "type error: univariate poly over Z expected" );
     423            "type error: univariate poly over Z expected" );
    424424
    425425    CanonicalForm result = 0;
    426426    for ( CFIterator i = f; i.hasTerms(); i++ ) {
    427         CanonicalForm coeff = i.coeff();
    428         result += coeff*coeff;
     427        CanonicalForm coeff = i.coeff();
     428        result += coeff*coeff;
    429429    }
    430430    return sqrt( result );
Note: See TracChangeset for help on using the changeset viewer.