Changeset 0e2f8c in git


Ignore:
Timestamp:
Nov 13, 2013, 3:47:14 PM (9 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '48f1dd268d0ff74ef2f7dccbf02545425002ddcc')
Children:
39d427f4321691ff7ee982ea2a474bb8c09aacbb
Parents:
867d59cf46048ef5ad1c520db05b0b6d5f71d305
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2013-11-13 15:47:14+01:00
git-committer:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2013-11-13 15:48:47+01:00
Message:
fix: extgcd(x,x) fails with NTL: try without
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/cf_gcd.cc

    r867d59 r0e2f8c  
    392392      XGCD(RR,A,B,F1,G1,1);
    393393      CanonicalForm rr=convertZZ2CF(RR);
    394       ASSERT (!rr.isZero(), "NTL:XGCD failed");
    395       a=convertNTLZZX2CF(A,f.mvar())*fc/rr;
    396       b=convertNTLZZX2CF(B,f.mvar())*gc/rr;
    397       return CanonicalForm(1);
    398     }
    399     else
    400     {
    401       fc=bCommonDen(f);
    402       gc=bCommonDen(g);
    403       F1=convertFacCF2NTLZZX(f*fc/r);
    404       G1=convertFacCF2NTLZZX(g*gc/r);
     394      if(!rr.isZero())
     395      {
     396        a=convertNTLZZX2CF(A,f.mvar())*fc/rr;
     397        b=convertNTLZZX2CF(B,f.mvar())*gc/rr;
     398        return CanonicalForm(1);
     399      }
     400      else
     401      {
     402        Off(SW_USE_NTL_GCD_0);
     403        r=extgcd(f,g,a,b);
     404        On(SW_USE_NTL_GCD_0);
     405      }
     406    }
     407    else
     408    {
    405409      XGCD(RR,A,B,F1,G1,1);
    406       a=convertNTLZZX2CF(A,f.mvar())*fc;
    407       b=convertNTLZZX2CF(B,f.mvar())*gc;
    408410      CanonicalForm rr=convertZZ2CF(RR);
    409       ASSERT (!rr.isZero(), "NTL:XGCD failed");
    410       a /= rr;
    411       b /= rr;
     411      if (!rr.isZero())
     412      {
     413        a=convertNTLZZX2CF(A,f.mvar())*fc;
     414        b=convertNTLZZX2CF(B,f.mvar())*gc;
     415      }
     416      else
     417      {
     418        Off(SW_USE_NTL_GCD_0);
     419        r=extgcd(f,g,a,b);
     420        On(SW_USE_NTL_GCD_0);
     421      }
    412422      return r;
    413423    }
Note: See TracChangeset for help on using the changeset viewer.