RFR 503, 849: more robust implementation of real Bessel I_v
(For trying out the code review tool...) Scipy bugs #503 and #849 are due to a non-robust implementation of Bessel I function in Cephes. The following changes address this, by using an implementation from the Boost library, converted to C: http://codereview.appspot.com/20078 A git branch is here: http://github.com/pv/scipy-work/tree/ticket-503-special-iv-fix I'm thinking that this code would be ready to be committed in. I'm not aware of bugs in it. -- Pauli Virtanen
On Thu, 26 Feb 2009 03:03:58 +0000 (UTC) Pauli Virtanen <pav@iki.fi> wrote:
(For trying out the code review tool...)
Scipy bugs #503 and #849 are due to a non-robust implementation of Bessel I function in Cephes. The following changes address this, by using an implementation from the Boost library, converted to C:
http://codereview.appspot.com/20078
A git branch is here:
http://github.com/pv/scipy-work/tree/ticket-503-special-iv-fix
I'm thinking that this code would be ready to be committed in. I'm not aware of bugs in it.
-- Pauli Virtanen
How can I apply your patch ? Nils
Thu, 26 Feb 2009 08:30:18 +0100, Nils Wagner wrote:
Pauli Virtanen <pav@iki.fi> wrote:
http://codereview.appspot.com/20078 http://github.com/pv/scipy-work/tree/ticket-503-special-iv-fix [clip] How can I apply your patch ?
There's the "Download raw patch set" on the codereview page, on top of the table containing the individual patches. Apply it with patch -p1 < issue_20078_1.diff on top of SVN checkout. *** Alternatively, check out the git branch: first, get the SVN mirror git clone git://github.com/pv/scipy-svn.git scipy.git This takes some time, as the branch contains the whole history of Scipy, but you need to do this only once. Then get my branch: cd scipy.git git remote add pauli git://github.com/pv/scipy-work.git git fetch pauli git remote show pauli Switch the working tree to it: git checkout pauli/ticket-503-special-iv-fix Examine what was done there: git log master.. git diff master git show bb21c git show 7f738 If you want to hack on it yourself, work on a branch of your own: git checkout -b ticket-503-special-iv-fix If you want to get the SVN tags and branches, tell git you want them: cd scipy.git git remote rm origin git remote add --mirror origin git://github.com/pv/scipy-svn.git git fetch git branch -r git log tags/0.7.0..trunk git diff tags/0.7.0 trunk -- Pauli Virtanen
On Thu, 26 Feb 2009 10:06:27 +0000 (UTC) Pauli Virtanen <pav@iki.fi> wrote:
Thu, 26 Feb 2009 08:30:18 +0100, Nils Wagner wrote:
Pauli Virtanen <pav@iki.fi> wrote:
http://codereview.appspot.com/20078 http://github.com/pv/scipy-work/tree/ticket-503-special-iv-fix [clip] How can I apply your patch ?
There's the "Download raw patch set" on the codereview page, on top of the table containing the individual patches. Apply it with
patch -p1 < issue_20078_1.diff
on top of SVN checkout.
***
Alternatively, check out the git branch: first, get the SVN mirror
git clone git://github.com/pv/scipy-svn.git scipy.git
This takes some time, as the branch contains the whole history of Scipy, but you need to do this only once.
Then get my branch:
cd scipy.git git remote add pauli git://github.com/pv/scipy-work.git git fetch pauli git remote show pauli
Switch the working tree to it:
git checkout pauli/ticket-503-special-iv-fix
Examine what was done there:
git log master.. git diff master git show bb21c git show 7f738
If you want to hack on it yourself, work on a branch of your own:
git checkout -b ticket-503-special-iv-fix
If you want to get the SVN tags and branches, tell git you want them:
cd scipy.git git remote rm origin git remote add --mirror origin git://github.com/pv/scipy-svn.git git fetch
git branch -r git log tags/0.7.0..trunk git diff tags/0.7.0 trunk
-- Pauli Virtanen
_______________________________________________ Scipy-dev mailing list Scipy-dev@scipy.org http://projects.scipy.org/mailman/listinfo/scipy-dev
Hi Pauli, Thank you very much for your detailed instructions. They are really helpful. I have applied the patch. Here is the output of scipy.test() ====================================================================== FAIL: test_yn_zeros (test_basic.TestBessel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/data/home/nwagner/local/lib/python2.5/site-packages/scipy/special/tests/test_basic.py", line 1598, in test_yn_zeros 488.98055964441374646], rtol=1e-19) File "/data/home/nwagner/local/lib/python2.5/site-packages/scipy/special/tests/test_basic.py", line 38, in assert_tol_equal verbose=verbose, header=header) File "/data/home/nwagner/local/lib/python2.5/site-packages/numpy/testing/utils.py", line 295, in assert_array_compare raise AssertionError(msg) AssertionError: Not equal to tolerance rtol=1e-19, atol=0 (mismatch 100.0%) x: array([ 450.136, 463.057, 472.807, 481.274, 488.981]) y: array([ 450.136, 463.057, 472.807, 481.274, 488.981]) ====================================================================== FAIL: test_ynp_zeros (test_basic.TestBessel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/data/home/nwagner/local/lib/python2.5/site-packages/scipy/special/tests/test_basic.py", line 1604, in test_ynp_zeros assert_tol_equal(yvp(443, ao), 0, atol=1e-15) File "/data/home/nwagner/local/lib/python2.5/site-packages/scipy/special/tests/test_basic.py", line 38, in assert_tol_equal verbose=verbose, header=header) File "/data/home/nwagner/local/lib/python2.5/site-packages/numpy/testing/utils.py", line 295, in assert_array_compare raise AssertionError(msg) AssertionError: Not equal to tolerance rtol=1e-07, atol=1e-15 (mismatch 100.0%) x: array([ 1.239e-10, -8.119e-16, 3.608e-16, 5.898e-16, 1.226e-15]) y: array(0) ====================================================================== FAIL: test_yv_cephes_vs_amos (test_basic.TestBessel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/data/home/nwagner/local/lib/python2.5/site-packages/scipy/special/tests/test_basic.py", line 1664, in test_yv_cephes_vs_amos self.check_cephes_vs_amos(yv, yn, rtol=1e-11, atol=1e-305) File "/data/home/nwagner/local/lib/python2.5/site-packages/scipy/special/tests/test_basic.py", line 1653, in check_cephes_vs_amos assert c2.imag != 0, (v, z) AssertionError: (301, 1.0) ---------------------------------------------------------------------- Ran 3703 tests in 58.088s FAILED (KNOWNFAIL=2, SKIP=17, failures=3) <nose.result.TextTestResult run=3703 errors=0 failures=3> Cheers, Nils
Thu, 26 Feb 2009 03:03:58 +0000, Pauli Virtanen wrote:
(For trying out the code review tool...)
Scipy bugs #503 and #849 are due to a non-robust implementation of Bessel I function in Cephes. The following changes address this, by using an implementation from the Boost library, converted to C:
Urgh, the codereview app does not add any distinguishing headers to the mails it sends for each comment. Does someone know if something can be done to this? (Meanwhile, my .procmailrc says :0B which is mildly funny at this time of the day.) -- Pauli Virtanen
2009/2/27 Pauli Virtanen <pav@iki.fi>:
Urgh, the codereview app does not add any distinguishing headers to the mails it sends for each comment.
I'll ask on the rietveld list. Cheers Stéfan
participants (3)
-
Nils Wagner
-
Pauli Virtanen
-
Stéfan van der Walt