[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