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

## [Unreleased]

### Added
- Conan dependency manager support
- Technical analysis report

### Changed
- Updated README.md
- Refactored library version and installation system
- Updated config variable names

### Fixed
- Removed unneeded semicolon

## [2.0.1] - 2024-07-22

### Added
- CMake install target and make install command
- Flag to control sample building in Makefile

### Changed
- Library name changed to `fimdlp`
- Updated version numbers across test files

### Fixed
- Version number consistency in tests

## [2.0.0] - 2024-07-04

### Added
- Makefile with build & test actions for easier development
- PyTorch (libtorch) integration for tensor operations

### Changed
- Major refactoring of build system
- Updated build workflows and CI configuration

### Fixed
- BinDisc quantile calculation errors (#9)
- Error in percentile method calculation
- Integer type issues in calculations
- Multiple GitHub Actions configuration fixes

## [1.2.1] - 2024-06-08

### Added
- PyTorch tensor methods for discretization
- Improved library build system

### Changed
- Refactored sample build process

### Fixed
- Library creation and linking issues
- Multiple GitHub Actions workflow fixes

## [1.2.0] - 2024-06-05

### Added
- **Discretizer** - Abstract base class for all discretization algorithms (#8)
- **BinDisc** - K-bins discretization with quantile and uniform strategies (#7)
- Transform method to discretize values using existing cut points
- Support for multiple datasets in sample program
- Docker development container configuration

### Changed
- Refactored system types throughout the library
- Improved sample program with better dataset handling
- Enhanced build system with debug options

### Fixed
- Transform method initialization issues
- ARFF file attribute name extraction
- Sample program library binary separation

## [1.1.3] - 2024-06-05

### Added
- `max_cutpoints` hyperparameter for controlling algorithm complexity
- `max_depth` and `min_length` as configurable hyperparameters
- Enhanced sample program with hyperparameter support
- Additional datasets for testing

### Changed
- Improved constructor design and parameter handling
- Enhanced test coverage and reporting
- Refactored build system configuration

### Fixed
- Depth initialization in fit method
- Code quality improvements and smell fixes
- Exception handling in value cut point calculations

## [1.1.2] - 2023-04-01

### Added
- Comprehensive test suite with GitHub Actions CI
- SonarCloud integration for code quality analysis
- Enhanced build system with automated testing

### Changed
- Improved GitHub Actions workflow configuration
- Updated project structure for better maintainability

### Fixed
- Build system configuration issues
- Test execution and coverage reporting

## [1.1.1] - 2023-02-22

### Added
- Limits header for proper compilation
- Enhanced build system support

### Changed
- Updated version numbering system
- Improved SonarCloud configuration

### Fixed
- ValueCutPoint exception handling (removed unnecessary exception)
- Build system compatibility issues
- GitHub Actions token configuration

## [1.1.0] - 2023-02-21

### Added
- Classic algorithm implementation for performance comparison
- Enhanced ValueCutPoint logic with same_values detection
- Glass dataset support in sample program
- Debug configuration for development

### Changed
- Refactored ValueCutPoint algorithm for better accuracy
- Improved candidate selection logic
- Enhanced sample program with multiple datasets

### Fixed
- Sign error in valueCutPoint calculation
- Final cut value computation
- Duplicate dataset handling in sample

## [1.0.0.0] - 2022-12-21

### Added
- Initial release of MDLP (Minimum Description Length Principle) discretization library
- Core CPPFImdlp algorithm implementation based on Fayyad & Irani's paper
- Entropy and information gain calculation methods
- Sample program demonstrating library usage
- CMake build system
- Basic test suite
- ARFF file format support for datasets

### Features
- Recursive discretization using entropy-based criteria
- Stable sorting with tie-breaking for identical values
- Configurable algorithm parameters
- Cross-platform C++ implementation

---

## Release Notes

### Version 2.x
- **Breaking Changes**: Library renamed to `fimdlp`
- **Major Enhancement**: PyTorch integration for improved performance
- **New Features**: Comprehensive discretization framework with multiple algorithms

### Version 1.x
- **Core Algorithm**: MDLP discretization implementation
- **Extensibility**: Hyperparameter support and algorithm variants
- **Quality**: Comprehensive testing and CI/CD pipeline

### Version 1.0.x
- **Foundation**: Initial stable implementation
- **Algorithm**: Core MDLP discretization functionality