# 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
- Initial release of BinaryLehmerGcd library
- High-performance GCD implementation combining binary GCD with Lehmer's algorithm
- Support for both small (≤ 32 bits) and large (> 32 bits) integers
- Optimized trailing zero removal and bit-level operations
- Division avoidance in Lehmer reduction for improved performance
- Comprehensive test suite with randomized test cases
- Full documentation with mathematical notation support
- KaTeX integration for rendering mathematical expressions
- Type specifications for better static analysis
- Quality assurance tools integration (Credo, Dialyzer, SpellWeaver)

### Features
- **Binary GCD Algorithm**: Efficient implementation for small numbers
- **Lehmer's Algorithm**: Advanced reduction for large numbers
- **Hybrid Approach**: Automatic switching between algorithms based on input size
- **Performance Optimizations**:
  - O(log² n) time complexity for n-bit numbers
  - O(log n) space complexity
  - Efficient bit operations
  - Early termination conditions
- **Production Ready**: Thoroughly tested and documented

### Technical Details
- **Dependencies**: BitLength, TrailingZeros, Bitwise for efficient operations
- **Documentation**: Comprehensive API documentation with examples
- **Testing**: Randomized test suite covering trillion-scale numbers
- **Quality**: Static analysis, code formatting, and spell checking
- **License**: Apache License 2.0

### Documentation
- Complete README with usage examples and algorithm explanations
- Comprehensive API documentation with mathematical notation
- Performance analysis and complexity explanations
- Installation and development instructions
- Academic references and algorithm details

### Development Tools
- ExDoc for documentation generation
- Credo for code quality analysis
- Dialyzer for static type checking
- SpellWeaver for spell checking
- NStandard for development standards

---

## Version History

- **1.0.0**: First stable release with complete implementation

## Contributing

When contributing to this project, please update this changelog to reflect your changes. Follow the existing format and include:

- **Added**: for new features
- **Changed**: for changes in existing functionality
- **Deprecated**: for soon-to-be removed features
- **Removed**: for now removed features
- **Fixed**: for any bug fixes
- **Security**: in case of vulnerabilities

## Links

- [GitHub Repository](https://github.com/zacky1972/binary_lehmer_gcd)
- [Documentation](https://hexdocs.pm/binary_lehmer_gcd)
- [Hex Package](https://hex.pm/packages/binary_lehmer_gcd)
