On Tue, Dec 20, 2011 at 7:24 PM, Geoffrey Irving <irving@naml.us> wrote:
Hello,
As a followup to the prior thread on bugs in user defined types in numpy, I converted my rational number class from C++ to C and switched to 32 bits to remove the need for unportable 128 bit numbers. It should be usable as a fairly thorough test case for user defined types now. It does rather more than a minimal test case would need to do, but that isn't a problem unless you're concerned about code size. Let me know if any further changes are needed before it's suitable for inclusion in numpy as a test case. The repository is here:
https://github.com/girving/rational
The tests run under either py.test or nose.
For completeness, my branch fixing all but one of the bugs I found in numpy user defined types is here:
https://github.com/girving/numpy/tree/fixuserloops
The remaining bug is that numpy incorrectly releases the GIL during casts even though NPY_NEEDS_API is set. The resulting crash goes away if the line defining ACQUIRE_GIL is uncommented. With the necessary locks in place, all my tests pass with my branch of numpy. I haven't tracked this one down and fixed it yet, but it shouldn't be hard to do so.
Hey, that's great! Thanks for getting this all together. Chuck