|
1 | | -# dualr 0.5.0 |
| 1 | +# nabla 0.7.0 |
| 2 | + |
| 3 | +* Added vignette "Higher-Order MLE Analysis" demonstrating third-order |
| 4 | + derivative tensors (`D(f, x, order = 3)`) for computing asymptotic |
| 5 | + skewness of Gamma MLEs, with Monte Carlo validation. |
| 6 | +* Renamed package from `dualr` to `nabla`. The S4 class `dualr` retains its |
| 7 | + name (it describes the object type — a dual number in R). |
| 8 | +* Added composable total derivative operator `D(f)`: |
| 9 | + - `D(f)` returns the derivative of `f` as a new function. |
| 10 | + - `D(f, x)` evaluates the derivative at `x`. |
| 11 | + - `D(f, x, order = k)` applies `D` k times for k-th order derivative tensors. |
| 12 | + - `D(D(f))` composes naturally for higher-order derivatives. |
| 13 | + - Output tensor shape: each application of `D` appends one n-dimension. |
| 14 | + For `f: R^n -> R`: gradient `(n)`, Hessian `(n,n)`, etc. |
| 15 | + For `f: R^n -> R^m`: Jacobian `(m,n)`, `(m,n,n)`, etc. |
| 16 | +* Unified `gradient()`, `hessian()`, and `jacobian()` as thin wrappers |
| 17 | + around `D`, replacing separate seeding strategies with a single composable |
| 18 | + mechanism. This simplifies the codebase at the cost of `O(p)` gradient |
| 19 | + (was `O(1)` passes) and `O(p^2)` Hessian (was `O(p)` passes). |
| 20 | +* Removed deprecated second-order functions: `dual2_variable()`, |
| 21 | + `dual2_constant()`, `value2()`, `first_deriv()`, `second_deriv()`, |
| 22 | + `differentiate2()`. Use `dual_variable_n()`, `dual_constant_n()`, |
| 23 | + `deriv_n()`, and `differentiate_n()` instead. |
| 24 | +* Removed internal helpers `.make_grad_vector()` and `.make_grad2_vector()`. |
| 25 | +* Updated higher-order vignette to use current API and demonstrate `D` operator. |
| 26 | + |
| 27 | +# nabla 0.6.0 |
| 28 | + |
| 29 | +* Replaced MLE-specific API with general-purpose derivative functions: |
| 30 | + - `score()` -> `gradient()` — computes the gradient of any scalar-valued |
| 31 | + function (still single-pass via vector-valued derivatives). |
| 32 | + - `hessian()` — unchanged (already mathematically general). |
| 33 | + - `observed_information()` — removed (trivial: just `-hessian()`). |
| 34 | + - `score_and_hessian()` -> `jacobian()` — generalized to compute the |
| 35 | + full m x p Jacobian matrix of any `f: R^p -> R^m`. Accepts functions |
| 36 | + returning lists, numeric vectors, or scalar dualr objects. |
| 37 | +* Renamed `R/mle-helpers.R` to `R/derivatives.R`. |
| 38 | +* Updated vignettes to use general terminology (gradient/Hessian/Jacobian). |
| 39 | + |
| 40 | +# nabla 0.5.0 |
2 | 41 |
|
3 | 42 | * Generalized to arbitrary-order exact derivatives via recursive nesting. |
4 | 43 | New API: `dual_variable_n()`, `dual_constant_n()`, `deriv_n()`, |
|
11 | 50 | wrappers around the new generalized API. |
12 | 51 | * Removed benchmarks (speed is not this package's value proposition). |
13 | 52 |
|
14 | | -# dualr 0.4.0 |
| 53 | +# nabla 0.4.0 |
15 | 54 |
|
16 | 55 | * `score()` now computes the full gradient in 1 forward pass (was p passes) |
17 | 56 | using vector-valued derivatives, exploiting the `ANY` slots of the `dualr` class. |
|
20 | 59 | * Internal `.is_scalar_dual()` now also checks `length() == 1L` to correctly |
21 | 60 | distinguish scalar duals (C++ fast path) from vector-gradient duals (R path). |
22 | 61 |
|
23 | | -# dualr 0.3.0 |
| 62 | +# nabla 0.3.0 |
24 | 63 |
|
25 | 64 | * Added Rcpp-based C++ fast paths for first-order dual arithmetic (`+`, `-`, `*`, `/`, `^`), math (`exp`, `sqrt`, `log`), and `sum`. Provides 3-10x speedup on scalar dual operations while preserving full R fallback for nested (second-order) duals. |
26 | 65 | * New internal `.is_scalar_dual()` predicate gates C++ vs R paths using `is.double()` on slot contents. |
27 | 66 | * Added `Rcpp` to `Imports` and `LinkingTo`; package now requires C++ compilation. |
28 | 67 |
|
29 | | -# dualr 0.2.0 |
| 68 | +# nabla 0.2.0 |
30 | 69 |
|
31 | 70 | * Renamed S4 class from `dual` to `dualr` to avoid conflict with base R's `dual` usage. |
32 | 71 | * Added dedicated `setMethod` dispatches for hot-path arithmetic (`+`, `-`, `*`, `/`, `^`) and math (`exp`, `sqrt`) operations, bypassing group generic overhead. |
|
35 | 74 | * Standardized `sum()` in `Summary` group generic to use `.as_dual()` promotion, consistent with `prod`, `min`, `max`, and `range`. |
36 | 75 | * Fixed stale `\code{compositional.mle}` reference in `score()` documentation. |
37 | 76 |
|
38 | | -# dualr 0.1.0 |
| 77 | +# nabla 0.1.0 |
39 | 78 |
|
40 | 79 | * Initial CRAN release. |
41 | 80 | * S4 dual number class with full arithmetic and math function support. |
|
0 commit comments