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-7-18
Added
- Core functionality:
ModularInverse.of/2
function for calculating modular multiplicative inverses - Algorithm implementation: Extended Euclidean Algorithm for efficient computation
- Error handling: Proper
RuntimeError
for cases where inverse doesn't exist - Type specifications: Complete type specs for all functions
- Comprehensive testing: Randomized test suite with 10,000 test cases
- Development tooling: Credo, Dialyzer, and Spellweaver integration
- Documentation: Complete API documentation with examples and mathematical background
- Project configuration: Full mix.exs setup with dependencies and build aliases
- Comprehensive documentation with mathematical background
- Extended Euclidean Algorithm implementation
- Randomized testing with 10,000 test cases
- Type specifications for all functions
- Error handling for non-coprime numbers
- Project structure with development tooling
- Test coverage and validation
Features
- Modular Inverse Calculation: Calculate the modular multiplicative inverse of any integer modulo another
- Performance: O(log min(a, m)) time complexity for efficient computation with large numbers
- Mathematical Accuracy: Handles edge cases and validates mathematical properties
- Error Handling: Clear error messages when inverse doesn't exist
- Type Safety: Complete type specifications for compile-time safety
Technical Details
- Algorithm: Uses Extended Euclidean Algorithm for optimal performance
- Normalization: Returns smallest non-negative representative of the inverse
- Validation: Comprehensive test suite validates
(a * inverse) mod m = 1
- Dependencies: Built on
BinaryExtendedGcd
for core algorithm - Tooling: Integrated with modern Elixir development tools
Documentation
- Module Documentation: Complete mathematical background and usage examples
- Function Documentation: Detailed parameter descriptions and return types
- README: Comprehensive guide with installation, usage, and applications
- API Reference: Complete function documentation with examples
- Mathematical Background: Clear explanation of modular multiplicative inverses
Development
- Code Quality: Credo integration for code analysis
- Type Checking: Dialyzer integration for static analysis
- Spell Checking: Spellweaver integration for documentation quality
- Testing: Comprehensive randomized test suite
- Build System: Mix aliases for quality checks and documentation
Version History
- 1.0.0: First stable release with complete modular inverse functionality
Contributing
When contributing to this project, please update the changelog by adding a new entry under the [Unreleased] section. Follow the existing format and include:
- Added: New features
- Changed: Changes in existing functionality
- Deprecated: Features that will be removed in upcoming releases
- Removed: Features that have been removed
- Fixed: Bug fixes
- Security: Vulnerability fixes