Here's what I think, though it's only an opinion:

0) It's surprising that this broke, as the new XGCD code went into
MPIR 1.2.0, which Sage already uses, but then it is not surprising as
any changes made to the XGCD code can currently change the
normalisation as no normalisation is enforced.
1) It's unlikely we can fix this properly very quickly. I think we
have to hold this over until the next release of MPIR.
2) We could write a normalisation wrapper around mpn_gcdext, but it
would slow performance, so we obviously won't do that in a release.

What could be done is to patch mpn_gcdext (see line 1105 of
mpn/generic/gcdext.c).

Rename this function to _mpn_gcdext and write a new mpn_gcdext (in the
same file) which calls the old one and applies the required
normalisation (see the GMP 5 documentation for details of the
normalisation which Pari likes).

The MPIR test suite will not care that you did this, as it doesn't
test normalisation.

If doctests still fail in Sage, fixing them will make Sage compatible
both with future versions of MPIR, where we will fix this issue
properly, and with GMP 5 and above. This means that when GMP 5 becomes
stable and when the next version of MPIR comes out, Sage ought to, in
theory, be able to swap between the two without changing xgcd
normalisation.

We purposely didn't deal with this issue because we thought Sage was
already set up to handle the "normalisation" that MPIR had and that if
we changed it, it would break. But it looks like I was wrong.

Bill.

On 9 April 2010 05:40, Bill Hart <goodwillh...@googlemail.com> wrote:
> That's great that it builds now. Well done, and thanks for the effort!!
>
> Our XGCD has changed, but I don't think we define a normalisation as
> such. From the manual:
>
> "Set g to the greatest common divisor of a and b, and in addition set
> s and t to coefficients
> satisfying as + bt = g. g is always positive, even if one or both of a
> and b are negative."
>
> GMP recently changed back to their old normalisation.
>
> It looks, from the test results below that we screw up Pari anyway, so
> we have to change something, it seems. Given that GMP changed back to
> the old normalisation to support Pari, we should probably do the same.
> I'm afraid this is not an issue we can resolve easily. The XGCD code
> is very complex and it will take quite some time to rewrite it to
> handle normalisation (which it currently just doesn't do at all).
>
> Bill.
>
> On 9 April 2010 05:10, William Stein <wst...@gmail.com> wrote:
>> Hi,
>>
>> OK, after all this, the build finally completed.  The only changes I made 
>> were:
>>
>> * Updated mpir to rc3
>> * patched ecm as explained here:
>>    http://lists.gforge.inria.fr/pipermail/ecm-discuss/2009-August/004070.html
>>   (Though this had to be slightly modified -- just search for the
>> same command, which moved.)
>>
>>
>> I then ran the long Sage test suite, and some tests fail.
>>
>>  http://sage.math.washington.edu/home/wstein/build/mpir2/sage-4.3.5/testlong.log
>>
>> ----------------------------------------------------------------------
>> The following tests failed:
>>
>>
>>        sage -t  -long "devel/sage/doc/en/tutorial/tour_numtheory.rst"
>>        sage -t  -long "devel/sage/doc/fr/tutorial/tour_numtheory.rst"
>>        sage -t  -long "devel/sage/sage/modular/cusps.py"
>>        sage -t  -long "devel/sage/sage/modular/modsym/boundary.py"
>>        sage -t  -long "devel/sage/sage/modular/modsym/ambient.py"
>>        sage -t  -long "devel/sage/sage/libs/pari/gen.pyx"
>>        sage -t  -long "devel/sage/sage/rings/arith.py"
>>        sage -t  -long "devel/sage/sage/rings/integer.pyx"
>>        sage -t  -long
>> "devel/sage/sage/rings/polynomial/multi_polynomial_ideal.py"
>>        sage -t  -long "devel/sage/sage/tests/book_stein_ent.py"
>>        sage -t  -long "devel/sage/sage/schemes/elliptic_curves/heegner.py"
>> Total time for all tests: 7170.6 seconds
>>
>> --
>>
>> I looked and it appears that maybe all of these are the result of the
>> XGCD behavior in MPIR changing again.  Has it changed to be like GMP
>> now?  That would be convenient.
>>
>> This is all now
>>
>>  http://trac.sagemath.org/sage_trac/ticket/8664
>>
>> william
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "mpir-devel" group.
>> To post to this group, send email to mpir-de...@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> mpir-devel+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/mpir-devel?hl=en.
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To post to this group, send email to mpir-de...@googlegroups.com.
To unsubscribe from this group, send email to 
mpir-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/mpir-devel?hl=en.

Reply via email to