(t, m, s)-nets generator v.2.0.0
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
irrpolylibrary 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_EXPERIMENTALmacro. - TsTests and automatic tester have been updated.
Changes in the project structure
-
New structure of the
includefolder has been introduced:- The main include file
niederreiter2.hpphas been relocated intoinclude/tms-nets; - The new folder
include/tms-nets/detailshas been created to store the first-party utility files; - The new folder
include/tms-nets/thirdpartyhas 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
- The main include file
-
A first-party
gf2poly.hppinclude file with the functions handling the generation of irreducible polynomials over F₂ has been added intoinclude/tms-nets/detailsfolder. Previously, these functions had been defined right inside theniederreiter2.hppfile; -
A third-party
irrpolylibrary has been placed intoinclude/tms-nets/thirdpartyfolder; -
A draft of the documentation main page has been added into
toolsfolder.
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::gf2polynamespace;
sequences:: -> tms::gf2poly:: - To provide compatibility with the new version of
irrpolya new utility functionmake_gf2polyhas 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 theirrpolynative interface for creation of known polynomials; - A new public template
tms::Matrix<T>has been added which is equivalent tostd::vector< std::vector<T> >; - The
tms::Niederreitertemplate 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
nbitshas been renamed intoget_m;
get_nbits -> get_m store_point_realandget_next_point_intmethods have been removed;- The
_realsuffix in the names of methods has been removed, theget_prefix in the names of methods has been replaced withgenerate_;
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_pointandgenerate_point_intmethods for a single point, and byfor_each_point*methods for a range of points; store*methods andcast_point_int_to_realmethod have been removed from the public access.
Changes in the implementation
initialize_candcalculate_vmethods have been reorganised intoinitialize_direction_numbersandfill_container_recursively;- New checks have been added in the process of generation, e.g.
is_matrix_of_initial_values_validmethod.
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.