README improvements

Tue, 06 Dec 2022 08:58:49 +0200

author
Tuomo Valkonen <tuomov@iki.fi>
date
Tue, 06 Dec 2022 08:58:49 +0200
changeset 16
703482dffd87
parent 15
e03ce15643da
child 17
51bfde513cfa

README improvements

README.md file | annotate | diff | comparison | revisions
--- a/README.md	Tue Dec 06 08:32:57 2022 +0200
+++ b/README.md	Tue Dec 06 08:58:49 2022 +0200
@@ -1,19 +1,61 @@
 
 # AlgTools
 
-Author: Tuomo Valkonen <tuomov@iki.fi>
+This package contains some general utility routines and tools for implementing
+iterative algorithms and (abstract) numerical computing in Rust. Former versions
+of the package were for Julia. They are no longer mintained. Included are:
 
-This crate/repository/package contains some general utility routines and tools for implementing
-iterative algorithms and numerical computing in Rust. Former versions of the package were for Julia.
-They are no longer mintained. Included are:
+  * [Linear operator][], [mapping][], [Euclidean space][], and [norm][]
+    abstractions. Matrices and vectors are supported via [nalgebra].
+    There is also abstraction for [`AXPY`][AXPY] and [`GEMV`][GEMV] operations.
+  * Small (on stack) [vectors][]  and [cubes][] that implement the relevant
+    abstractions and vector space operations.
+  * Multi-dimensional [linear grids][], including the familiar-from-Matlab
+    one-dimensional [`linspace`][linspace].
+  * [Algorithm iterator abstraction][] for generically implementing
+    intermittent verbosity and stopping rules in iterative algorithms.
+  * The algorithm iterators can employ a [logger][] to store intermittent results
+    (e.g. function values) in memory to later [write][] into a csv-file.
+  * Additional [iterators and iteration tools][], especially variants of `map`
+    with predictable type signatures.
+  * The `Float` and [associated traits][] build upon [num_traits][] to
+    conveniently write code that works with any floating point number type.
+  * Geometrical [bisection trees][] for efficient representations of sums of
+    functions and branch-and-bound optimisation.
+
+## Building the documentation
 
-  * [Linear operator](crate::linops), [Euclidean space][crate::euclidean], and [norm][crate::norms] abstractions with support for matrices and vectors via `nalgebra`.
-  * [Iteration abstraction](crate::iterate) for generically implementing intermittent verbosity and stopping rules in iterative algorithms.
-  * The iterators can employ a [logger](crate::logger) to store the intermittent results
-    (e.g. function values) in memory to later [write][crate::tabledump] into a `csv`-file.
-  * Geometrical [bisection trees](crate::bisection_tree) for efficient representations of sums of functions and branch-and-bound optimisation.
+Integrated source code documentation may be built and opened with
+```console
+cargo doc              # build dependency docs
+misc/cargo-d --open    # build and open KaTeX-aware docs for this crate
+```
+The `cargo-d` script ensures that KaTeX mathematics is rendered in the
+generated documentation. Unfortunately, `rustdoc`, akin to Rust largely itself,
+is stuck in 80's 7-bit gringo ASCII world, and does not support modern markdown
+features, such as mathematics. Instead, to render mathematics, an ugly
+workaround is needed together with lots of painful raw HTML escapes in the
+documentation.
+
+
 
-<!--## Installation
+  [nalgebra]: https://www.nalgebra.org
+  [norm]: crate::norms
+  [linear grids]: crate::lingrid
+  [Euclidean space]: crate::euclidean
+  [Linear operator]: crate::linops
+  [AXPY]: crate::linops::AXPY
+  [GEMV]: crate::linops::GEMV
+  [linspace]: crate::lingrid::linspace
+  [Algorithm iterator abstraction]: crate::iterate
+  [logger]: crate::logger
+  [write]: crate::tabledump
+  [iterators and iteration tools]: crate::iter
+  [Float]: crate::types::Float
+  [bisection trees]: crate::bisection_tree
+  [mapping]: crate::mapping::Mapping
+  [associated traits]: crate::types
+  [vectors]: crate::loc::Loc
+  [num_traits]: num_traits
+  [cubes]: crate::sets::Cube
 
-???
--->

mercurial