Skip to content

v3.3.0 (28 July 2020)

Compare
Choose a tag to compare
@serban-nicusor-toptal 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) and real 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 to is_valid_kernel_expression and require_all_valid_expressions* to require_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 and append_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 to pypi(#1871)
  • value_of and value_of_rec now can now return Eigen expressions.(#1872)
  • Reverse mode differentiation of stan::math::eigenvectors_sym and stan::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 and as_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 and poisson_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 making broadcast_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 for pow on Windows with g++ 4.9.3(#1951)
  • Extends binary vectorisation framework to take combinations of real and int 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 and ode_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)