81 Commits
Author SHA1 Message Date
connor 981b1c8da9 Merge branch 'release/0.8.0' v0.8.0 2026-10-02 19:44:57 -04:00
connor 95f19f1a48 Release 0.8.0
Scalar now inherits num-dual's DualNum<Primitive = f64> and
DualStruct<Real = f64> and declares only lift. re comes from DualStruct.
A blanket impl replaces impl Scalar for f64 and the impl_scalar! macro
over the dual types, so Scalar covers f64 and every num-dual dual type
and a sibling crate built on num-dual can share one bound.

num-dual is a plain dependency rather than optional.

Breaks: the autodiff feature is removed, so a dependent naming it in its
feature list no longer resolves. Scalar's blanket impl makes any manual
impl of it a conflicting implementation, and Scalar no longer declares
re, so a qualified Scalar::re(&x) call must become x.re().
2026-10-02 19:44:52 -04:00
connor e25d654ef1 Simplified scalar type to just use num_dual 2026-10-02 19:44:00 -04:00
connor 6f215788e5 Merge branch 'release/0.7.0' v0.7.0 2026-10-01 14:14:12 -04:00
connor 17105964a2 Release 0.7.0
A Problem can own a callback as well as borrow one. with_owned_callback takes a
Box<dyn Callback + 'o>, which is what a type that stores the Problem needs: it
cannot lend a callback from one of its own fields without becoming
self-referential.

Problem gains a second lifetime for this, Problem<'a, 'o, T, D, S, P, C>, so code
that names the type explicitly needs Problem<'a, '_, ..>. Both are inferred and no
call site changes. The lifetimes have to be separate because dropping a
Box<dyn Callback> runs a destructor the compiler cannot see into, and sharing one
lifetime would keep a borrowed callback borrowed until the problem went out of
scope, which is exactly what the borrowed form exists to avoid.

Event location, root finding, jump recording and the controller reset are
unchanged.
2026-10-01 14:13:33 -04:00
connor 0e4a0b1798 Added an ability for an owned callback 2026-10-01 14:12:51 -04:00
connor 78ac6a60a0 Merge branch 'release/0.6.1' v0.6.1 2026-10-01 13:09:00 -04:00
connor 68ddc431a5 Release 0.6.1
Documentation and housekeeping only; the library behaves exactly as 0.6.0 does.
Three rustdoc warnings in the Jacobian comment are gone, so the formulas there
render as code rather than as attempted links, the tree is rustfmt-clean with the
Butcher tableaux and interpolation coefficients marked to keep their hand
alignment, and the git hooks stay out of the package.
2026-10-01 13:08:11 -04:00
connor 144e74c517 Merge branch 'fix/package-excludes' 2026-10-01 13:07:58 -04:00
connor a1fbcf33cf Keep the git hooks out of the published package
exclude covered roadmap/ but not hooks/, so the pre-commit and pre-push scripts
would have gone out in the next crate tarball. They are for working in the repo
and mean nothing to a consumer of the library.
2026-10-01 13:07:17 -04:00
connor cd3c40940e Git hooks, format changes, etc. 2026-10-01 13:05:59 -04:00
connor 328abfde1a Merge branch 'release/0.6.0' v0.6.0 2026-10-01 12:47:36 -04:00
connor a73e3dc9ec Release 0.6.0
Callback effects can change the state. The effect runs after the step has been
shortened to the crossing and committed, so what it leaves in ode.y is what the
integration continues from; it was overwritten immediately before. Callback::effect
takes &mut self, Problem::with_callback takes &mut dyn Callback, and Controller
requires a reset method, all of which are breaking. A jump records the state on
both sides of itself and resets the step size controller, interpolating at one
reports the state the effect left, stop ends the solution at the crossing without
disturbing t_end, and the earliest of two events in one step is the one that fires.
2026-10-01 12:47:33 -04:00
connor c5768ad9c0 Fixed event handling to properly keep the state changes, plus a few other fixes 2026-10-01 12:41:39 -04:00
connor 55884190fa Merge branch 'release/0.5.0' v0.5.0 2026-09-30 14:08:30 -04:00
connor 0b6996b0fc Release 0.5.0
Runtime integrator selection. The structural facts on Integrator move from
associated constants to &self methods, which is a breaking change for anyone
implementing the trait or reading ORDER, STAGES, ADAPTIVE or DENSE. In exchange
Method dispatches to any of the four integrators as a value, and MethodName
names one in a configuration file.
2026-09-30 14:08:28 -04:00
connor 5b40932317 Merge branch 'feature/runtime-integrator-selection' 2026-09-30 14:08:16 -04:00
connor 8894de37d6 Added the ability to select a method at runtime if so desired 2026-09-30 14:06:49 -04:00
connor 2ce5028529 Merge branch 'release/0.4.1' v0.4.1 2026-09-30 13:49:43 -04:00
connor 3e6f79b9bd Release 0.4.1
The Tolerances trait: the a_tol, a_tol_full and r_tol setters move off the
inherent impls onto a trait, with absolute_tolerance and relative_tolerance
getters, so code generic over the integrator can set and read them.
2026-09-30 13:49:34 -04:00
connor bbc94592e5 Merge branch 'feature/tolerances-trait' 2026-09-30 13:49:14 -04:00
connor da479a378e Made the tolerance trait separable from the integrator itself 2026-09-30 13:48:20 -04:00
connor 812b5adaf9 Merge branch 'release/0.4.0' v0.4.0 2026-09-29 18:29:35 -04:00
connor 8155a561ac Release 0.4.0
Generic scalar type and forward-mode autodiff, the step size controller fix,
and the clippy and benchmark-report work that came with them.
2026-09-29 18:29:33 -04:00
connor 788f93cccb Merge pull request 'Genericization and Autodiff' (#4) from feature/generic-scalar into main
Reviewed-on: #4
2026-09-29 18:24:02 -04:00
connor 2053aaa68e Updated reports after bug fix 2026-09-29 18:21:40 -04:00
connor c20a090036 Fixed a small bug on the step sizing 2026-09-29 18:02:58 -04:00
connor db14a02df4 Updated docs on benchmarks 2026-09-29 18:00:09 -04:00
connor f8a47d0126 Incorporated the other features: genericization and autodiff mainly 2026-09-29 17:46:33 -04:00
connor cbbe455c07 Merge branch 'fix/release-metadata' v0.3.1 2026-09-29 16:08:05 -04:00
connor 1f2070d110 Fix release metadata and repair the benchmarks
- repository pointed at the old host and the old repo name; this is the link
  crates.io and docs.rs display
- the readme example imported `differential_equations`, so it could not
  compile under the crate's published name
- `cargo bench` did not build: `Solution` borrows the ODE, so `.solve()`
  cannot be called on a temporary `Problem`. Bind it first.
2026-09-29 16:08:03 -04:00
connor ffd9efa15c Merge branch 'release/0.3.0' v0.3.0 2026-09-29 16:06:12 -04:00
connor 5ae699ae6e Release 0.3.0
Bumps the version to 0.3.0 and keeps the roadmap notes out of the published
artifact. No source changes: this tags the BS3, Vern7, Rosenbrock23 and
PIDController work that has accumulated on main since 0.2.3.
2026-09-29 16:06:10 -04:00
connor f41c516db6 Merge pull request 'Rosenbrock23' (#3) from feature/rosenbrock23 into main
Reviewed-on: connor/differential-equations#3
2025-10-24 18:50:25 -04:00
Connor Johnstone 62c056bfe7 Added documentation 2025-10-24 18:50:00 -04:00
Connor Johnstone c7d6f555e5 Added and wrote tests 2025-10-24 18:39:26 -04:00
connor bca010a394 Merge pull request 'PID Controller' (#2) from feature/pid_controller into main
Reviewed-on: connor/differential-equations#2
2025-10-24 14:24:29 -04:00
Connor Johnstone 084435856f Added the PID Controller 2025-10-24 14:24:02 -04:00
connorandConnor Johnstone 0ca488b7da Verner 7 Integrator (#1)
Co-authored-by: Connor Johnstone <connor.johnstone@arcfield.com>
Reviewed-on: connor/differential-equations#1
2025-10-24 14:07:56 -04:00
Connor Johnstone e1e6f8b4bb Finished bs3 (at least for now) 2025-10-24 10:32:32 -04:00
Connor Johnstone bd6f3b8ee4 Fixed things to use cubic interpolation and tests pass 2025-10-23 17:17:22 -04:00
Connor Johnstone 500bbfcf86 Initial attempt at bs3. Tests not passing yet 2025-10-23 16:56:48 -04:00
Connor Johnstone e3788bf607 Added the roadmap 2025-10-23 16:47:48 -04:00
Connor Johnstone 8d4aed4e84 small test change 2025-10-23 15:18:41 -04:00
Connor Johnstone b42f3a3e77 Dependency updates v0.2.3 2025-08-12 16:54:49 -04:00
Connor Johnstone 69d2fe4336 Name change for crates.io v0.2.2 2025-08-12 16:07:10 -04:00
Connor Johnstone 44bb3e5ac1 Updates for publishing 2025-08-12 16:05:29 -04:00
Connor Johnstone 0dfed1cd06 version bump 2025-08-12 15:54:39 -04:00
Connor Johnstone 2659d78582 Updated the way that steps are handled 2025-08-12 15:54:23 -04:00
Connor Johnstone 9075dac669 Added some benchmarking and small performance improvements 2025-08-11 18:34:01 -04:00