Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[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:

  • 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 format.

Changelog Entry Format

## [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