# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.0.0] - 2025-07-21 ### Added - **Core Algorithm**: Fermat primality test implementation - Probabilistic testing with 100 random bases - Efficient modular exponentiation using square-and-multiply algorithm - Edge case handling for numbers 1 and 2 - Integration with LehmerGcd for coprimality testing - **Main Functions**: - `FermatPrimalityTest.of/1` - Main primality test function - `FermatPrimalityTest.mod_pow/3` - Modular exponentiation implementation - **Documentation**: - Comprehensive module documentation with mathematical background - Detailed function documentation with examples - Type specifications (@spec) for better tooling support - Professional README with usage examples and algorithm explanations - **Development Tools**: - Credo configuration for static analysis - Dialyzer setup for type checking - Spellweaver integration for documentation quality - ExDoc configuration with KaTeX math rendering - Comprehensive test suite - **Project Structure**: - Apache 2.0 license - Professional README with installation and usage instructions - Development workflow with `mix check` alias - Package metadata for Hex.pm publishing - Initial project structure and setup - Comprehensive documentation with mathematical formulas - Quality assurance tooling (Credo, Dialyzer, Spellweaver) - KaTeX integration for mathematical formula rendering ### Technical Details #### Algorithm Implementation - **Fermat Primality Test**: Based on Fermat's Little Theorem - Time Complexity: $O(k \log n)$ where $k = 100$ - Space Complexity: $O(1)$ - Accuracy: No false negatives, extremely low false positive rate - **Modular Exponentiation**: Square-and-multiply algorithm - Time Complexity: $O(\log exp)$ - Space Complexity: $O(1)$ - Handles edge cases (zero exponent, negative exponent) #### Mathematical Foundation - Implements Fermat's Little Theorem: $a^{p-1} \equiv 1 \pmod{p}$ - Uses contrapositive for composite number detection - Handles Fermat pseudoprimes and Carmichael numbers - Probabilistic approach with 100 random bases #### Quality Assurance - **Static Analysis**: Credo with custom rules - **Type Checking**: Dialyzer with ignore file - **Documentation**: ExDoc with KaTeX math rendering - **Spell Checking**: Spellweaver with technical terms - **Code Formatting**: Mix format integration ### Dependencies - **Development**: ex_doc, dialyxir, credo, spellweaver, nstandard - **Runtime**: nstandard (for LehmerGcd integration) ### Breaking Changes None - This is the initial release. ### Deprecations None - This is the initial release. ## Version History ### [1.0.0] - 2025-07-21 - Initial Release - Complete Fermat primality test implementation - Comprehensive documentation with mathematical formulas - Professional development tooling and quality assurance - Full project structure with license, README, and metadata --- ## Release Notes ### Version 1.0.0 This is the initial stable release of the Fermat Primality Test library. The implementation provides a robust, well-documented probabilistic primality test suitable for educational and research purposes. **Key Features:** - Efficient probabilistic primality testing - Comprehensive mathematical documentation - Professional development tooling - Type-safe implementation with Dialyzer support **Use Cases:** - Educational demonstrations of Fermat's Little Theorem - Research and experimentation with primality testing - Learning probabilistic algorithms - Mathematical library development **Limitations:** - Probabilistic nature (not deterministic) - May have false positives for very large numbers - Not suitable for cryptographic applications requiring deterministic tests --- ## Contributing When adding new features or making changes, please update this changelog following the [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) format. ### Changelog Entry Format ```markdown ## [Version] - YYYY-MM-DD ### Added - New features ### Changed - Changes in existing functionality ### Deprecated - Soon-to-be removed features ### Removed - Removed features ### Fixed - Bug fixes ### Security - Vulnerability fixes ```