Releases: stan-dev/math
v3.3.0 (28 July 2020)
Math 3.3.0 Release Notes
- New functions is_nonnegative and is_positive_finite to parallel check_nonnegative and check_positive_finite. They signal failure by returning false instead of by throwing std::domain_error.(#1798)
- Functions check_not_nan, check_nonnegative, check_positive, check_finite, check_positive_finite, is_not_nan, is_nonnegative, is_positive, is_scal_finite, and is_positive_finite now operate on nested containers.(#1798)
- Clearer error messages when csr_u_to_z is called with out of range indices.(#1798)
- check_positive now throws domain error when given an unsigned 0.(#1798)
- Adds documentation for the OpenCL modules.(#1804)
- OpenCL kernel for matrix-vector multiply is replaced with kernel generator.(#1816)
- Added optional broadcasting to kernel generator.(#1817)
- Adds additional testing for checking type traits of Eigen objects and modifies type traits for Eigen matrices so detecting an Eigen matrix will only be true if neither rows or columns are equal to 1(#1827)
- Generalized functions with names starting with letters e-l to accept general Eigen expressions.(#1828)
- Updates to Eigen 3.3.7(#1832)
- extended Eigen scalar traits to complex autodiff types to enable complex autodiff matrix operations(#1838)
- added eigenvalues(), eigenvectors(), pseudo_eigenvalues(), pseudo_eigenvectors(), and complex_schur_decompose() functions(#1838)
- Added function for more efficient extraction of values and derivatives from Eigen containers of autodiff variables(#1841)
- Generalized function with names starting with m to p to accept geenral Eigen expressions.(#1845)
- Generalized functions with names starting with q and r.(#1847)
- Generalized functions starting with s and t.(#1848)
- Cleaned up the use of Boost headers.(#1851)
- Fixed issue where doing nested gradients while there is an ongoing chain would cause segfaults.(#1856)
- Added support for
int add(int,int)
andreal add(real,real)
.(#1858) - Added OpenCL support for prim versions of add, col, inv, inv_cloglog, inv_logit, inv_sqrt, inv_square, row, dims, cols.(#1859)
- Added argument checks to OpenCL version of block() and renamed
is_valid_expression
tois_valid_kernel_expression
andrequire_all_valid_expressions*
torequire_all_valid_kernel_expressions*
.(#1859) - Added floating point classification functions (
isfinite
,isnan
,isinf
) to kernel generator.(#1860) - Added diagonal operation to kernel generator.(#1862)
- Adds holder operation to kernel generator.(#1865)
- Added matrix concatenation oprations (
append_row
andappend_col
) to kernel generator.(#1867) - Add two functions for hmm models that (i) evaluate the marginal posterior probability of each latent state and (ii) sample latent states from their posterior distribution.(#1868)
- Renamed elewise_multiplication/elewise_division to elt_multiply/elt_divide in the kernel generator and added OpenCL support to /prim functions crossprod, tcrossprod, fabs, log1m_inv_logit, logit, divide(#1869)
- Updated
cpplint
to conform topypi
(#1871) value_of
andvalue_of_rec
now can now return Eigen expressions.(#1872)- Reverse mode differentiation of
stan::math::eigenvectors_sym
andstan::math::eigenvalues_sym
now returns symmetric matrix (previously lower triangular).(#1878) - Refactored Jenkins CI stages.(#1881)
- Implements both branches of the Lambert W function.(#1882)
- Added -Wno-int-in-bool-context and -Wno-attributes compiler flags to silence warnings due to compiler bugs.(#1885)
- Fixed bug causing wrong log-probability values to be returned when using the lognormal distribution with an integer argument for sigma.(#1894)
- Unified EXPECT_MATRIX_* and EXPECT_STD_VECTOR_* macros in the Math unit tests.(#1895)
- Added Github Actions to CI.(#1898)
- Generalized GLM functions so they accept arbitrary Eigen expressions.(#1899)
- Added framework for vectorizing/broadcasting binary scalar functions, and utilities for testing the values and gradients of these(#1907)
- Fixed a bug where the appropriate specialization for the beta function was not called for forward-mode autodiff variables(#1909)
- Added holder operation for Eigen expressions.
value_of
,value_of_rec
,as_column_vector_or_scalar
andas_array_or_scalar
now work with rvalue inputs.(#1914) - Generalized functions related to Bernoulli distribution to accept Eigen expressions.(#1916)
- Vectorized binary functions extended to take complex variables as inputs(#1917)
- Fixed a bug that resulted in wrong result when constructing
matrix_cl
from row-major matrix or expression.(#1919) - Generalized functions related to Bernoulli distribution to accept Eigen expressions.(#1925)
- Add log-parametrized multinomial distribution.(#1927)
- Replaced OpenCL kernels for
bernoulli_logit_glm_lpmf
andpoisson_log_glm_lpmf
with kernel generator implementations.(#1929) - Generalized functions related to beta distribution to accept general Eigen expressions.(#1930)
- Fixed one sided checks in
test_repeat_as_vector
in distribution tests.(#1933) - Simplified using
operands_and_partials
by makingbroadcast_array
sum the argument when assigned to.(#1934) - Extended check_matching_dims to handle arbitrary containers.(#1936)
- Bugfix for require style templates(#1942)
- Fix segfaults when compiling
mix
tests forpow
on Windows with g++ 4.9.3(#1951) - Extends binary vectorisation framework to take combinations of
real
andint
containers as inputs(#1966) - Fixed generated OpenCL kernels using colwise reductions to work on OpenCL implementations that require local variables to be declared at the top level of kernel function.(#1975)
- Added variadic ODE interfaces (
ode_bdf
,ode_adams
,ode_rk45
andode_bdf_tol
,ode_adams_tol
,
ode_rk45_tol
) and deprecated the old interfaces (integrate_ode_rk45
,integrate_ode_bdf
,integrate_ode_adams
). It is important to switch to the new interfaces because the deprecated interfaces are much slower (we've seen up to 30%) than they previously were (#1641)
v3.2.0 (22 April 2020)
Math 3.2.0 Release Notes
Feature summary:
- Added new
reduce_sum
utility for parallelizing calculations over multiple cores of one computer - Sundials upgrade to version 5.2.0
- Support for size 0 matrices [Ben: This needs checked by someone in release candidate, it might be just a Math-facing feature]
- discrete_range_lpmf/lcdf/lccdf/rngs/etc. added for uniform discrete random variable
- Added row vector, array and int_array construction utilities
- Adds reverse function for vectors, row vectors, and std::vectors
- Added release notes section to pull request to make assembling release notes easier (this must be filled out for new pulls)
- Added apply operator (standin for C++17 apply)
- Added support for complex numbers at all levels of the autodiff library
Bugfix summary:
- Fixed problems with vectorizing neg_binomial_* functions that lead to wrong answers
- Improved lbeta to be more numerically stable with one large and one small argument
- Improved numerical stability with binomial_coefficient_log, neg_binomial_2_lpmf, and neg_binomial_2_log_lpmf computations
- Fixed problem with wrong gradients for large arguments to log_sum_exp
- Fixed bug where normal_id_glm did not work with a sigma is not an autodiff type
- Fixed problem with makefiles on Windows
- Fix ode gradients with respect to t0
There were also extensive work in various parts of the Math library adding docs, cleaning up distribution functions, adding tests, generalizing functions to work with special Eigen temporary types, working with new template functions (return_type_t
, etc.), and otherwise making quality of life improvements.
Thanks to everyone who submitted and reviewed pull requests! The list of pull request submitters for this release are (in no particular order): @t4c1, @mcol, @martinmodrak, @rok-cesnovar, @serban-nicusor-toptal, @SteveBronder, @kedartal, @wds15, @bob-carpenter, @peterwicksstringfield, @andrjohns, @pgree, @IvanYashchuk, and @bbbales2.
Pull request details:
Contributor | Title |
---|---|
t4c1 : (#1824) | Add unary operations minus and logical negation to kernel generator |
wds15 : (#1819) | Feature/issue 1818 upgrade sundials 520 |
SteveBronder : (#1813) | adds reduce_sum and tests |
t4c1 : (#1802) | Add extended kernel generator docs |
t4c1 : (#1801) | Add support for device functions to kernel generator |
SteveBronder : (#1800) | Adds auxilary functions needed for reduce_sum |
t4c1 : (#1797) | Add broadcasting to kernel generator |
SteveBronder : (#1791) | adds an apply function and cleans adj_jac_apply to use it |
peterwicksstringfield : (#1780) | Feature/elementwise check |
bob-carpenter : (#1774) | Feature/0123 complex funs |
t4c1 : (#1769) | Add transposition to kernel generator |
t4c1 : (#1767) | avoid redundant buffer allocations in kernel generator |
t4c1 : (#1751) | Allow kernel generator to calculate multiple outputs in single kernel |
t4c1 : (#1740) | Add colwise reductions to kernel generator |
bob-carpenter : (#1736) | Feature/1734 return scalar meta |
andrjohns : (#1727) | Eigen::Map and elementwise functions |
t4c1 : (#1726) | Bugfix common subexpression elimination in kernel generator |
bob-carpenter : (#1720) | Feature/0123 complex spec |
mcol : (#1716) | Add discrete_range_cdf, discrete_range_lcdf and discrete_range_lccdf |
martinmodrak : (#1706) | Using local_nested_autodiff for all instances of nested autodiff |
mcol : (#1680) | Add discrete_range_rng(lower, upper) and discrete_range_lpmf |
wds15 : (#1675) | avoid vari on chain-stack if var is constructed from an arithmetic type |
martinmodrak : (#1657) | Improved behavior of expect_near_rel |
mcol : (#1650) | Add reverse |
mcol : (#1636) | Add row vector, array and int_array construction utilities |
t4c1 : (#1623) | Add rowwise reductions to kernel generator |
martinmodrak : (#1575) | Additional tests for distributions |
martinmodrak : (#1830) | More stable implementation of neg_binomial_2_log_lpmf |
Fixes
Contributor | Title |
---|---|
mitzimorris : (#1842) | Bugfix/1839 make shell linux |
bob-carpenter : (#1837) | return value type for complex abs; fixes #1836 |
bbbales2 : (#1834) | Fix ode gradients with respect to t0 (Issue #1833) |
rok-cesnovar : (#1825) | Add licensing info to log_modified_bessel_first_kind |
bbbales2 : (#1810) | Added arithmetic version of pow (Fixes: #1809) |
t4c1 : (#1807) | fixed normal_id_glm for const sigma |
rok-cesnovar : (#1795) | Makefiles: Add $(strip) to findfiles function |
SteveBronder : (#1794... |
v3.1.1 (29 January 2020)
Bugfix to prevent functions from returning Eigen expressions.
v3.1.0 (24 January 2020)
Features
We upgraded the Boost library to version 1.72.0.
SteveBonder put in a ton of effort to refactor the math docs site and clean up the doxygen. Steve also added var specialization for matrix_cl. t4c1 generalized signatures of element-wise matrix functions which now accept and return expressions, added broadcasting to the GLM functions and extended that functionality to GPU GLM function. He also added the JIT compilation for dynamically generating OpenCL kernels that is now able to deal with matrices, scalars, unary and binary element-wise matrix operations and the block() function. This will enable much faster adoptation of GPU support for all remaining Stan Math function. Tadej also optimized the matrix_cl constructor for the case of constructing from rvalue and extened matrix_cl to accept Eigen::Map.
peterwicksstringfield added the specialized derivative for the for matrix/scalar and the matrix power function. wds15 added a change to the makefiles that enables easier building of custom .cpp files that use Stan Math. mcol added implementations of std_normal_cdf, std_normal_lcdf, std_normal_lccdf and std_normal_rng. rok-cesnovar simplified turning on threading in the makefiles.
Developer-aimed features
bob-carpenter extended the autodiff test framework for ternary functions and consolidated most of rev and fwd tests into mix. Bob also improved test coverage for all real-valued functions of two or fewer arguments. rok-cesnovar flattened the arr,scal and mat subfolders to simplify the codebase and renamed the length() and length_mvt() functions to size() and size_mvt(), cleaned up the unit test names and added a restriction to enforce unique test names in the Stan Math codebase.
mcol cleaned up the use of constants in the codebase and added missing documentation for template parameters. SteveBonder extended with require metaprogramming traits for is_container and is_string_convertible.
Fixes
PhilClemson improved numerical precision of normal lcdf. martinmodrak fixed some notable edge cases for neg_binomial_2 and neg_binomial_2_log. SteveBonder fixed a bug with the beta_binomial_lpmf function. rok-cesnovar fixed a bug in poisson_log_glm that caused the sampling statement fails to not fit and resolved include-what-you-use issues in the codebase.
mcol has cleaned up a lot of the codebase: simplifiying and optimizing the exp_mod_normal_*, VectorBuilder, pareto_type_2, poisson_log_lpmf, poisson_lpmf, beta binomial CDF/CCDF functions. Marco also did an amazing job fixing and cleaning the behaviour and adding testing for edge cases in:
- corr_matrix_transform
- determinant
- hypergeometric_lpmf
- inverse
- inverse_spd
- log_determinant
- log_determinant_spd
- log_sum_exp
- matrix_exp_multiply
- matrix_exp_pade
- mdivide_left_ldlt
- mdivide_right_ldlt
- scale_matrix_exp_multiply
- singular_values
- trace_inv_quad_form_ldlt
- trace_gen_inv_quad_form_ldlt
- von_mises_lpdf
- von_mises_rng
Last but not least he cleaned up the use of trailing underscores in our codebase, compiler warnings when building the Kinsol library, removed the use of some boost functions that are now available in C++11, cleaned up some uninitialized variable in tests, fixed the bug that cause overpromotion in muliply functions, cleaned up unnecessary checks in _lpmf/_lpdf functions, renamed dirichlet_lpmf to dirichlet_lpdf and stan::math::domain_error to throw_domain_error, removed uses of boost::promote_args and boost/math/tools/promotion.hpp, removed the unused functions stan::math::sub(), locscale_contrain and locscale_free.
martinmodrak fixed some notable edge cases for neg_binomial_2 and neg_binomial_2_log. wds15 fixed the static init order bug. bgoodri fixed a bug that issued a warning for catching without a constant reference. peterwicksstringfield cleaned up some potentialy misleading docs in negated require template metaprograms and other documentation and also cleaned up the use of ibeta and fixed the loop order in loops dealing with Eigen matrics.seantalts refactored integrate_1d to use std::ostream* instead of std::ostream&. mitzimorris cleaned up the doxygen config file of unneeded directives.
v3.0.0 (18 October 2019)
v3.0.0 (18 October 2019)
Features
PR #1180 brought the Intel TBB into Stan as a dependency, which we will be using in the future for CPU parallelism all across Stan! The TBB is an excellent framework that will let Stan utilize nested parallelism across the algorithms and gradient evaluations. The licensing for the Intel TBB library is under the Apache 2.0 license. This dependency implies an additional restriction as compared to the new BSD license alone. The Apache 2.0 license is incompatible with GPL-2 licensed code if the software if distributing the software as a unitary binary. Refer to the Apache 2.0 evaluation page on the Stan Math wiki.
With @t4c1's large contributions, we now have GPU/OpenCL support for many of our glm functions! @rok-cesnovar added an OpenCL reverse mode specialization for multiplication
and mdivide_left_tri
while @t4c1 added the OpenCL specialization for gp_exp_quad_cov
.
Some other nice features include @andrjohns vectorizing the Dirichlet distribution, @IvanYashchuk implementing a reverse mode specialization for inverse, and @yizhang-yiz with @charlesm93 adding fixed point algebra solvers based on Sundial's KINSOL scheme.
Internally, @bob-carpenter added a new AD testing framework, which both replaced 18,539 of code with 2,500 and simultaneously increased our test coverage! @SteveBronder added a type traits metaprogramming scheme so that we can make use of more generic templating in a lot of our code. Last but not least, @andrjohns standardized a lot of our code to use standard library functions instead of our hand-rolled methods.
We are now using TBB for threading in map_rect. With performance tests on a non-trivial map_rect model we have observed speedups of up to 20% on Windows, 70% on Linux and 30% on MacOS. Speedups were observed for both Intel and AMD CPUs. On MacOS we observed 25-30% speedups even for single threaded models when using tbbmalloc.
Fixes
@wds15 patched the way we use lgamma
so that it's faster in concurrent settings. A speedy patch came in from @t4c1 when @jgabry reported intercept only glm specializations with size zero matrices could give the wrong output. We had several patches and code cleanups in the OpenCL code, mostly testing and improving the type trait system around the OpenCL methods. @nhuurre patched log_sum_exp
and log_diff_exp
so that the methods respected boundary conditions a bit better. Stan also now uses clang-tidy,
which gives us an automated way to keep the code base standardized.
Features List
Contributor | Title |
---|---|
bob-carpenter : (#1384) | Feature/1382 remove fvar nan checks |
wds15 : (#1376) | integrate Intel TBB |
yizhang-yiz : (#1371) | Feature fp solver |
t4c1 : (#1366) | Gpu ordered_logistic_glm_lpmf and categorical_logit_glm_lpmf |
t4c1 : (#1365) | Gpu neg_binomial_2_log_glm |
andrjohns : (#1363) | Issue 1362 - Vectorised Dirichlet distribution |
rok-cesnovar : (#1355) | Feature/issue 1354 Implement matrix_cl overloads for rep_vector, rep_row_vector and rep_matrix |
rok-cesnovar : (#1353) | Revert GPU caching |
t4c1 : (#1350) | Gpu poisson bernoulli glms |
SteveBronder : (#1344) | Adds require_* template type traits |
charlesm93 : (#1339) | Feature/issue 1115 newton solver |
IvanYashchuk : (#1334) | Implemented reverse mode for inverse |
t4c1 : (#1333) | Implement normal_id_glm_lpdf in OpenCL |
rok-cesnovar : (#1329) | Feature/Issue 1294 Rewrite the test-math-dependencies script in Python |
SteveBronder : (#1323) | Adds const ref and ref returns for to_var/fvar methods |
andrjohns : (#1318) | Issue 1010 - Replace hand-coded math with standard library c++11 functions |
rok-cesnovar : (#1303) | Feature/issue 1221 Use OpenCL in rev/mdivide_left_tri |
andrjohns : (#1296) | issue 1279 - Remove deprecated Eigen content from math headers |
t4c1 : (#1293) | OpenCL matrix multiplication optimizations |
andrjohns : (#1283) | Refactor rev/mat with eigen plugin methods |
SteveBronder : (#1281) | Add a double template to matrix_cl |
bob-carpenter : (#1262) | Feature/1258 ad test core |
t4c1 : (#1252) | Implement ordinal regression GLM (ordered_logistic_glm_lpmf) |
t4c1 : (#1206) | opencl prim gp_exp_quad_cov |
rok-cesnovar : (#1305) | Feature/issue 1221 Use OpenCL in rev/multiply |
rok-cesnovar : (#1278) | Feature/1221 OpenCL primitive multiply |
t4c1 : (#1299) | mdivide_right_tri can use OpenCL |
wds15 : (#1180) | Feature/intel tbb lib |
Fixes
Contributor | Title |
---|---|
wds15 : (#1401) | Bugfix/tbb cleanup |
t4c1 : (#1399) | bugfix intercept only GLMs |
wds15 : (#1395) | allow spaces in path leading to stan-directory in makefiles |
[SteveBronder... |
v2.20.0 (18 July 2019)
v2.20.0 (18 July 2019)
New Features
- OpenCL rectangular matrix multiply optimization (#1196)
- Change name of opencl
copy
function (#1217) - Add better doc for all traits (#377)
- Math repo runs tests on Windows (#951)
Bug Fixes
- Length 0 checks should come after checking for mismatched sizes (#336)
- abs(real) translates to C++ but fails to compile (#907)
- prim/mat/meta/is_vector_like.hpp weirdness through check_finite.hpp (#79)
- Clang 4.0.0 fails tests that should fail already (#561)
Other
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)