8 stable releases
1.2.1 | Mar 9, 2024 |
---|---|
1.1.0 | Mar 9, 2024 |
1.0.4 | Mar 9, 2024 |
1.0.3 | Mar 3, 2024 |
1.0.0 | Mar 1, 2024 |
#865 in Math
231 downloads per month
Used in acm_dependent
32KB
126 lines
Arithmetic Congruence Monoids (ACM)
Description
This Rust project implements Arithmetic Congruence Monoids (ACMs), presented in a YAML-based configuration. ACMs are defined as (M_{a,b} = {a + bm : m \in \mathbb{Z}_{\geq 0}} \cup {1} = {1, a, a+b, a+2b,\ldots}). This project provides tools for factorizing integers into elements of the ACM, studying the atomic density of ACMs, and understanding the distribution of atoms within these monoids. Additionally, a graphical user interface (GUI) has been introduced to facilitate interactive exploration of ACM properties.
Features
- Factorization into ACM elements: Identify elements within an ACM that cannot be expressed as the product of smaller ACM elements, known as atoms.
- Atomic Density Study: Analyze the atomic density of different ACMs to understand the spacing between atoms within the monoid.
- CLI Tool: A command-line interface tool,
acm-cli
, is provided for testing the main ACM module and the divisors/factorize submodules. - GUI Application: A new graphical user interface is available for a more interactive exploration of ACMs. It allows users to visually engage with the ACM properties and perform calculations in a user-friendly environment.
Optimizations and Improvements
- Parallel processing capabilities have been implemented using the
rayon
crate. - The
sum_vector_parallel
function has been added for parallel summation of vector elements. - Performance Optimization: Code optimization has been performed to improve the application's performance, making it more attractive to users and increasing the chances of passing the anti-spam check.
Getting Started
Installation on Windows
- Download the project archive from GitHub.
- Unzip the archive in a location of your choice.
- Open the command prompt and navigate to the project directory.
- Run the command
cargo build --release
to build the project.
Installation on Linux
-
Open the terminal.
-
Clone the project repository using the command git clone https://github.com/FullPlay0/acm2.
-
Navigate to the directory with the project.
-
Run the command
cargo build --release
to build the project. -
Clone the Repository:
git clone https://github.com/FullPlay0/acm2
Dependencies
~31–50MB
~1M SLoC