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