<br><br><div class="gmail_quote">On Mon, Dec 15, 2008 at 11:59 PM, Jarrod Millman <span dir="ltr">&lt;<a href="mailto:millman@berkeley.edu">millman@berkeley.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
We are in better shape regarding the NR issue. &nbsp;3 out of the 7 issues<br>
have been resolved. &nbsp;Before branching and tagging the release<br>
candidate for 0.7.0, we have to deal with the remaining 4 issues.<br>
<br>
Unfortunately, I don&#39;t have time to even look into this right now. &nbsp;We<br>
are really close and I hope someone will pitch in and resolve the<br>
remaining issues. &nbsp;Unless someone can say I wrote this code and I<br>
didn&#39;t derive it from the NR code. &nbsp;Since no one has stepped up to say<br>
this, I assume we are going to have to review the code and make a<br>
determination about this. &nbsp;Basically, someone needs compare our code<br>
with the NR code. &nbsp;Check to see if the code is identical. &nbsp;If the code<br>
isn&#39;t identical, does it look like it is the NR code with<br>
modifications (e.g., the same call signature, the same loops, the same<br>
variable names, etc.). &nbsp;If the code is derived from NR, we need to<br>
remove it and if we want to include the functionality someone would<br>
need to rewrite the code from scratch. &nbsp;If our code isn&#39;t derived from<br>
NR code, we need to correctly document this fact so that we don&#39;t<br>
revisit this issue in a year. &nbsp;Despite how annoying this may be, the<br>
NR copyright specifically states that we don&#39;t have the right to port<br>
their code to another language. &nbsp;So having taken their code and<br>
rewritten it in Python isn&#39;t allowed. &nbsp;We are allowed to read their<br>
descriptions of the algorithms and write code based on that<br>
description; we just can&#39;t use their code to write the code.<br>
<br>
Here is a summary of where I think we are now (please let me know if I<br>
am incorrect):<br>
<br>
1. &nbsp;2 functions (ridder, brentq) in scipy/optimize/zeros.py<br>
<br>
Resolved.<br>
<br>
2. &nbsp;quickselect in scipy/signal/medianfilter.c<br>
<br>
Unresolved.<br>
<br>
3. &nbsp;scipy/special/orthogonal.py<br>
</blockquote><div><br>The first mention I see of this method of calculating the sample points and weights for Gaussian quadrature is in this 1967 technical report: <a href="ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/67/81/CS-TR-67-81.pdf">ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/67/81/CS-TR-67-81.pdf</a>. It doesn&#39;t look to me like the NR version of the Golub-Welsch algorithm, or numpy&#39;s for that matter, differs in any significant way. Note that the original either misspells Welsch or a citation mutation occurred down the line and the name has been spelled Welsh by all those who copied it without looking up the original.<br>
<br>A more official publication is G.H. Golub and J.H.Welsch, Computation of Gauss quadrature rules, Math. Comp., 23(1969), pp. 221-230<br><br>Chuck<br></div></div><br>