Releases: stan-dev/math
v2.19.1 (18 Apr 2019)
v2.19.1 (18 Apr 2019)
This is a release out of cycle to address a performance bug in v.2.19 (stan-dev/stan#2748)
New Features
- GLM Optimizations, especially for small number of attributes. ( #1185 )
- Simplifies several prim/mat/fun functions using Eigen's vectorisation. (#1092)
The following functions have been changed to use Eigen under the hood, usage remain the same:- add
- add_diag
- apply_scalar_unary
- cholesky_corr_constrain
- columns_dot_product
- cumulative_sum
- diag_post_multiply
- diag_pre_multiply
- divide_columns
- elt_divide
- elt_multiply
- log_softmax
- log_sum_exp
- max
- mean
- min
- prod
- quad_form
- quad_form_diag
- quad_form_sym
- rows_dot_product
- softmax
- subtract
- variance
- Adds two new opencl kernels for operations matrixvector and vectormatrix. (#1192)
Bug Fixes
- Fixing Missing bounds checks in some lpdfs (#1101)
Other
v2.19.0 (20 Mar 2019)
v2.19.0 (20 Mar 2019)
Slow to arrive, but fast to compute: Stan has GPU support!
Stan 2.19 brings GPU-optimized computation to Stan users. The first supported
function is Cholesky decomposition, the main bottleneck of many common
statistical models. Activating GPU support is easy - only a few lines are added
to the configuration and no changes have to be made to the Stan model. Cholesky
decompositions of larger matrices (including their gradients, when dealing with
parameters) are then automatically transferred to the GPU with speedups ranging
from 10 to 30, depending on matrix size and GPU.
Other GPU-optimized matrix algebra primitives and common statistical models are
soon to follow: matrix multiplication, lower triangular inverse,
eigendecomposition, GP covariance functions and several GLMs. The implementation
is based on OpenCL, so it can be used with any GPU and GPU programming-savvy
users can also add their own custom OpenCL kernels.
New Features
- GPU
- Host doxygen API doc on https://mc-stan.org/math/ (#500)
- Makefile completely rewritten (#581, #954, #1041, #1043, #1087)
- Adding
beta_proportion
distribution (#1018) - adjoint vector-Jacobian product form of precomputed gradients for reverse (#876)
- Add alternative inv_logit parameterization to prevent underflow (#874)
Bug Fixes
- Improved derivative for Gamma CDF w.r.t. alpha (#525)
value_of
incorrectly returned the wrong type (#968)sum
incorrectly returned the wrong type (#987)matrix_exp
incorrectly passed the argument by values (#769)- Unit testing with Windows on Jenkins (#1046)
gp_cov_exp_quad
was computing the ARD mixing up rows and cols (#984)- Fixing GoodGammaP for gcc 7.3 (#1063)
Other
- Clarity on what's being tested in Math (one compiler per OS) (#943)
- Updated GitHub templates (#911)
- Improve ODE speed (#1049)
- Fix tests for threading (#1058)
- Upgrade Google Test to v1.8.1 (#1051)
- Upgrade Sundials to v4.1.0 (#1097)
- Matrix exponential action:
- A fast implementation was implemented (#771), but it had errors (#)
- Currently, a slow implementation is in the codebase.
- Improve the codebase:
- Code spacing (#587)
- Using varidic template parameters for
return_type
,partials_return_type
,
andinclude_summands
(#977) - Fixing math constants definitions for Windows (#986)
- Avoid ambiguous instantiation of
math::sqrt()
by implementing fordouble
andint
(#712) - Clean up GPU code:
- Fixing uninitialized values in tests:
- Updating template parameters of matern32 (#981)
- Update
gp_dot_prod_cov
(#979) - Deprecating old GP covariance function names (#756)
- Fixed compiler warnings in
test-headers
(#1110) - Adding required headers (#1106)
- Turn test-math-dependencies warnings into failures on Jenkins (#1078)
- Replace
boost::type_traits
withstd::
versions (#1126) - Fix doxygen errors (#1139)za
- Clean up anaonymous namespace usage (#1006)
- Setting STAN_NUM_THREADS to illegal value should produce an error (#947)
v2.18.1 - Fixes major threading bug in 2.18.0!
v.2.18.1 (22 December 2018)
Bugfix release - fixes major bug in threading where certain thread count and
job size combinations could result in incorrect output. See
https://discourse.mc-stan.org/t/bug-in-map-rect-with-threading-in-stan-2-18-0/7056
for more details.
Bug Fixes
- Fix threading batch size bug (#1075)
v2.18.0 **Contains threading bug with map_rect**
v.2.18.0 (13 July 2018)
This is our first release with parallelism (through C++11 threads or MPI)!
New Features
- Support for MPI parallelization with map_rect
- Support for threaded AD and a threaded map_rect implementation (#809)
- New periodic covariance function (#921)
- Integrated Boost's 1 dimensional integrator (#913)
- Added thin QR decomposition (#900)
- New
add_diag
function for adding a real or vector to the diagonal of a matrix (#871) - New
log_inv_logit_diff
function for the log of the difference of two inverse logits (#856) - New dot product kernel for GPs (#834)
- Vectorized many more RNGs (#833, #722, #622)
- Add
matrix_exp_action
to calculateexp(At)*B
(#830) log_mix
vectorized (#751, #664)- New integrators from CVODES (
integrate_ode_adams
,_bdf
) (#735) - New
std_normal
(#609) - New
std_normal_log
(#728) - New GLM primitive
normal_id_glm
(#665) - New
chol2inv
that computes a matrix's inverse from its Cholesky factor (#649) - New
poisson_log_glm
poisson regression with log link (#647) - New vectorized
ordered_probit
(#645) - New
log_modified_bessel_first_kind
that expands where Bessel 1 function can be used (#640) - New bernoulli logit GLM (#608)
Bug Fixes
- Rising and falling factorial were not accepting negative arguments (#636)
- Fix normalizing constant for LKJ distribution (#628)
Other
- Tweaks to
effective_sample_size
for performance and upstream compatibility (#865) - Switch to sundials package combining CVODES and IDAS, updating versions (#779, #744)
- Now publishing the Math doxygen (http://mc-stan.org/math/)
- Faster
dirichlet_lpdf
accepting more vector types (#788) - Upgrade to Boost 1.66 (#766)
- Improved derivatives for Gamma CDF (#780)
- Sped up
multi_normal_cholesky
(#753) - More efficient
mdivide_right_tri
(#715) - More efficient
integrate_ode_rk45_grad_test
(#714) - Make algebraic solver easier to use (#703, #697)
- Begin thinking about internal compatibility for complex numbers (#643)
- Faster
pow
(#642)
v2.17.1
v2.17.0
v.2.17.0 (05 September 2017)
New Features
- New algebraic solver! (stan-dev/stan#2023, #516)
- append_array now supports vectors of vectors
Other
v2.16.0
v.2.16.0 (15 June 2017)
New Features
- New append_array function
- Add categorical_logit_rng function
Bug Fixes
- Align gamma_* function parameter names with documentation
Other
- Update to Eigen 3.3.3
- Support g++ 4.9
- Fix overload logic in mdivide_left_tri_low so that it calls the var version of mdivide_left_tri where appropriate.
- Check consistent size of state and dy_dt in ode_system
- OperandsAndPartials refactor with new multivariate / nested container support
- Update LLT to inplace decomposition per eigen 3.3 doc
- Disable printf functions from CVODES
v2.15.0
v.2.15.0 (13 April 2017)
New Features
- Efficient blocking algorithm for gradient of the Cholesky (#384)
- Univariate normal distribution on sufficient statistics (#38)
- New to_matrix function for real arrays(
real[]
) (#467) - New specialization of
stan::math::array_builder
for matrix types (#496)
Bug Fixes
- Fixes to hypergeometric functions (#487)
Other
v2.14.0
v2.13.0
v2.13.0 (25 November 2016)
New Features
- vectorization of unary functions (#347)
- specialized gradients for cov_exp_quad for amplitude and/or length-scale
parameters and input data (#353) - math library is consistent with Eigen 3.2.9 and 3.3.0 (#432, #429)
- added choose(n, k) function (#400)
- added bernoulli_logit_rng function (#258)
Bug Fixes
- beta_rng no longer returns NaN
- fixed memory issue with cholesky_decompose in reverse-mode (#415)
- no more multiple definitions when including Stan headers in
multiple source files (#394) - fixed broken _MSC_VER conditionals and remove math.h includes (#370)