README.md

Wed, 07 Dec 2022 06:57:26 +0200

author
Tuomo Valkonen <tuomov@iki.fi>
date
Wed, 07 Dec 2022 06:57:26 +0200
changeset 17
51bfde513cfa
parent 16
703482dffd87
child 19
8e297c1dcd3a
child 20
76e7d61874eb
permissions
-rw-r--r--

README beautification


# AlgTools

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:

  * [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

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.



  [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