19 releases
0.9.3 | Mar 2, 2020 |
---|---|
0.9.2 | Oct 28, 2019 |
0.9.1 | May 11, 2019 |
0.9.0 | Mar 31, 2019 |
0.3.0 | Oct 30, 2016 |
#1572 in Math
27,566 downloads per month
Used in fewer than 33 crates
135KB
2.5K
SLoC
alga − abstract algebra for Rust
alga aims to provide solid mathematical abstractions to algebra-focused applications. It defines and organizes through trait inheritance the basic building blocks of general algebraic structures. Specific implementations of algebraic structure traits are left to other crates. Higher-level traits for specialized domains of algebra (like linear algebra) are also provided and will prove useful for applications that include code that is generic wrt. the algebraic entity types.
Examples of types that could derive from traits defined in alga:
- Integers, reals and rationals numbers
- Complex numbers
- Polynomials
- Matrices and vectors
- Quaternions and octonians
- Strings under concatenation
alga started as a fork of algebra.
References
Interesting papers
- The Scratchpad II Type System: Domains and Subdomains
- Fundamental Algebraic Concepts in Concept-Enabled C++
Inspiring Libraries
- Numeric Prelude (Haskell)
- Edward A. Kmett's algebra package (Haskell)
- YAP: Yet Another Prelude (Haskell)
- Agda's algebra module (Agda)
- Idris' algebra module (Idris)
- Felix's algebra module (Felix)
- non/spire (Scala)
Dependencies
~0.6–1MB
~18K SLoC