# SciPy 0.19.0 Release Notes

SciPy 0.19.0 is the culmination of 7 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Moreover, our development attention will now shift to bug-fix releases on the 0.19.x branch, and on adding new features on the master branch.

This release requires Python 2.7 or 3.4-3.6 and NumPy 1.8.2 or greater.

Highlights of this release include:

- A unified foreign function interface layer, `scipy.LowLevelCallable`.

- Cython API for scalar, typed versions of the universal functions from the `scipy.special` module, via cimport scipy.special.cython_special.

## New features

### Foreign function interface improvements

`scipy.LowLevelCallable` provides a new unified interface for wrapping low-level compiled callback functions in the Python space. It supports Cython imported “api” functions, ctypes function pointers, CFFI function pointers, `PyCapsules`, Numba jitted functions and more. See gh-6509 for details.

### `scipy.linalg` improvements

The function `scipy.linalg.solve` obtained two more keywords `assume_a` and `transposed`. The underlying LAPACK routines are replaced with “expert” versions and now can also be used to solve symmetric, hermitian and positive definite coefficient matrices. Moreover, ill-conditioned matrices now cause a warning to be emitted with the estimated condition number information. Old `sym_pos` keyword is kept for backwards compatibility reasons however it is identical to using `assume_a='pos'`. Moreover, the `debug` keyword, which had no function but only printing the `overwrite_<a, b>` values, is deprecated.

The function `scipy.linalg.matrix_balance` was added to perform the so-called matrix balancing using the LAPACK xGEBAL routine family. This can be used to approximately equate the row and column norms through diagonal similarity transformations.

The functions `scipy.linalg.solve_continuous_are` and `scipy.linalg.solve_discrete_are` have numerically more stable algorithms. These functions can also solve generalized algebraic matrix Riccati equations. Moreover, both gained a `balanced` keyword to turn balancing on and off.

### `scipy.spatial` improvements

`scipy.spatial.SphericalVoronoi.sort_vertices_of_regions` has been re-written in Cython to improve performance.

`scipy.spatial.SphericalVoronoi` can handle > 200 k points (at least 10 million) and has improved performance.

The function `scipy.spatial.distance.directed_hausdorff` was added to calculate the directed Hausdorff distance.

`count_neighbors` method of `scipy.spatial.cKDTree` gained an ability to perform weighted pair counting via the new keywords `weights` and `cumulative`. See gh-5647 for details.

`scipy.spatial.distance.pdist` and `scipy.spatial.distance.cdist` now support non-double custom metrics.

### `scipy.ndimage` improvements

The callback function C API supports PyCapsules in Python 2.7

Multidimensional filters now allow having different extrapolation modes for different axes.

### `scipy.optimize` improvements

The `scipy.optimize.basinhopping` global minimizer obtained a new keyword, seed, which can be used to seed the random number generator and obtain repeatable minimizations.

The keyword sigma in `scipy.optimize.curve_fit` was overloaded to also accept the covariance matrix of errors in the data.

### `scipy.signal` improvements

The function `scipy.signal.correlate` and `scipy.signal.convolve` have a new optional parameter method. The default value of auto estimates the fastest of two computation methods, the direct approach and the Fourier transform approach.

A new function has been added to choose the convolution/correlation method, `scipy.signal.choose_conv_method` which may be appropriate if convolutions or correlations are performed on many arrays of the same size.

New functions have been added to calculate complex short time fourier transforms of an input signal, and to invert the transform to recover the original signal: `scipy.signal.stft` and `scipy.signal.istft`. This implementation also fixes the previously incorrect output of `scipy.signal.spectrogram` when complex output data were requested.

The function `scipy.signal.sosfreqz` was added to compute the frequency response from second-order sections.

The function `scipy.signal.unit_impulse` was added to conveniently generate an impulse function.

The function `scipy.signal.iirnotch` was added to design second-order IIR notch filters that can be used to remove a frequency component from a signal. The dual function `scipy.signal.iirpeak` was added to compute the coefficients of a second-order IIR peak (resonant) filter.

The function `scipy.signal.minimum_phase` was added to convert linear-phase FIR filters to minimum phase.

The functions `scipy.signal.upfirdn` and `scipy.signal.resample_poly` are now substantially faster when operating on some n-dimensional arrays when n > 1. The largest reduction in computation time is realized in cases where the size of the array is small (<1k samples or so) along the axis to be filtered.

### `scipy.fftpack` improvements

Fast Fourier transform routines now accept np.float16 inputs and upcast them to np.float32. Previously, they would raise an error.

### `scipy.cluster` improvements

Methods `"centroid"` and `"median"` of `scipy.cluster.hierarchy.linkage` have been significantly sped up. Long-standing issues with using `linkage` on large input data (over 16 GB) have been resolved.

### `scipy.sparse` improvements

The functions `scipy.sparse.save_npz` and `scipy.sparse.load_npz` were added, providing simple serialization for some sparse formats.

The prune method of classes bsr_matrix, csc_matrix, and csr_matrix was updated to reallocate backing arrays under certain conditions, reducing memory usage.

The methods argmin and argmax were added to classes coo_matrix, csc_matrix, csr_matrix, and bsr_matrix.

New function `scipy.sparse.csgraph.structural_rank` computes the structural rank of a graph with a given sparsity pattern.

New function `scipy.sparse.linalg.spsolve_triangular` solves a sparse linear system with a triangular left hand side matrix.

### `scipy.special` improvements

Scalar, typed versions of universal functions from `scipy.special` are available in the Cython space via `cimport` from the new module `scipy.special.cython_special`. These scalar functions can be expected to be significantly faster then the universal functions for scalar arguments. See the `scipy.special` tutorial for details.

Better control over special-function errors is offered by the functions `scipy.special.geterr` and `scipy.special.seterr` and the context manager `scipy.special.errstate`.

The names of orthogonal polynomial root functions have been changed to be consistent with other functions relating to orthogonal polynomials. For example, `scipy.special.j_roots` has been renamed `scipy.special.roots_jacobi` for consistency with the related functions `scipy.special.jacobi` and `scipy.special.eval_jacobi`. To preserve back-compatibility the old names have been left as aliases.

Wright Omega function is implemented as `scipy.special.wrightomega`.

### `scipy.stats` improvements

The function `scipy.stats.weightedtau` was added. It provides a weighted version of Kendall’s tau.

New class `scipy.stats.multinomial` implements the multinomial distribution.

New class `scipy.stats.rv_histogram` constructs a continuous univariate distribution with a piecewise linear CDF from a binned data sample.

New class `scipy.stats.argus` implements the Argus distribution.

### `scipy.interpolate` improvements

New class `scipy.interpolate.BSpline` represents splines. `BSpline` objects contain knots and coefficients and can evaluate the spline. The format is consistent with FITPACK, so that one can do, for example:

    >>> t, c, k = splrep(x, y, s=0)
    >>> spl = BSpline(t, c, k)
    >>> np.allclose(spl(x), y)

`spl*` functions, `scipy.interpolate.splev`, `scipy.interpolate.splint`, `scipy.interpolate.splder` and `scipy.interpolate.splantider`, accept both `BSpline` objects and `(t, c, k)` tuples for backwards compatibility.

For multidimensional splines, `c.ndim > 1`, `BSpline` objects are consistent with piecewise polynomials, `scipy.interpolate.PPoly`. This means that `BSpline` objects are not immediately consistent with `scipy.interpolate.splprep`, and one cannot do `>>> BSpline(*splprep([x, y])[0])`. Consult the `scipy.interpolate` test suite for examples of the precise equivalence.

In new code, prefer using `scipy.interpolate.BSpline` objects instead of manipulating `(t, c, k)` tuples directly.

New function `scipy.interpolate.make_interp_spline` constructs an interpolating spline given data points and boundary conditions.

New function `scipy.interpolate.make_lsq_spline` constructs a least-squares spline approximation given data points.

### `scipy.integrate` improvements

Now `scipy.integrate.fixed_quad` supports vector-valued functions.

## Deprecated features

scipy.interpolate.splmake, scipy.interpolate.spleval and scipy.interpolate.spline are deprecated. The format used by splmake/spleval was inconsistent with splrep/splev which was confusing to users.

scipy.special.errprint is deprecated. Improved functionality is available in `scipy.special.seterr`.

calling `scipy.spatial.distance.pdist` or `scipy.spatial.distance.cdist` with arguments not needed by the chosen metric is deprecated. Also, metrics “old_cosine” and “old_cos” are deprecated.

## Backwards incompatible changes

The deprecated `scipy.weave` submodule was removed.

`scipy.spatial.distance.squareform` now returns arrays of the same dtype as the input, instead of always float64.

scipy.special.errprint now returns a boolean.

The function `scipy.signal.find_peaks_cwt` now returns an array instead of a list.

`scipy.stats.kendalltau` now computes the correct p-value in case the input contains ties. The p-value is also identical to that computed by `scipy.stats.mstats.kendalltau` and by R. If the input does not contain ties there is no change w.r.t. the previous implementation.

The function `scipy.linalg.block_diag` will not ignore zero-sized matrices anymore. Instead it will insert rows or columns of zeros of the appropriate size. See gh-4908 for more details.

## Other changes

SciPy wheels will now report their dependency on `numpy` on all platforms. This change was made because Numpy wheels are available, and because the pip upgrade behavior is finally changing for the better (use `--upgrade-strategy=only-if-needed` for `pip >= 8.2`; that behavior will become the default in the next major version of `pip`).

Numerical values returned by `scipy.interpolate.interp1d` with `kind="cubic"` and `"quadratic"` may change relative to previous scipy versions. If your code depended on specific numeric values (i.e., on implementation details of the interpolators), you may want to double-check your results.

## Authors

- @endolith

- Max Argus +

- Hervé Audren

- Alessandro Pietro Bardelli +

- Michael Benfield +

- Felix Berkenkamp

- Matthew Brett

- Per Brodtkorb

- Evgeni Burovski

- Pierre de Buyl

- CJ Carey

- Brandon Carter +

- Tim Cera

- Klesk Chonkin

- Christian Häggström +

- Luca Citi

- Peadar Coyle +

- Daniel da Silva +

- Greg Dooper +

- John Draper +

- drlvk +

- David Ellis +

- Yu Feng

- Baptiste Fontaine +

- Jed Frey +

- Siddhartha Gandhi +

- Wim Glenn +

- Akash Goel +

- Christoph Gohlke

- Ralf Gommers

- Alexander Goncearenco +

- Richard Gowers +

- Alex Griffing

- Radoslaw Guzinski +

- Charles Harris

- Callum Jacob Hays +

- Ian Henriksen

- Randy Heydon +

- Lindsey Hiltner +

- Gerrit Holl +

- Hiroki IKEDA +

- jfinkels +

- Mher Kazandjian +

- Thomas Keck +

- keuj6 +

- Kornel Kielczewski +

- Sergey B Kirpichev +

- Vasily Kokorev +

- Eric Larson

- Denis Laxalde

- Gregory R. Lee

- Josh Lefler +

- Julien Lhermitte +

- Evan Limanto +

- Jin-Guo Liu +

- Nikolay Mayorov

- Geordie McBain +

- Josue Melka +

- Matthieu Melot

- michaelvmartin15 +

- Surhud More +

- Brett M. Morris +

- Chris Mutel +

- Paul Nation

- Andrew Nelson

- David Nicholson +

- Aaron Nielsen +

- Joel Nothman

- nrnrk +

- Juan Nunez-Iglesias

- Mikhail Pak +

- Gavin Parnaby +

- Thomas Pingel +

- Ilhan Polat +

- Aman Pratik +

- Sebastian Pucilowski

- Ted Pudlik

- puenka +

- Eric Quintero

- Tyler Reddy

- Joscha Reimer

- Antonio Horta Ribeiro +

- Edward Richards +

- Roman Ring +

- Rafael Rossi +

- Colm Ryan +

- Sami Salonen +

- Alvaro Sanchez-Gonzalez +

- Johannes Schmitz

- Kari Schoonbee

- Yurii Shevchuk +

- Jonathan Siebert +

- Jonathan Tammo Siebert +

- Scott Sievert +

- Sourav Singh

- Byron Smith +

- Srikiran +

- Samuel St-Jean +

- Yoni Teitelbaum +

- Bhavika Tekwani

- Martin Thoma

- timbalam +

- Svend Vanderveken +

- Sebastiano Vigna +

- Aditya Vijaykumar +

- Santi Villalba +

- Ze Vinicius

- Pauli Virtanen

- Matteo Visconti

- Yusuke Watanabe +

- Warren Weckesser

- Phillip Weinberg +

- Nils Werner

- Jakub Wilk

- Josh Wilson

- wirew0rm +

- David Wolever +

- Nathan Woods

- ybeltukov +

- G Young

- Evgeny Zhurko +

A total of 121 people contributed to this release. People with a “+” by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

### Issues closed for 0.19.0

- #1767: Function definitions in __fitpack.h should be moved. (Trac #1240)

- #1774: _kmeans chokes on large thresholds (Trac #1247)

- #2089: Integer overflows cause segfault in linkage function with large…

- #2190: Are odd-length window functions supposed to be always symmetrical?…

- #2251: solve_discrete_are in scipy.linalg does (sometimes) not solve…

- #2580: scipy.interpolate.UnivariateSpline (or a new superclass of it)…

- #2592: scipy.stats.anderson assumes gumbel_l

- #3054: scipy.linalg.eig does not handle infinite eigenvalues

- #3160: multinomial pmf / logpmf

- #3904: scipy.special.ellipj dn wrong values at quarter period

- #4044: Inconsistent code book initialization in kmeans

- #4234: scipy.signal.flattop documentation doesn’t list a source for…

- #4831: Bugs in C code in __quadpack.h

- #4908: bug: unnessesary validity check for block dimension in scipy.sparse.block_diag

- #4917: BUG: indexing error for sparse matrix with ix_

- #4938: Docs on extending ndimage need to be updated.

- #5056: sparse matrix element-wise multiplying dense matrix returns dense…

- #5337: Formula in documentation for correlate is wrong

- #5537: use OrderedDict in io.netcdf

- #5750: [doc] missing data index value in KDTree, cKDTree

- #5755: p-value computation in scipy.stats.kendalltau() in broken in…

- #5757: BUG: Incorrect complex output of signal.spectrogram

- #5964: ENH: expose scalar versions of scipy.special functions to cython

- #6107: scipy.cluster.hierarchy.single segmentation fault with 2**16…

- #6278: optimize.basinhopping should take a RandomState object

- #6296: InterpolatedUnivariateSpline: check_finite fails when w is unspecified

- #6306: Anderson-Darling bad results

- #6314: scipy.stats.kendaltau() p value not in agreement with R, SPSS…

- #6340: Curve_fit bounds and maxfev

- #6377: expm_multiply, complex matrices not working using start,stop,etc…

- #6382: optimize.differential_evolution stopping criterion has unintuitive…

- #6391: Global Benchmarking times out at 600s.

- #6397: mmwrite errors with large (but still 64-bit) integers

- #6413: scipy.stats.dirichlet computes multivariate gaussian differential…

- #6428: scipy.stats.mstats.mode modifies input

- #6440: Figure out ABI break policy for scipy.special Cython API

- #6441: Using Qhull for halfspace intersection : segfault

- #6442: scipy.spatial : In incremental mode volume is not recomputed

- #6451: Documentation for scipy.cluster.hierarchy.to_tree is confusing…

- #6490: interp1d (kind=zero) returns wrong value for rightmost interpolation…

- #6521: scipy.stats.entropy does not calculate the KL divergence

- #6530: scipy.stats.spearmanr unexpected NaN handling

- #6541: Test runner does not run scipy._lib/tests?

- #6552: BUG: misc.bytescale returns unexpected results when using cmin/cmax…

- #6556: RectSphereBivariateSpline(u, v, r) fails if min(v) >= pi

- #6559: Differential_evolution maxiter causing memory overflow

- #6565: Coverage of spectral functions could be improved

- #6628: Incorrect parameter name in binomial documentation

- #6634: Expose LAPACK’s xGESVX family for linalg.solve ill-conditioned…

- #6657: Confusing documentation for `scipy.special.sph_harm`

- #6676: optimize: Incorrect size of Jacobian returned by `minimize(…,…

- #6681: add a new context manager to wrap `scipy.special.seterr`

- #6700: BUG: scipy.io.wavfile.read stays in infinite loop, warns on wav…

- #6721: scipy.special.chebyt(N) throw a ‘TypeError’ when N > 64

- #6727: Documentation for scipy.stats.norm.fit is incorrect

- #6764: Documentation for scipy.spatial.Delaunay is partially incorrect

- #6811: scipy.spatial.SphericalVoronoi fails for large number of points

- #6841: spearmanr fails when nan_policy=’omit’ is set

- #6869: Currently in gaussian_kde, the logpdf function is calculated…

- #6875: SLSQP inconsistent handling of invalid bounds

- #6876: Python stopped working (Segfault?) with minimum/maximum filter…

- #6889: dblquad gives different results under scipy 0.17.1 and 0.18.1

- #6898: BUG: dblquad ignores error tolerances

- #6901: Solving sparse linear systems in CSR format with complex values

- #6903: issue in spatial.distance.pdist docstring

- #6917: Problem in passing drop_rule to scipy.sparse.linalg.spilu

- #6926: signature mismatches for LowLevelCallable

- #6961: Scipy contains shebang pointing to /usr/bin/python and /bin/bash…

- #6972: BUG: special: generate_ufuncs.py is broken

- #6984: Assert raises test failure for test_ill_condition_warning

- #6990: BUG: sparse: Bad documentation of the k argument in sparse.linalg.eigs

- #6991: Division by zero in linregress()

- #7011: possible speed improvment in rv_continuous.fit()

- #7015: Test failure with Python 3.5 and numpy master

- #7055: SciPy 0.19.0rc1 test errors and failures on Windows

- #7096: macOS test failues for test_solve_continuous_are

- #7100: test_distance.test_Xdist_deprecated_args test error in 0.19.0rc2

### Pull requests for 0.19.0

- #2908: Scipy 1.0 Roadmap

- #3174: add b-splines

- #4606: ENH: Add a unit impulse waveform function

- #5608: Adds keyword argument to choose faster convolution method

- #5647: ENH: Faster count_neighour in cKDTree / + weighted input data

- #6021: Netcdf append

- #6058: ENH: scipy.signal - Add stft and istft

- #6059: ENH: More accurate signal.freqresp for zpk systems

- #6195: ENH: Cython interface for special

- #6234: DOC: Fixed a typo in ward() help

- #6261: ENH: add docstring and clean up code for signal.normalize

- #6270: MAINT: special: add tests for cdflib

- #6271: Fix for scipy.cluster.hierarchy.is_isomorphic

- #6273: optimize: rewrite while loops as for loops

- #6279: MAINT: Bessel tweaks

- #6291: Fixes gh-6219: remove runtime warning from genextreme distribution

- #6294: STY: Some PEP8 and cleaning up imports in stats/_continuous_distns.py

- #6297: Clarify docs in misc/__init__.py

- #6300: ENH: sparse: Loosen input validation for diags with empty inputs

- #6301: BUG: standardizes check_finite behavior re optional weights,…

- #6303: Fixing example in _lazyselect docstring.

- #6307: MAINT: more improvements to gammainc/gammaincc

- #6308: Clarified documentation of hypergeometric distribution.

- #6309: BUG: stats: Improve calculation of the Anderson-Darling statistic.

- #6315: ENH: Descending order of x in PPoly

- #6317: ENH: stats: Add support for nan_policy to stats.median_test

- #6321: TST: fix a typo in test name

- #6328: ENH: sosfreqz

- #6335: Define LinregressResult outside of linregress

- #6337: In anderson test, added support for right skewed gumbel distribution.

- #6341: Accept several spellings for the curve_fit max number of function…

- #6342: DOC: cluster: clarify hierarchy.linkage usage

- #6352: DOC: removed brentq from its own ‘see also’

- #6362: ENH: stats: Use explicit formulas for sf, logsf, etc in weibull…

- #6369: MAINT: special: add a comment to hyp0f1_complex

- #6375: Added the multinomial distribution.

- #6387: MAINT: special: improve accuracy of ellipj’s dn at quarter…

- #6388: BenchmarkGlobal - getting it to work in Python3

- #6394: ENH: scipy.sparse: add save and load functions for sparse matrices

- #6400: MAINT: moves global benchmark run from setup_cache to track_all

- #6403: ENH: seed kwd for basinhopping. Closes #6278

- #6404: ENH: signal: added irrnotch and iirpeak functions.

- #6406: ENH: special: extend sici/shichi to complex arguments

- #6407: ENH: Window functions should not accept non-integer or negative…

- #6408: MAINT: _differentialevolution now uses _lib._util.check_random_state

- #6427: MAINT: Fix gmpy build & test that mpmath uses gmpy

- #6439: MAINT: ndimage: update callback function c api

- #6443: BUG: Fix volume computation in incremental mode

- #6447: Fixes issue #6413 - Minor documentation fix in the entropy function…

- #6448: ENH: Add halfspace mode to Qhull

- #6449: ENH: rtol and atol for differential_evolution termination fixes…

- #6453: DOC: Add some See Also links between similar functions

- #6454: DOC: linalg: clarify callable signature in ordqz

- #6457: ENH: spatial: enable non-double dtypes in squareform

- #6459: BUG: Complex matrices not handled correctly by expm_multiply…

- #6465: TST DOC Window docs, tests, etc.

- #6469: ENH: linalg: better handling of infinite eigenvalues in eig/eigvals

- #6475: DOC: calling interp1d/interp2d with NaNs is undefined

- #6477: Document magic numbers in optimize.py

- #6481: TST: Supress some warnings from test_windows

- #6485: DOC: spatial: correct typo in procrustes

- #6487: Fix Bray-Curtis formula in pdist docstring

- #6493: ENH: Add covariance functionality to scipy.optimize.curve_fit

- #6494: ENH: stats: Use log1p() to improve some calculations.

- #6495: BUG: Use MST algorithm instead of SLINK for single linkage clustering

- #6497: MRG: Add minimum_phase filter function

- #6505: reset scipy.signal.resample window shape to 1-D

- #6507: BUG: linkage: Raise exception if y contains non-finite elements

- #6509: ENH: _lib: add common machinery for low-level callback functions

- #6520: scipy.sparse.base.__mul__ non-numpy/scipy objects with ‘shape’…

- #6522: Replace kl_div by rel_entr in entropy

- #6524: DOC: add next_fast_len to list of functions

- #6527: DOC: Release notes to reflect the new covariance feature in optimize.curve_fit

- #6532: ENH: Simplify _cos_win, document it, add symmetric/periodic arg

- #6535: MAINT: sparse.csgraph: updating old cython loops

- #6540: DOC: add to documentation of orthogonal polynomials

- #6544: TST: Ensure tests for scipy._lib are run by scipy.test()

- #6546: updated docstring of stats.linregress

- #6553: commited changes that I originally submitted for scipy.signal.cspline…

- #6561: BUG: modify signal.find_peaks_cwt() to return array and accept…

- #6562: DOC: Negative binomial distribution clarification

- #6563: MAINT: be more liberal in requiring numpy

- #6567: MAINT: use xrange for iteration in differential_evolution fixes…

- #6572: BUG: “sp.linalg.solve_discrete_are” fails for random data

- #6578: BUG: misc: allow both cmin/cmax and low/high params in bytescale

- #6581: Fix some unfortunate typos

- #6582: MAINT: linalg: make handling of infinite eigenvalues in ordqz…

- #6585: DOC: interpolate: correct seealso links to ndimage

- #6588: Update docstring of scipy.spatial.distance_matrix

- #6592: DOC: Replace ‘first’ by ‘smallest’ in mode

- #6593: MAINT: remove scipy.weave submodule

- #6594: DOC: distance.squareform: fix html docs, add note about dtype…

- #6598: [DOC] Fix incorrect error message in medfilt2d

- #6599: MAINT: linalg: turn a solve_discrete_are test back on

- #6600: DOC: Add SOS goals to roadmap

- #6601: DEP: Raise minimum numpy version to 1.8.2

- #6605: MAINT: ‘new’ module is deprecated, don’t use it

- #6607: DOC: add note on change in wheel dependency on numpy and pip…

- #6609: Fixes #6602 - Typo in docs

- #6616: ENH: generalization of continuous and discrete Riccati solvers…

- #6621: DOC: improve cluster.hierarchy docstrings.

- #6623: CS matrix prune method should copy data from large unpruned arrays

- #6625: DOC: special: complete documentation of eval_* functions

- #6626: TST: special: silence some deprecation warnings

- #6631: fix parameter name doc for discrete distributions

- #6632: MAINT: stats: change some instances of special to sc

- #6633: MAINT: refguide: py2k long integers are equal to py3k integers

- #6638: MAINT: change type declaration in cluster.linkage, prevent overflow

- #6640: BUG: fix issue with duplicate values used in cluster.vq.kmeans

- #6641: BUG: fix corner case in cluster.vq.kmeans for large thresholds

- #6643: MAINT: clean up truncation modes of dendrogram

- #6645: MAINT: special: rename *_roots functions

- #6646: MAINT: clean up mpmath imports

- #6647: DOC: add sqrt to Mahalanobis description for pdist

- #6648: DOC: special: add a section on cython_special to the tutorial

- #6649: ENH: Added scipy.spatial.distance.directed_hausdorff

- #6650: DOC: add Sphinx roles for DOI and arXiv links

- #6651: BUG: mstats: make sure mode(…, None) does not modify its input

- #6652: DOC: special: add section to tutorial on functions not in special

- #6653: ENH: special: add the Wright Omega function

- #6656: ENH: don’t coerce input to double with custom metric in cdist…

- #6658: Faster/shorter code for computation of discordances

- #6659: DOC: special: make __init__ summaries and html summaries match

- #6661: general.rst: Fix a typo

- #6664: TST: Spectral functions’ window correction factor

- #6665: [DOC] Conditions on v in RectSphereBivariateSpline

- #6668: DOC: Mention negative masses for center of mass

- #6675: MAINT: special: remove outdated README

- #6677: BUG: Fixes computation of p-values.

- #6679: BUG: optimize: return correct Jacobian for method ‘SLSQP’ in…

- #6680: ENH: Add structural rank to sparse.csgraph

- #6686: TST: Added Airspeed Velocity benchmarks for SphericalVoronoi

- #6687: DOC: add section “deciding on new features” to developer guide.

- #6691: ENH: Clearer error when fmin_slsqp obj doesn’t return scalar

- #6702: TST: Added airspeed velocity benchmarks for scipy.spatial.distance.cdist

- #6707: TST: interpolate: test fitpack wrappers, not _impl

- #6709: TST: fix a number of test failures on 32-bit systems

- #6711: MAINT: move function definitions from __fitpack.h to _fitpackmodule.c

- #6712: MAINT: clean up wishlist in stats.morestats, and copyright statement.

- #6715: DOC: update the release notes with BSpline et al.

- #6716: MAINT: scipy.io.wavfile: No infinite loop when trying to read…

- #6717: some style cleanup

- #6723: BUG: special: cast to float before in-place multiplication in…

- #6726: address performance regressions in interp1d

- #6728: DOC: made code examples in integrate tutorial copy-pasteable

- #6731: DOC: scipy.optimize: Added an example for wrapping complex-valued…

- #6732: MAINT: cython_special: remove errprint

- #6733: MAINT: special: fix some pyflakes warnings

- #6734: DOC: sparse.linalg: fixed matrix description in bicgstab doc

- #6737: BLD: update cythonize.py to detect changes in pxi files

- #6740: DOC: special: some small fixes to docstrings

- #6741: MAINT: remove dead code in interpolate.py

- #6742: BUG: fix `linalg.block_diag` to support zero-sized matrices.

- #6744: ENH: interpolate: make PPoly.from_spline accept BSpline objects

- #6746: DOC: special: clarify use of Condon-Shortley phase in sph_harm/lpmv

- #6750: ENH: sparse: avoid densification on broadcasted elem-wise mult

- #6751: sinm doc explained cosm

- #6753: ENH: special: allow for more fine-tuned error handling

- #6759: Move logsumexp and pade from scipy.misc to scipy.special and…

- #6761: ENH: argmax and argmin methods for sparse matrices

- #6762: DOC: Improve docstrings of sparse matrices

- #6763: ENH: Weighted tau

- #6768: ENH: cythonized spherical Voronoi region polygon vertex sorting

- #6770: Correction of Delaunay class’ documentation

- #6775: ENH: Integrating LAPACK “expert” routines with conditioning warnings…

- #6776: MAINT: Removing the trivial f2py warnings

- #6777: DOC: Update rv_continuous.fit doc.

- #6778: MAINT: cluster.hierarchy: Improved wording of error msgs

- #6786: BLD: increase minimum Cython version to 0.23.4

- #6787: DOC: expand on `linalg.block_diag` changes in 0.19.0 release…

- #6789: ENH: Add further documentation for norm.fit

- #6790: MAINT: Fix a potential problem in nn_chain linkage algorithm

- #6791: DOC: Add examples to scipy.ndimage.fourier

- #6792: DOC: fix some numpydoc / Sphinx issues.

- #6793: MAINT: fix circular import after moving functions out of misc

- #6796: TST: test importing each submodule. Regression test for gh-6793.

- #6799: ENH: stats: Argus distribution

- #6801: ENH: stats: Histogram distribution

- #6803: TST: make sure tests for `_build_utils` are run.

- #6804: MAINT: more fixes in loggamma

- #6806: ENH: Faster linkage for ‘centroid’ and ‘median’ methods

- #6810: ENH: speed up upfirdn and resample_poly for n-dimensional arrays

- #6812: TST: Added ConvexHull asv benchmark code

- #6814: ENH: Different extrapolation modes for different dimensions in…

- #6826: Signal spectral window default fix

- #6828: BUG: SphericalVoronoi Space Complexity (Fixes #6811)

- #6830: RealData docstring correction

- #6834: DOC: Added reference for skewtest function. See #6829

- #6836: DOC: Added mode=’mirror’ in the docstring for the functions accepting…

- #6838: MAINT: sparse: start removing old BSR methods

- #6844: handle incompatible dimensions when input is not an ndarray in…

- #6847: Added maxiter to golden search.

- #6850: BUG: added check for optional param scipy.stats.spearmanr

- #6858: MAINT: Removing redundant tests

- #6861: DEP: Fix escape sequences deprecated in Python 3.6.

- #6862: DOC: dx should be float, not int

- #6863: updated documentation curve_fit

- #6866: DOC : added some documentation to j1 referring to spherical_jn

- #6867: DOC: cdist move long examples list into Notes section

- #6868: BUG: Make stats.mode return a ModeResult namedtuple on empty…

- #6871: Corrected documentation.

- #6874: ENH: gaussian_kde.logpdf based on logsumexp

- #6877: BUG: ndimage: guard against footprints of all zeros

- #6881: python 3.6

- #6885: Vectorized integrate.fixed_quad

- #6886: fixed typo

- #6891: TST: fix failures for linalg.dare/care due to tightened test…

- #6892: DOC: fix a bunch of Sphinx errors.

- #6894: TST: Added asv benchmarks for scipy.spatial.Voronoi

- #6908: BUG: Fix return dtype for complex input in spsolve

- #6909: ENH: fftpack: use float32 routines for float16 inputs.

- #6911: added min/max support to binned_statistic

- #6913: Fix 6875: SLSQP raise ValueError for all invalid bounds.

- #6914: DOCS: GH6903 updating docs of Spatial.distance.pdist

- #6916: MAINT: fix some issues for 32-bit Python

- #6924: BLD: update Bento build for scipy.LowLevelCallable

- #6932: ENH: Use OrderedDict in io.netcdf. Closes gh-5537

- #6933: BUG: fix LowLevelCallable issue on 32-bit Python.

- #6936: BUG: sparse: handle size-1 2D indexes correctly

- #6938: TST: fix test failures in special on 32-bit Python.

- #6939: Added attributes list to cKDTree docstring

- #6940: improve efficiency of dok_matrix.tocoo

- #6942: DOC: add link to liac-arff package in the io.arff docstring.

- #6943: MAINT: Docstring fixes and an additional test for linalg.solve

- #6944: DOC: Add example of odeint with a banded Jacobian to the integrate…

- #6946: ENH: hypergeom.logpmf in terms of betaln

- #6947: TST: speedup distance tests

- #6948: DEP: Deprecate the keyword “debug” from linalg.solve

- #6950: BUG: Correctly treat large integers in MMIO (fixes #6397)

- #6952: ENH: Minor user-friendliness cleanup in LowLevelCallable

- #6956: DOC: improve description of ‘output’ keyword for convolve

- #6957: ENH more informative error in sparse.bmat

- #6962: Shebang fixes

- #6964: DOC: note argmin/argmax addition

- #6965: BUG: Fix issues passing error tolerances in dblquad and tplquad.

- #6971: fix the docstring of signaltools.correlate

- #6973: Silence expected numpy warnings in scipy.ndimage.interpolation.zoom()

- #6975: BUG: special: fix regex in generate_ufuncs.py

- #6976: Update docstring for griddata

- #6978: Avoid division by zero in zoom factor calculation

- #6979: BUG: ARE solvers did not check the generalized case carefully

- #6985: ENH: sparse: add scipy.sparse.linalg.spsolve_triangular

- #6994: MAINT: spatial: updates to plotting utils

- #6995: DOC: Bad documentation of k in sparse.linalg.eigs See #6990

- #6997: TST: Changed the test with a less singular example

- #7000: DOC: clarify interp1d ‘zero’ argument

- #7007: BUG: Fix division by zero in linregress() for 2 data points

- #7009: BUG: Fix problem in passing drop_rule to scipy.sparse.linalg.spilu

- #7012: speed improvment in _distn_infrastructure.py

- #7014: Fix Typo: add a single quotation mark to fix a slight typo

- #7021: MAINT: stats: use machine constants from np.finfo, not machar

- #7026: MAINT: update .mailmap

- #7032: Fix layout of rv_histogram docs

- #7035: DOC: update 0.19.0 release notes

- #7036: ENH: Add more boundary options to signal.stft

- #7040: TST: stats: skip too slow tests

- #7042: MAINT: sparse: speed up setdiag tests

- #7043: MAINT: refactory and code cleaning Xdist

- #7053: Fix msvc 9 and 10 compile errors

- #7060: DOC: updated release notes with #7043 and #6656

- #7062: MAINT: Change defaut STFT boundary kwarg to “zeros”

- #7064: Fix ValueError: path is on mount ‘X:’, start on mount ‘D:’ on…

- #7067: TST: Fix PermissionError: [Errno 13] Permission denied on Windows

- #7068: TST: Fix UnboundLocalError: local variable ‘data’ referenced…

- #7069: Fix OverflowError: Python int too large to convert to C long…

- #7071: TST: silence RuntimeWarning for nan test of stats.spearmanr

- #7072: Fix OverflowError: Python int too large to convert to C long…

- #7084: TST: linalg: bump tolerance in test_falker

- #7095: TST: linalg: bump more tolerances in test_falker

- #7101: TST: Relax solve_continuous_are test case 2 and 12

- #7106: BUG: stop cdist “correlation” modifying input

- #7116: Backports to 0.19.0rc2