#monoid #acm #gui-applications #arithmetic #congruence #user-interface #factorization

bin+lib arithmetic_congruence_monoid

Реализует арифметические конгруэнтные моноиды (ACM) в проекте на основе YAML

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

Download history 20/week @ 2024-09-20

231 downloads per month
Used in acm_dependent

MIT/Apache

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

  1. Download the project archive from GitHub.
  2. Unzip the archive in a location of your choice.
  3. Open the command prompt and navigate to the project directory.
  4. Run the command cargo build --release to build the project.

Installation on Linux

  1. Open the terminal.

  2. Clone the project repository using the command git clone https://github.com/FullPlay0/acm2.

  3. Navigate to the directory with the project.

  4. Run the command cargo build --release to build the project.

  5. Clone the Repository:

    git clone https://github.com/FullPlay0/acm2
    

Dependencies

~31–50MB
~1M SLoC