v3.3.0 (28 July 2020)
serban-nicusor-toptal
released this
28 Jul 09:37
·
7801 commits
to develop
since this release
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)