[SCM] an open source computer algebra system branch, cleanedupstream, updated. 6125e540ca6d66c307958938a9d53b245507c323

Bernhard R. Link brlink at debian.org
Tue Apr 24 15:55:35 UTC 2012


The following commit has been merged in the cleanedupstream branch:
commit d9ee0cac31ec525c183862436d6135ba23c0eb6f
Author: Martin Lee <martinlee84 at web.de>
Date:   Wed Apr 4 13:31:44 2012 +0200

    fix: assert violations related to minpoly handling

diff --git a/factory/algext.cc b/factory/algext.cc
index 131943a..617849f 100644
--- a/factory/algext.cc
+++ b/factory/algext.cc
@@ -673,7 +673,6 @@ CanonicalForm QGCD( const CanonicalForm & F, const CanonicalForm & G )
     mipo /= mipo.lc();
     // here: mipo is monic
     tryBrownGCD( mapinto(f), mapinto(g), mipo, Dp, fail );
-    setCharacteristic(0);
     if( fail ) // mipo splits in char p
       continue;
     if( Dp.inCoeffDomain() ) // early termination
@@ -683,8 +682,10 @@ CanonicalForm QGCD( const CanonicalForm & F, const CanonicalForm & G )
         continue;
       setReduce(a,true);
       if (off_rational) Off(SW_RATIONAL); else On(SW_RATIONAL);
+      setCharacteristic(0);
       return CanonicalForm(1);
     }
+    setCharacteristic(0);
     // here: Dp NOT inCoeffDomain
     for(int i=1; i<=mv; i++)
       other[i] = 0; // reset (this is necessary, because some entries may not be updated by call to leadDeg)
diff --git a/factory/cf_gcd_smallp.cc b/factory/cf_gcd_smallp.cc
index 39c53d3..d7a0d35 100755
--- a/factory/cf_gcd_smallp.cc
+++ b/factory/cf_gcd_smallp.cc
@@ -4364,8 +4364,9 @@ CanonicalForm EZGCD_P( const CanonicalForm & FF, const CanonicalForm & GG )
       On (SW_USE_EZGCD_P);
       if (passToGF)
       {
-        Variable alpha= rootOf (gf_mipo);
+        CanonicalForm mipo= gf_mipo;
         setCharacteristic (p);
+        Variable alpha= rootOf (mipo.mapinto());
         result= GF2FalphaRep (result, alpha);
       }
       if (k > 1)
@@ -4397,8 +4398,9 @@ CanonicalForm EZGCD_P( const CanonicalForm & FF, const CanonicalForm & GG )
         On (SW_USE_EZGCD_P);
         if (passToGF)
         {
-          Variable alpha= rootOf (gf_mipo);
+          CanonicalForm mipo= gf_mipo;
           setCharacteristic (p);
+          Variable alpha= rootOf (mipo.mapinto());
           result= GF2FalphaRep (result, alpha);
         }
         if (k > 1)
@@ -4438,8 +4440,9 @@ CanonicalForm EZGCD_P( const CanonicalForm & FF, const CanonicalForm & GG )
         {
           if (passToGF)
           {
-            Variable alpha= rootOf (gf_mipo);
+            CanonicalForm mipo= gf_mipo;
             setCharacteristic (p);
+            Variable alpha= rootOf (mipo.mapinto());
             F= GF2FalphaRep (F, alpha);
           }
           if (k > 1)
@@ -4460,8 +4463,9 @@ CanonicalForm EZGCD_P( const CanonicalForm & FF, const CanonicalForm & GG )
         {
           if (passToGF)
           {
-            Variable alpha= rootOf (gf_mipo);
+            CanonicalForm mipo= gf_mipo;
             setCharacteristic (p);
+            Variable alpha= rootOf (mipo.mapinto());
             G= GF2FalphaRep (G, alpha);
           }
           if (k > 1)
@@ -4514,8 +4518,9 @@ CanonicalForm EZGCD_P( const CanonicalForm & FF, const CanonicalForm & GG )
         On (SW_USE_EZGCD_P);
         if (passToGF)
         {
-          Variable alpha= rootOf (gf_mipo);
+          CanonicalForm mipo= gf_mipo;
           setCharacteristic (p);
+          Variable alpha= rootOf (mipo.mapinto());
           result= GF2FalphaRep (result, alpha);
         }
         if (k > 1)
@@ -4544,8 +4549,9 @@ CanonicalForm EZGCD_P( const CanonicalForm & FF, const CanonicalForm & GG )
           result= GCD_GF (F, G);
           if (passToGF)
           {
-            Variable alpha= rootOf (gf_mipo);
+            CanonicalForm mipo= gf_mipo;
             setCharacteristic (p);
+            Variable alpha= rootOf (mipo.mapinto());
             result= GF2FalphaRep (result, alpha);
           }
           if (k > 1)
@@ -4568,8 +4574,9 @@ CanonicalForm EZGCD_P( const CanonicalForm & FF, const CanonicalForm & GG )
         On (SW_USE_EZGCD_P);
         if (passToGF)
         {
-          Variable alpha= rootOf (gf_mipo);
+          CanonicalForm mipo= gf_mipo;
           setCharacteristic (p);
+          Variable alpha= rootOf (mipo.mapinto());
           result= GF2FalphaRep (result, alpha);
         }
         if (k > 1)
@@ -4589,8 +4596,9 @@ CanonicalForm EZGCD_P( const CanonicalForm & FF, const CanonicalForm & GG )
 
         if (passToGF && gcdfound)
         {
-          Variable alpha= rootOf (gf_mipo);
+          CanonicalForm mipo= gf_mipo;
           setCharacteristic (p);
+          Variable alpha= rootOf (mipo.mapinto());
           cand= GF2FalphaRep (cand, alpha);
         }
         if (k > 1 && gcdfound)
diff --git a/factory/facFqBivar.cc b/factory/facFqBivar.cc
index c103968..6d735fd 100644
--- a/factory/facFqBivar.cc
+++ b/factory/facFqBivar.cc
@@ -150,14 +150,15 @@ uniFactorizer (const CanonicalForm& A, const Variable& alpha, const bool& GF)
   ZZ_p::init (p);
   if (GF)
   {
-    Variable beta= rootOf (gf_mipo);
     int k= getGFDegree();
     char cGFName= gf_name;
+    CanonicalForm mipo= gf_mipo;
     setCharacteristic (getCharacteristic());
+    Variable beta= rootOf (mipo.mapinto());
     CanonicalForm buf= GF2FalphaRep (A, beta);
     if (getCharacteristic() > 2)
     {
-      ZZ_pX NTLMipo= convertFacCF2NTLZZpX (gf_mipo);
+      ZZ_pX NTLMipo= convertFacCF2NTLZZpX (mipo.mapinto());
       ZZ_pE::init (NTLMipo);
       ZZ_pEX NTLA= convertFacCF2NTLZZ_pEX (buf, NTLMipo);
       MakeMonic (NTLA);
@@ -168,7 +169,7 @@ uniFactorizer (const CanonicalForm& A, const Variable& alpha, const bool& GF)
     }
     else
     {
-      GF2X NTLMipo= convertFacCF2NTLGF2X (gf_mipo);
+      GF2X NTLMipo= convertFacCF2NTLGF2X (mipo.mapinto());
       GF2E::init (NTLMipo);
       GF2EX NTLA= convertFacCF2NTLGF2EX (buf, NTLMipo);
       MakeMonic (NTLA);
@@ -6183,8 +6184,9 @@ extBiFactorize (const CanonicalForm& F, const ExtensionInfo& info)
       ExtensionInfo info2= ExtensionInfo (extension);
       factors= biFactorize (A, info2);
 
-      Variable vBuf= rootOf (gf_mipo);
+      CanonicalForm mipo= gf_mipo;
       setCharacteristic (getCharacteristic());
+      Variable vBuf= rootOf (mipo.mapinto());
       for (CFListIterator j= factors; j.hasItem(); j++)
         j.getItem()= GF2FalphaRep (j.getItem(), vBuf);
     }
@@ -6263,8 +6265,9 @@ extBiFactorize (const CanonicalForm& F, const ExtensionInfo& info)
       if (ipower (p, extensionDeg) < (1<<16))
       // pass to GF(p^k+1)
       {
+        CanonicalForm mipo= gf_mipo;
         setCharacteristic (p);
-        Variable vBuf= rootOf (gf_mipo);
+        Variable vBuf= rootOf (mipo.mapinto());
         A= GF2FalphaRep (A, vBuf);
         setCharacteristic (p, extensionDeg, 'Z');
         ExtensionInfo info2= ExtensionInfo (extension);
@@ -6272,8 +6275,9 @@ extBiFactorize (const CanonicalForm& F, const ExtensionInfo& info)
       }
       else // not able to pass to another GF, pass to F_p(\alpha)
       {
+        CanonicalForm mipo= gf_mipo;
         setCharacteristic (p);
-        Variable vBuf= rootOf (gf_mipo);
+        Variable vBuf= rootOf (mipo.mapinto());
         A= GF2FalphaRep (A, vBuf);
         Variable v= chooseExtension (vBuf, beta, k);
         ExtensionInfo info2= ExtensionInfo (v, extension);
@@ -6292,8 +6296,9 @@ extBiFactorize (const CanonicalForm& F, const ExtensionInfo& info)
       }
       else // not able to pass to GF (p^2k), pass to F_p (\alpha)
       {
+        CanonicalForm mipo= gf_mipo;
         setCharacteristic (p);
-        Variable v1= rootOf (gf_mipo);
+        Variable v1= rootOf (mipo.mapinto());
         A= GF2FalphaRep (A, v1);
         Variable v2= chooseExtension (v1, v1, k);
         CanonicalForm primElem, imPrimElem;
diff --git a/factory/facFqFactorize.cc b/factory/facFqFactorize.cc
index a7db9ab..14e4452 100644
--- a/factory/facFqFactorize.cc
+++ b/factory/facFqFactorize.cc
@@ -2792,8 +2792,9 @@ extFactorize (const CanonicalForm& F, const ExtensionInfo& info)
       A= A.mapinto();
       factors= multiFactorize (A, info);
 
-      Variable vBuf= rootOf (gf_mipo);
+      CanonicalForm mipo= gf_mipo;
       setCharacteristic (getCharacteristic());
+      Variable vBuf= rootOf (mipo.mapinto());
       for (CFListIterator j= factors; j.hasItem(); j++)
         j.getItem()= GF2FalphaRep (j.getItem(), vBuf);
     }
@@ -2872,8 +2873,9 @@ extFactorize (const CanonicalForm& F, const ExtensionInfo& info)
       if (pow ((double) p, (double) extensionDeg) < (1<<16))
       // pass to GF(p^k+1)
       {
+        CanonicalForm mipo= gf_mipo;
         setCharacteristic (p);
-        Variable vBuf= rootOf (gf_mipo);
+        Variable vBuf= rootOf (mipo.mapinto());
         A= GF2FalphaRep (A, vBuf);
         setCharacteristic (p, extensionDeg, 'Z');
         ExtensionInfo info= ExtensionInfo (extension);
@@ -2881,8 +2883,9 @@ extFactorize (const CanonicalForm& F, const ExtensionInfo& info)
       }
       else // not able to pass to another GF, pass to F_p(\alpha)
       {
+        CanonicalForm mipo= gf_mipo;
         setCharacteristic (p);
-        Variable vBuf= rootOf (gf_mipo);
+        Variable vBuf= rootOf (mipo.mapinto());
         A= GF2FalphaRep (A, vBuf);
         Variable v= chooseExtension (vBuf, beta, k);
         ExtensionInfo info= ExtensionInfo (v, extension);
@@ -2901,8 +2904,9 @@ extFactorize (const CanonicalForm& F, const ExtensionInfo& info)
       }
       else // not able to pass to GF (p^2k), pass to F_p (\alpha)
       {
+        CanonicalForm mipo= gf_mipo;
         setCharacteristic (p);
-        Variable v1= rootOf (gf_mipo);
+        Variable v1= rootOf (mipo.mapinto());
         A= GF2FalphaRep (A, v1);
         Variable v2= chooseExtension (v1, v1, k);
         CanonicalForm primElem, imPrimElem;

-- 
an open source computer algebra system



More information about the debian-science-commits mailing list