GithubHelp home page GithubHelp logo

rabauke / trng4 Goto Github PK

View Code? Open in Web Editor NEW
114.0 7.0 21.0 16.9 MB

state of the art C++ pseudo-random number generator library for sequential and parallel Monte Carlo simulations

Home Page: https://www.numbercrunch.de/trng/

License: BSD 3-Clause "New" or "Revised" License

C++ 98.74% CMake 1.26%
pseudo-random-generator c-plus-plus library hpc monte-carlo-methods computational-physics computational-finance

trng4's Introduction

TRNG - A modern C++ pseudo random number generator library

Key features

  • fully compatible with the C++11 random number facility as defined in <random>
  • implements various pseudo random number algorithms
  • supports multiple streams of random numbers for parallel (multi-threaded) applications
  • does not depend on a specific parallelization technique, may be used with any threading library or MPI
  • pseudo random numbers can be sampled from different distributions
  • bindings for the R programming language provided via rTRNG package, see also this blog post or this presentation

Documentation

For installation instructions and documentation read trng.pdf in the doc directory.

trng4's People

Contributors

joseasoler avatar rabauke avatar saibalde avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

trng4's Issues

Compile error with operator >> (basic_istream &, discrete_dist &)

Given this file:

#include <trng/discrete_dist.hpp>
int main() {

}

Compiling using clang++ -std=c++11 -Wall -Wextra -pedantic test.cpp produces the following error:

In file included from test.cpp:1:
/usr/local/include/trng/discrete_dist.hpp:264:31: error: no matching constructor for initialization of 'discrete_dist::param_type'
    discrete_dist::param_type p;
                              ^
/usr/local/include/trng/discrete_dist.hpp:63:7: note: candidate constructor template not viable: requires 2 arguments, but 0 were provided
      param_type(iter first, iter last) :
      ^
/usr/local/include/trng/discrete_dist.hpp:73:16: note: candidate constructor not viable: requires single argument 'n', but no arguments were provided
      explicit param_type(int n) :
               ^
/usr/local/include/trng/discrete_dist.hpp:55:11: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
class param_type {
      ^
/usr/local/include/trng/discrete_dist.hpp:55:11: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
1 error generated.

A similar error also results when using gcc if you try to do std::cin >> dist; (which instantiates the templated operator overload).

There are also similar issues with binomial_dist, fast_discrete_dist, hypergeometric_dist, and poisson_dist.

Add option to skip deprecated MPICXX bindings

First thanks a lot for this very useful library!

In many recent versions of mpi libraries the MPICXX binding has been removed (MPICXX refers to the MPI-2 C++ API that was removed again in MPI-3). This gives some compilation problems of the mpi examples in the example folder.

I suggest a quick fix:
Change the following line in examples/CMakeLists.txt
if (MPI_FOUND)
to
if (MPI_MPICXX_FOUND)

Then the user can define a macro MPI_CXX_SKIP_MPICXX=ON during the cmake phase to skip the compilation of these mpi examples if the mpicxx binding has been removed from their compilers.

Warning [-Warray-bounds] in int_math.hpp

When compiling with "GCC 4.8.2 20130829 (prerelease)", I get the following warning:

/usr/include/trng/int_math.hpp: In function ‘void trng::int_math::gauss(long int_, long int_, long int) [with int n = 2]’:
/usr/include/trng/int_math.hpp:126:9: warning: array subscript is above array bounds [-Warray-bounds]
if (b[p[i]]!=0l)

Best regards
Torquil Sørensen

Two-argument versions of math::log are dangerous to use and don't appear to be used anywhere

For example,

inline float log(float b, float x) {
  static float last_b(2.0f);
  static float last_log_b(1.0f/log(last_b));
  if (b!=last_b) {
    last_b=b;
    last_log_b=1.0f/log(b);
  }
  return log(x)*last_log_b;
}

Using function-local statics to cache the last base makes it unsafe to call these functions concurrently. While it is possible to add the necessary synchronization, since those functions do not appear to be used anywhere in TRNG it might be easier to just remove them.

GCC 4.7.2 warnings

Hi!

In an effort to increase the visibility of warning message related to my own code, I am trying to reduce the warnings coming from third party libraries. I use GCC 4.7.2 and I'm using -Wall -Wextra -pedantic -std=c++11. In this case I get the following warnings from TRNG which would be nice to have removed:

/mn/anatu/cma-u3/tmac/usr/include/trng/special_functions.hpp: In instantiation of ‘T trng::math::detail::Beta_I(T, T, T, T) [with T = float]’:
/mn/anatu/cma-u3/tmac/usr/include/trng/special_functions.hpp:831:42: required from here
/mn/anatu/cma-u3/tmac/usr/include/trng/special_functions.hpp:795:9: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
/mn/anatu/cma-u3/tmac/usr/include/trng/special_functions.hpp: In instantiation of ‘T trng::math::detail::Beta_I(T, T, T, T) [with T = double]’:
/mn/anatu/cma-u3/tmac/usr/include/trng/special_functions.hpp:841:42: required from here
/mn/anatu/cma-u3/tmac/usr/include/trng/special_functions.hpp:795:9: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
/mn/anatu/cma-u3/tmac/usr/include/trng/special_functions.hpp: In instantiation of ‘T trng::math::detail::Beta_I(T, T, T, T) [with T = long double]’:
/mn/anatu/cma-u3/tmac/usr/include/trng/special_functions.hpp:851:42: required from here
/mn/anatu/cma-u3/tmac/usr/include/trng/special_functions.hpp:795:9: warning: suggest parentheses around assignment used as truth value [-Wparentheses]

These should be easy to address, right?

I also get these, but I don't know if they are more difficult?:

/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp: In constructor ‘Random::Random(int, int)’:
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +24)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +16)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘c’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +24)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +16)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘c’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +24)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +16)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘c’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +24)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +16)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘((void)& c +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:310:16: warning: ‘c’ may be used uninitialized in this function [-Wmaybe-uninitialized]

Best regards,
Torquil Sørensen

beta_dist compile errors with Clang

Compiling this code

#include <trng/beta_dist.hpp>
int main() {

}

in Clang 3.4 using clang++ -Wall -Wextra -pedantic -std=c++11 test.cpp produces the following errors:

/usr/local/include/trng/beta_dist.hpp:69:78: error: reference to non-static member function must be called
      void alpha(result_type alpha_new) { alpha_=alpha_new; norm_=math::Beta(alpha, beta); }
                                                                             ^~~~~
/usr/local/include/trng/beta_dist.hpp:61:19: note: possible target for call
      result_type alpha() const { return alpha_; }
                  ^
/usr/local/include/trng/beta_dist.hpp:69:12: note: possible target for call
      void alpha(result_type alpha_new) { alpha_=alpha_new; norm_=math::Beta(alpha, beta); }
           ^
/usr/local/include/trng/beta_dist.hpp:69:85: error: reference to non-static member function must be called
      void alpha(result_type alpha_new) { alpha_=alpha_new; norm_=math::Beta(alpha, beta); }
                                                                                    ^~~~
/usr/local/include/trng/beta_dist.hpp:63:19: note: possible target for call
      result_type beta() const { return beta_; }
                  ^
/usr/local/include/trng/beta_dist.hpp:71:12: note: possible target for call
      void beta(result_type beta_new) { beta_=beta_new; norm_=math::Beta(alpha, beta); }
           ^
/usr/local/include/trng/beta_dist.hpp:71:74: error: reference to non-static member function must be called
      void beta(result_type beta_new) { beta_=beta_new; norm_=math::Beta(alpha, beta); }
                                                                         ^~~~~
/usr/local/include/trng/beta_dist.hpp:61:19: note: possible target for call
      result_type alpha() const { return alpha_; }
                  ^
/usr/local/include/trng/beta_dist.hpp:69:12: note: possible target for call
      void alpha(result_type alpha_new) { alpha_=alpha_new; norm_=math::Beta(alpha, beta); }
           ^
/usr/local/include/trng/beta_dist.hpp:71:81: error: reference to non-static member function must be called
      void beta(result_type beta_new) { beta_=beta_new; norm_=math::Beta(alpha, beta); }
                                                                                ^~~~
/usr/local/include/trng/beta_dist.hpp:63:19: note: possible target for call
      result_type beta() const { return beta_; }
                  ^
/usr/local/include/trng/beta_dist.hpp:71:12: note: possible target for call
      void beta(result_type beta_new) { beta_=beta_new; norm_=math::Beta(alpha, beta); }
           ^
/usr/local/include/trng/beta_dist.hpp:73:40: error: reference to non-static member function must be called
        alpha_(1), beta_(1), norm_(math::Beta(alpha, beta)) {
                                              ^~~~~
/usr/local/include/trng/beta_dist.hpp:61:19: note: possible target for call
      result_type alpha() const { return alpha_; }
                  ^
/usr/local/include/trng/beta_dist.hpp:69:12: note: possible target for call
      void alpha(result_type alpha_new) { alpha_=alpha_new; norm_=math::Beta(alpha, beta); }
           ^
/usr/local/include/trng/beta_dist.hpp:73:47: error: reference to non-static member function must be called
        alpha_(1), beta_(1), norm_(math::Beta(alpha, beta)) {
                                                     ^~~~
/usr/local/include/trng/beta_dist.hpp:63:19: note: possible target for call
      result_type beta() const { return beta_; }
                  ^
/usr/local/include/trng/beta_dist.hpp:71:12: note: possible target for call
      void beta(result_type beta_new) { beta_=beta_new; norm_=math::Beta(alpha, beta); }

GCC 4.7.2 warnings

When compiling using GCC 4.7.2 with options -pedantic -Wall -Wextra, the header file uniformxx.hpp from TRNG 4.14 results in the following warning about comparison between unsigned and signed integer expressions:

/mn/anatu/cma-u3/tmac/usr/bin/mpicxx -Dmontecarlo_EXPORTS -std=c++11 -Wall -Wextra -pedantic -fdiagnostics-show-option -DMPICH_IGNORE_CXX_SEEK -O3 -DBOOST_DISABLE_ASSERTS -fPIC -I/mn/anatu/cma-u3/tmac/research/include -I/mn/anatu/cma-u3/tmac/usr/include -o CMakeFiles/montecarlo.dir/prng_c.cpp.o -c /mn/anatu/cma-u3/tmac/research/montecarlo/source/prng_c.cpp
In file included from /mn/anatu/cma-u3/tmac/usr/include/trng/utility.hpp:48:0,
from /mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:41,
from /mn/anatu/cma-u3/tmac/research/montecarlo/source/prng_c.hpp:4,
from /mn/anatu/cma-u3/tmac/research/montecarlo/source/prng_c.cpp:1:
/mn/anatu/cma-u3/tmac/usr/include/trng/uniformxx.hpp: In instantiation of ‘static trng::utility::u01xx_traits<return_type, requested_bits, prng_t>::ret_t trng::utility::u01xx_traits<return_type, requested_bits, prng_t>::variate(prng_t&) [with return_type = double; long unsigned int requested_bits = 1ul; prng_t = trng::yarn2; trng::utility::u01xx_traits<return_type, requested_bits, prng_t>::ret_t = double]’:
/mn/anatu/cma-u3/tmac/usr/include/trng/uniformxx.hpp:218:28: required from ‘static return_type trng::utility::u01xx_traits<return_type, requested_bits, prng_t>::co(prng_t&) [with return_type = double; long unsigned int requested_bits = 1ul; prng_t = trng::yarn2]’
/mn/anatu/cma-u3/tmac/usr/include/trng/uniformxx.hpp:245:57: required from ‘ReturnType trng::utility::uniformco(PrngType&) [with ReturnType = double; PrngType = trng::yarn2]’
/mn/anatu/cma-u3/tmac/usr/include/trng/yarn2.hpp:289:69: required from here
/mn/anatu/cma-u3/tmac/usr/include/trng/uniformxx.hpp:173:2: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

I'm reporting it because I want to minimize unnecessary GCC warning output so that I catch the important warnings. It might not be inherently important.

Best regards
Torquil Sørensen

Weibull constructor documentation mistake

Hello,
Thanks a lot for your library, it has been very useful to me so far and I really don't know how I would proceed without it. I use version 4.22.
I've noticed an inconsistency between the constructor in weibull_dist.hpp and the documentation. Nothing big, but though a bit sill, maybe you are aware of it already.

In the 4.22 the constructor is declared as :
weibull_dist(result_type theta, result_type beta)
While in the documentation it is said to be :
weibull_dist(result_type beta, result_type theta)

There is as far as I tested, no problem with this weibull distribution as long as you use the good declaration (the one of the hpp file).

Thanks !
Victor

Allow using system installed Catch for builds

I am the maintainer of RPM packages of trng for openSUSE.

While updating our packages to version 4.25, we noticed that tests require the Catch2 library, but there is no way to use a system installed Catch2 instead of the bundled version in external/Catch2/. Since we already have Catch2 packages for openSUSE (and probably most other distros) — and we prefer to use system libraries over bundled ones — I wrote a patch that allows one to use a system installed Catch2 to build and run tests. The patch is fairly simple:

Index: trng4-4.25/CMakeLists.txt
===================================================================
--- trng4-4.25.orig/CMakeLists.txt
+++ trng4-4.25/CMakeLists.txt
@@ -14,6 +14,7 @@ endif()
 
 option(TRNG_ENABLE_TESTS "Enable/Disable the compilation of the TRNG tests" ON)
 option(TRNG_ENABLE_EXAMPLES "Enable/Disable the compilation of the TRNG examples" ON)
+option(USE_EXTERNAL_CATCH "Use system installed Catch2" ON)
 
 if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Wmaybe-uninitialized")
@@ -42,7 +43,11 @@ configure_package_config_file("cmake/Con
 
 add_subdirectory(trng)
 if(TRNG_ENABLE_TESTS)
-  add_subdirectory(external/Catch2)
+  if(USE_EXTERNAL_CATCH)
+    find_package(Catch2 2 REQUIRED)
+  else(USE_EXTERNAL_CATCH)
+    add_subdirectory(external/Catch2)
+  endif()
   add_subdirectory(tests)
 endif()
 if(TRNG_ENABLE_EXAMPLES)

I would be happy to send you a PR if this is helpful. We set external Catch2 "ON" by default, but I could of course switch it to "OFF" by default if you prefer that. Also, I guess the actual name of the option is up for discussion as well — should it be "TRNG_USE_EXTERNAL_CATCH", for example?

Thanks for working on this great library.

library soname ends with 0.0.0

Is it intended that the soname of the library ends in 0.0.0? I seem to remember that this was not the case before, but now I'm getting the following library filenames when compiling TRNG:

-rwxr-xr-x. 1 tmac libstoragemgmt 1024 Oct 22 20:17 libtrng4.la
lrwxrwxrwx. 1 tmac libstoragemgmt 17 Oct 22 20:17 libtrng4.so -> libtrng4.so.0.0.0
lrwxrwxrwx. 1 tmac libstoragemgmt 17 Oct 22 20:17 libtrng4.so.0 -> libtrng4.so.0.0.0
-rwxr-xr-x. 1 tmac libstoragemgmt 338896 Oct 22 20:17 libtrng4.so.0.0.0

I've been using 4.18.

xoroshiro type generators

Firstly many thanks for your library!

I was wondering if there were any plans to add the generators from here. In particular the xoroshiro128plus. They appear to be quite fast and have good properties so it would be nice to have them in your library under the C++11 RNG concept (the website provides a basic C implementation which is not too hard to tweak).

I would be more than happy to contribute to this where I could.

unable to compile certain examples

trng seems to have installed fine, and some examples (pi, hello_world) compile and run fine, but those involving distributions do not.

$make correlated_normal_dist
g++ -DHAVE_CONFIG_H -I. -I../src  -I..  -g -O2 -g -O2 -MT correlated_normal_dist.o -MD -MP -MF .deps/correlated_normal_dist.Tpo -c -o correlated_normal_dist.o correlated_normal_dist.cc
In file included from correlated_normal_dist.cc:38:
In file included from ../trng/correlated_normal_dist.hpp:40:
../trng/special_functions.hpp:47:18: error: exception specification in declaration does not match previous declaration
extern "C" float lgammaf(float) throw();
                 ^
/usr/include/math.h:461:14: note: previous declaration is here
extern float lgammaf(float);

...
$make distributions
clang -DHAVE_CONFIG_H -I. -I../src  -I..  -g -O2 -g -O2 -MT distributions.o -MD -MP -MF .deps/distributions.Tpo -c -o distributions.o distributions.cc
In file included from distributions.cc:45:
In file included from ../trng/normal_dist.hpp:42:
../trng/special_functions.hpp:47:18: error: exception specification in
      declaration does not match previous declaration
extern "C" float lgammaf(float) throw();
                 ^
/usr/include/math.h:461:14: note: previous declaration is here
extern float lgammaf(float);

...
$make discrete_dist
clang -DHAVE_CONFIG_H -I. -I../src  -I..  -g -O2 -g -O2 -MT discrete_dist.o -MD -MP -MF .deps/discrete_dist.Tpo -c -o discrete_dist.o discrete_dist.cc
In file included from discrete_dist.cc:38:
../trng/discrete_dist.hpp:264:31: error: no matching constructor for
      initialization of 'discrete_dist::param_type'
    discrete_dist::param_type p;

...

I'm somewhat new to C++, and it's likely this is a user error, but I'm an undergraduate student at UC Berkeley looking to use your library to implement parallel particle filtering for a class project and would dearly appreciate any guidance you could possibly give. I've been reading through the documentation and I'm extremely excited to utilize your work.

I'm on OSX, and I've been compiling with the newest clang, if that helps at all.

Drop outdated FindTBB.cmake module

The FindTBB.cmake module is outdated as TBB does not supply a "tbb_stddef.h" header any more. This leads to build failures as seen here:

[   22s] -- Could NOT find MPI_CXX (missing: MPI_CXX_LIB_NAMES MPI_CXX_HEADER_DIR MPI_CXX_WORKS) 
[   22s] -- Could NOT find MPI (missing: MPI_C_FOUND MPI_CXX_FOUND) 
[   23s] -- Found OpenMP_C: -fopenmp (found version "4.5") 
[   23s] -- Found OpenMP_CXX: -fopenmp (found version "4.5") 
[   23s] -- Found OpenMP: TRUE (found version "4.5")  
[   23s] CMake Error at cmake/FindTBB.cmake:187 (file):
[   23s]   file failed to open for reading (No such file or directory):
[   23s] 
[   23s]     /usr/include/tbb/tbb_stddef.h
[   23s] Call Stack (most recent call first):
[   23s]   examples/CMakeLists.txt:6 (find_package)
[   23s] 
[   23s] 
[   23s] -- Found TBB: /usr/include (found version ".")  

The fix is straightforward: just drop the FindTBB.cmake file, which will allow cmake to look for and use TBB upstream's supplied cmake modules directly. I have tested that this works as expected.

Thanks.

Cannot run make install directly

With most software, it is possible to run "make install" without running "make" before, and everything will be taken care of automatically by the dependencies in the makefile. However, with TRNG, I get the following if I run make install directly:

make[1]: Entering directory '/tmp/trng-4.20/src'
/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT minstd.lo -MD -MP -MF .deps/minstd.Tpo -c -o minstd.lo minstd.cc
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT minstd.lo -MD -MP -MF .deps/minstd.Tpo -c minstd.cc -fPIC -DPIC -o .libs/minstd.o
minstd.cc:33:10: fatal error: trng/minstd.hpp: No such file or directory
#include <trng/minstd.hpp>
^~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:495: minstd.lo] Error 1
make[1]: Leaving directory '/tmp/trng-4.20/src'
make: *** [Makefile:388: install-recursive] Error 1

If I run "make" and then "make install", it works. Is something wrong with the dependencies in the makefile?

BUILD_SHARED_LIBS

To generate static/shared builds of a library in CMake, it is possible to define a single target (trng4 instead of trng4_shared and trng4_static), and let the user define the BUILD_SHARED_LIBS CMake variable to specify if they want to build a static or shared library. Another advantage is that CMake projects using trng4 with find_package or FetchContent would be able to link against the trng4 target and their code would build properly regardless of if the found library is static or dynamic. Currently they need to decide beforehand if they want to link against the trng4_static or the trng4_shared library.

If you think this feature is a good idea I can implement it and prepare a pull request. I have noticed that there is a special case for trng4_shared on Windows so I would also make sure that building keeps working on that platform as well.

cross compiling into a shared library

Hello,
I'm trying to compile the trng4 library from a Linux environment into a library I can use for cross compiling on Windows.

Unfortunately, I'm getting the following warning:
/bin/bash ../libtool --tag=CXX --mode=link x86_64-w64-mingw32.shared-g++ -g -O2 -version-info 19:0:0 -o libtrng4.la -rpath /usr/local/lib minstd.lo lcg64.lo lcg64_shift.lo mt19937.lo mt19937_64.lo mrg2.lo mrg3.lo mrg3s.lo mrg4.lo mrg5.lo mrg5s.lo yarn2.lo yarn3.lo yarn3s.lo yarn4.lo yarn5.lo yarn5s.lo

libtool: warning: undefined symbols not allowed in x86_64-w64-mingw32.shared shared libraries; building static only

I've attached the configure log as a reference.

I'm currently trying to figure out which symbol is causing the error. There were a lot of undefined symbols when I did the standard compile, but the libraries processed just fine. The CXX symbol on the trng4 makefile is well defined.

Any help on where I should look to debug this case would be greatly appreciated. Thank you very much!

config.log

Save the internal state and restart

Hi,
It is mentioned in the documentation but I can't find any way to save the internal state of a random number generator to resume in that same state on another execution.
Is there an accurate example to achieve that?
Could you guide me to some documentation that explain how to do?

Question about TRNG and RNGTS

Dear Prof. Bauke,

My name is Elías F. Combarro and I am an associate professor at the Computer Science Department of the University of Oviedo (Spain).

I have just found your TRNG library, which I think interesting. I have read in the documentation that you used the Ising model tests from RNGTS. I am very interested in using those tests, but I the code seems to be no longer available at the RNGTS webpage. Would you know where I can find it or if there is any other implementation of those tests?

Thank you very much in advance

Best,

Elías F. Combarro
Associate Professor
Computer Science Department
University of Oviedo - Spain

Errors from test suite when building on ARM 64-bit (aarch64)

When building packages for openSUSE for the 64-bit ARM aarch64 architecture, we find that the test suite give the following errors (no errors reported for x86 or x86_64 architectures, so this is aarch64 specific). Full log file is also attached as a zip file:
_log.zip.

[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(94): error: in "test_suite_math/test_suite_special_functions/test_asech<long double>": sufficent accuracy, x = 9.53674e-07, asech(x) = 14.5561, err = 4.1014e-26, rel_err = 2.81766e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(94): error: in "test_suite_math/test_suite_special_functions/test_asech<long double>": sufficent accuracy, x = 0.000976562, asech(x) = 7.62462, err = 4.77539e-27, rel_err = 6.26311e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(94): error: in "test_suite_math/test_suite_special_functions/test_asech<long double>": sufficent accuracy, x = 0.0078125, asech(x) = 5.54516, err = 3.08283e-27, rel_err = 5.55949e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(120): error: in "test_suite_math/test_suite_special_functions/test_acsch<long double>": sufficent accuracy, x = 9.53674e-07, acsch(x) = 14.5561, err = 5.133e-27, rel_err = 3.52636e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(120): error: in "test_suite_math/test_suite_special_functions/test_acsch<long double>": sufficent accuracy, x = 0.000976562, acsch(x) = 7.62462, err = 3.73489e-27, rel_err = 4.89846e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(120): error: in "test_suite_math/test_suite_special_functions/test_acsch<long double>": sufficent accuracy, x = 1, acsch(x) = 0.881374, err = 2.02076e-29, rel_err = 2.29274e-29 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(120): error: in "test_suite_math/test_suite_special_functions/test_acsch<long double>": sufficent accuracy, x = 1024, acsch(x) = 0.000976562, err = 9.14862e-32, rel_err = 9.36819e-29 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(120): error: in "test_suite_math/test_suite_special_functions/test_acsch<long double>": sufficent accuracy, x = 1.04858e+06, acsch(x) = 9.53674e-07, err = 2.40034e-34, rel_err = 2.51693e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(146): error: in "test_suite_math/test_suite_special_functions/test_acoth<long double>": sufficent accuracy, x = 1.00098, aocth(x) = 3.81255, err = 2.86629e-27, rel_err = 7.51804e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(146): error: in "test_suite_math/test_suite_special_functions/test_acoth<long double>": sufficent accuracy, x = 1.00781, aocth(x) = 2.77454, err = 2.61937e-27, rel_err = 9.44075e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(146): error: in "test_suite_math/test_suite_special_functions/test_acoth<long double>": sufficent accuracy, x = 2, aocth(x) = 0.549306, err = 4.61263e-28, rel_err = 8.39719e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(146): error: in "test_suite_math/test_suite_special_functions/test_acoth<long double>": sufficent accuracy, x = 128, aocth(x) = 0.00781266, err = 3.95983e-30, rel_err = 5.06848e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(146): error: in "test_suite_math/test_suite_special_functions/test_acoth<long double>": sufficent accuracy, x = 1024, aocth(x) = 0.000976563, err = 1.14674e-31, rel_err = 1.17427e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(182): error: in "test_suite_math/test_suite_special_functions/test_GammaP<long double>": sufficent accuracy, s = 2, x = 1, GammaP(s, x) = 0.264241, err = 3.22922e-28, rel_err = 1.22207e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(182): error: in "test_suite_math/test_suite_special_functions/test_GammaP<long double>": sufficent accuracy, s = 2, x = 2, GammaP(s, x) = 0.593994, err = 8.20701e-29, rel_err = 1.38167e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(182): error: in "test_suite_math/test_suite_special_functions/test_GammaP<long double>": sufficent accuracy, s = 2, x = 3, GammaP(s, x) = 0.800852, err = 3.99753e-28, rel_err = 4.9916e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(182): error: in "test_suite_math/test_suite_special_functions/test_GammaP<long double>": sufficent accuracy, s = 2, x = 4, GammaP(s, x) = 0.908422, err = 3.66206e-28, rel_err = 4.03123e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(182): error: in "test_suite_math/test_suite_special_functions/test_GammaP<long double>": sufficent accuracy, s = 2, x = 5, GammaP(s, x) = 0.959572, err = 4.61109e-28, rel_err = 4.80536e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(182): error: in "test_suite_math/test_suite_special_functions/test_GammaP<long double>": sufficent accuracy, s = 2, x = 6, GammaP(s, x) = 0.982649, err = 1.57166e-29, rel_err = 1.59942e-29 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(182): error: in "test_suite_math/test_suite_special_functions/test_GammaP<long double>": sufficent accuracy, s = 2, x = 7, GammaP(s, x) = 0.992705, err = 3.24726e-28, rel_err = 3.27112e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(182): error: in "test_suite_math/test_suite_special_functions/test_GammaP<long double>": sufficent accuracy, s = 2, x = 8, GammaP(s, x) = 0.996981, err = 1.32028e-28, rel_err = 1.32428e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(215): error: in "test_suite_math/test_suite_special_functions/test_GammaQ<long double>": sufficent accuracy, s = 2, x = 1, GammaQ(s, x) = 0.735759, err = 3.22922e-28, rel_err = 4.38896e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(215): error: in "test_suite_math/test_suite_special_functions/test_GammaQ<long double>": sufficent accuracy, s = 2, x = 2, GammaQ(s, x) = 0.406006, err = 8.20701e-29, rel_err = 2.0214e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(215): error: in "test_suite_math/test_suite_special_functions/test_GammaQ<long double>": sufficent accuracy, s = 2, x = 3, GammaQ(s, x) = 0.199148, err = 3.99753e-28, rel_err = 2.00731e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(215): error: in "test_suite_math/test_suite_special_functions/test_GammaQ<long double>": sufficent accuracy, s = 2, x = 4, GammaQ(s, x) = 0.0915782, err = 3.37938e-29, rel_err = 3.69016e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(215): error: in "test_suite_math/test_suite_special_functions/test_GammaQ<long double>": sufficent accuracy, s = 2, x = 5, GammaQ(s, x) = 0.0404277, err = 3.88905e-29, rel_err = 9.61978e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(215): error: in "test_suite_math/test_suite_special_functions/test_GammaQ<long double>": sufficent accuracy, s = 2, x = 6, GammaQ(s, x) = 0.0173513, err = 1.57167e-29, rel_err = 9.05794e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(215): error: in "test_suite_math/test_suite_special_functions/test_GammaQ<long double>": sufficent accuracy, s = 2, x = 7, GammaQ(s, x) = 0.00729506, err = 4.72574e-30, rel_err = 6.478e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(215): error: in "test_suite_math/test_suite_special_functions/test_GammaQ<long double>": sufficent accuracy, s = 2, x = 8, GammaQ(s, x) = 0.00301916, err = 2.02775e-30, rel_err = 6.71626e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(244): error: in "test_suite_math/test_suite_special_functions/test_inc_gamma<long double>": sufficent accuracy, s = 6, x = 2, inc_gamma(s, x) = 1.98763, err = 3.9936e-27, rel_err = 2.00922e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(244): error: in "test_suite_math/test_suite_special_functions/test_inc_gamma<long double>": sufficent accuracy, s = 6, x = 4, inc_gamma(s, x) = 25.7844, err = 3.62027e-23, rel_err = 1.40406e-24 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(244): error: in "test_suite_math/test_suite_special_functions/test_inc_gamma<long double>": sufficent accuracy, s = 6, x = 6, inc_gamma(s, x) = 66.5184, err = 3.81931e-17, rel_err = 5.74173e-19 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(244): error: in "test_suite_math/test_suite_special_functions/test_inc_gamma<long double>": sufficent accuracy, s = 6, x = 8, inc_gamma(s, x) = 97.0517, err = 1.64171e-26, rel_err = 1.69159e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(244): error: in "test_suite_math/test_suite_special_functions/test_inc_gamma<long double>": sufficent accuracy, s = 6, x = 10, inc_gamma(s, x) = 111.95, err = 4.60803e-25, rel_err = 4.11616e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(244): error: in "test_suite_math/test_suite_special_functions/test_inc_gamma<long double>": sufficent accuracy, s = 6, x = 12, inc_gamma(s, x) = 117.559, err = 6.51896e-26, rel_err = 5.54526e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(244): error: in "test_suite_math/test_suite_special_functions/test_inc_gamma<long double>": sufficent accuracy, s = 6, x = 14, inc_gamma(s, x) = 119.336, err = 1.54656e-25, rel_err = 1.29597e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(273): error: in "test_suite_math/test_suite_special_functions/test_inc_Gamma<long double>": sufficent accuracy, s = 6, x = 2, inc_Gamma(s, x) = 118.012, err = 3.83994e-25, rel_err = 3.25384e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(273): error: in "test_suite_math/test_suite_special_functions/test_inc_Gamma<long double>": sufficent accuracy, s = 6, x = 4, inc_Gamma(s, x) = 94.2156, err = 3.62027e-23, rel_err = 3.84253e-25 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(273): error: in "test_suite_math/test_suite_special_functions/test_inc_Gamma<long double>": sufficent accuracy, s = 6, x = 6, inc_Gamma(s, x) = 53.4816, err = 3.81931e-17, rel_err = 7.14136e-19 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(273): error: in "test_suite_math/test_suite_special_functions/test_inc_Gamma<long double>": sufficent accuracy, s = 6, x = 8, inc_Gamma(s, x) = 22.9483, err = 1.64171e-26, rel_err = 7.15395e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(273): error: in "test_suite_math/test_suite_special_functions/test_inc_Gamma<long double>": sufficent accuracy, s = 6, x = 10, inc_Gamma(s, x) = 8.05032, err = 8.03167e-28, rel_err = 9.97684e-29 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(273): error: in "test_suite_math/test_suite_special_functions/test_inc_Gamma<long double>": sufficent accuracy, s = 6, x = 12, inc_Gamma(s, x) = 2.44092, err = 4.81044e-27, rel_err = 1.97074e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(273): error: in "test_suite_math/test_suite_special_functions/test_inc_Gamma<long double>": sufficent accuracy, s = 6, x = 14, inc_Gamma(s, x) = 0.663846, err = 3.4388e-28, rel_err = 5.18011e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.025, inv_GammaP(s, x) = 0.242209, err = 4.97074e-28, rel_err = 2.05225e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.05, inv_GammaP(s, x) = 0.355362, err = 2.14668e-28, rel_err = 6.04082e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.1, inv_GammaP(s, x) = 0.531812, err = 2.50087e-28, rel_err = 4.70255e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.2, inv_GammaP(s, x) = 0.824388, err = 2.34403e-28, rel_err = 2.84336e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.3, inv_GammaP(s, x) = 1.09735, err = 2.71232e-27, rel_err = 2.4717e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.4, inv_GammaP(s, x) = 1.37642, err = 4.44087e-27, rel_err = 3.22639e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.5, inv_GammaP(s, x) = 1.67835, err = 2.09453e-27, rel_err = 1.24797e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.6, inv_GammaP(s, x) = 2.02231, err = 2.76883e-27, rel_err = 1.36914e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.8, inv_GammaP(s, x) = 2.99431, err = 1.64561e-24, rel_err = 5.49578e-25 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.8, inv_GammaP(s, x) = 2.99431, err = 1.64561e-24, rel_err = 5.49578e-25 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.9, inv_GammaP(s, x) = 3.88972, err = 4.92681e-27, rel_err = 1.26662e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.95, inv_GammaP(s, x) = 4.74386, err = 4.16668e-27, rel_err = 8.78331e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(308): error: in "test_suite_math/test_suite_special_functions/test_inv_GammaP<long double>": sufficent accuracy, s = 2, x = 0.975, inv_GammaP(s, x) = 5.57164, err = 3.25928e-27, rel_err = 5.84976e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.0625, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.110104, err = 3.95186e-28, rel_err = 3.5892e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.125, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.16162, err = 4.29542e-28, rel_err = 2.65773e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.1875, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.204339, err = 3.26158e-28, rel_err = 1.59617e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.25, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.243022, err = 4.58927e-28, rel_err = 1.88842e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.3125, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.279584, err = 3.26826e-28, rel_err = 1.16897e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.375, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.31509, err = 1.31188e-28, rel_err = 4.16352e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.4375, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.350271, err = 2.85226e-28, rel_err = 8.14301e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.5, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.385728, err = 1.57353e-28, rel_err = 4.07939e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.5625, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.422039, err = 3.17679e-28, rel_err = 7.52724e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.625, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.459854, err = 3.89929e-28, rel_err = 8.47943e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.75, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.543678, err = 4.3812e-30, rel_err = 8.05845e-30 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.8125, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.592879, err = 4.88084e-28, rel_err = 8.23243e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.875, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.651555, err = 1.75567e-28, rel_err = 2.69459e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.9375, a = 2, b = 3, inv_Beta_I(x, a, b) = 0.730453, err = 2.39971e-31, rel_err = 3.28523e-31 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.0625, a = 0.25, b = 0.2, inv_Beta_I(x, a, b) = 0.000304838, err = 3.37954e-31, rel_err = 1.10863e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.125, a = 0.25, b = 0.2, inv_Beta_I(x, a, b) = 0.00486317, err = 1.37183e-30, rel_err = 2.82086e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.1875, a = 0.25, b = 0.2, inv_Beta_I(x, a, b) = 0.0243115, err = 3.5482e-29, rel_err = 1.45948e-27 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.25, a = 0.25, b = 0.2, inv_Beta_I(x, a, b) = 0.0743128, err = 6.71972e-29, rel_err = 9.04248e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.3125, a = 0.25, b = 0.2, inv_Beta_I(x, a, b) = 0.169504, err = 8.49194e-29, rel_err = 5.00988e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.375, a = 0.25, b = 0.2, inv_Beta_I(x, a, b) = 0.313012, err = 2.36539e-28, rel_err = 7.55686e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.4375, a = 0.25, b = 0.2, inv_Beta_I(x, a, b) = 0.488093, err = 3.15756e-28, rel_err = 6.46918e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.5, a = 0.25, b = 0.2, inv_Beta_I(x, a, b) = 0.662495, err = 6.86296e-30, rel_err = 1.03593e-29 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.5625, a = 0.25, b = 0.2, inv_Beta_I(x, a, b) = 0.80566, err = 6.12925e-28, rel_err = 7.60773e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(405): error: in "test_suite_math/test_suite_special_functions/test_inv_Beta_I<long double>": sufficent accuracy, x = 0.625, a = 0.25, b = 0.2, inv_Beta_I(x, a, b) = 0.903591, err = 1.15352e-28, rel_err = 1.27659e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = -8, Phi(x) = 6.22096e-16, err = 3.64618e-38, rel_err = 5.86112e-23 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = -7, Phi(x) = 1.27981e-12, err = 5.76835e-35, rel_err = 4.50718e-23 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = -6, Phi(x) = 9.86588e-10, err = 3.28867e-32, rel_err = 3.33337e-23 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = -5, Phi(x) = 2.86652e-07, err = 6.70612e-30, rel_err = 2.33947e-23 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = -4, Phi(x) = 3.16712e-05, err = 4.82902e-28, rel_err = 1.52473e-23 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = -3, Phi(x) = 0.0013499, err = 1.19966e-26, rel_err = 8.88703e-24 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = -2, Phi(x) = 0.0227501, err = 9.74461e-26, rel_err = 4.28332e-24 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = -1, Phi(x) = 0.158655, err = 2.17919e-25, rel_err = 1.37354e-24 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = 1, Phi(x) = 0.841345, err = 2.17919e-25, rel_err = 2.59012e-25 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = 2, Phi(x) = 0.97725, err = 9.72461e-26, rel_err = 9.951e-26 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = 3, Phi(x) = 0.99865, err = 1.22266e-26, rel_err = 1.22431e-26 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = 4, Phi(x) = 0.999968, err = 7.26202e-28, rel_err = 7.26225e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = 5, Phi(x) = 1, err = 2.54373e-28, rel_err = 2.54373e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = 6, Phi(x) = 1, err = 2.99169e-28, rel_err = 2.99169e-28 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = 7, Phi(x) = 1, err = 4.38351e-30, rel_err = 4.38351e-30 for long double
[  117s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(443): error: in "test_suite_math/test_suite_special_functions/test_Phi<long double>": sufficent accuracy, x = 8, Phi(x) = 1, err = 1.78412e-28, rel_err = 1.78412e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.000976562, inv_Phi(x) = -3.09727, err = 2.80055e-24, rel_err = 9.04199e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.0625, inv_Phi(x) = -1.53412, err = 1.38486e-24, rel_err = 9.02706e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.125, inv_Phi(x) = -1.15035, err = 1.03692e-24, rel_err = 9.01397e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.1875, inv_Phi(x) = -0.887147, err = 8.00531e-25, rel_err = 9.02366e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.25, inv_Phi(x) = -0.67449, err = 6.08929e-25, rel_err = 9.028e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.3125, inv_Phi(x) = -0.488776, err = 4.40971e-25, rel_err = 9.02194e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.375, inv_Phi(x) = -0.318639, err = 2.87787e-25, rel_err = 9.03173e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.4375, inv_Phi(x) = -0.157311, err = 1.41837e-25, rel_err = 9.01635e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.5625, inv_Phi(x) = 0.157311, err = 1.41837e-25, rel_err = 9.01635e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.625, inv_Phi(x) = 0.318639, err = 2.87787e-25, rel_err = 9.03173e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.6875, inv_Phi(x) = 0.488776, err = 4.40971e-25, rel_err = 9.02194e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.75, inv_Phi(x) = 0.67449, err = 6.08929e-25, rel_err = 9.028e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.8125, inv_Phi(x) = 0.887147, err = 8.00531e-25, rel_err = 9.02366e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.875, inv_Phi(x) = 1.15035, err = 1.03692e-24, rel_err = 9.01397e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.9375, inv_Phi(x) = 1.53412, err = 1.38486e-24, rel_err = 9.02706e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(481): error: in "test_suite_math/test_suite_special_functions/test_inv_Phi<long double>": sufficent accuracy, x = 0.999023, inv_Phi(x) = 3.09727, err = 2.80055e-24, rel_err = 9.04199e-25 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = -0.999023, inv_erf(x) = -2.33147, err = 2.22863e-26, rel_err = 9.5589e-27 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = -0.9375, inv_erf(x) = -1.31715, err = 7.3563e-28, rel_err = 5.58501e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = -0.8125, inv_erf(x) = -0.931974, err = 6.04149e-28, rel_err = 6.48247e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = -0.6875, inv_erf(x) = -0.714171, err = 1.61041e-29, rel_err = 2.25494e-29 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = -0.5625, inv_erf(x) = -0.549013, err = 3.94477e-28, rel_err = 7.18521e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = -0.4375, inv_erf(x) = -0.409508, err = 9.12712e-29, rel_err = 2.2288e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = -0.3125, inv_erf(x) = -0.284434, err = 8.57188e-29, rel_err = 3.01366e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = -0.1875, inv_erf(x) = -0.167727, err = 4.82589e-28, rel_err = 2.87722e-27 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = -0.0625, inv_erf(x) = -0.0554459, err = 3.59746e-29, rel_err = 6.48823e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = 0.0625, inv_erf(x) = 0.0554459, err = 3.59746e-29, rel_err = 6.48823e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = 0.1875, inv_erf(x) = 0.167727, err = 4.82589e-28, rel_err = 2.87722e-27 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = 0.3125, inv_erf(x) = 0.284434, err = 8.57188e-29, rel_err = 3.01366e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = 0.4375, inv_erf(x) = 0.409508, err = 9.12712e-29, rel_err = 2.2288e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = 0.5625, inv_erf(x) = 0.549013, err = 3.94477e-28, rel_err = 7.18521e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = 0.6875, inv_erf(x) = 0.714171, err = 1.61041e-29, rel_err = 2.25494e-29 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = 0.8125, inv_erf(x) = 0.931974, err = 6.04149e-28, rel_err = 6.48247e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = 0.9375, inv_erf(x) = 1.31715, err = 7.35631e-28, rel_err = 5.58502e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(520): error: in "test_suite_math/test_suite_special_functions/test_inv_erf<long double>": sufficent accuracy, x = 0.999023, inv_erf(x) = 2.33147, err = 2.22863e-26, rel_err = 9.5589e-27 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 0.000976562, inv_erfc(x) = 2.33147, err = 2.22863e-26, rel_err = 9.5589e-27 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 0.0625, inv_erfc(x) = 1.31715, err = 7.35631e-28, rel_err = 5.58502e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 0.1875, inv_erfc(x) = 0.931974, err = 6.04149e-28, rel_err = 6.48247e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 0.3125, inv_erfc(x) = 0.714171, err = 1.61041e-29, rel_err = 2.25494e-29 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 0.4375, inv_erfc(x) = 0.549013, err = 3.94477e-28, rel_err = 7.18521e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 0.5625, inv_erfc(x) = 0.409508, err = 9.12712e-29, rel_err = 2.2288e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 0.6875, inv_erfc(x) = 0.284434, err = 8.57188e-29, rel_err = 3.01366e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 0.8125, inv_erfc(x) = 0.167727, err = 4.82589e-28, rel_err = 2.87722e-27 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 0.9375, inv_erfc(x) = 0.0554459, err = 3.59746e-29, rel_err = 6.48823e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 1.0625, inv_erfc(x) = -0.0554459, err = 3.59746e-29, rel_err = 6.48823e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 1.1875, inv_erfc(x) = -0.167727, err = 4.82589e-28, rel_err = 2.87722e-27 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 1.3125, inv_erfc(x) = -0.284434, err = 8.57188e-29, rel_err = 3.01366e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 1.4375, inv_erfc(x) = -0.409508, err = 9.12712e-29, rel_err = 2.2288e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 1.5625, inv_erfc(x) = -0.549013, err = 3.94477e-28, rel_err = 7.18521e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 1.6875, inv_erfc(x) = -0.714171, err = 1.61041e-29, rel_err = 2.25494e-29 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 1.8125, inv_erfc(x) = -0.931974, err = 6.04149e-28, rel_err = 6.48247e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 1.9375, inv_erfc(x) = -1.31715, err = 7.35631e-28, rel_err = 5.58502e-28 for long double
[  118s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_math.cc(560): error: in "test_suite_math/test_suite_special_functions/test_inv_erfc<long double>": sufficent accuracy, x = 1.99902, inv_erfc(x) = -2.33147, err = 2.22863e-26, rel_err = 9.5589e-27 for long double
[  132s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_distributions.cc(292): error: in "test_suite_distributions/test_suite_continous_distributions/test_normal_dist<long double>": check continous_dist_test_icdf(d) has failed
[  135s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_distributions.cc(299): error: in "test_suite_distributions/test_suite_continous_distributions/test_truncated_normal_dist<long double>": check continous_dist_test_icdf(d) has failed
[  205s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_distributions.cc(313): error: in "test_suite_distributions/test_suite_continous_distributions/test_cauchy_dist<long double>": check continous_dist_test_icdf(d) has failed
[  217s] /home/abuild/rpmbuild/BUILD/trng4-4.23/tests/test_distributions.cc(327): error: in "test_suite_distributions/test_suite_continous_distributions/test_lognormal_dist<long double>": check continous_dist_test_icdf(d) has failed

Cannot build with old version of Boost

Based on what I can tell from searching the Boost website, BOOST_TEST was introduced in version 1.59.0, hence it would be beneficial to have CMake only accept version 1.59.0 or later. I am working on a system with 1.53 installed, and trng4 fails to build.

Here is a proposed fix.
trng4_boost_version_patch.txt

Error in Gamma_dist with large kappa

Hi,

First of all, awesome project, nice job!

I've found a bug that if we set the first parameter in Gamms_dist be large, the generator will generate 'nan'. The numbers I used are trng::gamma_dist<> g(1000.,1000.);

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.