CHANGELOG.md

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

```markdown
## [Unreleased]

### Added
- New features

### Changed
- Changes in existing functionality

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

### Removed
- Removed features

### Fixed
- Bug fixes

### Security
- Vulnerability fixes
```