# alg_tools

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 maintained. Included are:

• Linear operator, mapping, Euclidean space, and norm abstractions. Matrices and vectors are supported via nalgebra. There is also abstraction for AXPY and 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.
• 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

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 through an ugly workaround. 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.

hg clone https://tuomov.iki.fi/repos/alg_tools/

If you would like to contribute to this project, simply clone the repository and email me a hg bundle of your changes.