Skip to content

1.1

Choose a tag to compare

@luk036 luk036 released this 17 Sep 06:36
· 140 commits to master since this release

Full Changelog: 1.0.5...1.1

Release Notes: lds-gen-cpp v1.1

Overview

This release introduces a new low-discrepancy sequence generator, significant improvements to unit test coverage, build system enhancements for cross-platform compatibility, and extensive documentation updates.

🚀 New Features

1. Disk Sequence Generator

  • Added a new Disk class for generating 2D points using a low-discrepancy disk sequence.
  • Useful for quasi-Monte Carlo methods in numerical integration and computer graphics.
  • Implemented using two Van der Corput sequences for radial and angular components.

2. Enhanced Unit Tests

  • Added comprehensive unit tests for:
    • Van der Corput sequence (integer and floating-point variants)
    • Halton sequence (multi-dimensional)
    • Circle, Disk, Sphere, and Sphere3Hopf sequences
    • Reseeding behavior and multiple pop() calls

3. Integer Low-Discrepancy Sequences (ILDS)

  • Added integer-based Van der Corput and Halton sequences for applications requiring integer outputs.
  • Includes functions like vdc_i() and class VdCorput_i.

🛠 Build & CI Improvements

1. Cross-Platform Build Fixes

  • Added -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to macOS and Windows CI workflows to ensure compatibility with modern CMake policies.
  • Updated xmake.lua to improve compatibility with Termux (Android) and other non-standard environments.

2. CMake Version Bump

  • Project version updated from 1.0.5 to 1.1 in CMakeLists.txt.

📚 Documentation

1. New Gemini Code-Aware Context Document

  • Added GEMINI.md with:
    • Project overview and key technologies
    • Build and run instructions
    • Code style and development conventions
    • Directory structure explanation

2. Doxygen Support

  • Enabled Doxygen for automated documentation generation.

🔧 Code Improvements

1. Optimized div_mod Functions

  • Replaced previous div_mod.hpp with optimized versions using bit-shifting and loop unrolling for divisions by 3 and 7.
  • Supports uint8_t and uint16_t with constexpr and noexcept.

2. Renamed Test File

  • Renamed test_div_mod.cpp to test_div_mod.tpp for consistency (no functional changes).

✅ Testing

  • Added 57+ new test cases across all sequence generators.
  • Improved test coverage for edge cases, reseeding, and multi-pop behavior.
  • All tests pass on macOS, Windows, and Linux (via GitHub Actions).

👥 Contributors

  • luk036 (primary contributor)
  • Who-dev (build system fixes)

📦 Files Changed

  • .github/workflows/macos.yml
  • .github/workflows/windows.yml
  • CMakeLists.txt
  • GEMINI.md (new)
  • include/ldsgen/div_mod.hpp (rewritten)
  • include/ldsgen/lds.hpp (extended with Disk class)
  • test/source/test_div_mod.cpp → test_div_mod.tpp
  • test/source/test_ilds.cpp (new tests)
  • test/source/test_lds.cpp (extended tests)
  • test/source/test_lds_n.cpp (extended tests)
  • xmake.lua

📈 Summary

  • 12 files changed
  • 468 additions, 119 deletions
  • 10 commits between 1.0.5 and 1.1

This release significantly improves the robustness, test coverage, and cross-platform compatibility of lds-gen-cpp, making it more reliable and easier to integrate into larger projects.