README.md

Fri, 14 Feb 2025 23:31:24 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Fri, 14 Feb 2025 23:31:24 -0500
changeset 91
db870f2a2cde
parent 88
086a59b3a2b4
permissions
-rw-r--r--

slice_assume_init_mut deprecation workaround

0
9f27689eb130 Initialise new clean repository
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
1
20
76e7d61874eb Some README fine-tuning
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
2 # alg_tools
0
9f27689eb130 Initialise new clean repository
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
3
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
4 This package contains some general utility routines and tools for implementing
20
76e7d61874eb Some README fine-tuning
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
5 iterative algorithms and (abstract) numerical computing in [Rust]. Former versions
76e7d61874eb Some README fine-tuning
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
6 of the package were for Julia. They are no longer maintained. Included are:
0
9f27689eb130 Initialise new clean repository
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
7
17
51bfde513cfa README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 16
diff changeset
8 * [Linear operator], [mapping], [Euclidean space], and [norm] abstractions.
51bfde513cfa README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 16
diff changeset
9 Matrices and vectors are supported via [nalgebra].
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
10 There is also abstraction for [`AXPY`][AXPY] and [`GEMV`][GEMV] operations.
88
086a59b3a2b4 doc updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 20
diff changeset
11 * A facility to create [`Instance`][Instance]s of other types, for easy application
086a59b3a2b4 doc updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 20
diff changeset
12 of functions to various concrete and reference types.
086a59b3a2b4 doc updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 20
diff changeset
13 * Abstraction of [Fenchel conjugates] and [proximal operators] of convex
086a59b3a2b4 doc updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 20
diff changeset
14 functions.
17
51bfde513cfa README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 16
diff changeset
15 * Small (on stack) [vectors] and [cubes] that implement the relevant
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
16 abstractions and vector space operations.
17
51bfde513cfa README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 16
diff changeset
17 * Multi-dimensional [linear grids], including the familiar-from-Matlab
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
18 one-dimensional [`linspace`][linspace].
17
51bfde513cfa README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 16
diff changeset
19 * [Algorithm iterator abstraction] for generically implementing
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
20 intermittent verbosity and stopping rules in iterative algorithms.
17
51bfde513cfa README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 16
diff changeset
21 * The algorithm iterators can employ a [logger] to store intermittent results
51bfde513cfa README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 16
diff changeset
22 (e.g. function values) in memory to later [write] into a csv-file.
20
76e7d61874eb Some README fine-tuning
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
23 * Additional [iterators and iteration tools], especially variants of `map`
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
24 with predictable type signatures.
17
51bfde513cfa README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 16
diff changeset
25 * The `Float` and [associated traits] build upon [num_traits] to
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
26 conveniently write code that works with any floating point number type.
17
51bfde513cfa README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 16
diff changeset
27 * Geometrical [bisection trees] for efficient representations of sums of
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
28 functions and branch-and-bound optimisation.
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
29
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
30 ## Building the documentation
0
9f27689eb130 Initialise new clean repository
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
31
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
32 Integrated source code documentation may be built and opened with
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
33 ```console
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
34 cargo doc # build dependency docs
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
35 misc/cargo-d --open # build and open KaTeX-aware docs for this crate
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
36 ```
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
37 The `cargo-d` script ensures that KaTeX mathematics is rendered in the
20
76e7d61874eb Some README fine-tuning
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
38 generated documentation through an ugly workaround. Unfortunately,
76e7d61874eb Some README fine-tuning
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
39 `rustdoc`, akin to Rust largely itself, is stuck in 80's 7-bit gringo ASCII
76e7d61874eb Some README fine-tuning
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
40 world, and does not support modern markdown features, such as mathematics.
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
41
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
42
20
76e7d61874eb Some README fine-tuning
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
43 [Rust]: https://www.rust-lang.org
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
44 [nalgebra]: https://www.nalgebra.org
20
76e7d61874eb Some README fine-tuning
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
45 [num_traits]: https://docs.rs/num-traits/latest/num_traits/
16
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
46 [norm]: crate::norms
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
47 [linear grids]: crate::lingrid
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
48 [Euclidean space]: crate::euclidean
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
49 [Linear operator]: crate::linops
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
50 [AXPY]: crate::linops::AXPY
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
51 [GEMV]: crate::linops::GEMV
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
52 [linspace]: crate::lingrid::linspace
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
53 [Algorithm iterator abstraction]: crate::iterate
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
54 [logger]: crate::logger
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
55 [write]: crate::tabledump
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
56 [iterators and iteration tools]: crate::iter
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
57 [Float]: crate::types::Float
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
58 [bisection trees]: crate::bisection_tree
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
59 [mapping]: crate::mapping::Mapping
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
60 [associated traits]: crate::types
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
61 [vectors]: crate::loc::Loc
703482dffd87 README improvements
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
62 [cubes]: crate::sets::Cube
88
086a59b3a2b4 doc updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 20
diff changeset
63 [Instance]: crate::instance::Instance
086a59b3a2b4 doc updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 20
diff changeset
64 [Fenchel conjugates]: crate::convex::Conjugable
086a59b3a2b4 doc updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 20
diff changeset
65 [proximal operators]: crate::convex::Prox
0
9f27689eb130 Initialise new clean repository
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
66

mercurial