-
-
Notifications
You must be signed in to change notification settings - Fork 10.9k
ENH: vectorize isinf and isfinite #6980
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
UNARY_LOOP { | ||
const @type@ in1 = *(@type@ *)ip1; | ||
*((npy_bool *)op1) = @func@(in1) != 0; | ||
if (!(@isfinite@ && run_isfinite_simd_@TYPE@(args, dimensions, steps)) && |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be good to break these out into separate repeats, the expression in the if statement here is getting out of hand.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes might make sense to remove isnan from the binary special case and just add the isnan code to the same code section
There are benchmarks for functions (bench_ufunc), it would be interesting to see the result. |
isfinite is especially valuable as its needed to verify inputs are suitable for lapack.
0d5ebd7
to
c776f39
Compare
updated, also added signbit for symmetry, even though that function is likely not very important. |
ENH: vectorize isinf and isfinite
Thanks Julian. |
@juliantaylor Signbit seems to be a problem on Windows, python 3.5 x86. Python 2.7 works fine. |
yes strange, I don't see an obvious error. |
I'm guessing it has something to do with the flags Python was compiled with. Python comes from conda, I'm assuming it is official python.org python, but 3.5 on windows is uses the 'new' windows setup. I think I will revert this until we can figure out what is going on. |
seeing what happens when just reverting the middle loop might be interesting |
Hmm, the environments are the same, AFAICT, for when this worked and current master. I wonder if something in master has changed between then and now that could cause this? |
Not much has gone in and, oddly, the failing tests seem to vary a bit. Reverting this PR fixes things... I wonder if some register state is being changed somewhere? I think I'd rather get master back in shape and deal with this in a new PR. Do you still have the branch? |
This reverts commit 3a92c54, reversing changes made to 8a1c582. Second of two reversions to undo vectorization of isinf, isnan, and signbit for Numpy 1.11.0. The changes led to test failures on windows for Python 2.6. Because Python 2.6 will not be supported by Numpy 1.12, this does not need to be done for current master.
Did this end up getting added back at some point? |
it was never reverted, the issue was fixed in #6994 |
Should have read the commit message above more closely. Guess it was only reverted for NumPy 1.11, but it was included in NumPy 1.12.0+. |
isfinite is especially valuable as its needed to verify inputs are
suitable for lapack.