Changeset 33d8725 in git


Ignore:
Timestamp:
Feb 11, 2005, 2:24:27 PM (18 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a657104b677b4c461d018cbf3204d72d34ad66a9')
Children:
0a4188dd88839f6601a6b25643c0ce7353d0b909
Parents:
a4f5ce528f6265f42ae27cf6284dedb95f91544e
Message:
*hannes: NTL/GCD


git-svn-id: file:///usr/local/Singular/svn/trunk@7719 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
factory
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • factory/cf_gcd.cc

    ra4f5ce r33d8725  
    11/* emacs edit mode for this file is -*- C++ -*- */
    2 /* $Id: cf_gcd.cc,v 1.28 2005-02-03 14:05:55 Singular Exp $ */
     2/* $Id: cf_gcd.cc,v 1.29 2005-02-11 13:22:44 Singular Exp $ */
    33
    44#include <config.h>
     
    198198    if ( getCharacteristic() > 0 )
    199199    {
     200      //CanonicalForm cf=F.lc();
     201      //CanonicalForm f=F / cf;
     202      //CanonicalForm cg=G.lc();
     203      //CanonicalForm g= G / cg;
    200204      zz_pContext ccc(getCharacteristic());
    201205      ccc.restore();
     
    204208      zz_pX G1=convertFacCF2NTLzzpX(G);
    205209      zz_pX R=GCD(F1,G1);
    206       return convertNTLzzpX2CF(R,F.mvar());
     210      return  convertNTLzzpX2CF(R,F.mvar());
    207211    }
    208212    else
    209213    {
    210       ZZX F1=convertFacCF2NTLZZX(F);
    211       ZZX G1=convertFacCF2NTLZZX(G);
     214      CanonicalForm f=F ;
     215      CanonicalForm g=G ;
     216      bool rat=isOn( SW_RATIONAL );
     217      if ( isOn( SW_RATIONAL ) )
     218      {
     219         DEBOUTLN( cerr, "NTL_gcd: ..." );
     220         CanonicalForm cdF = bCommonDen( F );
     221         CanonicalForm cdG = bCommonDen( G );
     222         Off( SW_RATIONAL );
     223         CanonicalForm l = lcm( cdF, cdG );
     224         On( SW_RATIONAL );
     225         f *= l, g *= l;
     226      }
     227      DEBOUTLN( cerr, "NTL_gcd: f=" << f );
     228      DEBOUTLN( cerr, "NTL_gcd: g=" << g );
     229      ZZX F1=convertFacCF2NTLZZX(f);
     230      ZZX G1=convertFacCF2NTLZZX(g);
    212231      ZZX R=GCD(F1,G1);
    213       return convertNTLZZX2CF(R,F.mvar());
     232      CanonicalForm r=convertNTLZZX2CF(R,F.mvar());
     233      DEBOUTLN( cerr, "NTL_gcd: -> " << r );
     234      if (rat)
     235      {
     236        r /= r.lc();
     237        DEBOUTLN( cerr, "NTL_gcd2: -> " << r );
     238      }
     239      return r;
    214240    }
    215241  }
     
    316342    if ( pi.isUnivariate() && pi1.isUnivariate() )
    317343    {
    318       if ( modularflag
    319344#ifdef HAVE_NTL
    320       || (isOn(SW_USE_NTL_GCD) && isPurePoly(pi) && isPurePoly(pi1))
     345      if (isOn(SW_USE_NTL_GCD) && isPurePoly(pi) && isPurePoly(pi1))
     346         return gcd_poly_univar0(f, g, true);
    321347#endif
    322       )
     348      if ( modularflag)
    323349        return gcd_poly_univar0( pi, pi1, true ) * C;
    324350    }
  • factory/fac_ezgcd.cc

    ra4f5ce r33d8725  
    11/* emacs edit mode for this file is -*- C++ -*- */
    2 /* $Id: fac_ezgcd.cc,v 1.17 2005-02-03 14:05:55 Singular Exp $ */
     2/* $Id: fac_ezgcd.cc,v 1.18 2005-02-11 13:24:27 Singular Exp $ */
    33
    44#include <config.h>
     
    123123            CanonicalForm xxx;
    124124            //if ( gcd( (DD[1] = Fb / Db), Db ) == 1 ) {
    125             xxx= gcd( (DD[1] = Fb / Db), Db );
     125            DD[1] = Fb / Db;
     126            xxx= gcd( DD[1], Db );
     127            DEBOUTLN( cerr, "gcd((Fb/Db),Db) = " << xxx );
     128            DEBOUTLN( cerr, "Fb/Db = " << DD[1] );
     129            DEBOUTLN( cerr, "Db = " << Db );
    126130            if (xxx.inCoeffDomain()) {
    127131                B = F;
     
    132136            }
    133137            //else  if ( gcd( (DD[1] = Gb / Db), Db ) == 1 ) {
    134             else {
    135             xxx=gcd( (DD[1] = Gb / Db), Db );
    136             if (xxx.inCoeffDomain()) {
     138            else
     139            {
     140              DD[1] = Gb / Db;
     141              xxx=gcd( DD[1], Db );
     142              DEBOUTLN( cerr, "gcd((Gb/Db),Db) = " << xxx );
     143              DEBOUTLN( cerr, "Gb/Db = " << DD[1] );
     144              DEBOUTLN( cerr, "Db = " << Db );
     145              if (xxx.inCoeffDomain())
     146              {
    137147                B = G;
    138148                DD[2] = Db;
     
    140150                lcDD[2] = lcG;
    141151                B *= lcG;
    142             }
    143             else {
     152              }
     153              else
     154              {
    144155#ifdef DEBUGOUTPUT
    145156                CanonicalForm dummyres = d * ezgcd_specialcase( F, G, b, bound );
     
    149160                return d * ezgcd_specialcase( F, G, b, bound );
    150161#endif
    151             }
     162              }
    152163            }
    153164            /// ---> A7
     
    179190            /// ---> A8 (gcdfound)
    180191        }
     192        delta++;
    181193    }
    182194    /// ---> A9
     
    209221    }
    210222#if 1
    211     extern CanonicalForm
    212 gcd_poly1( const CanonicalForm & f, const CanonicalForm & g, bool modularflag );
    213 
    214     return gcd_poly1( F, G, getCharacteristic()==0 );
     223    Off(SW_USE_EZGCD);
     224    //bool ntl=isOn(SW_USE_NTL_GCD);
     225    //Off(SW_USE_NTL_GCD);
     226    d=gcd( F, G );
     227    //if (ntl) On(SW_USE_NTL_GCD);
     228    On(SW_USE_EZGCD);
     229    return d;
    215230#else
    216231
Note: See TracChangeset for help on using the changeset viewer.