NEWS
RTMB 1.9 (2026-03-20)
- Special functions have been added:
dchisq(), pchisq(), qchisq(),
pnorm() now supports all arguments (i.e. 'log.p' and 'lower.tail').
- Special functions now pass argument attributes on to the result.
- New autodiff features:
- AD adaptive integration via integrate().
- AD root finding via uniroot().
- Fast AD version of Vectorize().
- Atomic sparse matrix times vector available via TapeConfig().
- Experimental atomic branching via ADoverload('if').
- AD order() now works.
- Change default to TapeConfig(matmul='plain') because 'atomic' could
slow down too many examples.
- New 'tips' vignette.
RTMB 1.8 (2025-10-14)
- Special functions have been added:
pnbinom(), lbeta(), dcauchy()
- Special functions have been improved:
Add 'expon.scaled' argument to Bessel functions. dmvnorm() now allows zero-dim covariance. Fixed dgamma() rate argument.
- Some discrete methods now work with autodiff:
Modulus ('%%'), sort(), findInterval() and taped subsetting by an AD index using '['.
Math group: Added floor, ceiling, trunc.
- Improved splinefun():
Spline derivatives have been generalized to work for *all* parts of the spline including evaluation pooints and knots.
In addition, the spline object now has a 'deriv' argument (like stats).
- Methods that now work for 'adsparse' class:
band(), tril(), triu(), kronecker().
- Sparse matrix exponential expAv() now applies internal rescaling to gain robustness.
In addition, caching can now improve memory efficiency when the same generator is used multiple times.
- New methods for the 'Tape' class:
reorder(), timer(), force.update().
- MakeADFun: Model object now has a force.update() method for better interoperability with the DataEval() function.
An example is given on the '?DataEval' help page.
- RTMB can now be built with preprocessor flag 'EIGEN_USE_BLAS' enabled.
- ADjoint() no longer crashes by errors thrown by user's forward or reverse mode code.