| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
Dirichlet does not validate inputs and hangs when values are zero.
Adds check that values are strictly positive as required by the
distribution.
closes #2089
|
| |
|
| |
|
|\
| |
| | |
DOC: Wrong return type of np.random.choice and wrong variable name in parameter description.
|
| |
| |
| |
| |
| |
| | |
in parameter description.
[ci skip]
|
|/
|
|
|
| |
It's funny because it's fine in EXAMPLE_DOCSTRING.rst.txt that uses the
same example.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Valgrind complains about memcpy with overlapping address in mtrand.c
It happens when i == j in this loop.
Closer inspection the i == j iteration is not needed (it is a swap).
So, skip it and avoid depending on undefined behavior of memcpy.
related read:
https://sourceware.org/bugzilla/show_bug.cgi?id=12518
|
|
|
|
|
|
|
|
|
| |
After #8883 was merged it was noticed that the same problem was
occuring with calls to PyInt_AsLong. Namely that PyErr_Occoured
wasn't being checked if it returned -1 indicating an exception
could have been thrown.
This PR adds those checks as well as a regression test.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was an error in np.random.uniform where if np.random.uniform
were called with a type that throwed exceptions when it was converted
to a float this exception wouldn't be raised.
This bug was due to an issue where PyFloat_AsDouble was called but
no check for PyErr_Occurred was performed after.
This PR fixes the issue by ensuring that Cython will always emit a
call to PyErr_Occurred if PyFloat_AsDouble returns -1.0
Fixes: #8865
|
|
|
|
|
|
|
|
| |
BUG: fix issue #8250 where np.random.permutation fail.
This reverts commit 7a73bad2d9c04e4f16e87dbed9d7b627327fe814.
Closes #8776.
|
|
|
|
| |
called on an invalid sequence.
|
| |
|
| |
|
|\ |
|
| | |
|
| |
| |
| |
| | |
Also check for invalid bounds when low= and high= are arraylike rather than scalar (closes #8226)
|
| | |
|
| |
| |
| |
| | |
Closes #5813.
|
| | |
|
| |
| |
| |
| |
| | |
Continuation of gh-8071 by removing the duplicate
randint Cython code that is not generated via Tempita.
|
| |
| |
| |
| |
| |
| | |
Refactors the randint helpers to use a Tempita
template. This will reduce technical debt in the
long run.
|
| | |
|
| |
| |
| |
| | |
The strings in error messages were left untouched
|
| |\
| | |
| | | |
Allow many distributions to have a scale of 0.
|
| | |
| | |
| | |
| | | |
At least the gamma generator doesn't support it.
|
| | |
| | |
| | |
| | |
| | |
| | | |
(in which case a stream of 0's is usually returned (or 1's)).
See #5818.
|
| | |
| | |
| | |
| | | |
[ci skip]
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
np.random.shuffle will allocate a buffer based on the size of the first
element of an array of strings. If the first element is smaller than
another in the array this buffer will overflow, causing a segfault
when garbage is collected.
Additionally if the array contains objects then one would be left
in the buffer and have it's refcount erroniously decrimented on
function exit, causing that object to be deallocated too early.
To fix this we change the buffer to be an array of int8 of the
the size of the array's dtype, which sidesteps both issues.
Fixes #7710
|
| | | |
|
| |/
| |
| |
| |
| |
| | |
Python 2.7 has a backport of PyCapsule so we no longer need to support
PyCObject. This PR makes that change and removes the no longer needed
mt_compat.h file.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
I know int is between 0 and 4294967295, but I think many people that do
not know that will benefit from this comment.
[ci skip]
|
| |\
| | |
| | | |
TST: Fixed elements being shuffled
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since shuffle only works along the first dimension, it must be done before
reshape to get reasonable looking data. Did not affect the current tests. I
noticed while working on some scipy code.
Also, made a couple of doc changes to np.random.shuffle.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
E.g.:
np.random.random_sample() uses the GIL for synchronization
np.random.random_sample(1) releases the GIL and uses a separate lock.
This means that both can run simultaneously, causing a data race when mutating
the random number generator's state, which could lead to buffer overflow (from
incrementing state->pos).
The fix here is to always use the separate lock, so that exactly one thread at
a time is mutating the random number generator's state.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The 'pandas' library expects Python integers to be
returned, so this commit changes the API so that
the default is 'np.int' which converts to native
Python integer types when a singleton is being
generated with this function.
Closes gh-7284.
|
| |
| |
| |
| | |
Closes gh-7203.
|
| | |
|
| |
| |
| |
| | |
Specifically the 'Logarithmic distribution' link is fixed.
For others the links or article names are updated.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Although the arguments are specified as 'high'
and 'low', it is possible to pass in values for
'low' and 'high' where 'low' >= 'high' and still
obtain well-defined behavior. The documentation
has been expanded to reflect this fact, with a
note to discourage passing in arguments satisfying
'low' > 'high'.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fixes bug in np.random methods that would return scalars
when passed one-element array inputs. This is because
one-element ndarrays can be cast to integers / floats, which
is what functions like PyFloat_AsDouble do before converting
to the intended data type.
This commit changes the check used to determine whether the
inputs are purely scalar by converting all inputs to arrays
and checking if the resulting shape is an empty tuple (scalar)
or not (array).
Closes gh-4263.
|
| |
| |
| |
| |
| |
| |
| | |
Clarified the output size depending on whether
scalar or non-scalar inputs are passed to
functions in mtrand.pyx that can broadcast
their arguments.
|
| |
| |
| |
| |
| |
| | |
Added a whole new suite of tests to ensure that
functions in mtrand.pyx which are broadcastable
actually broadcast their arguments properly.
|
| |
| |
| |
| |
| |
| |
| | |
Refactored methods that broadcast arguments
together by finding additional common ground
between code in the if...else branches that
involved a size parameter being passed in.
|
| |
| |
| |
| |
| |
| | |
Apparently gcc only specializes one branch (the last one) so I went for
another 33% performance increase (matching #6776) in what's likely the
most common use case.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Only for 1d-ndarrays exactly, as subtypes (e.g. masked arrays) may not
allow direct shuffle of the underlying buffer (in fact, the old
implementation destroyed the underlying values of masked arrays while
shuffling).
Also handles struct-containing-object 1d ndarrays properly.
See #6776 for an earlier, less general (but even faster: ~6x)
improvement attempt, #5514 for the original issue.
|
| | |
|
| | |
|
| | |
|
| | |
|