Skip to content

Releases: jointpoints/tms-nets

(t, m, s)-nets generator v.3.0.1

03 Jun 15:06
ca3a660
Compare
Choose a tag to compare

CHANGELOG

Bug fixes

  • Incorrect computations in tms::analysis::t function have been fixed.

Implementation updates

  • Sobol nets have been named ModifiedNiederreiter in the original release, the true name has been assigned to their class.
  • DirNum class has been renamed to GenNum.
  • get_ prefix has been removed from the names of digital nets methods.
  • Explicit non-degeneracy checks have been added to tms::analysis::t function.

(t, m, s)-nets generator v.3.0.0

25 Mar 13:43
9d2a776
Compare
Choose a tag to compare

CHANGELOG

WARNING

The interface of the generator and its implementation have drastically changed in this version making it incompatible with the
previous one. Consult with tutorials or library reference to quickly get acquainted with all modifications.

New features

  • More freedom in nets creation: advanced users have been enabled to construct digital (t, m, s)-nets using arbitrary generator matrices over F₂ or direction numbers with the help of new GenMat and DirNum objects, respectively.
  • New class of digital (t, m, s)-nets: modified Niederreiter nets have been developed.
  • Qualitative analysis: new functions to measure quality of nets have been introduced.

Major improvements

  • No more templates: library has been completely redesigned to become template-free.
  • Library has become static.
  • One Definition Rule: library has become fully complient with ODR; no more linking errors should appear after inclusion of our library into various source files at once.
  • The official license has finally been added.

Implementation updates

  • All source code has been split into .hpp-files (in ./include folder) and .cpp-files (in ./source folder).
  • DigitalNet class that contains the most general interface for digital (t, m, s)-nets has been added in ./include/tms-nets/digital_nets.hpp and ./source/digital_nets.cpp files.
  • ModifiedNiederreiter class that contains modified Niederreiter (t, m, s)-nets generator has been added in ./include/tms-nets/modified_niederreiter.hpp and ./source/modified_niederreiter.cpp files.
  • Inheritance chain has been introduced for classes of (t, m, s)-nets: DigitalNetNiederreiterModifiedNiederreiter.
  • Classes GenMat, GenMatRow and DirNum have been introduced in ./include/tms-nets/details/common.hpp and ./source/details/common.cpp files.
  • Additional functions for linear recurrent sequences and generator matrices have been added into ./include/tms-nets/details/recseq.hpp, ./source/details/recseq.cpp, ./include/tms-nets/details/genmat.hpp and ./source/details/genmat.cpp, respectively.
  • A universal header file ./include/tms-nets.hpp has been added.

(t, m, s)-nets generator v.2.0.0

26 Sep 16:45
c788504
Compare
Choose a tag to compare

DISCLAIMER

The interface of the generator and its implementation have drastically changed in this version making it incompatible with the previous one. Hereafter, the tips of the following form:

<correct pattern for the previous version> -> <correct pattern for the new version>

have been written to simplify users' transition and resolution of likely compatibility issues.

CHANGELOG

Overall changes

  • The irrpoly library providing the interface for irreducible polynomials over finite fields has been updated to the latest version.
  • Names and documentation have been changed to follow the notation from the the new theoretical materials that have been added to the "knowledge" branch.
  • Experimental features have been added that can be toggled by defining TMS_EXPERIMENTAL macro.
  • TsTests and automatic tester have been updated.

Changes in the project structure

  • New structure of the include folder has been introduced:

    • The main include file niederreiter2.hpp has been relocated into include/tms-nets;
    • The new folder include/tms-nets/details has been created to store the first-party utility files;
    • The new folder include/tms-nets/thirdparty has been created to store the third-party utility files;
      To avoid compatibility issues related to the changes in the project structure one needs to consider the new path of the main include file:
      include/niederreiter2.hpp -> include/tms-nets/niederreiter2.hpp
  • A first-party gf2poly.hpp include file with the functions handling the generation of irreducible polynomials over F₂ has been added into include/tms-nets/details folder. Previously, these functions had been defined right inside the niederreiter2.hpp file;

  • A third-party irrpoly library has been placed into include/tms-nets/thirdparty folder;

  • A draft of the documentation main page has been added into tools folder.

Changes in the user interface

  • A library's namespace name has been changed to tms;
    sequences -> tms
  • First-party utility functions handling the generation of irreducible polynomials over F₂ have been placed inside tms::gf2poly namespace;
    sequences:: -> tms::gf2poly::
  • To provide compatibility with the new version of irrpoly a new utility function make_gf2poly has been added with the help of which a polynomial can be created by the vector of its coefficients. This function is advised to be used instead of the irrpoly native interface for creation of known polynomials;
  • A new public template tms::Matrix<T> has been added which is equivalent to std::vector< std::vector<T> >;
  • The tms::Niederreiter template class of a net generator has been redesigned to only depend on a single template parameter, namely the unsigned integral type needed to store the values of intermediate calculations. Digit capacity, at the same time, is now needs to be specified as the first argument of constructors;
    sequences::Niederreiter<U, N>(...) -> tms::Niederreiter<U>(N, ...)
  • Manual setting of a generator is now easier due to new constructors that accept initialiser lists;
  • A user has been enabled to specify the initialising values of all recurring sequences that are used in the process of generation with the help of additional arguments of constructors;
  • The getter for nbits has been renamed into get_m;
    get_nbits -> get_m
  • store_point_real and get_next_point_int methods have been removed;
  • The _real suffix in the names of methods has been removed, the get_ prefix in the names of methods has been replaced with generate_;
    get_point_int -> generate_point_int
    get_point_real -> generate_point
    for_each_point_real -> for_each_point
  • The role of getters is now played by generate_point and generate_point_int methods for a single point, and by for_each_point* methods for a range of points;
  • store* methods and cast_point_int_to_real method have been removed from the public access.

Changes in the implementation

  • initialize_c and calculate_v methods have been reorganised into initialize_direction_numbers and fill_container_recursively;
  • New checks have been added in the process of generation, e.g. is_matrix_of_initial_values_valid method.

Changes in the tests

  • TsTests' infrastructure has been updated to fix the bug with incorrect handling of NULL argument;
  • Optimisations of TsTests for digital (t, m, s)-nets have been improved (follow new instructions in the TsTests Usage and Development Guide);
  • Three different sets of test cases have been added into the automatic tester: critical, regular and exhaustive;
  • Logging of the automatic tester has been improved.

(t, m, s)-nets generator v.1.0

24 Sep 21:46
30e3219
Compare
Choose a tag to compare

The first stable release with complete functionality.