Crates.io | f64ad |
lib.rs | f64ad |
version | 0.0.5 |
source | src |
created_at | 2022-09-22 20:05:26.282008 |
updated_at | 2022-12-19 02:24:33.016333 |
description | Easy to use, efficient, and highly flexible automatic differentiation in Rust. |
homepage | |
repository | https://github.com/djrakita/f64ad |
max_upload_size | |
id | 671970 |
size | 2,895,098 |
| Documentation | API |
This crate brings easy to use, efficient, and highly flexible automatic differentiation to the Rust programming language. Utilizing Rust's extensive operator overloading and expressive Enum features, f64ad can be thought of as a drop-in replacement for f64 that affords forward mode or backwards mode automatic differentiation on any downstream computation in Rust.
f64ad
object can either be considered a derivative
tracking variable or a standard f64 with very little overhead depending on your current use case.
Thus, it is reasonable to replace almost all uses of f64 with f64ad, and in return, you'll be ableRealField
and ComplexField
traits,
meaning it can be used in any nalgebra
or ndarray
computations.This crate is a cargo workspace with two member crates: (1) f64ad_core
; and (2) f64ad_core_derive
.
All core implementations for f64ad can be found in f64ad_core
. The f64ad_core_derive
is
currently a placeholder and will be used for procedural macro implementations.
If you use any part of the f64ad library in your research, please cite the software as follows:
@misc{rakita_2022, url={https://djrakita.github.io/f64ad/},
author={Rakita, Daniel},
title={f64ad: Efficient and Flexible Automatic Differentiation in Rust}
year={2022}}