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 factorizationPrimeFactorization.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