Changeset 77f483 in git


Ignore:
Timestamp:
Jun 28, 2005, 4:39:52 PM (18 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '828514cf6e480e4bafc26df99217bf2a1ed1ef45')
Children:
fea91578e32b53237ec9712c2af66d889a3b6241
Parents:
3781a22b49bf6807b4bfa152e670e186f67e6e1a
Message:
*hannes: fixed rational coeffs in factorize


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

Legend:

Unmodified
Added
Removed
  • factory/canonicalform.cc

    r3781a2 r77f483  
    11/* emacs edit mode for this file is -*- C++ -*- */
    2 /* $Id: canonicalform.cc,v 1.33 2003-10-15 17:19:39 Singular Exp $ */
     2/* $Id: canonicalform.cc,v 1.34 2005-06-28 14:39:52 Singular Exp $ */
    33
    44#include <config.h>
     
    15451545    if ( f.isZero() || g.isZero() )
    15461546        return CanonicalForm( 0 );
     1547/*
     1548    else if (f.isOne())
     1549        return g;
     1550    else if (g.isOne())
     1551        return f;
     1552*/
    15471553    else
    15481554        return (f / bgcd( f, g )) * g;
  • factory/cf_factor.cc

    r3781a2 r77f483  
    11/* emacs edit mode for this file is -*- C++ -*- */
    2 /* $Id: cf_factor.cc,v 1.23 2004-01-20 15:39:52 Singular Exp $ */
     2/* $Id: cf_factor.cc,v 1.24 2005-06-28 14:39:52 Singular Exp $ */
    33
    44//{{{ docu
     
    277277  else
    278278  {
     279    bool on_rational = isOn(SW_RATIONAL);
     280    On(SW_RATIONAL);
    279281    CanonicalForm cd = bCommonDen( f );
    280282    CanonicalForm fz = f * cd;
    281     bool on_rational = isOn(SW_RATIONAL);
    282283    Off(SW_RATIONAL);
    283284    if ( f.isUnivariate() )
  • factory/fac_multivar.cc

    r3781a2 r77f483  
    11/* emacs edit mode for this file is -*- C++ -*- */
    2 /* $Id: fac_multivar.cc,v 1.10 2002-10-24 12:17:49 Singular Exp $ */
     2/* $Id: fac_multivar.cc,v 1.11 2005-06-28 14:39:52 Singular Exp $ */
    33
    44#include <config.h>
     
    142142#ifdef HAVE_NTL
    143143int prime_number=0;
    144 void find_good_prime(const CanonicalForm &f, const CanonicalForm &r,int &start)
     144void find_good_prime(const CanonicalForm &f, int &start)
    145145{
    146146  if (! f.inBaseDomain() )
    147147  {
    148148    int l = f.level();
    149     for ( CFIterator i = f; i.hasTerms(); i++ )
     149    CFIterator i = f;
     150    for(;;)
    150151    {
    151       if((i.exp()!=0) && ((i.exp() % cf_getSmallPrime(start))==0))
     152      if  ( i.hasTerms() )
    152153      {
    153         start++;
    154         CanonicalForm ff=r;
    155         find_good_prime(ff,r,start);
    156         return;
     154        find_good_prime(i.coeff(),start);
     155        if((i.exp()!=0) && ((i.exp() % cf_getSmallPrime(start))==0))
     156        {
     157          start++;
     158          i=f;
     159        }
     160        else  i++;
    157161      }
    158       find_good_prime(i.coeff(),r,start);
     162      else break;
    159163    }
    160164  }
    161165  else
    162166  {
    163     if(mod(f,cf_getSmallPrime(start))==0)
     167    if (f.inZ())
    164168    {
    165       start++;
    166       CanonicalForm ff=r;
    167       find_good_prime(ff,r,start);
    168     }
     169      while((f!=0) && (mod(f,cf_getSmallPrime(start))==0))
     170      {
     171        start++;
     172      }
     173    }
     174/* should not happen!
     175    else if (f.inQ())
     176    {
     177      while((f.den()!=0) && (mod(f.den(),cf_getSmallPrime(start))==0))
     178      {
     179        start++;
     180      }
     181      while((f.num()!=0) && (mod(f.num(),cf_getSmallPrime(start))==0))
     182      {
     183        start++;
     184      }
     185    }
     186    else
     187          cout <<"??"<< f <<"\n";
     188*/
    169189  }
    170190}
     
    234254        {
    235255          int i=prime_number;
    236           CanonicalForm f=arg;
    237           find_good_prime(f,arg,i);
    238           f=U0;
    239           find_good_prime(f,U0,i);
    240           f=U;
    241           find_good_prime(f,U,i);
     256          find_good_prime(arg,i);
     257          find_good_prime(U0,i);
     258          find_good_prime(U,i);
    242259          int p=cf_getSmallPrime(i);
    243260          //printf("found:p=%d (%d)\n",p,i);
Note: See TracChangeset for help on using the changeset viewer.