I just discovered why this happened for Sage. It turns out that there are two ways to build mpfr. One is --with-gmp and the other is --with-gmp-build. The latter speeds up mpfr by making use of internal GMP symbols, assuming you have access to a source build of GMP. If you build mpfr with the latter option against MPIR it currently fails. However the former still works because it only uses the published public interface. I guess whoever did this in Sage didn't realise that the MPIR and GMP internals are not compatible.
Bill. On 16 March 2012 11:10, leif <[email protected]> wrote: > Bill Hart wrote: >> >> On 16 March 2012 09:18, leif<[email protected]> wrote: >>> >>> Jason wrote: >>>> >>>> and the first missing functions are >>>> >>>> ../../../mpfr-3.1.0/src/mulders.c: In function >>>> 'mpfr_divhigh_n_basecase': >>>> ../../../mpfr-3.1.0/src/mulders.c:208:3: error: 'gmp_pi1_t' undeclared >>>> (first use in this function) >>>> ../../../mpfr-3.1.0/src/mulders.c:208:3: note: each undeclared >>>> identifier >>>> is reported only once for each function it appears in >>>> ../../../mpfr-3.1.0/src/mulders.c:208:14: error: expected ';' before >>>> 'dinv2' >>>> ../../../mpfr-3.1.0/src/mulders.c:229:3: warning: implicit declaration >>>> of >>>> function 'invert_pi1' >>>> ../../../mpfr-3.1.0/src/mulders.c:229:15: error: 'dinv2' undeclared >>>> (first >>>> use in this function) >>>> ../../../mpfr-3.1.0/src/mulders.c:244:9: warning: implicit declaration >>>> of >>>> function 'udiv_qr_3by2' >>>> make[2]: *** [mulders.lo] Error 1 >>>> >>>> I'll add the new undocumented functions this weekend to the svn for a >>>> mpir-2.5.2 release in the next week or so >>> >>> >>> >>> >>> Note that MPFR 3.1.0 builds and works well with (still) MPIR 2.1.3 in >>> Sage, >>> so these types and functions must have been removed from MPIR at some >>> point, >>> unless I'm missing something... >>> >> >> gmp_pi1_t was not defined in MPIR 2.1.3. Perhaps someone made a patch >> in Sage to fix this. > > > Nope, apparently upstream did. There are currently 8 bugs with patches > mentioned (see http://www.mpfr.org/mpfr-current/#fixed), but none of them is > related to this, so maybe they /silently/ changed the tarball, or *when* and > where did Jason get his one from? > > In Sage (and in the current upstream tarball) we [already] have: > > static mp_limb_t > mpfr_divhigh_n_basecase (mpfr_limb_ptr qp, mpfr_limb_ptr np, > mpfr_limb_srcptr dp, mp_size_t n) > { > mp_limb_t qh, d1, d0, dinv, q2, q1, q0; > mpfr_pi1_t dinv2; > > ... > > > -leif > > > > >> This type is used for functions that take a precomputed inverse in >> GMP. We have similar in MPIR, but the name is not the same. >> >> The MPFR people have been doing a great job of checking MPFR is >> compatible with MPIR, so I'm not sure how this has slipped through. >> Anyhow, it's easy to fix. >> >> Bill. >> > > > -- > () The ASCII Ribbon Campaign > /\ Help Cure HTML E-Mail > > -- > You received this message because you are subscribed to the Google Groups > "mpir-devel" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/mpir-devel?hl=en.
