Git Product home page Git Product logo

abstalg-rs's Introduction

Abstract Algebra for Rust

Build Status Crate Documentation GitHub

This is a crate for doing abstract algebraic calculations in Rust. Unlike other implementations, the elements do not know to which algebraic structure they belong to, so all operations are performed through algebraic objects. For example, calculating within the ring of modular arithmetic modulo 6 the elements are still primitive i32 values, and only the quotient ring stores the value 6. This allows putting many such elements into polynomials or matrices efficiently, since this common value need to be stored only once in the algebra. Another benefit is that matrices are stored as simple vectors, and only the matrix algebra needs to know the shape of the matrix.

All prime-element fields can be constructed from the ring of integers by taking the quotient ring by a prime number, or using the 2-element field on the set of bool values directly. All finite fields can be constructed by forming the ring of polynomials over their prime field and then taking the quotient ring by an irreducible polynomial. All finite boolean algebras can be constructed as the direct power of the 2-element boolean algebra. The divisibility order (on the set of association classes) with distributive lattice operations can be constructed for Euclidean domains, such as the ring of integers and the ring of polynomials over a field. The ring of rectangular matrices can be formed over a field. The linear group of invertible matrices, and the special linear group of matrices of unit determinant can be formed over any field.

abstalg-rs's People

Contributors

kreijstal avatar mmaroti avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.