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.1.0] - 2025-07-21

Changed

  • Algorithm Enhancement: Switched from BinaryGcd to LehmerGcd for more efficient GCD calculations
  • Performance Documentation: Updated with more realistic performance limits and practical guidelines
  • Dependency Update: Changed from binary_gcd ~> 1.1 to lehmer_gcd ~> 1.0

Added

  • Comprehensive Performance Guidelines: Added detailed performance estimates for different number sizes
  • Interactive vs Batch Processing Limits: Distinguished between interactive use (10^10) and batch processing (10^12)
  • Practical Time Estimates:
    • 10^6: Very fast (< 1 second)
    • 10^8: Fast (seconds)
    • 10^10: Moderate (minutes) - recommended interactive limit
    • 10^12: Slow (hours) - batch processing limit
    • 10^14: Very slow (days) - not recommended

Technical Improvements

  • More Accurate Performance Claims: Updated documentation to reflect realistic algorithm performance
  • Enhanced User Guidance: Clear recommendations on when to use alternative algorithms
  • Spell Checker Configuration: Added "Lehmer" to user words for documentation quality

[1.0.0] - 2025-07-20

Added

  • Initial release of PrimeFactorization library
  • PrimeFactorization.of/1 - Main function for prime factorization
  • PrimeFactorization.trial_division/1 - Direct trial division implementation
  • Comprehensive type specifications for all functions
  • Full documentation with interactive examples
  • KaTeX math rendering support for mathematical notation
  • Complete test coverage with doctests
  • Development tooling integration (Credo, Dialyzer, SpellWeaver)

Features

  • Efficient Trial Division Algorithm: Optimized implementation with early termination
  • Type Safety: Full type specifications for all functions
  • Mathematical Notation: LaTeX support for complex mathematical expressions
  • Interactive Documentation: All examples are doctest-compatible
  • Performance Optimizations:
    • Tail recursion for memory efficiency
    • Early termination when divisor squared exceeds remaining number
    • Binary GCD calculations for efficiency
    • Sorted output for consistency

Technical Details

  • Time Complexity: O(√n) in the worst case
  • Memory Usage: Constant space due to tail recursion
  • Suitable For: Integers up to approximately 10^12
  • Dependencies:
    • binary_gcd ~> 1.1 for efficient GCD calculations
    • nstandard ~> 0.1 for development standards
    • ex_doc ~> 0.31 for documentation generation
    • dialyxir ~> 1.0 for type checking
    • credo ~> 1.7 for code analysis
    • spellweaver ~> 0.1 for spell checking

Documentation

  • Complete module documentation with algorithm explanation
  • Comprehensive function documentation with examples
  • Performance notes and limitations
  • Usage examples for common scenarios
  • Development setup and contribution guidelines

Development Tools

  • Code Quality: Credo for static analysis
  • Type Checking: Dialyzer for type safety
  • Documentation: ExDoc with KaTeX math rendering
  • Spell Checking: SpellWeaver for documentation quality
  • Formatting: Mix format with migration support
  • Testing: Comprehensive test suite with doctests

License

  • Apache License 2.0
  • Copyright (c) 2025 University of Kitakyushu

Version History

  • 1.1.0: Algorithm enhancement with LehmerGcd and improved performance documentation
  • 1.0.0: Initial public release with complete documentation and tooling

Contributing

When contributing to this project, please update this changelog by adding a new entry under the [Unreleased] section. The format should follow the existing structure.

Changelog Entry Format

## [Unreleased]

### Added
- New features

### Changed
- Changes in existing functionality

### Deprecated
- Soon-to-be removed features

### Removed
- Removed features

### Fixed
- Bug fixes

### Security
- Vulnerability fixes