Opened 7 years ago

Closed 7 years ago

#12171 closed enhancement (fixed)

Update MPFI to 1.5.1

Reported by: mhansen Owned by: tbd
Priority: major Milestone: sage-5.0
Component: packages: standard Keywords: sd35 sd36
Cc: cwitty, robertwb, jdemeyer, jpflori Merged in: sage-5.0.beta6
Authors: Mike Hansen, Paul Zimmermann, Jean-Pierre Flori Reviewers: François Bissey
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: #12131, #12353 Stopgaps:

Attachments (2)

trac_12171a.patch (3.4 KB) - added by zimmerma 7 years ago.
trac_12171b.patch (1.1 KB) - added by zimmerma 7 years ago.
this patch should be applied after trac_12171a.patch

Download all attachments as: .zip

Change History (78)

comment:1 Changed 7 years ago by mhansen

  • Summary changed from Update MPIR to 1.5.0 to Update MPFI to 1.5.0

comment:2 Changed 7 years ago by mhansen

  • Status changed from new to needs_review

comment:3 Changed 7 years ago by fbissey

Have you checked the following doctests:

sage -t -long "devel/sage/sage/rings/qqbar.py"              
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/qqbar.py", line 3808:
    sage: (x-2).real_exact(RR)
Expected:
    0.000000000000000
Got:
    -0.000000000000000
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/qqbar.py", line 3810:
    sage: (x-2).real_exact(RealField(53, rnd='RNDD'))
Expected:
    0.000000000000000
Got:
    -0.000000000000000
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/qqbar.py", line 3812:
    sage: (x-2).real_exact(RealField(53, rnd='RNDU'))
Expected:
    0.000000000000000
Got:
    -0.000000000000000
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/qqbar.py", line 3814:
    sage: (x-2).real_exact(RealField(53, rnd='RNDZ'))
Expected:
    0.000000000000000
Got:
    -0.000000000000000
**********************************************************************
1 items had failures:
   4 of  20 in __main__.example_96
***Test Failed*** 4 failures.

and

sage -t -long "devel/sage/sage/rings/real_mpfi.pyx"         
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/real_mpfi.pyx", line 1078:
    sage: b = R(1)/R(0); b
Expected:
    [+infinity .. +infinity]
Got:
    [-infinity .. +infinity]
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/real_mpfi.pyx", line 1080:
    sage: loads(dumps(b)) == b
Expected:
    True
Got:
    False
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/real_mpfi.pyx", line 1082:
    sage: b = R(-1)/R(0); b
Expected:
    [-infinity .. -infinity]
Got:
    [-infinity .. +infinity]
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/real_mpfi.pyx", line 1084:
    sage: loads(dumps(b)) == b
Expected:
    True
Got:
    False
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/real_mpfi.pyx", line 2360:
    sage: R(1)/R(0)
Expected:
    [+infinity .. +infinity]
Got:
    [-infinity .. +infinity]
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/real_mpfi.pyx", line 3217:
    sage: RIF(-1, 1).min(0).endpoints()
Expected:
    (-1.00000000000000, 0.000000000000000)
Got:
    (-1.00000000000000, -0.000000000000000)
**********************************************************************
File "/usr/share/sage/devel/sage/sage/rings/real_mpfi.pyx", line 3221:
    sage: RIF(-1, 1).min(0).endpoints()
Expected:
    (-1.00000000000000, 0.000000000000000)
Got:
    (-1.00000000000000, -0.000000000000000)
**********************************************************************
3 items had failures:
   4 of  18 in __main__.example_29
   1 of   8 in __main__.example_55
   2 of   9 in __main__.example_80
***Test Failed*** 7 failures.

I did those test about one year ago https://github.com/cschwan/sage-on-gentoo/issues/30 so some things have probably changed a little bit but I expect you'll have to patch sage.

comment:4 Changed 7 years ago by zimmerma

by the way, MPFI 1.5.0 fixes a limitation to 1000 characters in mpfi_set_str, which can be demonstrated by the following test:

sage: R = RealIntervalField(53)
sage: R("1" * 1000)
1.111111111111112?e999

which failed previously. Maybe add a test for that?

Paul

comment:5 Changed 7 years ago by zimmerma

  • Status changed from needs_review to needs_work

two doctests are failing:

        sage -t  devel/sage-11666/sage/rings/qqbar.py # 4 doctests failed
        sage -t  devel/sage-11666/sage/rings/real_mpfi.pyx # 7 doctests failed

The issues are +0.0 versus -0.0, and also 1/0 which now gives [-Inf, +Inf] instead of [+Inf, +Inf].

Paul

comment:6 Changed 7 years ago by zimmerma

there is one important change in MPFI 1.5.0 which might cause the failures: mpfi_set_ui on input 0 gives [+0.0,-0.0] instead of [+0.0,+0.0] previously. I will ask upstream why:

sage: R=RealIntervalField(53)
sage: a=R(0)
sage: a.lower(), a.upper()
(0.000000000000000, -0.000000000000000)

More annoying is the following, which I believe is a bug in MPFI 1.5.0:

sage: a=R(infinity)
sage: a.lower(), a.upper()
(+infinity, +infinity)
sage: b=1/a
sage: b.lower(), b.upper()
(0.000000000000000, -0.000000000000000)

(I would expect b=[+0.0,+0.0].)

Paul

comment:7 Changed 7 years ago by mhansen

  • Keywords sd35 added

comment:8 Changed 7 years ago by zimmerma

the detailed failures (on a 32-bit computer) are:

macaron% ./sage -t devel/sage-12171/sage/rings/real_mpfi.pyx 
sage -t  "devel/sage-12171/sage/rings/real_mpfi.pyx"        
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/real_mpfi.pyx", line 4142:
    sage: 0 in (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())
Expected:
    True
Got:
    False
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/real_mpfi.pyx", line 1082:
    sage: b = R(1)/R(0); b
Expected:
    [+infinity .. +infinity]
Got:
    [-infinity .. +infinity]
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/real_mpfi.pyx", line 1084:
    sage: loads(dumps(b)) == b
Expected:
    True
Got:
    False
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/real_mpfi.pyx", line 1086:
    sage: b = R(-1)/R(0); b
Expected:
    [-infinity .. -infinity]
Got:
    [-infinity .. +infinity]

**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/real_mpfi.pyx", line 1088:
    sage: loads(dumps(b)) == b
Expected:
    True
Got:
    False
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/real_mpfi.pyx", line 2364:
    sage: R(1)/R(0)
Expected:
    [+infinity .. +infinity]
Got:
    [-infinity .. +infinity]
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/real_mpfi.pyx", line 3221:
    sage: RIF(-1, 1).min(0).endpoints()
Expected:
    (-1.00000000000000, 0.000000000000000)
Got:
    (-1.00000000000000, -0.000000000000000)
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/real_mpfi.pyx", line 3225:
    sage: RIF(-1, 1).min(0).endpoints()
Expected:
    (-1.00000000000000, 0.000000000000000)
Got:
    (-1.00000000000000, -0.000000000000000)

**********************************************************************
4 items had failures:
   1 of  19 in __main__.example_117
   4 of  19 in __main__.example_29
   1 of   9 in __main__.example_55
   2 of  10 in __main__.example_80
***Test Failed*** 8 failures.
For whitespace errors, see the file /users/caramel/zimmerma/.sage//tmp/real_mpfi_8949.py
         [8.1 s]

and:

macaron% ./sage -t devel/sage-12171/sage/rings/qqbar.py 
sage -t  "devel/sage-12171/sage/rings/qqbar.py"             
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/qqbar.py", line 4003:
    sage: (x-2).real_exact(RR)
Expected:
    0.000000000000000
Got:
    -0.000000000000000
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/qqbar.py", line 4005:
    sage: (x-2).real_exact(RealField(53, rnd='RNDD'))
Expected:
    0.000000000000000
Got:
    -0.000000000000000
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/qqbar.py", line 4007:
    sage: (x-2).real_exact(RealField(53, rnd='RNDU'))
Expected:
    0.000000000000000
Got:
    -0.000000000000000
**********************************************************************
File "/localdisk/tmp/sage-4.7.2/devel/sage-12171/sage/rings/qqbar.py", line 4009:
    sage: (x-2).real_exact(RealField(53, rnd='RNDZ'))

Expected:
    0.000000000000000
Got:
    -0.000000000000000
**********************************************************************
1 items had failures:
   4 of  21 in __main__.example_101
***Test Failed*** 4 failures.

Paul

comment:9 Changed 7 years ago by zimmerma

the first issue with gamma seems to be due to that bug in Sage:

sage: RealIntervalField(54)(-19/3) > 1.462
True

(works for precision 53 or less).

Paul

comment:10 Changed 7 years ago by zimmerma

I got a message from the developers of the Sollya package who say that they had similar problems when upgrading to MPFI 1.5.0. Their solution was to write a wrapper around MPFI to give sense to intervals like [+Inf,+Inf].

Paul

comment:11 Changed 7 years ago by zimmerma

  • Cc cwitty robertwb added

the problem from comment 9 seems to only apply on 32-bit machines. I'll first try to solve problems on 64-bit. There is one strange thing with the patch applied:

sage: x = AA(2).sqrt()^2
sage: (x-2).real_exact(RR)
0.000000000000000
sage: x.real_exact(RR)
2.00000000000000
sage: (x-2).real_exact(RR)
-0.000000000000000

The MPFI developers claim that in MPFI 1.5 the sign of 0 is irrelevant, but this is still a non-deterministic issue.

Paul

Changed 7 years ago by zimmerma

comment:12 follow-up: Changed 7 years ago by zimmerma

  • Status changed from needs_work to needs_info

the attached trac_12171a.patch fixes all issues but two on 64-bit. The remaining issues are related to loads(dumps(b)) == b:

File "/usr/local/sage-4.7.2/sage/devel/sage-12171/sage/rings/real_mpfi.pyx", line 1084:
    sage: loads(dumps(b)) == b
Expected:
    True
Got:
    False
**********************************************************************
File "/usr/local/sage-4.7.2/sage/devel/sage-12171/sage/rings/real_mpfi.pyx", line 1088:
    sage: loads(dumps(b)) == b
Expected:
    True
Got:
    False

I see in real_mpfi.pyx that other similar tests are failing and were rewritten in a different way:

sage: R = RealIntervalField(4000)
sage: s = 1/R(3)
sage: t = loads(dumps(s))
sage: (t.upper(), t.lower()) == (s.upper(), s.lower())
True

Indeed t==s fails:

sage: t == s
False

Should I also rewrite the 2 failing tests like this? What is the reason for the failures?

Paul

comment:13 Changed 7 years ago by zimmerma

Should I also rewrite the 2 failing tests like this? What is the reason for the failures?

Robert, Mike, are you there?

Paul

comment:14 Changed 7 years ago by zimmerma

  • Cc jdemeyer added

Jeroen, since I got no answer to my question I ask you: do you have an idea how to proceed?

Paul

comment:15 Changed 7 years ago by mhansen

Hi Paul, sorry for the delay; I've been busy with traveling back to the states / the holidays. I'll look into why these are failing today. I started while I was in Warwick, but didn't make much progress.

comment:16 Changed 7 years ago by jpflori

  • Cc jpflori added

comment:17 in reply to: ↑ 12 Changed 7 years ago by fbissey

Replying to zimmerma:

I see in real_mpfi.pyx that other similar tests are failing and were rewritten in a different way:

sage: R = RealIntervalField(4000)
sage: s = 1/R(3)
sage: t = loads(dumps(s))
sage: (t.upper(), t.lower()) == (s.upper(), s.lower())
True

Indeed t==s fails:

sage: t == s
False

Should I also rewrite the 2 failing tests like this? What is the reason for the failures?

This is quite strange I cannot think of a reason this would fail unless the "==" operator is doing something slightly wrong or something unexpected.

comment:18 Changed 7 years ago by zimmerma

ok I understand why the following "fails":

sage: R = RealIntervalField(100)
sage: s = 1/R(3)
sage: t = loads(dumps(s))
sage: t == s
False

In the real_mpfi.pyx file, it is said that s cmp t returns True if a cmp b is true for any element a in s and any element b in t. Obviously when cmp is == and t is the same interval as s this can hold only when both are the same point interval. Thus to check if s and t are the same interval, we should write:

sage: (t.upper(), t.lower()) == (s.upper(), s.lower())
True

Paul

Changed 7 years ago by zimmerma

this patch should be applied after trac_12171a.patch

comment:19 Changed 7 years ago by zimmerma

  • Authors changed from Mike Hansen to Mike Hansen, Paul Zimmermann
  • Description modified (diff)
  • Status changed from needs_info to needs_review

the second patch attached fixes the remaining failing tests. Ready for review.

Paul

comment:20 Changed 7 years ago by fbissey

There is no doubt that this second patch will do the trick and does the right thing. I am just wondering why "t == s" doesn't work as expected in the first place.

In any case I will do some basic reviewing shortly. The patch themselves look good to me. I need to check the spkg in details.

comment:21 Changed 7 years ago by zimmerma

Francois, I explain in comment 18 that the semantics of t == s is special for intervals. If t=[a,b] and s=[c,d], it requires that x==y for any a <= x <= b and c <= y <= d, which obviously requires a=b=c=d.

The modified tests did work before because they had a=b=c=d, which is no longer the case due to change of semantics of MPFI.

Paul

comment:22 Changed 7 years ago by fbissey

Just a quick update: it doesn't appear that mpfi runs a test suite when SAGE_CHECK is set can you fix that?

comment:23 Changed 7 years ago by fbissey

I further inspected the spkg. There is one issue

 hg status
! patches/configure.ac
! patches/configure.ac.patch

You have to tell hg to remove them, just removing them with "rm" is not enough.

 hg addremove

will do the trick then you can commit and make the spkg. As mentioned above I would also like you to add a section to spkg-install that runs "make check" if SAGE_CHECK is set to yes. Once all that is done I'll have another look but it should be a positive review then.

comment:24 Changed 7 years ago by fbissey

  • Reviewers set to François Bissey
  • Status changed from needs_review to needs_work
  • Work issues set to clean hg repo; add SAGE_CHECK

comment:25 Changed 7 years ago by zimmerma

Mike, please can you make the changes in the spkg? I'd like to make progress on this patch during SD 35.5, so that we can proceed on #11666.

Paul

comment:26 Changed 7 years ago by jpflori

  • Status changed from needs_work to needs_review

As I happened to be cc'ed on this ticket, I've uplaoded a package with the requested easy changes at http://perso.telecom-paristech.fr/~flori/sage/mpfi-1.5.0.spkg

At least it install on a (vanilla? not sure... but nothing to exotic) sage 4.7.2 and runs the test suite (and succeed) when asked so on my machine.

comment:27 Changed 7 years ago by jpflori

  • Work issues clean hg repo; add SAGE_CHECK deleted

I've also put another version of the package at the same address + ".new" where the last test in spkg-install is slightly simplified...

comment:28 Changed 7 years ago by fbissey

  • Authors changed from Mike Hansen, Paul Zimmermann to Mike Hansen, Paul Zimmermann, Jean-Pierre Flori
  • Status changed from needs_review to positive_review

Looking at it again it may have been a little bit more verbose about the removal of the patches in SPKG.txt but it is otherwise fine now. It actually builds and tests fine on something exotic (SLES 11SP1 on power7, although there may be a slight clue about some problems on power7 in those tests).

I giving this a positive review.

comment:29 Changed 7 years ago by jpflori

  • Description modified (diff)

I've put the last package at the "normal" address (i.e. without .new at the end) and linked it in the ticket description.

comment:30 Changed 7 years ago by jdemeyer

  • Milestone changed from sage-4.8 to sage-5.0

comment:31 Changed 7 years ago by jdemeyer

  • Dependencies set to #12131
  • Status changed from positive_review to needs_work
  • Work issues set to rebase

This should be rebased to #12131.

comment:32 Changed 7 years ago by fbissey

I hadn't noticed that mpfi was one of the concerned package but I guess it make sense. This should be easy and quick to fix.

comment:33 Changed 7 years ago by jpflori

  • Status changed from needs_work to needs_review
  • Work issues rebase deleted

The concerned line of spkg-install has been updated according to #12131.

You can find the updated package at the same address:

http://perso.telecom-paristech.fr/~flori/sage/mpfi-1.5.0.spkg

comment:34 Changed 7 years ago by fbissey

  • Status changed from needs_review to needs_work

It is not how rebasing a spkg works Jean-Pierre (I had to do it several time for python-2.7). You have to start from the latest spkg available in #12131. The idea is that by doing what you just did you lost all the history from the spkg in #12131 that includes hg logs and the log entries from SPKG.txt.

So I am afraid you will have to take the spkg from #12131 and then add all the changes needed for 1.5.0.

comment:35 Changed 7 years ago by jpflori

My bad, I did not really thought before adding the one line fix from #12131.

I'll do it the right way around later.

comment:36 Changed 7 years ago by zimmerma

comment:37 Changed 7 years ago by jpflori

I'm currently properly rebuilding the spkg (for 1.5.0).

I see that in Mike package, he got rid of the previous patch for cygwin.

I guess it has been merged upstream. Anyway, I'll document it in SPKG.txt when I find a ref, remove src/configure.ac from tracked files and delete patches directory, unless someone has an objection.

If v1.5.1 happens to get released, I'll just use it instead of 1.5.

comment:38 follow-up: Changed 7 years ago by jpflori

I've contacted Philippe Théveny who is in charge of MPFI and he was not even aware of the patch we used in 1.3.4.something to compile under cygwin, so there is a priori no reason for the patch not to be needed anymore (I verified that the configure.ac file in Mike's spkg is the original one from MPFI 1.5).

The release is planned for the middle of next week, but if the patch is still needed Philippe is ready to get it merged upstream for that release. The original ticket for that issue is #3235.

Could someone who has access to cygwin try the last package I posted (or Mike's one) and report on success or failure ASAP?

comment:39 in reply to: ↑ 38 Changed 7 years ago by dimpase

Replying to jpflori:

I've contacted Philippe Théveny who is in charge of MPFI and he was not even aware of the patch we used in 1.3.4.something to compile under cygwin, so there is a priori no reason for the patch not to be needed anymore (I verified that the configure.ac file in Mike's spkg is the original one from MPFI 1.5).

The release is planned for the middle of next week, but if the patch is still needed Philippe is ready to get it merged upstream for that release. The original ticket for that issue is #3235.

Could someone who has access to cygwin try the last package I posted (or Mike's one) and report on success or failure ASAP?

The spkg builds just fine on Sage 4.7.2 on Cygwin.

Dima

comment:40 Changed 7 years ago by zimmerma

a release candidate for MPFI 1.5.1 is available:

Date: Fri, 13 Jan 2012 20:08:36 +0100
From: philipe theveny <philippe.theveny@ens-lyon.fr>
To: mpfi-users@lists.gforge.inria.fr
Subject: [Mpfi-users] announce: mpfi-1.5.1 release candidate
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"

The release of MPFI 1.5.1 is is imminent. Please help to make this
release as good as possible by downloading and testing this release
candidate:

https://gforge.inria.fr/frs/download.php/30117/mpfi-1.5.1-rc1.tar.bz2
https://gforge.inria.fr/frs/download.php/30116/mpfi-1.5.1-rc1.tar.gz
https://gforge.inria.fr/frs/download.php/30115/mpfi-1.5.1-rc1.zip

The MD5's:
ccff519222077407c3ca188a3e643c07  mpfi-1.5.1-rc1.tar.bz2
cd868c21d87afa05085d36d97dfde761  mpfi-1.5.1-rc1.tar.gz
5e8a29bfcd8cd8b3eb6d90ca86822763  mpfi-1.5.1-rc1.zip

The SHA1's:
5cacf98c882f217d8db937e12a4bc7104a5c322d  mpfi-1.5.1-rc1.tar.bz2
4f58755fbcc346ae23b04e9617e84c776e7b119f  mpfi-1.5.1-rc1.tar.gz
3e1d180c3640d9eae0a456efc4995cb1d6b99e03  mpfi-1.5.1-rc1.zip


Changes between MPFI version 1.5 and 1.5.1:
* fix bug in mpfi_sub_fr (reported by Takayuki YAMAGUCHI)
* now require at least GMP version 4.1.0 and MPFR version 2.4.2
* detect availability of mpfr_z_sub, mpfr_z_div, and mpfr_q_sub and use
   a custom implementation for the ones not provided by MPFR (mpfr_z_sub
   appeared in MPFR 3.1.0, the other ones are used in tests only)
* code cleanup (unused variables)
* tadd_q does no more check overflow by default (required too much
   memory)
* sign of zeros choice documented


Please send success and failure reports with "./config.guess" output
to <mpfi-users@lists.gforge.inria.fr>.

If no problems are found, MPFI 1.5.1 should be released around January
18, 2012.

Regards,
Philippe Theveny

_______________________________________________
Mpfi-users mailing list
Mpfi-users@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/mpfi-users

comment:41 Changed 7 years ago by fbissey

Sorry I have fallen of the face of the internet in the past few days (not quite literally but almost). If there is a bit of time the test suite pass on power7 in a sage setting but with the following messages:

PASS: tinit
PASS: tinit_set
Warning: reverted endpoints line 21
Warning: reverted endpoints line 22
Warning: reverted endpoints line 23
Warning: reverted endpoints line 26
Warning: reverted endpoints line 30
Warning: reverted endpoints line 37
Warning: reverted endpoints line 38
PASS: tintersect

and

PASS: tsech
PASS: tset
Warning: reverted endpoints line 11
Warning: reverted endpoints line 12
Warning: reverted endpoints line 13
Warning: reverted endpoints line 14
Warning: reverted endpoints line 15
PASS: tset_d

Not sure if it can have an impact on some sage use or not.

comment:42 Changed 7 years ago by zimmerma

Francois,

Not sure if it can have an impact on some sage use or not.

I reported the same warnings to the MPFI developers when 1.5.0 came out (http://lists.gforge.inria.fr/pipermail/mpfi-users/2011-May/000023.html) but got no feedback. I will ask them again.

Paul

comment:43 Changed 7 years ago by jpflori

FYI I get the same warnings, on the same kind of architecture.

And as far as the spkg is concerned, I'd prefer to wait until thursday when there is some sage meeting in Paris to package directly MPFI 1.5.1 on top of#12131. Unless someone has a very good reason for me to do it earlier with 1.5.1.rc1.

comment:44 Changed 7 years ago by jpflori

  • Description modified (diff)
  • Status changed from needs_work to needs_review
  • Summary changed from Update MPFI to 1.5.0 to Update MPFI to 1.5.1

Here comes finally a 1.5.1 spkg rebased on #12131

You can find it at http://perso.telecom-paristech.fr/~flori/sage/mpfi-1.5.1.spkg

I slightly updated the description and license info as well.

comment:45 Changed 7 years ago by fbissey

Shouldn't spkg-check actually be a proper shell script? By that I mean start with something like

#!/bin/sh

or possibly

#!/usr/bin/env bash

comment:46 follow-up: Changed 7 years ago by jdemeyer

fbissey: yes, it should be. It should also be executable.

comment:47 in reply to: ↑ 46 Changed 7 years ago by fbissey

  • Status changed from needs_review to needs_work

Replying to jdemeyer:

fbissey: yes, it should be. It should also be executable.

It is executable just not a proper shell script, putting it back to needs work. Everything else looks ok.

comment:48 Changed 7 years ago by jpflori

  • Status changed from needs_work to needs_review

Sorry about that, I definitely tried to repackage that one and mpfr one too quickly from scratch on my personal computer and mixed everything.

It should be ok now (same address as before).

comment:49 Changed 7 years ago by fbissey

  • Status changed from needs_review to positive_review

OK, I am putting it back to positive review, looks all right, survives basic testing.

comment:50 follow-ups: Changed 7 years ago by jdemeyer

  • Description modified (diff)
  • Status changed from positive_review to needs_work

I actually get the doctest failure

sage -t  -force_lib devel/sage/sage/rings/real_mpfi.pyx
**********************************************************************
File "/mnt/usb1/scratch/jdemeyer/merger/sage-5.0.beta2/devel/sage-main/sage/rings/real_mpfi.pyx", line 4143:
    sage: 0 in (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())
Expected:
    True
Got:
    False
**********************************************************************

comment:51 in reply to: ↑ 50 Changed 7 years ago by fbissey

Replying to jdemeyer:

I actually get the doctest failure

sage -t  -force_lib devel/sage/sage/rings/real_mpfi.pyx
**********************************************************************
File "/mnt/usb1/scratch/jdemeyer/merger/sage-5.0.beta2/devel/sage-main/sage/rings/real_mpfi.pyx", line 4143:
    sage: 0 in (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())
Expected:
    True
Got:
    False
**********************************************************************

Is it a 32 bit or 64 bit system? Or it doesn't matter? Was it 5.0_beta1?

comment:52 Changed 7 years ago by jdemeyer

Sorry, should have mentioned this. It happened on sage.math, with sage-5.0.beta1 + various other patches + #12171. I have not tried a plain sage-5.0.beta1 + #12171.

comment:53 Changed 7 years ago by fbissey

I haven't noticed any of that in the prealpha, interestingly enough the time out on power7 apparently happened on a call to .gamma(). I will try 5.0.beta1.

comment:54 Changed 7 years ago by fbissey

On my 64 bit linux box after accounting for #12349 (which came out of nowhere suddenly) and applying this ticket

fbissey@QCD-nzi3 /home/work/fbissey/sandbox/sage-5.0.beta1 $ ./sage -t -long -force_lib devel/sage/sage/rings/real_mpfi.pyx
sage -t -long -force_lib "devel/sage/sage/rings/real_mpfi.pyx"
         [1.3 s]
 
----------------------------------------------------------------------
All tests passed!
Total time for all tests: 1.3 seconds

comment:55 in reply to: ↑ 50 Changed 7 years ago by zimmerma

Replying to jdemeyer:

I actually get the doctest failure [...]

Jeroen, what do you get for the following?

sage: (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())

My guess is that this problem is due to the one mentioned in comment 9, which is a bug already present in Sage, and thus separate from this ticket (however I don't know why the doctest worked before...)

Paul

comment:56 Changed 7 years ago by zimmerma

the above problem can be simplified to:

sage: RealIntervalField(54)(-1) > RR(1)
True

which already happens in Sage 4.7.2, and seems to be due to the coercion model. I'll open a separate ticket for that (for precision between 2 and 53 we get the correct answer False).

Paul

comment:57 Changed 7 years ago by zimmerma

I'll open a separate ticket for that

it is #12353.

Paul

comment:58 follow-up: Changed 7 years ago by jdemeyer

I don't understand what's happening here.

The test only seems to fail when running make ptest, not when running only the one test

jdemeyer@sage:/scratch/jdemeyer/merger/sage-5.0.beta2$ ./sage -t  -force_lib devel/sage/sage/rings/real_mpfi.pyx 2>&1 |cat
sage -t -force_lib "devel/sage/sage/rings/real_mpfi.pyx"
         [2.3 s]

----------------------------------------------------------------------
All tests passed!
Total time for all tests: 2.3 seconds

comment:59 in reply to: ↑ 58 Changed 7 years ago by zimmerma

Replying to jdemeyer:

I don't understand what's happening here [...]

did you try the test case from #12353?

Paul

comment:60 Changed 7 years ago by jdemeyer

I get

sage: RealIntervalField(53)(-1) > RR(1)
False
sage: RealIntervalField(54)(-1) > RR(1)
False
sage: (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())
0.?e-302
sage: 0 in (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())
True

comment:61 Changed 7 years ago by zimmerma

strange, with 4.8 just compiled on a Core2 under Ubuntu 10.10 I get:

tarte% ./sage
----------------------------------------------------------------------
| Sage Version 4.8, Release Date: 2012-01-20                         |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
sage: RealIntervalField(53)(-1) > RR(1)
False
sage: RealIntervalField(54)(-1) > RR(1)
True

Paul

comment:62 Changed 7 years ago by fbissey

I get (64 bit linux)

----------------------------------------------------------------------
| Sage Version 5.0.beta1, Release Date: 2012-01-22                   |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
**********************************************************************
*                                                                    *
* Warning: this is a prerelease version, and it may be unstable.     *
*                                                                    *
**********************************************************************
sage: RealIntervalField(53)(-1) > RR(1)
False
sage: RealIntervalField(54)(-1) > RR(1)
False
sage: (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())
0.?e-302
sage: 0 in (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())
True

On OS X 10.5.8 (32bit):

BlueFerniMac1:sage-5.0.beta1 frb15$ ./sage -t -long -force_lib devel/sage/sage/rings/real_mpfi.pyx
sage -t -long -force_lib "devel/sage/sage/rings/real_mpfi.pyx"
**********************************************************************
File "/Users/frb15/Desktop/sage-5.0.beta1/devel/sage/sage/rings/real_mpfi.pyx", line 4143:
    sage: 0 in (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())
Expected:
    True
Got:
    False
**********************************************************************
1 items had failures:
   1 of  19 in __main__.example_117
***Test Failed*** 1 failures.
For whitespace errors, see the file /Users/frb15/.sage//tmp/real_mpfi_78068.py
	 [2.9 s]

and

BlueFerniMac1:sage-5.0.beta1 frb15$ ./sage
----------------------------------------------------------------------
| Sage Version 5.0.beta1, Release Date: 2012-01-22                   |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
**********************************************************************
*                                                                    *
* Warning: this is a prerelease version, and it may be unstable.     *
*                                                                    *
**********************************************************************
sage: RealIntervalField(53)(-1) > RR(1)
False
sage: RealIntervalField(54)(-1) > RR(1)
True
sage: (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())
1.1?e-303
sage:  0 in (RealField(2000)(-19/3).gamma() - RealIntervalField(1000)(-19/3).gamma())
False

so there are differences of behavior between 32 and 64 bit naively.

comment:63 Changed 7 years ago by zimmerma

Francois,

I just built Sage 5.0.beta1 on another 64 bit linux (Core2 under Ubuntu 10.10) and got:

tarte% ./sage
----------------------------------------------------------------------
| Sage Version 5.0.beta1, Release Date: 2012-01-22                   |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
**********************************************************************
*                                                                    *
* Warning: this is a prerelease version, and it may be unstable.     *
*                                                                    *
**********************************************************************
sage: RealIntervalField(53)(-1) > RR(1)
False
sage: RealIntervalField(54)(-1) > RR(1)
True

Paul

comment:64 Changed 7 years ago by fbissey

This is way more subtle than I thought then. I did my tests without #11666, did you use #11666 as well as this one?

comment:65 follow-up: Changed 7 years ago by zimmerma

Francois,

no, I didn't use #11666. Can anybody reproduce the problem I have (cf #12353)? Anyway I believe this is independent from this ticket, since it already happened before (e.g., in Sage 4.7.2). Thus it should not prevent a positive review, if this is the only remaining issue, and we should solve #12353 independently.

Paul

comment:66 Changed 7 years ago by jdemeyer

Everything I said was without #11666.

comment:67 in reply to: ↑ 65 Changed 7 years ago by fbissey

Replying to zimmerma:

Francois,

no, I didn't use #11666. Can anybody reproduce the problem I have (cf #12353)? Anyway I believe this is independent from this ticket, since it already happened before (e.g., in Sage 4.7.2). Thus it should not prevent a positive review, if this is the only remaining issue, and we should solve #12353 independently.

I can reproduce it on OS X 10.5.8 (32bit) and linux on ppc64, but not on linux x86_64. You are probably right that's an orthogonal problem if it can happen as well in the current version of sage.

comment:68 Changed 7 years ago by zimmerma

  • Status changed from needs_work to needs_review

since this ticket got a positive review at comment 49, and the doctest failure at comment 50 is a separate issue (#12353) I put this back as "needs review".

Paul

comment:69 follow-up: Changed 7 years ago by jdemeyer

  • Dependencies changed from #12131 to #12131, #12353
  • Status changed from needs_review to positive_review

If nothing on this ticket changed, I guess we're back to positive review with a dependency on #12353.

comment:70 in reply to: ↑ 69 Changed 7 years ago by zimmerma

Replying to jdemeyer:

If nothing on this ticket changed, I guess we're back to positive review with a dependency on #12353.

great! I'm working in #12353.

Paul

comment:71 follow-up: Changed 7 years ago by zimmerma

Jeroen, now that #12353 has been fixed, you can merge this one too.

Paul

comment:72 in reply to: ↑ 71 Changed 7 years ago by jdemeyer

Replying to zimmerma:

Jeroen, now that #12353 has been fixed, you can merge this one too.

Don't worry, it's on my radar and should be merged in sage-5.0.beta5 if no further problems arise.

comment:73 Changed 7 years ago by jdemeyer

  • Status changed from positive_review to needs_work

In spkg-install, you should unset RM as old Sage versions set RM=rm which breaks libtool. For example, when upgrading from sage-4.5.3:

/bin/bash ../libtool --tag=CC   --mode=link gcc  -O2 -g -fPIC  -L/mnt/usb1/scratch/buildbot/sage/sage-1/sage_upgrade/build/sage-4.5.3-5.0.beta5/local/lib -L/mnt/usb1/scratch/buildbot/sage/sage-1/sage_upgrade/build/sage-4.5.3-5.0.beta5/local/lib  -o libmpfi.la -rpath /mnt/usb1/scratch/buildbot/sage/sage-1/sage_upgrade/build/sage-4.5.3-5.0.beta5/local/lib abs.lo acos.lo acosh.lo add.lo add_d.lo add_fr.lo add_q.lo add_si.lo add_ui.lo add_z.lo alea.lo asin.lo asinh.lo atan2.lo atan.lo atanh.lo bisect.lo blow.lo cbrt.lo clear.lo cmp.lo cmp_sym_pi.lo constants.lo cos.lo cosh.lo csc.lo csch.lo cot.lo coth.lo d_div.lo d_sub.lo diam.lo div.lo div_2exp.lo div_2si.lo div_2ui.lo div_d.lo div_fr.lo div_q.lo div_si.lo div_ui.lo div_z.lo error.lo exp.lo exp2.lo expm1.lo fr_div.lo fr_sub.lo get_endpoints.lo get_fr.lo get_d.lo get_prec.lo get_version.lo has_zero.lo hypot.lo increase.lo init.lo intersect.lo interv_d.lo interv_fr.lo interv_q.lo interv_si.lo interv_ui.lo interv_z.lo inp_str.lo inv.lo is_empty.lo is_inside.lo log.lo log10.lo log1p.lo log2.lo mag.lo mid.lo mig.lo mul.lo mul_2exp.lo mul_2si.lo mul_2ui.lo mul_d.lo mul_fr.lo mul_q.lo mul_si.lo mul_ui.lo mul_z.lo neg.lo out_str.lo predicates.lo print_binary.lo put.lo put_d.lo put_fr.lo put_q.lo put_si.lo put_ui.lo put_z.lo q_div.lo q_sub.lo quadrant.lo revert_if_needed.lo round_prec.lo sec.lo sech.lo set.lo set_d.lo set_fr.lo set_prec.lo set_q.lo set_si.lo set_str.lo set_ui.lo set_z.lo si_div.lo si_sub.lo sign.lo sin.lo sinh.lo sqr.lo sqrt.lo sub.lo sub_d.lo sub_fr.lo sub_q.lo sub_si.lo sub_ui.lo sub_z.lo swap.lo tan.lo tanh.lo ui_div.lo ui_sub.lo union.lo urandom.lo z_div.lo z_sub.lo  -lmpfr -lgmp
libtool: link: gcc -shared  -fPIC -DPIC  .libs/abs.o .libs/acos.o .libs/acosh.o .libs/add.o .libs/add_d.o .libs/add_fr.o .libs/add_q.o .libs/add_si.o .libs/add_ui.o .libs/add_z.o .libs/alea.o .libs/asin.o .libs/asinh.o .libs/atan2.o .libs/atan.o .libs/atanh.o .libs/bisect.o .libs/blow.o .libs/cbrt.o .libs/clear.o .libs/cmp.o .libs/cmp_sym_pi.o .libs/constants.o .libs/cos.o .libs/cosh.o .libs/csc.o .libs/csch.o .libs/cot.o .libs/coth.o .libs/d_div.o .libs/d_sub.o .libs/diam.o .libs/div.o .libs/div_2exp.o .libs/div_2si.o .libs/div_2ui.o .libs/div_d.o .libs/div_fr.o .libs/div_q.o .libs/div_si.o .libs/div_ui.o .libs/div_z.o .libs/error.o .libs/exp.o .libs/exp2.o .libs/expm1.o .libs/fr_div.o .libs/fr_sub.o .libs/get_endpoints.o .libs/get_fr.o .libs/get_d.o .libs/get_prec.o .libs/get_version.o .libs/has_zero.o .libs/hypot.o .libs/increase.o .libs/init.o .libs/intersect.o .libs/interv_d.o .libs/interv_fr.o .libs/interv_q.o .libs/interv_si.o .libs/interv_ui.o .libs/interv_z.o .libs/inp_str.o .libs/inv.o .libs/is_empty.o .libs/is_inside.o .libs/log.o .libs/log10.o .libs/log1p.o .libs/log2.o .libs/mag.o .libs/mid.o .libs/mig.o .libs/mul.o .libs/mul_2exp.o .libs/mul_2si.o .libs/mul_2ui.o .libs/mul_d.o .libs/mul_fr.o .libs/mul_q.o .libs/mul_si.o .libs/mul_ui.o .libs/mul_z.o .libs/neg.o .libs/out_str.o .libs/predicates.o .libs/print_binary.o .libs/put.o .libs/put_d.o .libs/put_fr.o .libs/put_q.o .libs/put_si.o .libs/put_ui.o .libs/put_z.o .libs/q_div.o .libs/q_sub.o .libs/quadrant.o .libs/revert_if_needed.o .libs/round_prec.o .libs/sec.o .libs/sech.o .libs/set.o .libs/set_d.o .libs/set_fr.o .libs/set_prec.o .libs/set_q.o .libs/set_si.o .libs/set_str.o .libs/set_ui.o .libs/set_z.o .libs/si_div.o .libs/si_sub.o .libs/sign.o .libs/sin.o .libs/sinh.o .libs/sqr.o .libs/sqrt.o .libs/sub.o .libs/sub_d.o .libs/sub_fr.o .libs/sub_q.o .libs/sub_si.o .libs/sub_ui.o .libs/sub_z.o .libs/swap.o .libs/tan.o .libs/tanh.o .libs/ui_div.o .libs/ui_sub.o .libs/union.o .libs/urandom.o .libs/z_div.o .libs/z_sub.o   -Wl,-rpath -Wl,/mnt/usb1/scratch/buildbot/sage/sage-1/sage_upgrade/build/sage-4.5.3-5.0.beta5/local/lib -Wl,-rpath -Wl,/mnt/usb1/scratch/buildbot/sage/sage-1/sage_upgrade/build/sage-4.5.3-5.0.beta5/local/lib -L/mnt/usb1/scratch/buildbot/sage/sage-1/sage_upgrade/build/sage-4.5.3-5.0.beta5/local/lib /mnt/usb1/scratch/buildbot/sage/sage-1/sage_upgrade/build/sage-4.5.3-5.0.beta5/local/lib/libmpfr.so /mnt/usb1/scratch/buildbot/sage/sage-1/sage_upgrade/build/sage-4.5.3-5.0.beta5/local/lib/libgmp.so  -O2   -Wl,-soname -Wl,libmpfi.so.0 -o .libs/libmpfi.so.0.0.0
libtool: link: (cd ".libs" && rm "libmpfi.so.0" && ln -s "libmpfi.so.0.0.0" "libmpfi.so.0")
rm: cannot remove `libmpfi.so.0': No such file or directory
make[2]: *** [libmpfi.la] Error 1

comment:74 Changed 7 years ago by jpflori

  • Status changed from needs_work to needs_review

An updated package is available at the same address.

I also added a mecurial tag for mpfi-1.5.1.

comment:75 Changed 7 years ago by vbraun

  • Keywords sd36 added
  • Status changed from needs_review to positive_review

Looks good!

comment:76 Changed 7 years ago by jdemeyer

  • Merged in set to sage-5.0.beta6
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.