Wed, 07 Dec 2022 07:00:27 +0200
Added tag v0.1.0 for changeset 51bfde513cfa
0 | 1 | |
2 | # AlgTools | |
3 | ||
16 | 4 | This package contains some general utility routines and tools for implementing |
5 | iterative algorithms and (abstract) numerical computing in Rust. Former versions | |
6 | of the package were for Julia. They are no longer mintained. Included are: | |
0 | 7 | |
17 | 8 | * [Linear operator], [mapping], [Euclidean space], and [norm] abstractions. |
9 | Matrices and vectors are supported via [nalgebra]. | |
16 | 10 | There is also abstraction for [`AXPY`][AXPY] and [`GEMV`][GEMV] operations. |
17 | 11 | * Small (on stack) [vectors] and [cubes] that implement the relevant |
16 | 12 | abstractions and vector space operations. |
17 | 13 | * Multi-dimensional [linear grids], including the familiar-from-Matlab |
16 | 14 | one-dimensional [`linspace`][linspace]. |
17 | 15 | * [Algorithm iterator abstraction] for generically implementing |
16 | 16 | intermittent verbosity and stopping rules in iterative algorithms. |
17 | 17 | * The algorithm iterators can employ a [logger] to store intermittent results |
18 | (e.g. function values) in memory to later [write] into a csv-file. | |
16 | 19 | * Additional [iterators and iteration tools][], especially variants of `map` |
20 | with predictable type signatures. | |
17 | 21 | * The `Float` and [associated traits] build upon [num_traits] to |
16 | 22 | conveniently write code that works with any floating point number type. |
17 | 23 | * Geometrical [bisection trees] for efficient representations of sums of |
16 | 24 | functions and branch-and-bound optimisation. |
25 | ||
26 | ## Building the documentation | |
0 | 27 | |
16 | 28 | Integrated source code documentation may be built and opened with |
29 | ```console | |
30 | cargo doc # build dependency docs | |
31 | misc/cargo-d --open # build and open KaTeX-aware docs for this crate | |
32 | ``` | |
33 | The `cargo-d` script ensures that KaTeX mathematics is rendered in the | |
34 | generated documentation. Unfortunately, `rustdoc`, akin to Rust largely itself, | |
35 | is stuck in 80's 7-bit gringo ASCII world, and does not support modern markdown | |
36 | features, such as mathematics. Instead, to render mathematics, an ugly | |
37 | workaround is needed together with lots of painful raw HTML escapes in the | |
38 | documentation. | |
39 | ||
40 | ||
0 | 41 | |
16 | 42 | [nalgebra]: https://www.nalgebra.org |
43 | [norm]: crate::norms | |
44 | [linear grids]: crate::lingrid | |
45 | [Euclidean space]: crate::euclidean | |
46 | [Linear operator]: crate::linops | |
47 | [AXPY]: crate::linops::AXPY | |
48 | [GEMV]: crate::linops::GEMV | |
49 | [linspace]: crate::lingrid::linspace | |
50 | [Algorithm iterator abstraction]: crate::iterate | |
51 | [logger]: crate::logger | |
52 | [write]: crate::tabledump | |
53 | [iterators and iteration tools]: crate::iter | |
54 | [Float]: crate::types::Float | |
55 | [bisection trees]: crate::bisection_tree | |
56 | [mapping]: crate::mapping::Mapping | |
57 | [associated traits]: crate::types | |
58 | [vectors]: crate::loc::Loc | |
59 | [num_traits]: num_traits | |
60 | [cubes]: crate::sets::Cube | |
0 | 61 |