From a2fd89f963a7374b29f7831e67b443c3d42c6e3c Mon Sep 17 00:00:00 2001 From: Kevin Chabowski Date: Thu, 1 Aug 2013 22:53:27 +0200 Subject: Added SFMT prng. --- SFMT/CHANGE-LOG.txt | 61 +++ SFMT/FILES.txt | 39 ++ SFMT/LICENSE.txt | 32 ++ SFMT/Makefile | 295 +++++++++++ SFMT/README.txt | 27 + SFMT/SFMT-alti.h | 156 ++++++ SFMT/SFMT-common.h | 164 ++++++ SFMT/SFMT-params.h | 98 ++++ SFMT/SFMT-params11213.h | 50 ++ SFMT/SFMT-params1279.h | 50 ++ SFMT/SFMT-params132049.h | 50 ++ SFMT/SFMT-params19937.h | 50 ++ SFMT/SFMT-params216091.h | 50 ++ SFMT/SFMT-params2281.h | 50 ++ SFMT/SFMT-params4253.h | 50 ++ SFMT/SFMT-params44497.h | 50 ++ SFMT/SFMT-params607.h | 50 ++ SFMT/SFMT-params86243.h | 50 ++ SFMT/SFMT-sse2.h | 121 +++++ SFMT/SFMT.11213.out.txt | 405 +++++++++++++++ SFMT/SFMT.1279.out.txt | 405 +++++++++++++++ SFMT/SFMT.132049.out.txt | 405 +++++++++++++++ SFMT/SFMT.19937.out.txt | 405 +++++++++++++++ SFMT/SFMT.216091.out.txt | 405 +++++++++++++++ SFMT/SFMT.2281.out.txt | 405 +++++++++++++++ SFMT/SFMT.4253.out.txt | 405 +++++++++++++++ SFMT/SFMT.44497.out.txt | 405 +++++++++++++++ SFMT/SFMT.607.out.txt | 405 +++++++++++++++ SFMT/SFMT.86243.out.txt | 405 +++++++++++++++ SFMT/SFMT.c | 427 ++++++++++++++++ SFMT/SFMT.h | 295 +++++++++++ SFMT/check.sh | 40 ++ SFMT/html/_s_f_m_t_8c.html | 607 ++++++++++++++++++++++ SFMT/html/_s_f_m_t_8h.html | 848 +++++++++++++++++++++++++++++++ SFMT/html/_s_f_m_t_8h_source.html | 261 ++++++++++ SFMT/html/annotated.html | 72 +++ SFMT/html/bc_s.png | Bin 0 -> 705 bytes SFMT/html/bdwn.png | Bin 0 -> 147 bytes SFMT/html/classes.html | 78 +++ SFMT/html/closed.png | Bin 0 -> 126 bytes SFMT/html/doxygen.css | 1012 +++++++++++++++++++++++++++++++++++++ SFMT/html/doxygen.png | Bin 0 -> 3942 bytes SFMT/html/files.html | 72 +++ SFMT/html/functions.html | 84 +++ SFMT/html/functions_vars.html | 84 +++ SFMT/html/globals.html | 213 ++++++++ SFMT/html/globals_defs.html | 84 +++ SFMT/html/globals_func.html | 185 +++++++ SFMT/html/globals_type.html | 81 +++ SFMT/html/globals_vars.html | 78 +++ SFMT/html/howto-compile.html | 493 ++++++++++++++++++ SFMT/html/index.html | 123 +++++ SFMT/html/jquery.js | 64 +++ SFMT/html/mainpage_8txt.html | 68 +++ SFMT/html/nav_f.png | Bin 0 -> 159 bytes SFMT/html/nav_h.png | Bin 0 -> 97 bytes SFMT/html/open.png | Bin 0 -> 118 bytes SFMT/html/struct_s_f_m_t___t.html | 123 +++++ SFMT/html/tab_a.png | Bin 0 -> 140 bytes SFMT/html/tab_b.png | Bin 0 -> 178 bytes SFMT/html/tab_h.png | Bin 0 -> 192 bytes SFMT/html/tab_s.png | Bin 0 -> 189 bytes SFMT/html/tabs.css | 59 +++ SFMT/html/union_w128___t.html | 117 +++++ SFMT/params/11213.csv | 33 ++ SFMT/params/1279.csv | 33 ++ SFMT/params/19937.csv | 33 ++ SFMT/params/2281.csv | 33 ++ SFMT/params/4253.csv | 33 ++ SFMT/params/607.csv | 33 ++ SFMT/params/README.en.txt | 22 + SFMT/params/README.jp.txt | 20 + SFMT/params/csv2param.awk | 102 ++++ SFMT/test.c | 333 ++++++++++++ 74 files changed, 11786 insertions(+) create mode 100644 SFMT/CHANGE-LOG.txt create mode 100644 SFMT/FILES.txt create mode 100644 SFMT/LICENSE.txt create mode 100644 SFMT/Makefile create mode 100644 SFMT/README.txt create mode 100644 SFMT/SFMT-alti.h create mode 100644 SFMT/SFMT-common.h create mode 100644 SFMT/SFMT-params.h create mode 100644 SFMT/SFMT-params11213.h create mode 100644 SFMT/SFMT-params1279.h create mode 100644 SFMT/SFMT-params132049.h create mode 100644 SFMT/SFMT-params19937.h create mode 100644 SFMT/SFMT-params216091.h create mode 100644 SFMT/SFMT-params2281.h create mode 100644 SFMT/SFMT-params4253.h create mode 100644 SFMT/SFMT-params44497.h create mode 100644 SFMT/SFMT-params607.h create mode 100644 SFMT/SFMT-params86243.h create mode 100644 SFMT/SFMT-sse2.h create mode 100644 SFMT/SFMT.11213.out.txt create mode 100644 SFMT/SFMT.1279.out.txt create mode 100644 SFMT/SFMT.132049.out.txt create mode 100644 SFMT/SFMT.19937.out.txt create mode 100644 SFMT/SFMT.216091.out.txt create mode 100644 SFMT/SFMT.2281.out.txt create mode 100644 SFMT/SFMT.4253.out.txt create mode 100644 SFMT/SFMT.44497.out.txt create mode 100644 SFMT/SFMT.607.out.txt create mode 100644 SFMT/SFMT.86243.out.txt create mode 100644 SFMT/SFMT.c create mode 100644 SFMT/SFMT.h create mode 100755 SFMT/check.sh create mode 100644 SFMT/html/_s_f_m_t_8c.html create mode 100644 SFMT/html/_s_f_m_t_8h.html create mode 100644 SFMT/html/_s_f_m_t_8h_source.html create mode 100644 SFMT/html/annotated.html create mode 100644 SFMT/html/bc_s.png create mode 100644 SFMT/html/bdwn.png create mode 100644 SFMT/html/classes.html create mode 100644 SFMT/html/closed.png create mode 100644 SFMT/html/doxygen.css create mode 100644 SFMT/html/doxygen.png create mode 100644 SFMT/html/files.html create mode 100644 SFMT/html/functions.html create mode 100644 SFMT/html/functions_vars.html create mode 100644 SFMT/html/globals.html create mode 100644 SFMT/html/globals_defs.html create mode 100644 SFMT/html/globals_func.html create mode 100644 SFMT/html/globals_type.html create mode 100644 SFMT/html/globals_vars.html create mode 100644 SFMT/html/howto-compile.html create mode 100644 SFMT/html/index.html create mode 100644 SFMT/html/jquery.js create mode 100644 SFMT/html/mainpage_8txt.html create mode 100644 SFMT/html/nav_f.png create mode 100644 SFMT/html/nav_h.png create mode 100644 SFMT/html/open.png create mode 100644 SFMT/html/struct_s_f_m_t___t.html create mode 100644 SFMT/html/tab_a.png create mode 100644 SFMT/html/tab_b.png create mode 100644 SFMT/html/tab_h.png create mode 100644 SFMT/html/tab_s.png create mode 100644 SFMT/html/tabs.css create mode 100644 SFMT/html/union_w128___t.html create mode 100644 SFMT/params/11213.csv create mode 100644 SFMT/params/1279.csv create mode 100644 SFMT/params/19937.csv create mode 100644 SFMT/params/2281.csv create mode 100644 SFMT/params/4253.csv create mode 100644 SFMT/params/607.csv create mode 100644 SFMT/params/README.en.txt create mode 100644 SFMT/params/README.jp.txt create mode 100755 SFMT/params/csv2param.awk create mode 100644 SFMT/test.c (limited to 'SFMT') diff --git a/SFMT/CHANGE-LOG.txt b/SFMT/CHANGE-LOG.txt new file mode 100644 index 0000000..6a51df2 --- /dev/null +++ b/SFMT/CHANGE-LOG.txt @@ -0,0 +1,61 @@ +ver 1.4 +------- +internal state of SFMT is kept in structure. +function and macro names are changed to have sfmt_ prefix. +ALTIVEC OR BIGENDIAN ARE NOT TESTED AT ALL. + +ver 1.3.3 +------- +change condition compile of do_recursion in SFMT.c + +ver 1.3.2 +------- +bug fix to_res53_mix and genrand_res53_mix. + +ver 1.3.1 +------- +gcc compile option changed from -O9 to -O3. +add functions genrand_res53_mix and to_res53_mix. +bug fix about definition of ALWAYS_INLINE. +add new definition PRE_ALWAYS for MSC. + +ver 1.3 +------- +bug fixed: -DONLY64 without -DBIG_ENIAN64 had been generating +wrong sequence. +bug fixed: There is no documentation about BIG_ENDIAN64. +add automatic endian check by __BIG_ENDIAN__ predefined macro. +bug fixed: change == in check.sh to = +add SFMT-params216091.h +add AltiVec parameter format for systems which are not osx. +change Makefile for systems which are not osx and support AltiVec. +change sample2 of howto-compile for Free BSD. +change source files for BORLANDC and Visual Studio. +change period certification code more smart. +add params directory. + +ver 1.2.1 +------- +Fix typo in SFMT-alti.c SFMT-sse2.c +marge SFMT-alti.c and SFMT-alti.h into SFMT-alti.h +marge SFMT-sse2.c and SFMT-sse2.h into SFMT-sse2.h +This version is not released. + +ver 1.2 +------- +Support many periods: 2^{607}, 2^{1279}, 2^{2281}, 2^{4253}, 2^{11213}, +2^{19937}, 2^{44497}, 2^{86243}, 2^{132049} +Fix typo in LICENSE.txt. +Add cast to vec_perm for SFMT-alti.c, SFMT-alti64.c. +combine source codes. + +ver 1.1 +------- +The period certification method is changed from constant to function. +The convert functions from 32-bit and 64-bit integer to double are added. +The documentation is changed. +Sample programs are added. + +ver 1.0 +------- +The first version. diff --git a/SFMT/FILES.txt b/SFMT/FILES.txt new file mode 100644 index 0000000..f4f3f8d --- /dev/null +++ b/SFMT/FILES.txt @@ -0,0 +1,39 @@ +This archive contails following directories and files. + +TOP DIRECTORY +FILES.txt: This file. +LICENSE.txt: License file. +CHANGE-LOG.txt: Change log file. +Makefile: Makefile for test program. +SFMT.h: Header file. +SFMT-params.h: parameter file which controls various Mersenne expornent +params607.h: parameters for period of 2^{607}-1 +params1279.h: parameters for period of 2^{1279}-1 +params2281.h: parameters for period of 2^{2281}-1 +params4253.h: parameters for period of 2^{4253}-1 +params11213.h: parameters for period of 2^{11213}-1 +params19937.h: parameters for period of 2^{19937}-1 +params44497.h: parameters for period of 2^{44497}-1 +params86243.h: parameters for period of 2^{86243}-1 +params132049.h: parameters for period of 2^{132049}-1 +params216091.h: parameters for period of 2^{216091}-1 +SFMT.c: C code for standard C (c99) and unix like systems. +SFMT-alti.h: C code optimized for PowerPC AltiVec. +SFMT-sse2.h: C code optimized for intel SSE2. +SFMT-common.h: functions used SFMT.c and SFMT-jump.c +test.c: Test driver for 32 bit output for standard C. +check.sh: Test shell script. +SFMT.607.out.txt: correct 32-bit output of SFMT MEXP=607 +SFMT.1279.out.txt: correct 32-bit output of SFMT MEXP=1279 +SFMT.2281.out.txt: correct 32-bit output of SFMT MEXP=2281 +SFMT.4253.out.txt: correct 32-bit output of SFMT MEXP=4253 +SFMT.11213.out.txt: correct 32-bit output of SFMT MEXP=11213 +SFMT.19937.out.txt: correct 32-bit output of SFMT MEXP=19937 +SFMT.44497.out.txt: correct 32-bit output of SFMT MEXP=44497 +SFMT.86243.out.txt: correct 32-bit output of SFMT MEXP=86243 +SFMT.132049.out.txt: correct 32-bit output of SFMT MEXP=132049 +SFMT.216091.out.txt: correct 32-bit output of SFMT MEXP=216091 + +html DIRECTORY: The documents generated by doxygen. + +params DIRECTORY: The parameters useful for parallel generation. diff --git a/SFMT/LICENSE.txt b/SFMT/LICENSE.txt new file mode 100644 index 0000000..6f9c4a6 --- /dev/null +++ b/SFMT/LICENSE.txt @@ -0,0 +1,32 @@ +Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima +University. +Copyright (c) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima University +and The University of Tokyo. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the names of Hiroshima University, The University of + Tokyo nor the names of its contributors may be used to endorse + or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/SFMT/Makefile b/SFMT/Makefile new file mode 100644 index 0000000..13b1bb6 --- /dev/null +++ b/SFMT/Makefile @@ -0,0 +1,295 @@ +# @file Makefile +# @brief Makefile +# +# @author Mutsuo Saito (Hiroshima University) +# @author Makoto Matsumoto (Hiroshima University) +# +# Copyright (C) 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima +# University. All rights reserved. +# +# The new BSD License is applied to this software. +# see LICENSE.txt +# +# @note +# We could comple test-sse2-Mxxx using gcc 3.4.4 of cygwin. +# We could comple test-sse2-Mxxx using gcc 4.0.1 of Linux. +# We coundn't comple test-sse2-Mxxx using gcc 3.3.2 of Linux. +# We could comple test-alti-Mxxx using gcc 3.3 of osx. +# We could comple test-alti-Mxxx using gcc 4.0 of osx. + +WARN = -Wmissing-prototypes -Wall #-Winline +#WARN = -Wmissing-prototypes -Wall -W +OPTI = -O3 -finline-functions -fomit-frame-pointer -DNDEBUG \ +-fno-strict-aliasing --param max-inline-insns-single=1800 +#--param inline-unit-growth=500 --param large-function-growth=900 #for gcc 4 +#STD = +#STD = -std=c89 -pedantic +#STD = -std=c99 -pedantic +STD = -std=c99 +CC = gcc +CCFLAGS = $(OPTI) $(WARN) $(STD) +ALTIFLAGS = -mabi=altivec -maltivec -DHAVE_ALTIVEC +OSXALTIFLAGS = -faltivec -maltivec -DHAVE_ALTIVEC +SSE2FLAGS = -msse2 -DHAVE_SSE2 +STD_TARGET = test-std-M19937 +BIG_TARGET = test-big64-M19937 +ALL_STD_TARGET = test-std-M607 test-std-M1279 test-std-M2281 test-std-M4253 \ +test-std-M11213 test-std-M19937 test-std-M44497 test-std-M86243 \ +test-std-M132049 test-std-M216091 +ALL_BIG_TARGET = test-big64-M607 test-big64-M1279 test-big64-M2281 \ +test-big64-M4253 test-big64-M11213 test-big64-M19937 test-big64-M44497 \ +test-big64-M86243 test-big64-M132049 test-big64-M216091 +ALTI_TARGET = test-alti-M19937 +ALL_ALTI_TARGET = test-alti-M607 test-alti-M1279 test-alti-M2281 \ +test-alti-M4253 test-alti-M11213 test-alti-M19937 test-alti-M44497 \ +test-alti-M86243 test-alti-M132049 test-alti-M216091 +ALL_ALTIBIG_TARGET = test-alti64-M607 test-alti64-M1279 test-alti64-M2281 \ +test-alti64-M4253 test-alti64-M11213 test-alti64-M19937 test-alti64-M44497 \ +test-alti64-M86243 test-alti64-M132049 test-alti64-M216091 +SSE2_TARGET = test-sse2-M19937 +ALL_SSE2_TARGET = test-sse2-M607 test-sse2-M1279 test-sse2-M2281 \ +test-sse2-M4253 test-sse2-M11213 test-sse2-M19937 test-sse2-M44497 \ +test-sse2-M86243 test-sse2-M132049 test-sse2-M216091 +# ========================================================== +# comment out or EDIT following lines to get max performance +# ========================================================== +# -------------------- +# for gcc 4 +# -------------------- +#CCFLAGS += --param inline-unit-growth=500 \ +#--param large-function-growth=900 +# -------------------- +# for icl +# -------------------- +#CC = icl /Wcheck /O3 /QxB /Qprefetch +# ----------------- +# for PowerPC +# ----------------- +#CCFLAGS += -arch ppc +# ----------------- +# for Pentium M +# ----------------- +#CCFLAGS += -march=prescott +# ----------------- +# for Athlon 64 +# ----------------- +#CCFLAGS += -march=athlon64 + +.PHONY: std-check sse2-check alti-check + +std: ${STD_TARGET} + +sse2:${SSE2_TARGET} + +alti:${ALTI_TARGET} + +osx-alti: + make "ALTIFLAGS=${OSXALTIFLAGS}" alti + +big:${BIG_TARGET} + +std-check: ${ALL_STD_TARGET} + ./check.sh 32 test-std + +sse2-check: ${ALL_SSE2_TARGET} + ./check.sh 32 test-sse2 + +alti-check: ${ALL_ALTI_TARGET} + ./check.sh 32 test-alti + +osx-alti-check: + make "ALTIFLAGS=${OSXALTIFLAGS}" alti-check + +big-check: ${ALL_BIG_TARGET} ${ALL_STD_TARGET} + ./check.sh 64 test-big64 + +altibig-check: ${ALL_ALTIBIG_TARGET} ${ALL_STD_TARGET} + ./check.sh 64 test-alti64 + +osx-altibig-check: + make "ALTIFLAGS=${OSXALTIFLAGS}" altibig-check + +test-std-M607: test.c SFMT.c SFMT.h SFMT-params607.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=607 -o $@ test.c SFMT.c + +test-alti-M607: test.c SFMT.c SFMT.h SFMT-alti.h SFMT-params607.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=607 -o $@ test.c SFMT.c + +test-sse2-M607: test.c SFMT.c SFMT.h SFMT-sse2.h SFMT-params607.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=607 -o $@ test.c SFMT.c + +test-std-M1279: test.c SFMT.c SFMT.h SFMT-params1279.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=1279 -o $@ test.c SFMT.c + +test-alti-M1279: test.c SFMT.c SFMT.h SFMT-alti.h SFMT-params1279.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=1279 -o $@ test.c SFMT.c + +test-sse2-M1279: test.c SFMT.c SFMT.h SFMT-sse2.h SFMT-params1279.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=1279 -o $@ test.c SFMT.c + +test-std-M2281: test.c SFMT.c SFMT.h SFMT-params2281.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=2281 -o $@ test.c SFMT.c + +test-alti-M2281: test.c SFMT.c SFMT.h SFMT-alti.h SFMT-params2281.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=2281 -o $@ test.c SFMT.c + +test-sse2-M2281: test.c SFMT.c SFMT.h SFMT-sse2.h SFMT-params2281.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=2281 -o $@ test.c SFMT.c + +test-std-M4253: test.c SFMT.c SFMT.h SFMT-params4253.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=4253 -o $@ test.c SFMT.c + +test-alti-M4253: test.c SFMT.c SFMT.h SFMT-alti.h SFMT-params4253.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=4253 -o $@ test.c SFMT.c + +test-sse2-M4253: test.c SFMT.c SFMT.h SFMT-sse2.h SFMT-params4253.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=4253 -o $@ test.c SFMT.c + +test-std-M11213: test.c SFMT.c SFMT.h SFMT-params11213.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=11213 -o $@ test.c SFMT.c + +test-alti-M11213: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params11213.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=11213 -o $@ test.c SFMT.c + +test-sse2-M11213: test.c SFMT.c SFMT.h SFMT-sse2.h \ + SFMT-params11213.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=11213 -o $@ test.c SFMT.c + +test-std-M19937: test.c SFMT.c SFMT.h SFMT-params19937.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=19937 -o $@ test.c SFMT.c + +test-alti-M19937: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params19937.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=19937 -o $@ test.c SFMT.c + +test-sse2-M19937: test.c SFMT.c SFMT.h SFMT-sse2.h \ + SFMT-params19937.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=19937 -o $@ test.c SFMT.c + +test-std-M44497: test.c SFMT.c SFMT.h SFMT-params44497.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=44497 -o $@ test.c SFMT.c + +test-alti-M44497: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params44497.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=44497 -o $@ test.c SFMT.c + +test-sse2-M44497: test.c SFMT.c SFMT.h SFMT-sse2.h \ + SFMT-params44497.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=44497 -o $@ test.c SFMT.c + +test-std-M86243: test.c SFMT.c SFMT.h SFMT-params86243.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=86243 -o $@ test.c SFMT.c + +test-alti-M86243: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params86243.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=86243 -o $@ test.c SFMT.c + +test-sse2-M86243: test.c SFMT.c SFMT.h SFMT-sse2.h \ + SFMT-params86243.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=86243 -o $@ test.c SFMT.c + +test-std-M132049: test.c SFMT.c SFMT.h SFMT-params132049.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=132049 -o $@ test.c SFMT.c + +test-alti-M132049: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params132049.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=132049 -o $@ test.c SFMT.c + +test-sse2-M132049: test.c SFMT.c SFMT.h SFMT-sse2.h \ + SFMT-params132049.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=132049 -o $@ test.c SFMT.c + +test-std-M216091: test.c SFMT.c SFMT.h SFMT-params216091.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=216091 -o $@ test.c SFMT.c + +test-alti-M216091: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params216091.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=216091 -o $@ test.c SFMT.c + +test-sse2-M216091: test.c SFMT.c SFMT.h SFMT-sse2.h \ + SFMT-params216091.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=216091 -o $@ test.c SFMT.c + +test-big64-M607: test.c SFMT.c SFMT.h SFMT-params607.h + ${CC} ${CCFLAGS} -DONLY64 -DSFMT_MEXP=607 -o $@ test.c SFMT.c + +test-alti64-M607: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params607.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DONLY64 -DSFMT_MEXP=607 -o \ + $@ test.c SFMT.c + +test-big64-M1279: test.c SFMT.c SFMT.h SFMT-params1279.h + ${CC} ${CCFLAGS} -DONLY64 -DSFMT_MEXP=1279 -o $@ test.c + +test-alti64-M1279: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params1279.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DONLY64 -DSFMT_MEXP=1279 -o \ + $@ test.c SFMT.c + +test-big64-M2281: test.c SFMT.c SFMT.h SFMT-params2281.h + ${CC} ${CCFLAGS} -DONLY64 -DSFMT_MEXP=2281 -o $@ test.c SFMT.c + +test-alti64-M2281: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params2281.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DONLY64 -DSFMT_MEXP=2281 -o \ + $@ test.c SFMT.c + +test-big64-M4253: test.c SFMT.c SFMT.h SFMT-params4253.h + ${CC} ${CCFLAGS} -DONLY64 -DSFMT_MEXP=4253 -o $@ test.c SFMT.c + +test-alti64-M4253: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params4253.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DONLY64 -DSFMT_MEXP=4253 -o \ + $@ test.c SFMT.c + +test-big64-M11213: test.c SFMT.c SFMT.h SFMT-params11213.h + ${CC} ${CCFLAGS} -DONLY64 -DSFMT_MEXP=11213 -o $@ test.c SFMT.c + +test-alti64-M11213: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params11213.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DONLY64 -DSFMT_MEXP=11213 -o \ + $@ test.c SFMT.c + +test-big64-M19937: test.c SFMT.c SFMT.h SFMT-params19937.h + ${CC} ${CCFLAGS} -DONLY64 -DSFMT_MEXP=19937 -o $@ test.c SFMT.c + +test-alti64-M19937: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params19937.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DONLY64 -DSFMT_MEXP=19937 -o \ + $@ test.c SFMT.c + +test-big64-M44497: test.c SFMT.c SFMT.h SFMT-params44497.h + ${CC} ${CCFLAGS} -DONLY64 -DSFMT_MEXP=44497 -o $@ test.c SFMT.c + +test-alti64-M44497: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params44497.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DONLY64 -DSFMT_MEXP=44497 -o \ + $@ test.c SFMT.c + +test-big64-M86243: test.c SFMT.c SFMT.h SFMT-params86243.h + ${CC} ${CCFLAGS} -DONLY64 -DSFMT_MEXP=86243 -o $@ test.c SFMT.c + +test-alti64-M86243: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params86243.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DONLY64 -DSFMT_MEXP=86243 -o \ + $@ test.c SFMT.c + +test-big64-M132049: test.c SFMT.c SFMT.h SFMT-params132049.h + ${CC} ${CCFLAGS} -DONLY64 -DSFMT_MEXP=132049 -o $@ test.c SFMT.c + +test-alti64-M132049: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params132049.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DONLY64 -DSFMT_MEXP=132049 -o \ + $@ test.c SFMT.c + +test-big64-M216091: test.c SFMT.c SFMT.h SFMT-params216091.h + ${CC} ${CCFLAGS} -DONLY64 -DSFMT_MEXP=216091 -o $@ test.c SFMT.c + +test-alti64-M216091: test.c SFMT.c SFMT.h SFMT-alti.h \ + SFMT-params216091.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DONLY64 -DSFMT_MEXP=216091 -o \ + $@ test.c SFMT.c + +clean: + rm -f *.o *~ diff --git a/SFMT/README.txt b/SFMT/README.txt new file mode 100644 index 0000000..b3ee401 --- /dev/null +++ b/SFMT/README.txt @@ -0,0 +1,27 @@ + ================================================================= + SFMT ver. 1.4 + SIMD oriented Fast Mersenne Twister(SFMT) + + Mutsuo Saito (Hiroshima University) and + Makoto Matsumoto (The University of Tokyo) + + Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima + University. + Copyright (c) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima University + and The University of Tokyo. + All rights reserved. + + The (modified) BSD License is applied to this software, see LICENSE.txt + ================================================================= + CAUTION: + BIGENDIAN OR ALTIVEC FEATURES ARE NOT TESTED AT ALL. + + To see documents, see html/index.html. + + To make test program, see html/howto-compile.html + + If you want to redistribute and/or change source files, see LICENSE.txt. + + When you change these files and redistribute them, PLEASE write your + e-mail address in redistribution and write to contact YOU first if + users of your changed source encounter troubles. diff --git a/SFMT/SFMT-alti.h b/SFMT/SFMT-alti.h new file mode 100644 index 0000000..81c98b1 --- /dev/null +++ b/SFMT/SFMT-alti.h @@ -0,0 +1,156 @@ +#pragma once +/** + * @file SFMT-alti.h + * + * @brief SIMD oriented Fast Mersenne Twister(SFMT) + * pseudorandom number generator + * + * @author Mutsuo Saito (Hiroshima University) + * @author Makoto Matsumoto (Hiroshima University) + * + * Copyright (C) 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima + * University. All rights reserved. + * + * The new BSD License is applied to this software. + * see LICENSE.txt + */ + +#ifndef SFMT_ALTI_H +#define SFMT_ALTI_H + +inline static vector unsigned int vec_recursion(vector unsigned int a, + vector unsigned int b, + vector unsigned int c, + vector unsigned int d); + +/** + * This function represents the recursion formula in AltiVec and BIG ENDIAN. + * @param a a 128-bit part of the interal state array + * @param b a 128-bit part of the interal state array + * @param c a 128-bit part of the interal state array + * @param d a 128-bit part of the interal state array + * @return output + */ +inline static vector unsigned int vec_recursion(vector unsigned int a, + vector unsigned int b, + vector unsigned int c, + vector unsigned int d) { + + const vector unsigned int sl1 = SFMT_ALTI_SL1; + const vector unsigned int sr1 = SFMT_ALTI_SR1; +#ifdef ONLY64 + const vector unsigned int mask = SFMT_ALTI_MSK64; + const vector unsigned char perm_sl = SFMT_ALTI_SL2_PERM64; + const vector unsigned char perm_sr = SFMT_ALTI_SR2_PERM64; +#else + const vector unsigned int mask = SFMT_ALTI_MSK; + const vector unsigned char perm_sl = SFMT_ALTI_SL2_PERM; + const vector unsigned char perm_sr = SFMT_ALTI_SR2_PERM; +#endif + vector unsigned int v, w, x, y, z; + x = vec_perm(a, (vector unsigned int)perm_sl, perm_sl); + v = a; + y = vec_sr(b, sr1); + z = vec_perm(c, (vector unsigned int)perm_sr, perm_sr); + w = vec_sl(d, sl1); + z = vec_xor(z, w); + y = vec_and(y, mask); + v = vec_xor(v, x); + z = vec_xor(z, y); + z = vec_xor(z, v); + return z; +} + +/** + * This function fills the internal state array with pseudorandom + * integers. + */ +void sfmt_gen_rand_all(sfmt_t * sfmt) { + int i; + vector unsigned int r, r1, r2; + + r1 = sfmt->state[N - 2].s; + r2 = sfmt->state[N - 1].s; + for (i = 0; i < N - POS1; i++) { + r = vec_recursion(sfmt->state[i].s, sfmt->state[i + POS1].s, r1, r2); + sfmt->state[i].s = r; + r1 = r2; + r2 = r; + } + for (; i < N; i++) { + r = vec_recursion(sfmt->state[i].s, sfmt->state[i + POS1 - N].s, r1, r2); + sfmt->state[i].s = r; + r1 = r2; + r2 = r; + } +} + +/** + * This function fills the user-specified array with pseudorandom + * integers. + * + * @param array an 128-bit array to be filled by pseudorandom numbers. + * @param size number of 128-bit pesudorandom numbers to be generated. + */ +inline static void gen_rand_array(sfmt_t * sfmt, w128_t *array, int size) { + int i, j; + vector unsigned int r, r1, r2; + + r1 = sfmt->state[N - 2].s; + r2 = sfmt->state[N - 1].s; + for (i = 0; i < N - POS1; i++) { + r = vec_recursion(sfmt->state[i].s, sfmt->state[i + POS1].s, r1, r2); + array[i].s = r; + r1 = r2; + r2 = r; + } + for (; i < N; i++) { + r = vec_recursion(sfmt->state[i].s, array[i + POS1 - N].s, r1, r2); + array[i].s = r; + r1 = r2; + r2 = r; + } + /* main loop */ + for (; i < size - N; i++) { + r = vec_recursion(array[i - N].s, array[i + POS1 - N].s, r1, r2); + array[i].s = r; + r1 = r2; + r2 = r; + } + for (j = 0; j < 2 * N - size; j++) { + sfmt->state[j].s = array[j + size - N].s; + } + for (; i < size; i++) { + r = vec_recursion(array[i - N].s, array[i + POS1 - N].s, r1, r2); + array[i].s = r; + sfmt->state[j++].s = r; + r1 = r2; + r2 = r; + } +} + +#ifndef ONLY64 +#if defined(__APPLE__) +#define SFMT_ALTI_SWAP (vector unsigned char) \ + (4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15, 8, 9, 10, 11) +#else +#define SFMT_ALTI_SWAP {4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15, 8, 9, 10, 11} +#endif +/** + * This function swaps high and low 32-bit of 64-bit integers in user + * specified array. + * + * @param array an 128-bit array to be swaped. + * @param size size of 128-bit array. + */ +inline static void swap(w128_t *array, int size) { + int i; + const vector unsigned char perm = SFMT_ALTI_SWAP; + + for (i = 0; i < size; i++) { + array[i].s = vec_perm(array[i].s, (vector unsigned int)perm, perm); + } +} +#endif + +#endif diff --git a/SFMT/SFMT-common.h b/SFMT/SFMT-common.h new file mode 100644 index 0000000..c7d8aa9 --- /dev/null +++ b/SFMT/SFMT-common.h @@ -0,0 +1,164 @@ +#pragma once +/** + * @file SFMT-common.h + * + * @brief SIMD oriented Fast Mersenne Twister(SFMT) pseudorandom + * number generator with jump function. This file includes common functions + * used in random number generation and jump. + * + * @author Mutsuo Saito (Hiroshima University) + * @author Makoto Matsumoto (The University of Tokyo) + * + * Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima + * University. + * Copyright (C) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima + * University and The University of Tokyo. + * All rights reserved. + * + * The 3-clause BSD License is applied to this software, see + * LICENSE.txt + */ +#ifndef SFMT_COMMON_H +#define SFMT_COMMON_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "SFMT.h" + +inline static void do_recursion(w128_t * r, w128_t * a, w128_t * b, + w128_t * c, w128_t * d); + +inline static void rshift128(w128_t *out, w128_t const *in, int shift); +inline static void lshift128(w128_t *out, w128_t const *in, int shift); + +/** + * This function simulates SIMD 128-bit right shift by the standard C. + * The 128-bit integer given in in is shifted by (shift * 8) bits. + * This function simulates the LITTLE ENDIAN SIMD. + * @param out the output of this function + * @param in the 128-bit data to be shifted + * @param shift the shift value + */ +#ifdef ONLY64 +inline static void rshift128(w128_t *out, w128_t const *in, int shift) { + uint64_t th, tl, oh, ol; + + th = ((uint64_t)in->u[2] << 32) | ((uint64_t)in->u[3]); + tl = ((uint64_t)in->u[0] << 32) | ((uint64_t)in->u[1]); + + oh = th >> (shift * 8); + ol = tl >> (shift * 8); + ol |= th << (64 - shift * 8); + out->u[0] = (uint32_t)(ol >> 32); + out->u[1] = (uint32_t)ol; + out->u[2] = (uint32_t)(oh >> 32); + out->u[3] = (uint32_t)oh; +} +#else +inline static void rshift128(w128_t *out, w128_t const *in, int shift) +{ + uint64_t th, tl, oh, ol; + + th = ((uint64_t)in->u[3] << 32) | ((uint64_t)in->u[2]); + tl = ((uint64_t)in->u[1] << 32) | ((uint64_t)in->u[0]); + + oh = th >> (shift * 8); + ol = tl >> (shift * 8); + ol |= th << (64 - shift * 8); + out->u[1] = (uint32_t)(ol >> 32); + out->u[0] = (uint32_t)ol; + out->u[3] = (uint32_t)(oh >> 32); + out->u[2] = (uint32_t)oh; +} +#endif +/** + * This function simulates SIMD 128-bit left shift by the standard C. + * The 128-bit integer given in in is shifted by (shift * 8) bits. + * This function simulates the LITTLE ENDIAN SIMD. + * @param out the output of this function + * @param in the 128-bit data to be shifted + * @param shift the shift value + */ +#ifdef ONLY64 +inline static void lshift128(w128_t *out, w128_t const *in, int shift) { + uint64_t th, tl, oh, ol; + + th = ((uint64_t)in->u[2] << 32) | ((uint64_t)in->u[3]); + tl = ((uint64_t)in->u[0] << 32) | ((uint64_t)in->u[1]); + + oh = th << (shift * 8); + ol = tl << (shift * 8); + oh |= tl >> (64 - shift * 8); + out->u[0] = (uint32_t)(ol >> 32); + out->u[1] = (uint32_t)ol; + out->u[2] = (uint32_t)(oh >> 32); + out->u[3] = (uint32_t)oh; +} +#else +inline static void lshift128(w128_t *out, w128_t const *in, int shift) +{ + uint64_t th, tl, oh, ol; + + th = ((uint64_t)in->u[3] << 32) | ((uint64_t)in->u[2]); + tl = ((uint64_t)in->u[1] << 32) | ((uint64_t)in->u[0]); + + oh = th << (shift * 8); + ol = tl << (shift * 8); + oh |= tl >> (64 - shift * 8); + out->u[1] = (uint32_t)(ol >> 32); + out->u[0] = (uint32_t)ol; + out->u[3] = (uint32_t)(oh >> 32); + out->u[2] = (uint32_t)oh; +} +#endif +/** + * This function represents the recursion formula. + * @param r output + * @param a a 128-bit part of the internal state array + * @param b a 128-bit part of the internal state array + * @param c a 128-bit part of the internal state array + * @param d a 128-bit part of the internal state array + */ +#ifdef ONLY64 +inline static void do_recursion(w128_t *r, w128_t *a, w128_t *b, w128_t *c, + w128_t *d) { + w128_t x; + w128_t y; + + lshift128(&x, a, SFMT_SL2); + rshift128(&y, c, SFMT_SR2); + r->u[0] = a->u[0] ^ x.u[0] ^ ((b->u[0] >> SFMT_SR1) & SFMT_MSK2) ^ y.u[0] + ^ (d->u[0] << SFMT_SL1); + r->u[1] = a->u[1] ^ x.u[1] ^ ((b->u[1] >> SFMT_SR1) & SFMT_MSK1) ^ y.u[1] + ^ (d->u[1] << SFMT_SL1); + r->u[2] = a->u[2] ^ x.u[2] ^ ((b->u[2] >> SFMT_SR1) & SFMT_MSK4) ^ y.u[2] + ^ (d->u[2] << SFMT_SL1); + r->u[3] = a->u[3] ^ x.u[3] ^ ((b->u[3] >> SFMT_SR1) & SFMT_MSK3) ^ y.u[3] + ^ (d->u[3] << SFMT_SL1); +} +#else +inline static void do_recursion(w128_t *r, w128_t *a, w128_t *b, + w128_t *c, w128_t *d) +{ + w128_t x; + w128_t y; + + lshift128(&x, a, SFMT_SL2); + rshift128(&y, c, SFMT_SR2); + r->u[0] = a->u[0] ^ x.u[0] ^ ((b->u[0] >> SFMT_SR1) & SFMT_MSK1) + ^ y.u[0] ^ (d->u[0] << SFMT_SL1); + r->u[1] = a->u[1] ^ x.u[1] ^ ((b->u[1] >> SFMT_SR1) & SFMT_MSK2) + ^ y.u[1] ^ (d->u[1] << SFMT_SL1); + r->u[2] = a->u[2] ^ x.u[2] ^ ((b->u[2] >> SFMT_SR1) & SFMT_MSK3) + ^ y.u[2] ^ (d->u[2] << SFMT_SL1); + r->u[3] = a->u[3] ^ x.u[3] ^ ((b->u[3] >> SFMT_SR1) & SFMT_MSK4) + ^ y.u[3] ^ (d->u[3] << SFMT_SL1); +} +#endif +#endif + +#if defined(__cplusplus) +} +#endif diff --git a/SFMT/SFMT-params.h b/SFMT/SFMT-params.h new file mode 100644 index 0000000..372e6f1 --- /dev/null +++ b/SFMT/SFMT-params.h @@ -0,0 +1,98 @@ +#pragma once +#ifndef SFMT_PARAMS_H +#define SFMT_PARAMS_H + +#if !defined(SFMT_MEXP) +#if defined(__GNUC__) && !defined(__ICC) + #warning "SFMT_MEXP is not defined. I assume MEXP is 19937." +#endif + #define SFMT_MEXP 19937 +#endif +/*----------------- + BASIC DEFINITIONS + -----------------*/ +/** Mersenne Exponent. The period of the sequence + * is a multiple of 2^MEXP-1. + * #define SFMT_MEXP 19937 */ +/** SFMT generator has an internal state array of 128-bit integers, + * and N is its size. */ +#define SFMT_N (SFMT_MEXP / 128 + 1) +/** N32 is the size of internal state array when regarded as an array + * of 32-bit integers.*/ +#define SFMT_N32 (SFMT_N * 4) +/** N64 is the size of internal state array when regarded as an array + * of 64-bit integers.*/ +#define SFMT_N64 (SFMT_N * 2) + +/*---------------------- + the parameters of SFMT + following definitions are in paramsXXXX.h file. + ----------------------*/ +/** the pick up position of the array. +#define SFMT_POS1 122 +*/ + +/** the parameter of shift left as four 32-bit registers. +#define SFMT_SL1 18 + */ + +/** the parameter of shift left as one 128-bit register. + * The 128-bit integer is shifted by (SFMT_SL2 * 8) bits. +#define SFMT_SL2 1 +*/ + +/** the parameter of shift right as four 32-bit registers. +#define SFMT_SR1 11 +*/ + +/** the parameter of shift right as one 128-bit register. + * The 128-bit integer is shifted by (SFMT_SL2 * 8) bits. +#define SFMT_SR21 1 +*/ + +/** A bitmask, used in the recursion. These parameters are introduced + * to break symmetry of SIMD. +#define SFMT_MSK1 0xdfffffefU +#define SFMT_MSK2 0xddfecb7fU +#define SFMT_MSK3 0xbffaffffU +#define SFMT_MSK4 0xbffffff6U +*/ + +/** These definitions are part of a 128-bit period certification vector. +#define SFMT_PARITY1 0x00000001U +#define SFMT_PARITY2 0x00000000U +#define SFMT_PARITY3 0x00000000U +#define SFMT_PARITY4 0xc98e126aU +*/ + +#if SFMT_MEXP == 607 + #include "SFMT-params607.h" +#elif SFMT_MEXP == 1279 + #include "SFMT-params1279.h" +#elif SFMT_MEXP == 2281 + #include "SFMT-params2281.h" +#elif SFMT_MEXP == 4253 + #include "SFMT-params4253.h" +#elif SFMT_MEXP == 11213 + #include "SFMT-params11213.h" +#elif SFMT_MEXP == 19937 + #include "SFMT-params19937.h" +#elif SFMT_MEXP == 44497 + #include "SFMT-params44497.h" +#elif SFMT_MEXP == 86243 + #include "SFMT-params86243.h" +#elif SFMT_MEXP == 132049 + #include "SFMT-params132049.h" +#elif SFMT_MEXP == 216091 + #include "SFMT-params216091.h" +#else +#if defined(__GNUC__) && !defined(__ICC) + #error "SFMT_MEXP is not valid." + #undef SFMT_MEXP +#else + #undef SFMT_MEXP +#endif + +#endif + +#endif /* SFMT_PARAMS_H */ diff --git a/SFMT/SFMT-params11213.h b/SFMT/SFMT-params11213.h new file mode 100644 index 0000000..5727747 --- /dev/null +++ b/SFMT/SFMT-params11213.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef SFMT_PARAMS11213_H +#define SFMT_PARAMS11213_H + +#define SFMT_POS1 68 +#define SFMT_SL1 14 +#define SFMT_SL2 3 +#define SFMT_SR1 7 +#define SFMT_SR2 3 +#define SFMT_MSK1 0xeffff7fbU +#define SFMT_MSK2 0xffffffefU +#define SFMT_MSK3 0xdfdfbfffU +#define SFMT_MSK4 0x7fffdbfdU +#define SFMT_PARITY1 0x00000001U +#define SFMT_PARITY2 0x00000000U +#define SFMT_PARITY3 0xe8148000U +#define SFMT_PARITY4 0xd0c7afa3U + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define SFMT_ALTI_SL1 \ + (vector unsigned int)(SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1) + #define SFMT_ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define SFMT_ALTI_MSK \ + (vector unsigned int)(SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4) + #define SFMT_ALTI_MSK64 \ + (vector unsigned int)(SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3) + #define SFMT_ALTI_SL2_PERM \ + (vector unsigned char)(3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10) + #define SFMT_ALTI_SL2_PERM64 \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define SFMT_ALTI_SR2_PERM \ + (vector unsigned char)(5,6,7,0,9,10,11,4,13,14,15,8,19,19,19,12) + #define SFMT_ALTI_SR2_PERM64 \ + (vector unsigned char)(13,14,15,0,1,2,3,4,19,19,19,8,9,10,11,12) +#else /* For OTHER OSs(Linux?) */ + #define SFMT_ALTI_SL1 {SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1} + #define SFMT_ALTI_SR1 {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define SFMT_ALTI_MSK {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4} + #define SFMT_ALTI_MSK64 {SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3} + #define SFMT_ALTI_SL2_PERM {3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10} + #define SFMT_ALTI_SL2_PERM64 {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define SFMT_ALTI_SR2_PERM {5,6,7,0,9,10,11,4,13,14,15,8,19,19,19,12} + #define SFMT_ALTI_SR2_PERM64 {13,14,15,0,1,2,3,4,19,19,19,8,9,10,11,12} +#endif /* For OSX */ +#define SFMT_IDSTR "SFMT-11213:68-14-3-7-3:effff7fb-ffffffef-dfdfbfff-7fffdbfd" + +#endif /* SFMT_PARAMS11213_H */ diff --git a/SFMT/SFMT-params1279.h b/SFMT/SFMT-params1279.h new file mode 100644 index 0000000..12dbc13 --- /dev/null +++ b/SFMT/SFMT-params1279.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef SFMT_PARAMS1279_H +#define SFMT_PARAMS1279_H + +#define SFMT_POS1 7 +#define SFMT_SL1 14 +#define SFMT_SL2 3 +#define SFMT_SR1 5 +#define SFMT_SR2 1 +#define SFMT_MSK1 0xf7fefffdU +#define SFMT_MSK2 0x7fefcfffU +#define SFMT_MSK3 0xaff3ef3fU +#define SFMT_MSK4 0xb5ffff7fU +#define SFMT_PARITY1 0x00000001U +#define SFMT_PARITY2 0x00000000U +#define SFMT_PARITY3 0x00000000U +#define SFMT_PARITY4 0x20000000U + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define SFMT_ALTI_SL1 \ + (vector unsigned int)(SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1) + #define SFMT_ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define SFMT_ALTI_MSK \ + (vector unsigned int)(SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4) + #define SFMT_ALTI_MSK64 \ + (vector unsigned int)(SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3) + #define SFMT_ALTI_SL2_PERM \ + (vector unsigned char)(3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10) + #define SFMT_ALTI_SL2_PERM64 \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define SFMT_ALTI_SR2_PERM \ + (vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14) + #define SFMT_ALTI_SR2_PERM64 \ + (vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14) +#else /* For OTHER OSs(Linux?) */ + #define SFMT_ALTI_SL1 {SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1} + #define SFMT_ALTI_SR1 {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define SFMT_ALTI_MSK {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4} + #define SFMT_ALTI_MSK64 {SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3} + #define SFMT_ALTI_SL2_PERM {3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10} + #define SFMT_ALTI_SL2_PERM64 {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define SFMT_ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14} + #define SFMT_ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14} +#endif /* For OSX */ +#define SFMT_IDSTR "SFMT-1279:7-14-3-5-1:f7fefffd-7fefcfff-aff3ef3f-b5ffff7f" + +#endif /* SFMT_PARAMS1279_H */ diff --git a/SFMT/SFMT-params132049.h b/SFMT/SFMT-params132049.h new file mode 100644 index 0000000..febc69f --- /dev/null +++ b/SFMT/SFMT-params132049.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef SFMT_PARAMS132049_H +#define SFMT_PARAMS132049_H + +#define SFMT_POS1 110 +#define SFMT_SL1 19 +#define SFMT_SL2 1 +#define SFMT_SR1 21 +#define SFMT_SR2 1 +#define SFMT_MSK1 0xffffbb5fU +#define SFMT_MSK2 0xfb6ebf95U +#define SFMT_MSK3 0xfffefffaU +#define SFMT_MSK4 0xcff77fffU +#define SFMT_PARITY1 0x00000001U +#define SFMT_PARITY2 0x00000000U +#define SFMT_PARITY3 0xcb520000U +#define SFMT_PARITY4 0xc7e91c7dU + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define SFMT_ALTI_SL1 \ + (vector unsigned int)(SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1) + #define SFMT_ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define SFMT_ALTI_MSK \ + (vector unsigned int)(SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4) + #define SFMT_ALTI_MSK64 \ + (vector unsigned int)(SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3) + #define SFMT_ALTI_SL2_PERM \ + (vector unsigned char)(1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8) + #define SFMT_ALTI_SL2_PERM64 \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define SFMT_ALTI_SR2_PERM \ + (vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14) + #define SFMT_ALTI_SR2_PERM64 \ + (vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14) +#else /* For OTHER OSs(Linux?) */ + #define SFMT_ALTI_SL1 {SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1} + #define SFMT_ALTI_SR1 {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define SFMT_ALTI_MSK {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4} + #define SFMT_ALTI_MSK64 {SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3} + #define SFMT_ALTI_SL2_PERM {1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8} + #define SFMT_ALTI_SL2_PERM64 {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define SFMT_ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14} + #define SFMT_ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14} +#endif /* For OSX */ +#define SFMT_IDSTR "SFMT-132049:110-19-1-21-1:ffffbb5f-fb6ebf95-fffefffa-cff77fff" + +#endif /* SFMT_PARAMS132049_H */ diff --git a/SFMT/SFMT-params19937.h b/SFMT/SFMT-params19937.h new file mode 100644 index 0000000..fc49fa1 --- /dev/null +++ b/SFMT/SFMT-params19937.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef SFMT_PARAMS19937_H +#define SFMT_PARAMS19937_H + +#define SFMT_POS1 122 +#define SFMT_SL1 18 +#define SFMT_SL2 1 +#define SFMT_SR1 11 +#define SFMT_SR2 1 +#define SFMT_MSK1 0xdfffffefU +#define SFMT_MSK2 0xddfecb7fU +#define SFMT_MSK3 0xbffaffffU +#define SFMT_MSK4 0xbffffff6U +#define SFMT_PARITY1 0x00000001U +#define SFMT_PARITY2 0x00000000U +#define SFMT_PARITY3 0x00000000U +#define SFMT_PARITY4 0x13c9e684U + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define SFMT_ALTI_SL1 \ + (vector unsigned int)(SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1) + #define SFMT_ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define SFMT_ALTI_MSK \ + (vector unsigned int)(SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4) + #define SFMT_ALTI_MSK64 \ + (vector unsigned int)(SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3) + #define SFMT_ALTI_SL2_PERM \ + (vector unsigned char)(1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8) + #define SFMT_ALTI_SL2_PERM64 \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define SFMT_ALTI_SR2_PERM \ + (vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14) + #define SFMT_ALTI_SR2_PERM64 \ + (vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14) +#else /* For OTHER OSs(Linux?) */ + #define SFMT_ALTI_SL1 {SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1} + #define SFMT_ALTI_SR1 {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define SFMT_ALTI_MSK {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4} + #define SFMT_ALTI_MSK64 {SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3} + #define SFMT_ALTI_SL2_PERM {1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8} + #define SFMT_ALTI_SL2_PERM64 {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define SFMT_ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14} + #define SFMT_ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14} +#endif /* For OSX */ +#define SFMT_IDSTR "SFMT-19937:122-18-1-11-1:dfffffef-ddfecb7f-bffaffff-bffffff6" + +#endif /* SFMT_PARAMS19937_H */ diff --git a/SFMT/SFMT-params216091.h b/SFMT/SFMT-params216091.h new file mode 100644 index 0000000..60d5857 --- /dev/null +++ b/SFMT/SFMT-params216091.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef SFMT_PARAMS216091_H +#define SFMT_PARAMS216091_H + +#define SFMT_POS1 627 +#define SFMT_SL1 11 +#define SFMT_SL2 3 +#define SFMT_SR1 10 +#define SFMT_SR2 1 +#define SFMT_MSK1 0xbff7bff7U +#define SFMT_MSK2 0xbfffffffU +#define SFMT_MSK3 0xbffffa7fU +#define SFMT_MSK4 0xffddfbfbU +#define SFMT_PARITY1 0xf8000001U +#define SFMT_PARITY2 0x89e80709U +#define SFMT_PARITY3 0x3bd2b64bU +#define SFMT_PARITY4 0x0c64b1e4U + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define SFMT_ALTI_SL1 \ + (vector unsigned int)(SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1) + #define SFMT_ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define SFMT_ALTI_MSK \ + (vector unsigned int)(SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4) + #define SFMT_ALTI_MSK64 \ + (vector unsigned int)(SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3) + #define SFMT_ALTI_SL2_PERM \ + (vector unsigned char)(3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10) + #define SFMT_ALTI_SL2_PERM64 \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define SFMT_ALTI_SR2_PERM \ + (vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14) + #define SFMT_ALTI_SR2_PERM64 \ + (vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14) +#else /* For OTHER OSs(Linux?) */ + #define SFMT_ALTI_SL1 {SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1} + #define SFMT_ALTI_SR1 {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define SFMT_ALTI_MSK {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4} + #define SFMT_ALTI_MSK64 {SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3} + #define SFMT_ALTI_SL2_PERM {3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10} + #define SFMT_ALTI_SL2_PERM64 {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define SFMT_ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14} + #define SFMT_ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14} +#endif /* For OSX */ +#define SFMT_IDSTR "SFMT-216091:627-11-3-10-1:bff7bff7-bfffffff-bffffa7f-ffddfbfb" + +#endif /* SFMT_PARAMS216091_H */ diff --git a/SFMT/SFMT-params2281.h b/SFMT/SFMT-params2281.h new file mode 100644 index 0000000..0572951 --- /dev/null +++ b/SFMT/SFMT-params2281.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef SFMT_PARAMS2281_H +#define SFMT_PARAMS2281_H + +#define SFMT_POS1 12 +#define SFMT_SL1 19 +#define SFMT_SL2 1 +#define SFMT_SR1 5 +#define SFMT_SR2 1 +#define SFMT_MSK1 0xbff7ffbfU +#define SFMT_MSK2 0xfdfffffeU +#define SFMT_MSK3 0xf7ffef7fU +#define SFMT_MSK4 0xf2f7cbbfU +#define SFMT_PARITY1 0x00000001U +#define SFMT_PARITY2 0x00000000U +#define SFMT_PARITY3 0x00000000U +#define SFMT_PARITY4 0x41dfa600U + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define SFMT_ALTI_SL1 \ + (vector unsigned int)(SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1) + #define SFMT_ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define SFMT_ALTI_MSK \ + (vector unsigned int)(SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4) + #define SFMT_ALTI_MSK64 \ + (vector unsigned int)(SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3) + #define SFMT_ALTI_SL2_PERM \ + (vector unsigned char)(1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8) + #define SFMT_ALTI_SL2_PERM64 \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define SFMT_ALTI_SR2_PERM \ + (vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14) + #define SFMT_ALTI_SR2_PERM64 \ + (vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14) +#else /* For OTHER OSs(Linux?) */ + #define SFMT_ALTI_SL1 {SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1} + #define SFMT_ALTI_SR1 {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define SFMT_ALTI_MSK {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4} + #define SFMT_ALTI_MSK64 {SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3} + #define SFMT_ALTI_SL2_PERM {1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8} + #define SFMT_ALTI_SL2_PERM64 {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define SFMT_ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14} + #define SFMT_ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14} +#endif /* For OSX */ +#define SFMT_IDSTR "SFMT-2281:12-19-1-5-1:bff7ffbf-fdfffffe-f7ffef7f-f2f7cbbf" + +#endif /* SFMT_PARAMS2281_H */ diff --git a/SFMT/SFMT-params4253.h b/SFMT/SFMT-params4253.h new file mode 100644 index 0000000..2e7bfad --- /dev/null +++ b/SFMT/SFMT-params4253.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef SFMT_PARAMS4253_H +#define SFMT_PARAMS4253_H + +#define SFMT_POS1 17 +#define SFMT_SL1 20 +#define SFMT_SL2 1 +#define SFMT_SR1 7 +#define SFMT_SR2 1 +#define SFMT_MSK1 0x9f7bffffU +#define SFMT_MSK2 0x9fffff5fU +#define SFMT_MSK3 0x3efffffbU +#define SFMT_MSK4 0xfffff7bbU +#define SFMT_PARITY1 0xa8000001U +#define SFMT_PARITY2 0xaf5390a3U +#define SFMT_PARITY3 0xb740b3f8U +#define SFMT_PARITY4 0x6c11486dU + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define SFMT_ALTI_SL1 \ + (vector unsigned int)(SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1) + #define SFMT_ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define SFMT_ALTI_MSK \ + (vector unsigned int)(SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4) + #define SFMT_ALTI_MSK64 \ + (vector unsigned int)(SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3) + #define SFMT_ALTI_SL2_PERM \ + (vector unsigned char)(1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8) + #define SFMT_ALTI_SL2_PERM64 \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define SFMT_ALTI_SR2_PERM \ + (vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14) + #define SFMT_ALTI_SR2_PERM64 \ + (vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14) +#else /* For OTHER OSs(Linux?) */ + #define SFMT_ALTI_SL1 {SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1} + #define SFMT_ALTI_SR1 {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define SFMT_ALTI_MSK {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4} + #define SFMT_ALTI_MSK64 {SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3} + #define SFMT_ALTI_SL2_PERM {1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8} + #define SFMT_ALTI_SL2_PERM64 {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define SFMT_ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14} + #define SFMT_ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14} +#endif /* For OSX */ +#define SFMT_IDSTR "SFMT-4253:17-20-1-7-1:9f7bffff-9fffff5f-3efffffb-fffff7bb" + +#endif /* SFMT_PARAMS4253_H */ diff --git a/SFMT/SFMT-params44497.h b/SFMT/SFMT-params44497.h new file mode 100644 index 0000000..f9829db --- /dev/null +++ b/SFMT/SFMT-params44497.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef SFMT_PARAMS44497_H +#define SFMT_PARAMS44497_H + +#define SFMT_POS1 330 +#define SFMT_SL1 5 +#define SFMT_SL2 3 +#define SFMT_SR1 9 +#define SFMT_SR2 3 +#define SFMT_MSK1 0xeffffffbU +#define SFMT_MSK2 0xdfbebfffU +#define SFMT_MSK3 0xbfbf7befU +#define SFMT_MSK4 0x9ffd7bffU +#define SFMT_PARITY1 0x00000001U +#define SFMT_PARITY2 0x00000000U +#define SFMT_PARITY3 0xa3ac4000U +#define SFMT_PARITY4 0xecc1327aU + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define SFMT_ALTI_SL1 \ + (vector unsigned int)(SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1) + #define SFMT_ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define SFMT_ALTI_MSK \ + (vector unsigned int)(SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4) + #define SFMT_ALTI_MSK64 \ + (vector unsigned int)(SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3) + #define SFMT_ALTI_SL2_PERM \ + (vector unsigned char)(3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10) + #define SFMT_ALTI_SL2_PERM64 \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define SFMT_ALTI_SR2_PERM \ + (vector unsigned char)(5,6,7,0,9,10,11,4,13,14,15,8,19,19,19,12) + #define SFMT_ALTI_SR2_PERM64 \ + (vector unsigned char)(13,14,15,0,1,2,3,4,19,19,19,8,9,10,11,12) +#else /* For OTHER OSs(Linux?) */ + #define SFMT_ALTI_SL1 {SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1} + #define SFMT_ALTI_SR1 {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define SFMT_ALTI_MSK {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4} + #define SFMT_ALTI_MSK64 {SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3} + #define SFMT_ALTI_SL2_PERM {3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10} + #define SFMT_ALTI_SL2_PERM64 {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define SFMT_ALTI_SR2_PERM {5,6,7,0,9,10,11,4,13,14,15,8,19,19,19,12} + #define SFMT_ALTI_SR2_PERM64 {13,14,15,0,1,2,3,4,19,19,19,8,9,10,11,12} +#endif /* For OSX */ +#define SFMT_IDSTR "SFMT-44497:330-5-3-9-3:effffffb-dfbebfff-bfbf7bef-9ffd7bff" + +#endif /* SFMT_PARAMS44497_H */ diff --git a/SFMT/SFMT-params607.h b/SFMT/SFMT-params607.h new file mode 100644 index 0000000..0853672 --- /dev/null +++ b/SFMT/SFMT-params607.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef SFMT_PARAMS607_H +#define SFMT_PARAMS607_H + +#define SFMT_POS1 2 +#define SFMT_SL1 15 +#define SFMT_SL2 3 +#define SFMT_SR1 13 +#define SFMT_SR2 3 +#define SFMT_MSK1 0xfdff37ffU +#define SFMT_MSK2 0xef7f3f7dU +#define SFMT_MSK3 0xff777b7dU +#define SFMT_MSK4 0x7ff7fb2fU +#define SFMT_PARITY1 0x00000001U +#define SFMT_PARITY2 0x00000000U +#define SFMT_PARITY3 0x00000000U +#define SFMT_PARITY4 0x5986f054U + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define SFMT_ALTI_SL1 \ + (vector unsigned int)(SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1) + #define SFMT_ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define SFMT_ALTI_MSK \ + (vector unsigned int)(SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4) + #define SFMT_ALTI_MSK64 \ + (vector unsigned int)(SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3) + #define SFMT_ALTI_SL2_PERM \ + (vector unsigned char)(3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10) + #define SFMT_ALTI_SL2_PERM64 \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define SFMT_ALTI_SR2_PERM \ + (vector unsigned char)(5,6,7,0,9,10,11,4,13,14,15,8,19,19,19,12) + #define SFMT_ALTI_SR2_PERM64 \ + (vector unsigned char)(13,14,15,0,1,2,3,4,19,19,19,8,9,10,11,12) +#else /* For OTHER OSs(Linux?) */ + #define SFMT_ALTI_SL1 {SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1} + #define SFMT_ALTI_SR1 {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define SFMT_ALTI_MSK {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4} + #define SFMT_ALTI_MSK64 {SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3} + #define SFMT_ALTI_SL2_PERM {3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10} + #define SFMT_ALTI_SL2_PERM64 {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define SFMT_ALTI_SR2_PERM {5,6,7,0,9,10,11,4,13,14,15,8,19,19,19,12} + #define SFMT_ALTI_SR2_PERM64 {13,14,15,0,1,2,3,4,19,19,19,8,9,10,11,12} +#endif /* For OSX */ +#define SFMT_IDSTR "SFMT-607:2-15-3-13-3:fdff37ff-ef7f3f7d-ff777b7d-7ff7fb2f" + +#endif /* SFMT_PARAMS607_H */ diff --git a/SFMT/SFMT-params86243.h b/SFMT/SFMT-params86243.h new file mode 100644 index 0000000..89773b1 --- /dev/null +++ b/SFMT/SFMT-params86243.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef SFMT_PARAMS86243_H +#define SFMT_PARAMS86243_H + +#define SFMT_POS1 366 +#define SFMT_SL1 6 +#define SFMT_SL2 7 +#define SFMT_SR1 19 +#define SFMT_SR2 1 +#define SFMT_MSK1 0xfdbffbffU +#define SFMT_MSK2 0xbff7ff3fU +#define SFMT_MSK3 0xfd77efffU +#define SFMT_MSK4 0xbf9ff3ffU +#define SFMT_PARITY1 0x00000001U +#define SFMT_PARITY2 0x00000000U +#define SFMT_PARITY3 0x00000000U +#define SFMT_PARITY4 0xe9528d85U + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define SFMT_ALTI_SL1 \ + (vector unsigned int)(SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1) + #define SFMT_ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define SFMT_ALTI_MSK \ + (vector unsigned int)(SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4) + #define SFMT_ALTI_MSK64 \ + (vector unsigned int)(SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3) + #define SFMT_ALTI_SL2_PERM \ + (vector unsigned char)(25,25,25,25,3,25,25,25,7,0,1,2,11,4,5,6) + #define SFMT_ALTI_SL2_PERM64 \ + (vector unsigned char)(7,25,25,25,25,25,25,25,15,0,1,2,3,4,5,6) + #define SFMT_ALTI_SR2_PERM \ + (vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14) + #define SFMT_ALTI_SR2_PERM64 \ + (vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14) +#else /* For OTHER OSs(Linux?) */ + #define SFMT_ALTI_SL1 {SFMT_SL1, SFMT_SL1, SFMT_SL1, SFMT_SL1} + #define SFMT_ALTI_SR1 {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define SFMT_ALTI_MSK {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4} + #define SFMT_ALTI_MSK64 {SFMT_MSK2, SFMT_MSK1, SFMT_MSK4, SFMT_MSK3} + #define SFMT_ALTI_SL2_PERM {25,25,25,25,3,25,25,25,7,0,1,2,11,4,5,6} + #define SFMT_ALTI_SL2_PERM64 {7,25,25,25,25,25,25,25,15,0,1,2,3,4,5,6} + #define SFMT_ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14} + #define SFMT_ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14} +#endif /* For OSX */ +#define SFMT_IDSTR "SFMT-86243:366-6-7-19-1:fdbffbff-bff7ff3f-fd77efff-bf9ff3ff" + +#endif /* SFMT_PARAMS86243_H */ diff --git a/SFMT/SFMT-sse2.h b/SFMT/SFMT-sse2.h new file mode 100644 index 0000000..99a33ff --- /dev/null +++ b/SFMT/SFMT-sse2.h @@ -0,0 +1,121 @@ +#pragma once +/** + * @file SFMT-sse2.h + * @brief SIMD oriented Fast Mersenne Twister(SFMT) for Intel SSE2 + * + * @author Mutsuo Saito (Hiroshima University) + * @author Makoto Matsumoto (Hiroshima University) + * + * @note We assume LITTLE ENDIAN in this file + * + * Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima + * University. All rights reserved. + * + * The new BSD License is applied to this software, see LICENSE.txt + */ + +#ifndef SFMT_SSE2_H +#define SFMT_SSE2_H + +inline static void mm_recursion(__m128i * r, __m128i a, __m128i b, + __m128i c, __m128i d); + +/** + * This function represents the recursion formula. + * @param r an output + * @param a a 128-bit part of the interal state array + * @param b a 128-bit part of the interal state array + * @param c a 128-bit part of the interal state array + * @param d a 128-bit part of the interal state array + */ +inline static void mm_recursion(__m128i * r, __m128i a, __m128i b, + __m128i c, __m128i d) +{ + __m128i v, x, y, z; + + y = _mm_srli_epi32(b, SFMT_SR1); + z = _mm_srli_si128(c, SFMT_SR2); + v = _mm_slli_epi32(d, SFMT_SL1); + z = _mm_xor_si128(z, a); + z = _mm_xor_si128(z, v); + x = _mm_slli_si128(a, SFMT_SL2); + y = _mm_and_si128(y, sse2_param_mask.si); + z = _mm_xor_si128(z, x); + z = _mm_xor_si128(z, y); + *r = z; +} + +/** + * This function fills the internal state array with pseudorandom + * integers. + * @param sfmt SFMT internal state + */ +void sfmt_gen_rand_all(sfmt_t * sfmt) { + int i; + __m128i r1, r2; + w128_t * pstate = sfmt->state; + + r1 = pstate[SFMT_N - 2].si; + r2 = pstate[SFMT_N - 1].si; + for (i = 0; i < SFMT_N - SFMT_POS1; i++) { + mm_recursion(&pstate[i].si, pstate[i].si, + pstate[i + SFMT_POS1].si, r1, r2); + r1 = r2; + r2 = pstate[i].si; + } + for (; i < SFMT_N; i++) { + mm_recursion(&pstate[i].si, pstate[i].si, + pstate[i + SFMT_POS1 - SFMT_N].si, + r1, r2); + r1 = r2; + r2 = pstate[i].si; + } +} + +/** + * This function fills the user-specified array with pseudorandom + * integers. + * @param sfmt SFMT internal state. + * @param array an 128-bit array to be filled by pseudorandom numbers. + * @param size number of 128-bit pseudorandom numbers to be generated. + */ +static void gen_rand_array(sfmt_t * sfmt, w128_t * array, int size) +{ + int i, j; + __m128i r1, r2; + w128_t * pstate = sfmt->state; + + r1 = pstate[SFMT_N - 2].si; + r2 = pstate[SFMT_N - 1].si; + for (i = 0; i < SFMT_N - SFMT_POS1; i++) { + mm_recursion(&array[i].si, pstate[i].si, + pstate[i + SFMT_POS1].si, r1, r2); + r1 = r2; + r2 = array[i].si; + } + for (; i < SFMT_N; i++) { + mm_recursion(&array[i].si, pstate[i].si, + array[i + SFMT_POS1 - SFMT_N].si, r1, r2); + r1 = r2; + r2 = array[i].si; + } + for (; i < size - SFMT_N; i++) { + mm_recursion(&array[i].si, array[i - SFMT_N].si, + array[i + SFMT_POS1 - SFMT_N].si, r1, r2); + r1 = r2; + r2 = array[i].si; + } + for (j = 0; j < 2 * SFMT_N - size; j++) { + pstate[j] = array[j + size - SFMT_N]; + } + for (; i < size; i++, j++) { + mm_recursion(&array[i].si, array[i - SFMT_N].si, + array[i + SFMT_POS1 - SFMT_N].si, r1, r2); + r1 = r2; + r2 = array[i].si; + pstate[j] = array[i]; + } +} + + +#endif diff --git a/SFMT/SFMT.11213.out.txt b/SFMT/SFMT.11213.out.txt new file mode 100644 index 0000000..131be9e --- /dev/null +++ b/SFMT/SFMT.11213.out.txt @@ -0,0 +1,405 @@ +SFMT-11213:68-14-3-7-3:effff7fb-ffffffef-dfdfbfff-7fffdbfd +32 bit generated randoms +init_gen_rand__________ + 553293926 698755237 2442073441 4209880924 1764362329 +2195309918 256824928 2214706803 2136320427 2843087932 +3486529899 1306350756 4270642900 3297631664 1850831330 +4213109783 427081536 1131131307 2775965886 877546999 +2836645597 2850507086 2755759911 1306876265 2575673187 +1824065691 3511080041 1928485268 649052443 2971742730 + 403698108 169875003 380295356 3528011866 2952256661 +3733745051 4164222377 1628603045 2638256790 3519195868 +4195872803 1476523139 3699602437 1672363774 3684807997 +3968862050 245048207 33360175 169770165 775405269 +3191865739 3052672634 2175042373 363825885 2991060127 +3107352189 2040975233 2280766171 1049451347 2464675372 +2786253384 517425947 2576418495 3915167352 1319262871 +3860956986 3254547342 1881673000 1502819804 2581419104 +3993517707 4179793000 4134726181 193902288 2129660509 +1201683060 2169424339 1171199755 3270482785 2589967476 +1245732811 2180825597 4108548794 3943541881 1664725995 +3482571249 3960328275 2496083819 2285170479 707491711 +1973753445 2559837769 3759732527 3621894707 2667897962 +2786661035 2316413096 4122623937 1564737819 3606925948 +3141917404 3237355011 4148255857 3198176564 899012754 +1921496599 2722540422 2314650322 3316686314 486198287 +3446984721 359923326 4170566747 1715634878 3002640485 +2198169011 1709206686 1602063393 1768555127 296016403 + 707947167 4149178993 2286171885 3606834898 860116794 + 837512047 2780968890 2934517872 3265475992 3995475331 + 823251686 1388379685 1689938384 924010855 801623899 +2370143426 978918237 3737022385 1478921360 3119535156 +3224513071 3275923638 2867594136 731709579 3968236195 + 64525079 272371898 4238912616 1886765573 3761754562 +1000710391 2048957979 312497819 439741686 924925889 +3994889236 52289190 759549430 2584954556 756493366 + 168627065 857399839 3425284973 959170692 1975409876 + 925869263 1735262701 3394788651 550383511 490309361 + 881075537 2070029863 1223376354 2762562712 2355745036 +4058079425 688888168 2084555594 2213905937 1164042303 +3938114127 3862067658 1899582417 2637725755 1855007909 +1289092282 3474658897 2719086468 2644140387 3572064696 +2835757420 3854845607 995529688 2400664527 2684303099 +1002902183 2708291817 1162219077 1458303374 2328212094 +2278558260 2811513813 187682146 3731777450 1369014755 +4107243587 4249288801 3167574229 2433688524 1263841578 +4178639597 103168337 726791243 3865077042 468986147 +1352009278 2120693945 2257059684 2511574244 282332575 + 943738722 765376122 3886666299 2550905672 3021593314 +1563487207 2902762078 2131594494 1640852828 2051546052 + 533501181 3599888918 2717252360 2048541279 449906823 +4214508583 407826952 1220354008 3680787680 874143422 +2771749303 3918211583 1933979094 2397328810 2048627355 +1066449138 620406396 1265779869 82128565 3162944753 +1216223916 1462377073 2410881086 3283960481 2698235827 +1293536964 1062717153 737566608 1581406402 97798499 +4147949360 3084486205 3702594522 1519104056 796070846 +1353803554 3887612590 3110269517 733537104 705633439 +2781674078 991272693 916020596 3545700981 220687238 + 324363525 2561026636 3521913746 3070945031 2373998044 +3146062523 1137989108 3961642762 3895747052 1580424738 +3667204475 1010913545 2234226736 4019446758 727087410 +4059848248 2936062142 3183958929 3882269258 3455933746 +1356303281 4279894400 2251669780 133524669 1908619621 +2907753894 364805371 3022035474 2844816175 3612488522 +3506546721 1443147198 1217370657 3834938319 1100686954 + 489874032 2821199686 3650884881 3171161774 3305651455 +1771732079 1462745239 2313021630 733759255 2146937574 +2232389715 326010464 2874477323 4182050638 2190268358 +3013967555 2540452868 1319520735 3037507174 1074278118 +3719401211 2013303214 2756190478 2387141578 180439427 +3993230439 2862452196 2557110861 3728952268 1253230935 + 781742369 2744212073 1353835579 3955007660 914260429 +1339735569 747434431 643113688 2071932020 2899349882 +3223077155 1630920461 1463073770 630145878 3050743218 +3516525223 3480270450 294098109 4063336363 2361143405 +2013101517 2785286939 1503734644 3839462541 4074196387 +1117196373 2048922479 2388244186 2413315060 2367315280 +3349315306 2936256882 4068808092 1372059822 1149208750 +3401323389 2755773423 2860092467 1505179007 3793739167 +2348158578 2812841843 3568987390 3339508196 1360318330 + 487859816 3192619943 1942716817 3417059105 2006941363 +3876292868 3966499501 3343575128 1320062019 4052874294 +1661660417 3278328199 667015521 2547492577 2504792501 +3304712274 481758187 3614301650 3369442324 2121036589 +3692381588 389150458 2736546189 1376548125 1622203973 +3300072739 2789882526 3881344628 34239194 4256374384 + 515810405 1337208030 4076098244 3273673306 4049989741 +2223726553 1600951795 3374458346 3959457033 4038761321 +3738299300 3475534027 315621578 2566360079 400233151 +3198002493 4000178367 3003537992 2418185466 4133921279 +3950353604 3290950939 105405052 2073632531 2567135797 +2114529127 617722918 574897074 145060013 3481202032 + 278011874 4169773197 1353827771 1239826005 4142475495 +2389529339 3666924805 2066381368 6789416 1668443782 +3196261404 3514547288 4026411825 802392020 2677514010 +2787660169 3939691420 3204448871 2381714337 1233034256 +2984307665 1103407055 3031977605 2409144418 1140946250 +3222997334 280241001 2085596678 520966818 510353206 + 208665480 3795213078 288783070 2098371164 562326118 +3233670196 2553636526 522053470 1828316355 4214319056 + 452855188 2302876034 924621805 191866231 4089907614 +4143273946 2854199969 4188327916 4109927523 2056850061 +1218639351 3152774385 3248416571 4139264331 673684274 +1841624903 37564639 1701880855 2249177851 729274386 + 428106918 4181452858 347163906 1863870163 3001348367 +3537322846 1225876535 4022036962 714821668 3243025973 +3845974554 2663355489 4212970629 2993122213 3666588071 +3380238642 2513936028 2212417121 2955814918 569232806 +3154916977 3107294339 3134048835 3849011673 3836294919 +3734889980 164091041 2030878622 1419071374 346851020 +1377631226 1289968696 962784564 2020590972 421488551 +3180838841 2053804618 690498077 2594130153 1858540204 +2316849314 1897091063 1326185749 3880467220 1013841045 +2510006459 200757585 1706901250 507983600 2286361318 +2687095773 2439114934 3785940507 2910927696 495212298 +1737826401 275378906 1933723674 1120172738 2170670353 + 703797292 793855448 1884515135 3720836500 1734151247 +3858004935 1423598860 1976443512 1142497044 2446033335 +1228821251 2197570102 146344084 3365694978 355468092 + 881096899 931732364 3350199871 3243058622 245057594 +4278566245 1408621021 2506645410 1267060469 1365764095 + 33272254 2646325483 1709890154 442316585 538779104 +3412560582 828087032 2053596312 2772521746 894578119 + 201257826 2291277544 3599460260 2893282544 1783425940 +2778987415 2575736397 2012251818 2003236969 3481419440 +1234904448 1194524734 3660540193 2209734072 1072263624 +2734463137 3382453617 2661765428 642404874 3533639813 +3326229745 2297215451 2477704233 195299388 1781116828 +3276896535 2771181349 348737860 1379297272 3012409305 + 571556070 91329936 3368648619 4135205696 2115649999 +1627132802 2941027473 1066966330 3576075844 2982957512 +1380172142 613840578 2425556655 84325493 1157833380 + 380526350 4039021014 1290253449 545146169 2529775161 + 427361307 4182711492 883562403 59017230 25492125 +1099369309 3505470186 2881491845 2566852819 2871303793 +3788442890 2869657037 801373099 3358326700 3419416145 + 843059834 3762692802 4171146309 3260102383 4031587170 +2675507635 838206744 3681419048 2099605932 2127485526 + 926849448 1980170805 1438224173 3523576643 926000523 + 921155423 180162584 2033580132 3202819054 4274281899 + 69381977 3353380750 1092443156 3825831970 1248974759 +3565713812 1256704162 1217134093 1591142327 1752494917 +3028371512 1958303331 1850071672 1217813873 2916267074 +2374819653 3587666539 4104385618 3253865448 3488338117 + 949576801 689565959 4110396943 2660759860 1472458161 +3610122826 180814354 3695546105 1577211192 1424463045 +2848290167 4040830260 2890841189 920378244 136171106 +4066704554 2505125024 532297214 2924909261 530183725 +1877714361 2069794883 332588948 1738987415 3417039337 +3566072804 3310481469 2816418630 1926132498 2214615551 +1599351183 1233470572 1696978507 1606997108 3913303019 +1946659740 2966027013 2182553097 1357275782 1374421849 +3138941674 1105100192 4222346580 2362357402 1279700422 + 249844665 3656189515 580604409 2189793371 3131564844 +2650695683 3243504545 3397723045 4188316599 3026572267 + 907127125 3405628562 830752183 1292469083 2111044366 + 224549056 4169187060 454544759 2474323400 609923725 +3194353098 1869536251 4096821340 2152204142 1225922401 +1381918119 3791021138 517181631 4016322084 1076718013 +1207923521 1607526999 3517963918 171965789 4124668424 + 876823670 3547237734 3510460793 1383243182 81851397 +4122318508 4096995620 4238234251 1369415583 3357744380 +1755168431 3402210424 2708770915 2178593232 2230490979 +3850592336 395202753 1145970800 2073751834 4019268122 +1715664056 2670712766 511797051 1298315286 750155609 +2511075420 3724283654 3264667428 3297812813 2794646432 + 792075244 1481885653 3821585101 3356348441 3067087482 +2351213299 2914492104 3578170041 2068541578 2559734620 +1449473034 1515443287 1503937449 3731228403 3301242979 +2675666516 1453384331 275781647 1513899836 1057387684 +2524963245 3897058285 3845220976 927032671 597054215 +1488976437 816921064 183760231 2679276644 3669514486 +2550447080 2645963843 519530310 3972602610 660791018 +2209454157 3286137393 1764490893 3722356670 3818175380 +3812758152 2781451830 2816833912 845403569 2456431864 + 129871448 2010242160 983068913 4125747311 2193597351 + 450223202 2213550157 2219064558 3324952925 2447629198 +4188828518 1944720473 2668121873 256251632 3141431621 + 862629169 1986498648 3852489741 1305422895 1395752592 +2678110086 3356575208 2203525424 4148844695 1801851064 +1148643645 550804577 1041274339 3776082391 3759739470 +1746757602 2594443401 4019087208 2706490867 2087847544 +2009753800 1119878086 1168778453 2726806895 3240455892 +1567033770 1407377442 337526830 18962543 247615138 +3510873826 3685265114 722017411 1469421282 239638616 +4136684102 1352947701 547594847 1141032357 1384197850 +2489754464 834585989 622533931 416760316 3890426510 +4208125764 1854255901 2488983923 2510508267 2931259896 +3940181108 2096823000 2661847721 4008234493 1602830869 +3598000046 215303987 508369812 276413009 371619631 + 796969723 4202155772 2161050256 3334645789 77707822 + 881847475 1209069193 2503105966 433721509 985791955 +3389467611 4157689377 2288410534 2806875726 467572461 +1064356101 1710832805 242792642 343019004 659238831 + 334161479 235290899 3233084111 3866085073 1683915436 +4245718284 167318999 3539996379 3628010425 1850237454 + 290721491 2854158795 3243323549 1489524335 2819941436 +3548231239 447435310 1997028181 1952879485 2254426422 +3813914344 3969754167 232325977 3736416005 3159635804 +2769427612 1971270154 3705493847 2558969475 1039180510 +3468554367 2988029559 1400167238 1768303901 2758662123 +2072997009 1332330347 179681555 2315290438 2429393974 + 509881964 3807607878 3055319970 671840881 3477325874 + +init_by_array__________ +3887633895 132867192 106293177 4163623294 520921026 +3480846587 1033927788 2644791256 1158495701 4036591710 + 252973991 2443176698 3209199166 2767568251 3335727067 +3450783102 2330247266 877440332 2981784736 2091001863 + 570833091 1993903953 1066837936 2983397772 1890020964 +3659870890 1968948872 772580052 3800380467 1422555585 +2944453937 1292309301 2119960118 3918837620 2229273615 +3206843710 2518549580 1969574981 1918743079 1365730335 + 96674676 2559009893 1146915490 3827753486 201033585 +1240888451 3405784912 2320320349 1576953416 444654152 + 457239379 3897923418 1150569866 2126633905 1642092058 +3865529044 2667271541 1566857384 3331818117 2105615477 + 299873184 3481263718 89261028 492117525 2269606589 +1596044179 4178644349 2883946084 1831919056 3754846887 +3631318004 1175860737 2656020511 1973196633 957532278 +2107352166 1725040098 3748709209 1024534390 1376344082 +1414557850 1599221135 920575952 3627473443 716780548 +1774740877 4207436595 1787746266 4111134609 2814714798 + 353837738 362263951 2457731489 537957686 1430128615 +2334776743 410082359 520100537 1377827014 3133959422 + 240777748 102054259 223902919 3558704817 1886848317 +3968411809 346050304 690373883 1529004695 1012695864 + 648718794 3374864976 390743123 1664587503 3067624019 +2939614331 2418392802 823145107 58678774 4006777959 +2503932349 261895625 1276400192 1899704290 2149566376 +2896001244 1549043442 2259189175 710989142 2126327065 +3957061522 740772297 2199579302 1661208750 4280245545 +2783096125 384981324 3550432847 1214743024 576859762 +1185416093 1305995558 604128082 2941143558 4103649873 +3470726146 1363198232 1968480451 956690710 2601671462 +2976516856 2516776863 1757313032 901713855 3021479132 +1885115628 3420394477 3476334235 316450606 1899654312 +4190824197 3113090752 1203432183 3092986416 40090931 +2929930371 1561898159 1575088639 2455218408 3955583686 + 356940740 1600070686 2143245843 3972513402 2937231318 +2549841969 2698177606 1767248507 3251785250 3579946228 +1026789819 1393417885 538442918 3139359258 2379373080 +2650452716 2020205837 422943063 2766821422 3786108580 +3161865900 2159091494 4136199923 2727464683 2807704188 + 129011411 3867741716 4181569467 1952455242 1777735519 +1436983454 169937665 697390109 3417147133 2519299599 +1147345058 1172961223 3349862952 4160853198 593660971 +1476358427 2831865184 3209918819 1612715386 2687737067 + 863857523 3550334021 2988540682 848921819 3072935813 + 104157974 1555226881 3046616244 444864819 1243255051 +1223374695 2160953721 936577588 3118578137 2191637173 + 2007439 2454461625 2927164341 2344512859 1955688507 +2266422085 630712233 3137148040 3853588967 1413733619 + 871142227 1452624290 3425668023 1501717547 89173518 +1508053358 3026945336 2843896188 1920372862 3490151 +2419196033 3110174427 2530033027 433852987 1166089771 +2789605139 3267914853 1664169363 2735636915 4224772209 +3822860476 1619716599 292629314 1296952429 40904289 +2571641834 2002892555 2690557756 2909787283 885197089 +1063056595 2805802394 3287708727 1419250412 685340682 +4264696217 559577074 1906496889 3079363054 3105336173 + 463227757 169322608 3620552821 756163383 1131026224 + 949518377 3442949176 3730589733 1503101960 3374097148 +1118766890 3709787611 3272295510 102193920 584368613 +2567257147 625386233 702564753 1866840665 821311072 +3046881611 2660397199 1361344468 359470919 3529052621 +1124597392 1938093732 3423368586 1840907605 2001282917 +1416348295 1706814199 3477490169 2808643161 4013734778 + 750992795 3074398168 2509789448 914476561 2410439001 +3143539096 3084846845 4017523402 750961725 1687709099 +2356842235 3092286896 2705860216 3507707132 1890692052 + 353796214 4026349944 2101619722 3286412891 1280330655 + 192904766 1805413072 698516761 1446721297 881395940 +4242289663 1319787538 1810940044 1098789900 1657343682 + 419070290 3180012080 3479194631 243557403 570208958 +2507967377 4072867721 3803767661 3626523888 4255906192 +1177783399 422040871 1597135087 1833147082 2817664002 +1294941605 2466968315 2086008666 3804921579 2097087757 + 538955354 2468314739 762203758 602299431 3744836186 + 82384255 3912370992 1749529655 1377719535 2763290671 +3188888958 3427430662 204008088 3512703178 1598534039 +1392208937 449574726 1794240771 2498201962 3122162905 +1059434131 2956971652 1650652556 168064532 2856852245 +1099442844 4089277164 1215706205 3318199189 2403907584 +2961194143 3197740368 2937676556 141442809 3653164873 +3127854643 1137287910 1174804779 96802441 112374271 +3357197150 1113309138 1994816023 2407814518 1138060281 +1763885723 2535303554 3199987198 2846381649 3084454895 +1646663324 344210403 4221790888 3683670217 1255310831 + 443022349 2074075515 475869352 3862388616 3722695186 +1144333320 3499339134 3453908604 4020960816 2456240194 +2529486526 3696151518 1161628037 2450248466 8611550 +1232848681 195719489 3565061770 1577546485 1089576749 +4078169007 718430774 403842407 4237062681 3085614496 +2302517615 3420374224 815823740 1379708540 3721963403 +2840556526 1536373742 213324491 2191084713 3080175045 +2828492757 1358617229 1371054268 1770837936 91828110 +3815300419 3147887510 1324385052 3552885569 3402500314 +1013753783 3172187185 4204047789 1358211305 2059033520 +3732561119 2740842812 1848896031 1121105259 245314232 +3998825267 1774093490 2789558951 1069005609 2123083822 + 244181168 2861278923 3470275971 164403453 443623596 +2451492452 1344798817 3201252074 2590020328 4154627451 +1961273077 2680083115 3768651868 3885805595 294096124 + 486850774 1127465400 125632394 368350665 2259018132 +1139748110 95559154 1750807763 1880807221 3602494955 +4189491848 24760476 683562138 4167529558 2857198605 +1408118573 1303816682 2546441664 1485045624 2241706949 + 586470270 2606818345 1039696793 712157993 2531437090 +3242506156 2422152434 2409931873 3929799331 3099073267 + 574477139 3017510859 1486688964 3218517983 3275608136 + 987882840 1705407541 269378594 1621628071 1666128560 +1029869315 833316630 2501413172 369046314 3985105546 +4210929284 690976123 3192895399 1594384465 1999947475 +1802662999 2963920607 3455491405 3974714559 2425107771 +1121059554 2425859322 3961606201 2942900128 1118013123 +3697673488 1103198442 1884510657 4109271531 1851138095 + 20031475 2084116829 2336125886 1082487804 3871513203 +3010318591 2166096650 492815092 137138277 4082181520 +1817400478 3281618916 1480437456 152889217 2335008205 +1223853827 2064475776 1159400170 964325129 2745060543 + 622980827 3637277230 3859412439 3095647228 2053743269 +3070751168 2887844558 919343679 700206948 3322531455 +3253470283 2746409987 1978389522 2794105960 3077757477 +3406512690 4138504431 1887697665 2282455230 77021966 +2741221728 3934121080 4215311935 3018235877 2032094276 +1385175760 3675503534 306717740 139112861 3075455413 + 407656119 2209590955 1669446669 1786678196 241095493 +3414989896 1135183267 2631652729 2072816214 3135294925 + 544822185 3199286645 1262313659 248457573 2066164989 +2071596780 2603613910 2899855715 2827063419 3078171866 +1776532085 3352947555 1767122358 530231407 2492887883 +1638262483 61394793 1587214634 2986318546 2197370782 +4177512490 495225925 706901243 1262155864 4231359333 +3677952443 2732175369 470512637 33814049 3711538789 +1615783059 2380472476 985281006 2904333090 922469069 +2592797216 2856510982 3144909401 3288766948 4222675304 +2649416886 146901033 4267423869 2848227850 4229776146 +2606404424 3392534981 2546145791 4263530207 1674119195 +2623833278 295854582 1787938508 1020676279 3334049714 +2294685860 1993224052 2169925403 3359741603 1372617824 +1908419812 2281517436 3241726983 2308433485 719323620 +2515757523 930623118 3431267948 1187283906 3540468119 +3678912760 3997396999 3498206125 4106826675 2472721217 +2424511800 1071942287 1083033381 1625589310 249955922 +4266976616 2382189892 2790913393 4208943554 1003716619 +2582326878 4148157521 4175902464 572609273 589790462 +2411375936 1775301814 1466794965 2291874111 1806225849 + 878239785 913435317 238847134 98969607 2062730004 +3833844960 215710854 2843987287 1768272865 2533574867 +2244601462 2335506718 2893443993 3271962634 1863189705 +1046957120 1433103399 1047195357 3924847497 3435468026 + 615623123 3623837906 3494334868 467288359 2236697543 + 929082083 2921490058 4246652475 1281272806 2036814344 + 307943255 1859933019 2228844179 427913214 141792007 +3131345006 3442553338 2291315395 2644048435 2544234744 +3253475413 645718716 219837225 3691830406 1729290653 +1496508071 2188356947 685437903 2885730381 3811886299 + 515198322 4130098744 3474687500 2844928441 3686707090 + 11745546 1163302907 702925357 2261167358 1625597641 +3405037647 62439850 1416582799 3509824086 2164321688 + 680534483 3767933328 927989108 944477491 2808668550 + 884174339 544197220 2227588770 3835044808 3394164466 + 331352606 4275345806 1730231051 3343295371 3139880070 +3282006392 395472021 2390682641 2128902962 2428527810 +4067648178 3411274507 3346814056 2899851067 1624868173 + 875010809 2793262325 1907802141 4005860639 2010934948 +1921751631 1002254637 2731094522 1257606840 58815584 +3733473506 2171722485 1647487083 1813072230 1142668479 + 984191258 3772271519 3670784267 1882510059 657442622 + 708220237 1140729799 3907319464 4060715347 1876318437 +2858933417 1820607876 4015866102 144743917 1604410759 +3839924240 811121823 3065602757 3808838588 1918178119 +4251507406 1959849387 4046954968 1900279145 850801893 +3244820279 1372147507 936449060 2813595158 3135547760 +3435882165 1463000157 641620396 368004183 3005639634 +2750416310 1333572815 1773895722 896179350 3000020164 +1816773427 1612021071 690670336 2359612494 2646976076 + 363989056 585720731 1751860970 3477573382 221019824 +4286209431 1687146804 1011037507 2514439703 323083478 +3162391695 2864271077 3644965260 2160102929 204245478 +3989118498 3148576692 1047310131 1941734656 881253250 +3669181503 3576049597 530745749 1004655313 476473637 + 147160233 3313502122 3091743699 3995508226 3837939695 + 249675624 3551248473 1581059277 2095508529 4011075367 +2232698149 735953670 4217647425 1677522771 4180314720 +2583489156 2583442663 4028739476 3581832541 4015879475 +4010069744 715048516 2488455563 2152812104 667868293 + 206998607 2092292319 448434255 2744018610 1244239097 +1269811520 159378763 1011017183 1109989204 3231221189 +4243748923 3594834455 247670788 2766015955 1929302471 + 741635826 3590878634 2405523880 107043508 3993219492 +1481153038 2035061864 359996688 2260744746 780546738 + 153380969 4246076636 3429406461 768000503 165087011 +1910049193 823931080 1225859659 3422948348 1536406145 +4250288178 1111790339 2565707267 1667610940 1166195547 +1940244395 3396894481 3142890564 2651154773 1331801796 +4008464189 2895838856 1345678101 1140702086 697548148 +1701001531 1909794063 3982230469 2508050156 512058770 +2583280938 1994457385 2559309827 1175225967 3254980712 + 735287188 4242876904 1335605719 1754669209 729312935 +2490883945 2162409098 1177788409 3219001630 2999314266 + 138544320 1091221242 932623318 4050268455 3353875087 + 298883056 2968015159 496659771 1466559241 1648343951 + 122000131 3935323941 3399870775 2901893836 2247965140 diff --git a/SFMT/SFMT.1279.out.txt b/SFMT/SFMT.1279.out.txt new file mode 100644 index 0000000..4722b85 --- /dev/null +++ b/SFMT/SFMT.1279.out.txt @@ -0,0 +1,405 @@ +SFMT-1279:7-14-3-5-1:f7fefffd-7fefcfff-aff3ef3f-b5ffff7f +32 bit generated randoms +init_gen_rand__________ + 243307689 3927268025 1225611617 570598983 3842545525 +2650524507 1977115969 1192210573 3351391148 3300947918 +3372624199 3407802072 2630055668 1419320069 1694567123 + 363293933 1331811503 3765039298 3154732976 1386095844 +2088338954 3179212843 1879834946 1381367989 2758426993 +3290922490 459138429 2772088455 284265626 697699287 +2148849595 828780633 3291316348 576422791 275230034 +1474356354 3722028763 2138031578 4177103613 4137339754 +1232401741 4043538928 3427323307 3595434744 1906729682 +3659489301 1834256938 3029202183 97587821 2048440394 +1397222890 1811198800 996357950 1380272924 1277165935 +3490746181 1680324265 2623226542 1602432444 2419914264 +2277911980 708544804 3187699868 3677337889 4055859070 +1658078881 1619018022 3363378158 1921644290 2011581383 + 138070253 675769351 1612877422 273511944 468596116 + 182470517 1706841301 373389314 2364268025 2312437139 + 448125051 3371514413 3852314136 279816466 3571256055 +2020707519 3176603579 3648714571 73041169 1264080802 +1750460123 2183872120 455542005 3869855862 374947339 +1520351483 2830648441 3198824746 3507964709 571754801 +1289854592 2337973476 146275613 3969269402 3262119711 +1216813420 2294680347 2840195745 1850086589 1856100637 +4211340098 1377510072 3853102437 1902663352 3538391489 +2996326854 3231264057 1101032772 758447978 187810425 +2439774579 1017833835 59587497 1928607216 1617764019 + 339047277 930821830 2586071960 1063510137 515302564 +2412582028 4002288056 2144553442 3999925578 3233514864 + 619406521 2768097132 2582590481 2898912566 3470045815 +4106179272 3524913242 3519280152 1599328782 461871261 +1873369485 522553804 4255857469 1790117270 967937857 +3501055558 537302922 3413332073 1622333710 1603949374 +3517907836 1815470840 4135030570 1503354583 3071191368 +2538465807 2338077641 131769633 695477236 2245554640 +2740236084 311302898 248798748 2430599814 3077330694 +1940402939 1142414789 2907537091 1195230066 2697684038 +1797253757 2515741922 103457008 2258780711 1138069055 +2175573922 1664952435 665429891 843477118 1418756165 +2374105774 2150500853 1571861609 2878173292 2234696811 +1862239359 2279641173 1412473876 703013607 3897836242 +2284477080 3560958856 1867204569 3484825299 1771788197 +2158473514 1161647906 813597051 204314377 1659259675 + 272217365 3808336509 1932286213 2684787307 2761326701 + 566346011 2523251293 3652281601 3937549568 2460713748 +1715085688 1074092064 1658456308 458444117 4110560247 +1887246870 2203038418 235896608 3259567594 2778304053 +2638655950 1507956570 1989069120 1953523639 1634682606 +2658186222 1706309507 2499417418 1100978532 1454354270 + 424020092 842389406 3125613306 1985184029 1335501806 +3094759426 2118755645 3554268828 2362609340 359804516 +1940034183 110009715 3588492799 2092384927 4096477125 + 576242245 3368796173 2327930223 1259021278 1329869184 +3927489155 4236819987 404005503 1329834932 685658901 +2492965223 4266282709 1178383025 3090023471 57331106 +1980118524 955118412 2997154768 2724738534 3009083860 + 569830663 3676347180 723796622 3505006386 1638332449 +1185444609 1747872198 3449879675 4160951800 3093444586 + 389983725 1488273052 2327551721 3110370112 2688115225 +1163526508 2076072949 884974157 610684798 1580810842 +3055229619 671133067 436611424 848802126 1082755279 +1204462154 989074252 986665864 286230035 2492361985 +3095172407 854557911 1505130850 221230931 214812920 +2039406056 3922867961 2413954396 3761826283 3010868473 +4162989495 1929326878 1922083823 2533458315 2503189307 +2338900678 2102656874 1658135241 4055553566 1680235492 +2308340235 2987180055 389060953 1846235420 3981604027 + 53813536 1224570427 2847702043 3542845181 383885763 +1130173784 3187625887 3206056132 712901702 3507774978 +3753119158 2424089455 1811631923 2260041572 2466447016 +3850375562 873876296 3500042922 3840692059 3334991895 +1719151437 604450411 3300111865 3143257251 3913191458 +3689590482 2231740425 1146268819 3535629137 4206151297 + 572287146 2566544038 548851452 3598942369 2656958901 +1084324546 2426482567 42148969 142282925 4133002117 +3483160256 149104302 2001829841 2337060178 2383916317 +2035481560 2041759447 2495503243 768395644 3167810051 +3638841514 1940382470 3033981507 157556709 778957423 +4019145337 3274590968 3559746317 3266470743 1150215464 +1574599700 2135553359 2712354080 1516502257 1558537014 + 600268054 1109893079 995498023 2455773654 2331891975 +1806115915 2358087283 3236532773 3576921624 3889611971 + 903148351 1981654469 4262286007 338938067 1807836874 +2052603591 889693974 1440199441 1102024144 761032860 +2638670359 1193628098 974077300 1487266359 331191160 + 651970989 635783103 2613516326 1261675221 1407602233 +4065786152 2230985684 2561318852 116914299 4113660294 + 372587256 2923425930 2125443286 551419957 3830182440 +2960138236 2041060611 1664933527 920683498 1493156584 + 656673121 3886029759 970612110 998770833 668426918 +3881762784 3412024868 797208815 512631264 2479235109 +4196671971 2612943159 3447997343 981308402 1465942691 +4258902547 2491408924 3462040745 2122826714 2575985604 +1936785778 2657831725 1501699308 477453942 772382821 +3548450617 300349179 2127078044 296131829 3658712744 + 650332035 1834152944 243879565 190176099 2203454009 + 99956383 685426307 128058728 2929998788 1945236876 +4150233994 3860976209 661234083 1471520997 1666382364 +3080172348 259318961 572929904 1100426287 4191359454 +3235499964 1046235034 2630718304 3129838289 4136748761 +3539720609 3976281042 3165364769 1330939836 3400782203 +1334607851 2241273387 855844892 1297221007 1357150235 +2489518287 1557769541 2397305270 4294513014 2839645351 +1125225232 2114284729 3348437881 1254408346 1766690575 +3048489792 3984173540 1267719328 2999289144 2458016726 + 309143407 1242110708 2812297574 3273840162 839867982 +4147583716 2070051583 2375214037 3160353392 2239522337 +3317592261 1446706845 919513410 2409805086 1665952546 +3124141237 2494522707 4073842322 1999507897 1357346844 +2026257344 4053196719 413561071 1299052303 3296456753 +1359350913 2584437509 2164106054 1906708382 1694946636 +2278061153 2623126493 1007604923 1732931691 1027605291 + 130669652 3098584233 343419409 1392724360 2361010930 +1432673180 2629969452 1134250972 3336368801 1265875481 + 294793551 2782613173 4177474983 667162989 4094797143 +1885199780 456236296 1914930778 1224799774 2466502791 + 64866558 654281350 4180600511 899913719 1668746941 +1534812021 1741722225 4022070021 117981343 593247870 + 19621335 3693512794 2737959212 3788895542 4074549995 +3673769440 1082250204 4196895557 2043617183 1827577995 + 294711202 4070382067 577072527 2836270245 89171809 +2321557780 1733217446 3095784821 3210131227 1574160296 +1264037086 156882828 3860461939 3200806462 1012089079 +3216640393 3313554265 934929736 139204567 3773157069 +4069275623 3657302301 3367880859 3894185380 2622366450 +2879296239 2820441187 733486613 193589593 4169451285 +1404663971 1951265220 465025209 3805801053 1410891819 + 403825953 1671201407 1079261766 131498694 652649109 +3458742704 171702478 773603018 3627251619 740792554 +1694503643 1499160101 2699823666 2399829724 4057123765 +3788391668 1818310211 3623536177 855107731 1766324829 +2708995454 2573012777 2223077190 1626358626 3872990141 +3238079449 2623630495 973241668 788074019 1685775681 + 506864382 3932638192 2708837465 1894899797 1636345010 + 41547975 2466265263 582141619 2451431587 1494430856 +1671987268 477848912 2123325303 2762260835 627636365 + 133948118 313935922 2416910906 299205336 1212667597 + 684643609 1002038080 657161622 2499666462 4043132408 +2963959263 1021307457 2271915975 4074991297 1032583855 + 992435695 3789253376 404676908 3157779991 1255639032 + 117667653 3198051509 1832805842 3990938705 3495412250 +2096110988 2051253187 2231922298 1741938094 3571792959 +2030352786 1060613516 3937016435 2075693405 2254767111 +1702403132 4083249181 754385218 151918790 4174653586 +3540119065 3829244448 326165234 3756914698 3144835628 +1493148100 3577628024 3586217148 890356621 3785045426 +4105137657 56175760 4070460799 4218525406 4122608639 + 335829121 3310952079 1366219900 3180624723 3722879895 +3669520531 3111243641 666592444 2608256776 2915785163 +2255808676 4034783141 3654142398 1625056644 3516524622 +2670125358 206920446 579347843 1493975508 2262966981 +2404594249 2892390122 2056478367 3198325018 596475293 +2321797432 396140749 138983385 1618219277 4250904742 +3032834806 423671549 1360932374 2584003391 181445285 + 686584262 3208920064 1341949426 220358903 9471733 +2795732004 3377034001 2990194391 3486241431 1701163680 +3862826156 1866797172 1247303606 3954560752 817988160 +1713310212 3764070466 3183598090 4130463065 1485218893 +2365745133 3347596356 3587379582 622968568 3534486352 +2301927366 3468865559 2347320885 435767869 3807107480 +3777085822 2340067200 1098731295 2327785223 403445260 +3866810735 688574575 4134388103 642120144 499472064 +1568147160 3296780690 2871968723 2875210391 1896179293 +1853147163 2835166628 1853367481 2454305808 600536991 +2443929811 315106420 2328335076 1683105123 384265381 +1845998326 3673705166 3996716053 91692742 4172029073 + 363425183 1684676538 2654123344 3660082040 3359702927 + 230951962 3853113523 2775651726 2816073988 787546797 +2438098980 1273462350 1012417676 2105251513 43746769 +1384474423 4241231474 2963962421 1584908388 2169420907 + 988156308 407513623 3111345078 2480695873 2625529975 +2564516786 2972744330 3444964361 143194736 3576215512 + 526450428 499279381 3809598464 2691987658 2152629479 + 96969524 3205640565 499292085 1916666912 2232616585 +3428023186 2593900305 2066585340 1677708638 721675102 +3285601716 3194701468 3630699081 1329243126 3964617782 + 959532177 95357895 2867616947 2370655880 3400382774 +2796661450 2935483337 1192655634 2520815974 2221188282 +3737544917 2690337649 3795432961 4223684846 1723055481 +2595621141 3941583985 3580798337 3816735556 2364385201 +4210666486 2774901662 1079008505 2011387204 2347258467 +1554710802 1878757983 2405820523 3742535999 3358304258 +4187889110 2522741250 916514934 3539199701 2602244649 + 895328533 507068499 1749961391 2117575035 3233311788 + 722462516 1420710957 3823466309 1232808101 2873281059 +4254045711 310396089 2868623773 1867877112 3664246818 +3170594987 447640912 2413609145 3950122223 1502992005 +3898968148 2355522019 3565785477 2197256721 3813063371 +2062612102 1539725152 913003178 2117919546 1421914458 +3732402422 757025681 1566890241 2832377646 842445000 +3277491540 4287634730 477786633 2885092342 298934263 + 170957263 461671007 57440856 2036449706 3248557400 +3456524307 1713969615 528806514 4146625954 1224160913 +2970337440 3488296837 989961242 2504332083 140371939 +2110765652 3136171575 3560078074 2089110433 674437691 + 52666355 283533388 107852814 1685728471 877293439 +3245779551 1451314658 3885554784 2517707398 2895653070 +2059007918 4112755052 1238696154 1862145631 2265976322 +4173645036 1515296246 951918382 1587890716 170113727 +4222981316 72025558 144843233 3432962087 3506287882 + 66657331 637106837 406927341 3964420203 2127134160 +1327235047 227339400 97109542 1814799261 340888197 + +init_by_array__________ +3571940102 3358790577 1185377893 490641923 1689429829 + 732262387 3476409702 1055721586 1704668571 131833278 +2318686164 971677888 489886788 1418897399 1420774349 +1452598647 4068357231 1471535202 1665208152 3226458127 +2456051265 1949316429 2137468927 256540922 83856426 +2006892539 3954930952 3444850271 2144456509 667300435 + 365125488 29815556 1780999112 2625638364 2974921225 + 155452962 4132153609 1779450021 2462683988 3734298329 +3878785692 1635530071 1705576191 701042291 3820213232 +2233077098 884075658 254429520 1513242945 3334830243 +1390864725 1877605359 2763549443 1948880708 1891328177 +1585113094 603478195 125346629 231314253 1966842545 +2201793570 2787193689 3760440224 481858146 1139816234 +2397713582 2712201505 3064064456 394703180 1495238581 +1026471579 2115261916 2754606686 2242415505 3670758642 +1053897322 3050647041 1916540206 3399707307 1314360401 +2712258786 3281903731 727258282 3094778985 1243543918 + 951715568 2886115274 4223428131 3546726905 1298208683 +3483958828 2583238640 3800071103 3109257770 3703211908 + 416176931 664013243 2405005885 343959342 1471852804 +2401944148 671028434 2095292197 3603871685 3814105342 +3470299634 1696204622 3546335689 537574339 3912873409 +3799566778 2419073237 2722379502 916321360 3500567111 +1482403017 2136215999 2635218234 763506253 4037302613 + 375658760 2131597793 3301615917 3285276631 489786570 +3803284886 2681849072 2379733379 2880996717 2923461914 +1149064352 2584775699 3933481723 2147319579 2291550411 + 478510147 2355756378 1242817125 3213577511 139091875 +3133862487 3287580807 3408321628 2157352262 3273500758 + 952098632 993851028 3216519923 180862681 2169029865 + 638557434 1236032756 4008131798 3308440509 2244242791 +2181891771 3765680961 4005998357 2393969880 3784537648 +1292665792 1444006164 372641022 3377918495 3847734933 +3626956008 3634915146 3057531652 609375286 4041330990 +3865455351 38812804 1861523745 1478765453 3443359220 +1422943008 3643756858 3561844206 1167817685 3062789514 +3049788527 3974815959 1861121206 1534681757 2108285902 + 526143185 3188570399 338969449 2051640388 3417891544 + 763834708 2831096102 2401621396 1477588937 1150890288 +4279156097 260095441 586540602 969816142 2121570854 +1747298933 231182518 3864472844 4118000359 616376452 +2550421366 2099924623 1540969109 3999757424 3323087835 +1678851337 3541421389 3884714328 3360298950 3832060601 + 46029336 1001643786 2992886351 4167312817 2856333608 +3969852359 1881415818 3400155108 3469188313 861925465 +1911768158 19973473 2583936177 1232063903 589693414 +2518500004 1679956098 2970989432 1930715228 2469942013 +4236680042 1435315612 2806106788 3787724481 4196658019 + 146391466 897360243 2177464539 3918574357 1896515632 + 72607894 3421801689 3883872107 1305453789 969334363 +1549960716 1351848856 3230567901 1637141804 2481614628 +4212639925 3389064431 3255314442 1276149955 1979613157 +1141510254 3580210582 3113891227 2290875698 3800696113 +2221610479 217621916 3521334350 3342307242 2646706886 + 729840278 880868674 3342723580 3611005846 992149268 +2916130589 1914784314 1968131756 3723367005 3133076970 +1623769150 2246455159 3254805905 1080176024 3679438391 +1109631436 3768088091 34005354 364029516 416791973 +3556565157 1962992668 2076214298 3176145275 3813810355 +2005022039 2814920824 1736782781 472741691 495097994 +1136870874 3165993546 787555603 500130322 3162851673 + 462822354 1412866811 1187686233 1880903342 3445785070 + 124576000 3750553118 4164220569 528036278 1334999821 +2311359573 2652060732 2505117113 50255077 1939833380 + 616502973 3130841737 3015718605 1012698689 2545824447 +1562654346 3491457142 1330348796 1489584315 2037423028 +3982070025 2295117923 3126657693 2472477469 3455003340 + 265554055 797651117 292932314 2291425434 2504910162 +1251218141 1259905745 2781098763 1929159292 1053780605 +2131059529 4144236950 938114138 3568681785 1879067476 +2099340470 1514510711 1519442279 795067701 1148561197 +3145126209 3244831406 1746556372 4268606592 3794283019 +2800396413 2288124928 1308611733 1996805357 1421122628 +3618675908 1522453693 2207860660 3262442374 2094133854 +3182506082 3215631478 3705561920 1273392803 4217218343 + 541055181 1178460326 874763518 262177349 894783915 +1249111010 1270931263 1174716175 1609485492 1100424325 +1183796354 3798303070 3741635396 435036119 4179538159 + 523363408 404552914 980816158 3926531161 1453098065 +3307624016 104523157 1762666802 2317189947 2023914793 + 997977744 3567952179 3894306103 84322825 3636729385 +2273425555 1428047232 2567973175 1928660804 2024500573 +1125454828 3264921733 1326282786 3041866865 2834873893 +1565843473 3850482960 4012707767 3808302766 2723457696 +3085848226 286746762 3747393393 3309914863 3802287857 +3047767818 845051189 3373630831 3502881841 800948709 + 977864314 2928664873 1143374117 3866363955 791196931 +1775883526 3518463580 647505838 3030186301 546292576 +1093567984 3975275226 3866685200 4180349616 4232680798 +1458234595 2409111017 1804039833 2406421041 2368301189 + 491874151 2609037471 1215628698 1880104187 1244163636 +4185458636 915019434 987504717 3438389993 1115876674 +1870054198 2745867676 140467020 2514745667 3961253067 +4069966211 2443538065 1576948169 2267044423 929620934 +1588144567 323361980 4146195664 2034138271 2943372927 +3962248360 929333602 2816327231 586818311 2280516491 + 179906252 669873469 3557550001 861516070 3547725499 +3963089708 292802333 2611469066 4252061470 1080305427 +2933703920 4132513557 2905946448 2657080740 1138049754 +2113340784 3350841360 1973567973 1615897653 3308876695 +2285206647 1998714290 415269556 2411796517 2561227979 +1031878275 3045589730 3544987135 1000759675 194322534 +3476849911 2797698961 950480397 1329877992 239287316 + 533555346 4229443303 2063025706 2117567018 1389834744 + 618951403 3748561227 299445727 3705306325 1610031077 +1218884363 3219392076 237982896 1749821977 591622892 +2314196459 916035746 4257918426 2901017124 3691835431 +1869917184 2455354567 4186619591 3461745043 2032058510 +3082491786 1287577947 709624222 455204942 1446490139 +2429654288 3757847260 1441302109 4085634952 2439675152 +2094595546 390780145 1437581569 3872252505 2046256249 + 947096618 4179318448 4136302801 2061241479 1226541212 +1149367190 1460906803 3837571860 3949887571 357038779 + 702890494 1087428560 521074527 3144593759 2359814827 + 118409742 694420915 2007770556 2688311441 289583082 +1803557381 4146589091 704580254 1196461017 4051748280 +1383992871 996927865 2480397248 1699023992 1408579291 +2800869038 1297725181 1250228986 1222203115 927390586 +2975302754 3714174765 2916353094 4113265421 534175283 +1621202903 819766866 2627759017 1702223052 2954744328 +4110314791 1289897832 1430641218 3364066062 2572174909 +2367679991 4009648508 2771957348 2626939394 2596840704 +2628486680 2998036218 3239249555 1726075234 2083013625 +4090428420 2446670968 3751979705 1936227422 4083016294 +1548059249 355955598 1281774682 1613301352 1475361747 +2310604729 1081863488 4097739214 671054472 1343778826 +1139795919 1465507516 2395199596 2762216850 435383439 +3252959155 2623461620 4226410306 3431636074 2959264324 +4134753579 3504496272 18424919 1950153878 938526244 +2197574906 2674507561 4199320562 990801810 3748993934 +2073711546 1864722386 879947004 1841740996 3812590261 +2937978792 3715085350 2010826809 462571934 4017736482 + 94372833 2598582380 791092918 2071713533 3161948930 +1676421292 3797264923 3394643093 634398506 3844123145 + 466000557 1732232404 1201221618 51147681 2758800645 +2195279052 795161803 192387189 2285460999 2745749048 + 807963965 2753783014 3443412457 3490235096 1202465389 +2800816185 406476043 1020297445 1155477179 4239391302 +2290815708 2561340210 991675583 1508160543 1906089075 +3213809340 1312344665 3134931190 2427460204 2041804703 +3408634192 1382527753 655829252 1607067692 2713019885 +1307034063 2942767626 540718205 1561365211 501356442 +1510452541 531173530 1591084959 795050199 918321004 + 176543436 4208152428 2703216984 230688290 4019030869 + 189128558 3666161495 3958669267 1793552711 125552926 +4155076548 1490306854 86169869 1564832029 935882445 + 37210472 427275019 469881231 2103398350 4204007358 +4000289779 2923204960 4043078444 4129674460 49243774 +1938131721 4206134417 2778297523 2857676174 37296112 +2088239791 2166403106 1938276374 1475341273 862564429 +3255203960 1967896745 2545832656 2979523318 3610050425 + 767035415 1327523898 2022190002 3179043466 3110928107 +2338496096 4283969760 1061909760 322019445 135273442 +2959217521 1315960104 1639178740 2756612290 2104652497 +3885410407 4023439893 1113806181 11382155 458011692 + 703101214 3397459757 3587110228 273338662 1673301111 +3006192856 4185468705 3137448320 45849235 332893254 +3194157089 3204376528 2190401378 1243172348 1180770595 +2432194152 1783521576 810218424 3627892517 3697908600 +2729604707 3927624983 3903532346 2092551625 3409410731 +2135416574 2925979208 731498136 3109350015 650630834 +3083952574 3135660781 2864507464 3704455540 1800573902 +1687866877 3292900098 4209159238 3351812237 3453579735 +1481879059 2205838361 1608707541 1834837513 4206470239 +2067010173 3073510907 1922535409 4235011532 2199757642 + 327043460 3568522048 2843411793 564800142 68291853 +3816705014 2258860409 2243088010 1005898736 1678260523 + 444222931 1199639077 372434870 3294188213 4143085621 + 843545956 1961841973 871172696 1549619903 4193632716 +1751339728 589540311 3062688828 4021341784 703542823 +3390404721 4173725660 1579115118 1400148954 2041754358 + 876417435 1656812251 3707630105 358882434 3841891239 +3886041967 3352511691 422126669 2466537516 3226753193 +3331910987 2036829186 3789660309 1903283537 2034334707 +3670069499 2463217423 807065739 2439359477 4004848462 +2695120715 567286061 936747181 897911970 3615047124 +2796988884 1689074748 1703794217 2821560010 857851665 +1361674222 1384490131 3939439760 4225546296 2033264336 + 433975988 3845656156 4111922917 1357573158 1614687728 +2843213835 3575275611 3362179122 1112347046 1180336017 + 832403544 1302398810 455452209 628732282 37746044 +1757485242 2154756305 499899750 2176287529 4212141432 +3884227627 1782930706 3764276414 3155064847 3783247148 +3174593726 3882799367 743090268 1880963736 518464494 +3441134465 3647473030 3147702513 2874968320 2602834853 + 599250753 2694528767 1563079986 1153602875 2896271151 +1629516966 338769464 4071345826 3929853227 3124182309 +3935432923 1445855763 1851276671 380493357 2882770591 +3234662207 943745622 2237166382 3129887773 1194476811 +3799595291 3607805246 3987975950 1837497918 3767393146 +2114206276 2525318134 1016108738 4195408936 3383165680 +1411205812 3180021457 71598750 3628282147 2814453479 +3070194918 2298265610 825626340 3871268917 2084869207 +1995092281 1033429518 3615507839 1435365499 3405901166 +3439094326 953639323 276803987 2963589716 4226595133 +3970920610 3304942403 385308441 2409692522 3966332427 +4087469839 2159955184 815971564 4255367186 548898284 + 93452891 1250886131 384382936 1143714993 139569776 +3973698056 680765308 1325428735 1336942371 2484377610 + 217062017 104075592 2501187488 2751022204 1176960847 diff --git a/SFMT/SFMT.132049.out.txt b/SFMT/SFMT.132049.out.txt new file mode 100644 index 0000000..25d7b82 --- /dev/null +++ b/SFMT/SFMT.132049.out.txt @@ -0,0 +1,405 @@ +SFMT-132049:110-19-1-21-1:ffffbb5f-fb6ebf95-fffefffa-cff77fff +32 bit generated randoms +init_gen_rand__________ +3596981943 2237974425 3827224957 2514757895 4264843680 + 955444628 1982846266 3690734264 2164407755 2213046834 +1724693857 51549213 1214613897 969393410 3593568815 +3968248172 732457991 4110147364 2568450099 111613531 +3105149926 3474245237 3165871412 1276608804 3923836977 +3648769445 756375000 3003259904 3475051552 3064994508 +1738060392 1253564194 436357404 3649391826 1996013715 +2729021393 1105099033 2700993921 3881807966 425297842 +1592718677 4126015169 1549952430 2349787697 1330918304 +1960542741 1829781490 1038664333 72335516 2849036317 +4239651416 3757976166 2710983360 1836779447 225611933 +1150272070 383410953 573608158 4150781548 2996902092 +1668903135 2175460510 1849279162 2651516368 1226061898 + 66315168 2070604771 1355818237 1690742738 1418279627 +2837571220 1476333506 4119296714 2048810260 688849086 + 884638991 2934460379 2745162937 2978180569 1245057028 +3528732731 4269655358 1410758948 3736297053 4149525876 +1085129630 2866936446 1197521330 183636034 4073672281 +3923982691 1721803585 1338991898 1099884030 1021635446 + 87861473 682843422 1823499747 3288898238 411402303 + 368490130 3188812156 3653429766 2385745693 3549231135 +3368581558 3864601184 3978664090 3982716534 1327565192 +2951648556 3356677722 907632251 3580055389 1334532452 +2056992759 4231857110 2866293807 995730443 2989100008 +3583438471 1311824294 2671436018 1321004258 1676279594 +3346182547 541489131 1062854575 2273193455 2747698018 +4132914690 2971452922 3941092693 465746819 2401367012 +2479715524 1227990368 2640989295 3635799419 3470191677 + 656554409 77929599 40418870 2756511563 2914079952 +3642742820 515397513 655553702 368778688 622420129 +3430206075 548974717 2283271161 2082141756 2439808307 + 202606866 872215885 2126456289 664419479 1884423671 +3535878778 3291604629 2796791055 3561482711 2668745478 +1375072683 2239759058 3356833603 4021999149 619592160 +3347553786 1799163097 3768479657 1411538988 2547115851 +2863466709 3213453506 3059683356 233936246 3333147627 +3002853784 2529523173 1413026604 2542986459 676868102 +3477125093 2413055410 2836507837 1934213462 2814385131 +2626884822 1239385996 3042033482 394389031 72394655 +3278269661 1630199668 3095660650 1241033283 757879729 +1198616375 2590978994 242650561 3584193061 2464253813 + 42594549 3590420911 3111935720 1948656221 12935088 +1613688999 2991814519 4181911577 4185544583 3728641416 +1420291324 225205859 3567721363 2763374406 3297295590 +1899167906 2442945884 1335662514 1702341858 1036007787 + 597426219 3694737040 3987270664 3648954790 2880113458 +4231525974 1877346360 2503838250 2215252556 96036493 +3223957295 203270257 3874078665 3568946094 3524422428 +3912826507 2644701201 2737333238 877540372 539548352 +4033456040 3567327998 1887278679 3427267750 48925252 +1356805154 595520865 1365463464 1338901950 1338132626 + 921401508 3516018798 446337719 3945035575 2192105790 +2601079891 1480502551 2286467731 4137354297 47574006 +3087314936 2593836560 1642271576 4037740408 2311176811 +1067887340 2874884461 1480881537 3708657520 1029792219 +3490400354 1161439732 960167991 3191133749 3475804323 +3325301995 921901583 2817485814 3137010011 3225403267 +1064702312 1767586695 3014227298 1815325195 296883582 +2469255712 1647763936 3203013250 202221999 7340783 +2757397306 2964494766 1240586628 231252971 3468112743 +1379102400 4220711172 1253296255 2334826128 3031835285 + 292692732 3777326535 1181773061 2271863745 3264592041 +2688352603 816068657 2872022366 2496333587 1510717377 +3381807432 604896569 1427790496 1171621012 1782862678 +2072521045 777278711 163738242 3132254448 1704338245 + 640640356 430104554 2933625966 3417160927 1812650368 + 466082662 2030456379 3576258230 2602990590 974314027 +1229200334 2310617894 1977390544 1677754533 2980478301 + 281231326 2720188033 1418955264 3541143683 672241267 +1216456253 2926529041 1508194657 3791465710 831084160 +1324376556 2103915996 1529435286 1392681812 245839596 +2236947796 2449864744 4227126463 2443296373 1928694908 +2309780793 731541158 4008254998 3056959999 3569804825 +3753267065 994712357 3311108911 2027718623 3929416500 +3132505247 2254156903 1702881484 2826971685 3639339457 + 258309259 3775361807 4028714932 221832121 1973675381 +3908968396 858864782 3470170545 379916681 3023304471 + 523784994 1459290827 2514158457 3636378662 105653155 +3741445110 3315054517 3066796920 2823450283 678536042 +1499986538 3023208525 435654971 2338402164 374827884 +4170052378 2720479142 3134488447 1559216736 2303137214 + 792569007 157761061 3911438044 1308851189 364156956 +2513897514 756369395 4209586764 2904619424 3499628289 +1947089574 1225949048 4042979474 2136029142 538568781 +3738798227 1370098107 2422587638 748764893 482262428 +1857858579 4001835457 3126783615 2589570466 3261767681 +1233238937 3244437540 3577387468 2034106038 1423637948 +2061709235 852615350 1008921488 1926193466 361907308 + 521823159 2690031901 1886452591 1774690335 194314702 +1917439941 3428685616 2797637656 1546653383 4216328043 +1949478045 2269433340 3694786025 1095721865 1685395366 +2084489821 225239055 3548564642 3849496331 2000945273 + 558080775 2283559968 352730277 1939821952 1915065063 +4085297933 3385419066 2540125692 896385546 3567877865 +3518859086 3446451850 1211823478 1873117300 1549845153 + 525119003 3258172068 708815606 3757283525 4064932867 +1426172793 689515439 1809412033 1659838755 4267801883 + 400460039 2271427419 442603861 3876175457 1462622318 +2298959818 300834577 3666674175 3124157033 3187134749 +2965544670 2960600722 4036872341 514309948 3360934870 +2366660138 4029303357 2696403247 4117738585 3049775390 + 750028946 3247391263 203403882 1554467765 1392944546 +2912943399 3129398124 3689036488 4209775443 2349683340 + 369855345 2862726684 659600535 2643425471 2599539189 +2755088134 1653993770 2064619040 1274496365 2939796848 + 776605265 132444440 3781126036 2863560009 1029049182 +3699737699 2804677595 1192682450 3306730609 1411148003 + 208104798 790096842 4213955087 2342337236 1874567765 +3117967902 2625310557 135306173 2203248572 2792428552 +2205309875 3447603326 3103786664 1588145824 3397235731 +1444834839 3383544234 589553870 1552989460 2915511962 +3686430656 1497522173 982495529 3238736015 2037038295 +1599797554 999412284 3718027736 2039474093 2707076851 + 437735458 1179826575 2931974670 3296432284 4049380981 + 862871591 1481132327 2617214193 3529853656 2852063956 + 472141892 3176415157 3706925180 134189271 3226277113 + 242816983 1446664352 2731021136 2304470291 1070863121 +2704122701 2511214545 2871362577 2756286153 3017472007 +1671718640 1123200125 2359650362 3565057248 1602888372 +3265910419 555742190 3533225685 583285879 1808095945 +1404316110 592485494 2379960491 581812260 2808099393 +3400450529 1962251239 3611744816 1565278679 2247526968 + 457626946 3139970886 2557946357 2754841577 820080603 +3795130029 3251884378 3086240879 733629764 173389991 +3424926502 2522684257 3982835519 3679342119 4177876178 +1049245388 4280805584 953593421 1018733819 4057770285 + 803014483 538118316 2434551286 3793663125 1546812114 + 626044721 644837012 2753738161 2402665671 2116354855 +2365403435 1454048698 2102439803 166641279 3322223972 +3047018824 2850683126 2906645059 4013030064 3460675487 + 422562360 375716256 2323026950 4108460433 2978542904 +1151243471 224070764 414566845 952295191 810707601 +3644014663 1249755007 1192859869 3999134458 1982409854 +2974817459 350465705 3498006353 198095717 69293742 + 299943682 4025811780 472456958 3583659431 1488806230 +3181083520 750045949 906043237 459399171 1922743538 + 975331893 1040998784 3012265617 3459419106 1549880515 + 910770728 3652632848 880256989 3322878474 311653989 +4010525427 3566943905 198832364 1438757723 156768123 +2988393466 3259637073 1200902488 2560107708 422673694 +2096464996 880325493 4024701458 2758725745 3070655240 +3982020107 1018389621 3922972974 675352676 3778533402 + 281907424 3777824509 2615632495 206866231 3107264806 +3522180948 1330259165 1622137676 588619625 4174397914 +3076549830 433962088 669574955 2555762523 2862620110 +4036465440 2415470654 931021106 2500898565 260791410 + 745838156 3488691553 947662696 1148485941 2187286704 + 192589811 4156853093 3525848064 1760601304 2144099214 +3640143802 2612310115 4130095330 3605278448 4026869596 +2433675208 3834179377 1829276289 3839551861 2696426261 +1781380787 3012219094 267735757 2545246858 3855597907 + 620899479 3201795735 3107447875 2570768407 1088080434 +1453379852 1548107375 3227824787 1736573618 3721606436 +1047222703 4114902166 3834030533 408100289 3056964657 +3385977577 30998284 3976397632 2548976696 452080319 +2888564319 2850181359 840834036 3189155937 161383788 + 694930373 3497895292 990658409 897173479 472503390 +3390181073 961986486 1355957198 24259608 3766216877 +2357755614 601935378 3415698563 556943111 1054792386 +3103351029 1545747134 3107075833 260809687 3562391401 +3577105582 587295250 4109449507 2622446839 1935606941 +4009219859 707080677 3913617647 234902868 240040205 +2374262395 2698862655 1839704716 3476793520 366994649 +3373122499 2255356922 1165297490 3512850035 3546159620 +4195524883 346302994 973277886 937885000 3576161493 +2770283805 3868133088 271374381 1470389097 2006257056 + 72784016 3170795990 3930246033 1652212775 4239989830 +4111773101 2089579069 3817441549 1589993435 1045718725 +2001013737 3191875137 3855875924 2455120289 572081483 +1498418430 3322619687 1937436461 608713266 1962507634 +2171451278 1949301782 3142449474 2993042539 774530651 +1682681414 2376751223 3279033613 1332247495 3499451681 +3647303548 3453211132 1487634047 595846195 4152311139 +1713229882 2294403032 306472745 891565517 2559403879 +3280205409 1097513733 3724162071 3477630411 3591073 + 484795276 2167988262 961762095 586215444 2657329839 + 863404635 2752242435 2412459225 2683814355 2933805436 +2311804737 3946116674 1945950690 993586892 1041532545 + 978366681 2007492329 3365566378 3516015155 1278750930 +3991570529 2923703265 2815019354 701666269 1133630587 +2823504713 3708084633 1474723269 1289307123 1094937151 +3381390263 2482925857 770056445 3117475888 2786574052 + 197275752 377154752 214879913 1655258457 3232903936 +3607195773 598193669 3708023572 1439541110 165308267 +3941145668 3693461705 3670756579 1227069791 3235491069 +2574893321 3426797460 729132663 4110302979 34963318 +4216685254 2171412668 3448499245 365072004 796533379 + 176313074 3086288899 2844247317 4115545504 1495347180 +3178356766 3183225159 3309755220 619067019 1833747403 +3322294742 2451173567 948255123 171805724 513625311 + 18456026 66067534 2099558445 858761370 1553758341 +2055662734 3933104848 3193916158 153776374 1814200953 +2812251626 1668190584 4011596877 3512894862 3164459043 +3460803480 1610544570 3753054296 1466346786 935704378 +2584661687 3170251531 4164624099 1331156347 897055915 +2310366533 148631954 1479102803 1855921057 2813662772 +4149555081 488862552 2964424007 2030915637 314343358 +3033119286 3704652088 4021974009 217550856 958019327 +1551023420 1462317554 2882528449 1136299843 292840589 +1307775247 463274356 1430357686 3907607055 3462509184 + +init_by_array__________ +1504823642 3697343753 1088344911 2677745529 4178419641 +2335930461 2464577205 3770915900 2265865885 2476652314 +2677559955 2209458101 1639287655 4039697819 385554367 +2526303904 4918276 3792782130 285428580 4252468569 +2144436279 3785554037 2266411022 2058186717 547094468 +1454738165 2340106398 2038376372 55836418 1989447828 +3823388202 125747492 4232022563 2289045230 2261087398 +3292143644 2311017099 1437161539 2605033548 3883081306 + 997158455 4070713862 3809085626 3564292033 354908784 + 129529025 2824802627 1768937606 2131874259 2953473730 +1100367885 2714772736 1073909325 1937096878 2858160130 + 299309426 228617984 2190914383 3796317940 3675215920 +2181135989 3453613942 50260672 3128360651 3244704602 +3719004822 3807143782 3171453853 553752516 1735142514 +2191352790 170986927 1887873224 2311431521 3614710820 +1529906389 4235512847 2164724045 1908174245 2880109472 +3774629254 3940338644 3853358376 740438798 3889743664 + 937931881 3429583820 719840419 1891015604 3025887660 + 253160420 4064208163 1460329684 492039356 470119357 +3628044256 3845260317 4171250309 3035989923 1214818910 + 409601842 783041295 571970176 2391302280 251718209 +3605100853 4145687110 3118932284 1184597021 1690781718 +1045712798 3687747792 1218523280 1424500138 905986969 +2393037678 2137324083 889239294 37782557 374820182 +3200960594 154787173 2654164060 2537384202 1995084624 +2317997519 2849440762 2481035997 1707620337 1811857443 +1252786121 3506540561 1221870091 1720232030 1677841566 +3476720583 3875827631 682597497 1282271558 2077744468 +1517311188 1563678646 2519801213 3816941087 1554009597 + 577494706 2698912202 1803724443 4082610833 4220921877 + 476523290 76927725 4142674028 407317609 490061457 + 472041379 3911090063 3402443619 388396388 155514965 +3181901029 2345309876 3822551527 3809891390 2193737667 +3052877604 525702683 529631267 1247629125 892180429 +3220142265 1253176782 2866161392 1059783614 301010699 +1772909102 3706491140 3514828089 1497610713 3100476370 +2299372318 3154567693 2418860769 2844930095 2812047320 +1607571556 2618800785 1539725053 1512057765 2367071342 +2203694567 3802537758 3975833276 2215836812 1312034980 +1776670989 3670461458 3816599394 857101740 1368159835 + 359356197 2384931188 2679785686 3280784476 1709094834 +3635380960 552508229 4089386065 202223263 1879404635 +2493999821 4206989573 2410910920 846019398 2074194195 +2103398902 3888057187 3262740460 3116665993 2695435704 +3728403066 1165603729 3635786622 4144604519 1767388271 + 965187869 1118835097 3206733419 1900011195 2962416289 +2311966279 2322480180 417109808 2858289361 2663503599 +1632284455 1000075825 2128751794 911507188 1456467526 +2807706163 2993501434 2319394912 1143130800 1973099514 +3483904338 316900300 1987384228 1546517951 3192077743 +2566646875 1428159491 3184061884 1283688021 1492728645 +3224783871 2428238458 3010912394 1401827545 697218535 +2533812454 610703656 3218608588 3092710655 1445772144 +2757473296 2985995201 1081910190 275974516 1381912460 +1372814474 2069022831 3636606766 1815426463 3951856623 +1566066362 3987110997 4068857976 3354620949 2660956490 +4258902438 4059439742 1752834190 996248157 183545291 +3458130922 3093057793 2146928586 2402790000 3478036579 +2389885491 3405261264 1781015785 1946936494 3708440904 + 142531484 1300778833 558341534 1507387174 3986471975 +2213061052 2627907287 1794662028 273314240 3328417854 + 673532489 2384019269 2863210090 157959556 3590624830 +3612692667 2363300974 653702850 4145397757 188597541 + 719483328 2521277449 1323742712 358892849 2119476125 +3706507485 1034186762 3342685983 1756387491 2822407974 +1458531928 656508826 17790887 2447821880 677936687 + 195170907 3346462465 1647747390 3020995237 1297698426 + 195133223 1974966062 696984497 4074098495 1265308645 +2722823797 2129992900 1908284320 4130550818 1033514278 +1632835897 798048699 2605123121 438593333 4103593348 + 879331712 672839727 2193447972 622748535 1105570645 +3695667189 1598808733 1328992586 199574628 3420941431 + 240300742 1336826305 1596477504 680894512 4020067747 + 323390146 4259439206 3115284401 2444934573 136462519 +4089219632 755939940 2225353410 23194633 3370730865 +4166490331 2524703987 2331896422 1589623398 1211010848 +1483955030 3394455333 2741690534 4292286596 2947460459 + 51386331 989773061 1318780995 1123904522 1558252134 +1065326724 822503126 1466951088 1526974532 3540043223 +1318822540 1039524283 3240319029 391539703 384280075 +3389239666 1442719223 1586262945 971667103 2131381125 +1492677157 2904636134 335926499 3332012715 2753274008 +3187928328 4045571966 2971064389 1653786047 506189007 + 799487158 2286797167 569124091 709476018 3788257702 +2623988869 163848428 4103377501 3450849679 565787163 +3066727848 2496636796 1222044361 2527520640 1755543703 + 516761694 3700936629 2320678855 3924229589 2334931249 +1968291628 2894474806 3387426999 1593945513 2696512820 + 309367006 4267699207 1993834906 3864781418 1013839895 +2854080355 4259902532 2079014687 3468223898 3264921182 +3575673300 2427491241 960024776 440410563 2150957516 +1034018167 94619570 1050359850 4035032016 55503368 +1928914979 2061551559 4285374078 870525770 1380063248 +2311380000 3682385549 1020198060 931593371 350251193 +1420817882 707300188 2473284091 1317565613 1825945512 +3085797526 1304843922 4119069858 2238014463 591597247 +1534382532 557743048 3538092771 1747777922 3950320060 + 588019301 3682351793 1849201125 3939442651 1810068905 +1974471087 1017942569 1391808952 3375542036 525471641 +4265981350 3368529770 2218406246 1721104689 780547298 + 700519920 2908539092 332610474 3791342399 3127490762 +4209180762 138246277 2940208830 3178954626 2863084001 + 80919709 4083766762 4006058880 370757477 1302106117 +2175304051 2520217593 1277091160 3868353025 3914561907 +4172748534 3280340237 1160612499 845091472 281422872 +2456708760 203302481 267291944 3018202633 3156676024 +3999075531 568599181 4133478079 650492698 1553848052 +1803358865 1583853991 392925377 1385917333 1531079162 +1621243530 4179079661 924879308 2331292063 2064736075 +3397419545 3514513666 233408721 3106619352 3177075294 +3341561366 2998697828 1202544374 3280135569 2976270078 +2317893005 2163003563 2857001961 1557094237 1934066519 +4126343441 1412413414 2510219152 395036939 4009733786 +3095733415 631434616 4291409307 1996540695 636975770 +2726071110 1952068563 1284582412 397521667 609708866 +3410479461 4221422424 1403340152 1492539196 2074415434 +1486193900 3762754075 3565008134 679156743 2490764021 +1872875284 1519101708 2232019223 2136701562 470446948 +3032538702 1513947634 258866575 2333961061 3990579626 +1184268026 2017638858 597377341 447422726 3155366532 + 480631259 2363359225 2086871774 1839630317 2525458883 +1046198994 2196655410 1287092601 3967775472 3618967226 +3674215843 2688366405 2916155674 2107990093 554648011 +2673185774 1987868896 45035849 72200796 2134029992 +3946188301 940219545 4141974258 933621837 526908965 +1580607561 1702453777 3598622403 1840334441 2033876816 +1806919578 2279726582 1898965768 3783983428 1385775481 +1308078392 1911967268 314772294 800696026 2392004353 +3700028338 115633212 794511579 2392308903 1336975229 +1210608207 3877885330 1960838602 4182554031 629301731 +1125781215 2692219712 2271076409 1910120246 3538682960 + 506519855 1453934327 3528619703 754353379 3634402568 +1694045733 2545628223 865964895 1272838020 2910437852 +3955776668 489907424 1210655199 1422337842 1822682777 +2459055750 2837937641 4161202388 377661826 1194326885 +1179151218 612708667 726091569 2080675235 1892490969 +1579722002 3702835207 495011872 2600305483 1179726216 +2398105120 2657610962 892898036 2864624736 1740466234 + 943563410 1010943429 207426134 3507370528 2178448370 +2055401141 2426251151 3043940452 285057870 334758291 + 475447455 3333986901 1861255520 3216034023 1329227765 + 519311358 3046998013 244302994 1281482570 3078658564 +1672187628 1134651014 2637124517 3664423965 3768189060 +3695760200 1619315539 853856274 173109871 2149582760 + 661545766 2762958188 3692737545 941722328 2224258333 +2424237282 2259244799 3137039242 3032021972 1207059303 +2711228763 724752931 3896639264 981319997 2133118035 + 372953086 353535009 2683146203 551929187 1801016364 +2903138442 52410834 378277469 2634784789 91612621 + 995413612 1065151880 3489622807 1273956377 959517803 +3812287848 726273919 2291012617 956887914 4069416659 +2140072796 1498668426 1532983825 542350586 3747475908 +3878103053 578526558 3328236392 91124014 2395721588 + 797283262 1541622548 57803794 116530494 382537648 + 328039847 217058768 2337739572 1479393087 1292994311 + 710345183 487692791 2384072039 232926154 3992441683 +1932221233 1565887186 2277735825 1978898833 3228413180 +3899377874 2336470532 3377916268 3601879884 2377980361 +3657807621 483398170 2951266857 3140654482 2142478585 +1789650945 2442763666 2758364279 3838411390 2598172378 +3324728890 1401601301 3780361497 2081546680 3430485212 +1583240275 149790373 3809587426 4277714129 3308328988 +4162272683 3592497739 415171339 1520452575 2830233017 +1840628462 3122597515 1413053603 4289971703 1893780881 +1127965054 816084037 676103495 1859644050 960183182 + 433964809 1720446846 2565713388 924556086 1976186791 +2020071263 1471757233 3017780916 4102295889 1374993759 +2319082514 1864048916 4114202845 1400958606 1432434455 +1829724359 1113961222 1776488807 3436204905 3434437745 +2820049781 3992193314 3533802758 2800751878 3978741618 +4293548225 3930170819 814967057 1508748936 438681968 +1574799378 3981761328 2268247670 1965795772 2642668125 +2400741274 2438193671 2006999054 1914896365 1205338157 +3532868328 2955422527 2702043899 440456802 2161120250 +3207281059 951473640 2520172987 1155569935 1015720396 + 805975028 15987407 3539497683 1920113336 2232069078 +2761757525 3131092087 1899044092 1123767173 1303946641 +1240371460 1913079416 3846054067 1017468007 1621601623 + 987737502 384349098 1600692366 206592074 171203219 +4002813290 75264853 3914480089 3419863751 2161611201 + 542214709 268367458 4196206995 3670251121 751850201 +3257597465 2291328286 1206080767 1143613648 4024687848 +2001578164 3595030463 1518435511 124926117 1526520741 +2452364175 2272867560 241789181 2581730044 2714204872 + 709486557 4224481218 3448194450 54246111 2803683312 + 883563032 609304 2079151430 2419447809 3766476311 + 888537354 1518446621 3494864017 696631868 2631585400 +2308573108 485945738 1785842143 1867116547 537147816 +4081269591 4084956194 3747945383 1947941149 1474391999 + 986408622 3517675885 4219385159 1870264454 4092472928 +2455722409 235021617 3146681360 468903679 1120378068 +3318561853 700978812 1419064624 2864855302 2085335646 + 689282320 3076273602 2149966908 4144560402 2844165262 +4026048014 2769948851 2499866119 1218649161 4219540367 + 833468241 4011737498 161486831 4210402215 262313612 +3027351469 3038933136 4197204601 1523849436 4086393974 +4149017591 4144817524 3593877832 261409300 2336463630 +3532332876 1605267500 2517184608 1576640089 3842972706 +3958844110 2906094945 1946153150 3937085798 3685224588 + 861659525 2613539352 1120319915 510004744 1626536783 diff --git a/SFMT/SFMT.19937.out.txt b/SFMT/SFMT.19937.out.txt new file mode 100644 index 0000000..60ce2c1 --- /dev/null +++ b/SFMT/SFMT.19937.out.txt @@ -0,0 +1,405 @@ +SFMT-19937:122-18-1-11-1:dfffffef-ddfecb7f-bffaffff-bffffff6 +32 bit generated randoms +init_gen_rand__________ +3440181298 1564997079 1510669302 2930277156 1452439940 +3796268453 423124208 2143818589 3827219408 2987036003 +2674978610 1536842514 2027035537 2534897563 1686527725 + 545368292 1489013321 1370534252 4231012796 3994803019 +1764869045 824597505 862581900 2469764249 812862514 + 359318673 116957936 3367389672 2327178354 1898245200 +3206507879 2378925033 1040214787 2524778605 3088428700 +1417665896 964324147 2282797708 2456269299 313400376 +2245093271 1015729427 2694465011 3246975184 1992793635 + 463679346 3721104591 3475064196 856141236 1499559719 +3522818941 3721533109 1954826617 1282044024 1543279136 +1301863085 2669145051 4221477354 3896016841 3392740262 + 462466863 1037679449 1228140306 922298197 1205109853 +1872938061 3102547608 2742766808 1888626088 4028039414 + 157593879 1136901695 4038377686 3572517236 4231706728 +2997311961 1189931652 3981543765 2826166703 87159245 +1721379072 3897926942 1790395498 2569178939 1047368729 +2340259131 3144212906 2301169789 2442885464 3034046771 +3667880593 3935928400 2372805237 1666397115 2460584504 + 513866770 3810869743 2147400037 2792078025 2941761810 +3212265810 984692259 346590253 1804179199 3298543443 + 750108141 2880257022 243310542 1869036465 1588062513 +2983949551 1931450364 4034505847 2735030199 1628461061 +2539522841 127965585 3992448871 913388237 559130076 +1202933193 4087643167 2590021067 2256240196 1746697293 +1013913783 1155864921 2715773730 915061862 1948766573 +2322882854 3761119102 1343405684 3078711943 3067431651 +3245156316 3588354584 3484623306 3899621563 4156689741 +3237090058 3880063844 862416318 4039923869 2303788317 +3073590536 701653667 2131530884 3169309950 2028486980 + 747196777 3620218225 432016035 1449580595 2772266392 + 444224948 1662832057 3184055582 3028331792 1861686254 +1104864179 342430307 1350510923 3024656237 1028417492 +2870772950 290847558 3675663500 508431529 4264340390 +2263569913 1669302976 519511383 2706411211 3764615828 +3883162495 4051445305 2412729798 3299405164 3991911166 +2348767304 2664054906 3763609282 593943581 3757090046 +2075338894 2020550814 4287452920 4290140003 1422957317 +2512716667 2003485045 2307520103 2288472169 3940751663 +4204638664 2892583423 1710068300 3904755993 2363243951 +3038334120 547099465 771105860 3199983734 4282046461 +2298388363 934810218 2837827901 3952500708 2095130248 +3083335297 26885281 3932155283 1531751116 1425227133 + 495654159 3279634176 3855562207 3957195338 4159985527 + 893375062 1875515536 1327247422 3754140693 1028923197 +1729880440 805571298 448971099 2726757106 2749436461 +2485987104 175337042 3235477922 3882114302 2020970972 + 943926109 2762587195 1904195558 3452650564 108432281 +3893463573 3977583081 2636504348 1110673525 3548479841 +4258854744 980047703 4057175418 3890008292 145653646 +3141868989 3293216228 1194331837 1254570642 3049934521 +2868313360 2886032750 1110873820 279553524 3007258565 +1104807822 3186961098 315764646 2163680838 3574508994 +3099755655 191957684 3642656737 3317946149 3522087636 + 444526410 779157624 1088229627 1092460223 1856013765 +3659877367 368270451 503570716 3000984671 2742789647 + 928097709 2914109539 308843566 2816161253 3667192079 +2762679057 3395240989 2928925038 1491465914 3458702834 +3787782576 2894104823 1296880455 1253636503 989959407 +2291560361 2776790436 1913178042 1584677829 689637520 +1898406878 688391508 3385234998 845493284 1943591856 +2720472050 222695101 1653320868 2904632120 4084936008 +1080720688 3938032556 387896427 2650839632 99042991 +1720913794 1047186003 1877048040 2090457659 517087501 +4172014665 2129713163 2413533132 2760285054 4129272496 +1317737175 2309566414 2228873332 3889671280 1110864630 +3576797776 2074552772 832002644 3097122623 2464859298 +2679603822 1667489885 3237652716 1478413938 1719340335 +2306631119 639727358 3369698270 226902796 2099920751 +1892289957 2201594097 3508197013 3495811856 3900381493 + 841660320 3974501451 3360949056 1676829340 728899254 +2047809627 2390948962 670165943 3412951831 4189320049 +1911595255 2055363086 507170575 418219594 4141495280 +2692088692 4203630654 3540093932 791986533 2237921051 +2526864324 2956616642 1394958700 1983768223 1893373266 + 591653646 228432437 1611046598 3007736357 1040040725 +2726180733 2789804360 4263568405 829098158 3847722805 +1123578029 1804276347 997971319 4203797076 4185199713 +2811733626 2343642194 2985262313 1417930827 3759587724 +1967077982 1585223204 1097475516 1903944948 740382444 +1114142065 1541796065 1718384172 1544076191 1134682254 +3519754455 2866243923 341865437 645498576 2690735853 +1046963033 2493178460 1187604696 1619577821 488503634 +3255768161 2306666149 1630514044 2377698367 2751503746 +3794467088 1796415981 3657173746 409136296 1387122342 +1297726519 219544855 4270285558 437578827 1444698679 +2258519491 963109892 3982244073 3351535275 385328496 +1804784013 698059346 3920535147 708331212 784338163 + 785678147 1238376158 1557298846 2037809321 271576218 +4145155269 1913481602 2763691931 588981080 1201098051 +3717640232 1509206239 662536967 3180523616 1133105435 +2963500837 2253971215 3153642623 1066925709 2582781958 +3034720222 1090798544 2942170004 4036187520 686972531 +2610990302 2641437026 1837562420 722096247 1315333033 +2102231203 3402389208 3403698140 1312402831 2898426558 + 814384596 385649582 1916643285 1924625106 2512905582 +2501170304 4275223366 2841225246 1467663688 3563567847 +2969208552 884750901 102992576 227844301 3681442994 +3502881894 4034693299 1166727018 1697460687 1737778332 +1787161139 1053003655 1215024478 2791616766 2525841204 +1629323443 3233815 2003823032 3083834263 2379264872 +3752392312 1287475550 3770904171 3004244617 1502117784 + 918698423 2419857538 3864502062 1751322107 2188775056 +4018728324 983712955 440071928 3710838677 2001027698 +3994702151 22493119 3584400918 3446253670 4254789085 +1405447860 1240245579 1800644159 1661363424 3278326132 +3403623451 67092802 2609352193 3914150340 1814842761 +3610830847 591531412 3880232807 1673505890 2585326991 +1678544474 3148435887 3457217359 1193226330 2816576908 + 154025329 121678860 1164915738 973873761 269116100 + 52087970 744015362 498556057 94298882 1563271621 +2383059628 4197367290 3958472990 2592083636 2906408439 +1097742433 3924840517 264557272 2292287003 3203307984 +4047038857 3820609705 2333416067 1839206046 3600944252 +3412254904 583538222 2390557166 4140459427 2810357445 + 226777499 2496151295 2207301712 3283683112 611630281 +1933218215 3315610954 3889441987 3719454256 3957190521 +1313998161 2365383016 3146941060 1801206260 796124080 +2076248581 1747472464 3254365145 595543130 3573909503 +3758250204 2020768540 2439254210 93368951 3155792250 +2600232980 3709198295 3894900440 2971850836 1578909644 +1443493395 2581621665 3086506297 2443465861 558107211 +1519367835 249149686 908102264 2588765675 1232743965 +1001330373 3561331654 2259301289 1564977624 3835077093 + 727244906 4255738067 1214133513 2570786021 3899704621 +1633861986 1636979509 1438500431 58463278 2823485629 +2297430187 2926781924 3371352948 1864009023 2722267973 +1444292075 437703973 1060414512 189705863 910018135 +4077357964 884213423 2644986052 3973488374 1187906116 +2331207875 780463700 3713351662 3854611290 412805574 +2978462572 2176222820 829424696 2790788332 2750819108 +1594611657 3899878394 3032870364 1702887682 1948167778 + 14130042 192292500 947227076 90719497 3854230320 + 784028434 2142399787 1563449646 2844400217 819143172 +2883302356 2328055304 1328532246 2603885363 3375188924 + 933941291 3627039714 2129697284 2167253953 2506905438 +1412424497 2981395985 1418359660 2925902456 52752784 +3713667988 3924669405 648975707 1145520213 4018650664 +3805915440 2380542088 2013260958 3262572197 2465078101 +1114540067 3728768081 2396958768 590672271 904818725 +4263660715 700754408 1042601829 4094111823 4274838909 +2512692617 2774300207 2057306915 3470942453 99333088 +1142661026 2889931380 14316674 2201179167 415289459 + 448265759 3515142743 3254903683 246633281 1184307224 +2418347830 2092967314 2682072314 2558750234 2000352263 +1544150531 399010405 1513946097 499682937 461167460 +3045570638 1633669705 851492362 4052801922 2055266765 + 635556996 368266356 2385737383 3218202352 2603772408 + 349178792 226482567 3102426060 3575998268 2103001871 +3243137071 225500688 1634718593 4283311431 4292122923 +3842802787 811735523 105712518 663434053 1855889273 +2847972595 1196355421 2552150115 4254510614 3752181265 +3430721819 3828705396 3436287905 3441964937 4123670631 + 353001539 459496439 3799690868 1293777660 2761079737 + 498096339 3398433374 4080378380 2304691596 2995729055 +4134660419 3903444024 3576494993 203682175 3321164857 +2747963611 79749085 2992890370 1240278549 1772175713 +2111331972 2655023449 1683896345 2836027212 3482868021 +2489884874 756853961 2298874501 4013448667 4143996022 +2948306858 4132920035 1283299272 995592228 3450508595 +1027845759 1766942720 3861411826 1446861231 95974993 +3502263554 1487532194 601502472 4129619129 250131773 +2050079547 3198903947 3105589778 4066481316 3026383978 +2276901713 365637751 2260718426 1394775634 1791172338 +2690503163 2952737846 1568710462 732623190 2980358000 +1053631832 1432426951 3229149635 1854113985 3719733532 +3204031934 735775531 107468620 3734611984 631009402 +3083622457 4109580626 159373458 1301970201 4132389302 +1293255004 847182752 4170022737 96712900 2641406755 +1381727755 405608287 4287919625 1703554290 3589580244 +2911403488 2166565 2647306451 2330535117 1200815358 +1165916754 245060911 4040679071 3684908771 2452834126 +2486872773 2318678365 2940627908 1837837240 3447897409 +4270484676 1495388728 3754288477 4204167884 1386977705 +2692224733 3076249689 4109568048 4170955115 4167531356 +4020189950 4261855038 3036907575 3410399885 3076395737 +1046178638 144496770 230725846 3349637149 17065717 +2809932048 2054581785 3608424964 3259628808 134897388 +3743067463 257685904 3795656590 1562468719 3589103904 +3120404710 254684547 2653661580 3663904795 2631942758 +1063234347 2609732900 2332080715 3521125233 1180599599 +1935868586 4110970440 296706371 2128666368 1319875791 +1570900197 3096025483 1799882517 1928302007 1163707758 +1244491489 3533770203 567496053 2757924305 2781639343 +2818420107 560404889 2619609724 4176035430 2511289753 +2521842019 3910553502 2926149387 3302078172 4237118867 + 330725126 367400677 888239854 545570454 4259590525 + 134343617 1102169784 1647463719 3260979784 1518840883 +3631537963 3342671457 1301549147 2083739356 146593792 +3217959080 652755743 2032187193 3898758414 1021358093 +4037409230 2176407931 3427391950 2883553603 985613827 +3105265092 3423168427 3387507672 467170288 2141266163 +3723870208 916410914 1293987799 2652584950 769160137 +3205292896 1561287359 1684510084 3136055621 3765171391 + 639683232 2639569327 1218546948 4263586685 3058215773 +2352279820 401870217 2625822463 1529125296 2981801895 +1191285226 4027725437 3432700217 4098835661 971182783 +2443861173 3881457123 3874386651 457276199 2638294160 +4002809368 421169044 1112642589 3076213779 3387033971 +2499610950 3057240914 1662679783 461224431 1168395933 + +init_by_array__________ +2920711183 3885745737 3501893680 856470934 1421864068 + 277361036 1518638004 2328404353 3355513634 64329189 +1624587673 3508467182 2481792141 3706480799 1925859037 +2913275699 882658412 384641219 422202002 1873384891 +2006084383 3924929912 1636718106 3108838742 1245465724 +4195470535 779207191 1577721373 1390469554 2928648150 + 121399709 3170839019 4044347501 953953814 3821710850 +3085591323 3666535579 3577837737 2012008410 3565417471 +4044408017 433600965 1637785608 1798509764 860770589 +3081466273 3982393409 2451928325 3437124742 4093828739 +3357389386 2154596123 496568176 2650035164 2472361850 + 3438299 2150366101 1577256676 3802546413 1787774626 +4078331588 3706103141 170391138 3806085154 1680970100 +1961637521 3316029766 890610272 1453751581 1430283664 +3051057411 3597003186 542563954 3796490244 1690016688 +3448752238 440702173 347290497 1121336647 2540588620 + 280881896 2495136428 213707396 15104824 2946180358 + 659000016 566379385 2614030979 2855760170 334526548 +2315569495 2729518615 564745877 1263517638 3157185798 +1604852056 1011639885 2950579535 2524219188 312951012 +1528896652 1327861054 2846910138 3966855905 2536721582 + 855353911 1685434729 3303978929 1624872055 4020329649 +3164802143 1642802700 1957727869 1792352426 3334618929 +2631577923 3027156164 842334259 3353446843 1226432104 +1742801369 3552852535 3471698828 1653910186 3380330939 +2313782701 3351007196 2129839995 1800682418 4085884420 +1625156629 3669701987 615211810 3294791649 4131143784 +2590843588 3207422808 3275066464 561592872 3957205738 +3396578098 48410678 3505556445 1005764855 3920606528 +2936980473 2378918600 2404449845 1649515163 701203563 +3705256349 83714199 3586854132 922978446 2863406304 +3523398907 2606864832 2385399361 3171757816 4262841009 +3645837721 1169579486 3666433897 3174689479 1457866976 +3803895110 3346639145 1907224409 1978473712 1036712794 + 980754888 1302782359 1765252468 459245755 3728923860 +1512894209 2046491914 207860527 514188684 2288713615 +1597354672 3349636117 2357291114 3995796221 945364213 +1893326518 3770814016 1691552714 2397527410 967486361 + 776416472 4197661421 951150819 1852770983 4044624181 +1399439738 4194455275 2284037669 1550734958 3321078108 +1865235926 2912129961 2664980877 1357572033 2600196436 +2486728200 2372668724 1567316966 2374111491 1839843570 + 20815612 3727008608 3871996229 824061249 1932503978 +3404541726 758428924 2609331364 1223966026 1299179808 + 648499352 2180134401 880821170 3781130950 113491270 +1032413764 4185884695 2490396037 1201932817 4060951446 +4165586898 1629813212 2887821158 415045333 628926856 +2193466079 3391843445 2227540681 1907099846 2848448395 +1717828221 1372704537 1707549841 2294058813 2101214437 +2052479531 1695809164 3176587306 2632770465 81634404 +1603220563 644238487 302857763 897352968 2613146653 +1391730149 4245717312 4191828749 1948492526 2618174230 +3992984522 2178852787 3596044509 3445573503 2026614616 + 915763564 3415689334 2532153403 3879661562 2215027417 +3111154986 2929478371 668346391 1152241381 2632029711 +3004150659 2135025926 948690501 2799119116 4228829406 +1981197489 4209064138 684318751 3459397845 201790843 +4022541136 3043635877 492509624 3263466772 1509148086 + 921459029 3198857146 705479721 3835966910 3603356465 + 576159741 1742849431 594214882 2055294343 3634861861 + 449571793 3246390646 3868232151 1479156585 2900125656 +2464815318 3960178104 1784261920 18311476 3627135050 + 644609697 424968996 919890700 2986824110 816423214 +4003562844 1392714305 1757384428 2569030598 995949559 +3875659880 2933807823 2752536860 2993858466 4030558899 +2770783427 2775406005 2777781742 1931292655 472147933 +3865853827 2726470545 2668412860 2887008249 408979190 +3578063323 3242082049 1778193530 27981909 2362826515 + 389875677 1043878156 581653903 3830568952 389535942 +3713523185 2768373359 2526101582 1998618197 1160859704 +3951172488 1098005003 906275699 3446228002 2220677963 +2059306445 132199571 476838790 1868039399 3097344807 + 857300945 396345050 2835919916 1782168828 1419519470 +4288137521 819087232 596301494 872823172 1526888217 + 805161465 1116186205 2829002754 2352620120 620121516 + 354159268 3601949785 209568138 1352371732 2145977349 +4236871834 1539414078 3558126206 3224857093 4164166682 +3817553440 3301780278 2682696837 3734994768 1370950260 +1477421202 2521315749 1330148125 1261554731 2769143688 +3554756293 4235882678 3254686059 3530579953 1215452615 +3574970923 4057131421 589224178 1000098193 171190718 +2521852045 2351447494 2284441580 2646685513 3486933563 +3789864960 1190528160 1702536782 1534105589 4262946827 +2726686826 3584544841 2348270128 2145092281 2502718509 +1027832411 3571171153 1287361161 4011474411 3241215351 +2419700818 971242709 1361975763 1096842482 3271045537 + 81165449 612438025 3912966678 1356929810 733545735 + 537003843 1282953084 884458241 588930090 3930269801 +2961472450 1219535534 3632251943 268183903 1441240533 +3653903360 3854473319 2259087390 2548293048 2022641195 +2105543911 1764085217 3246183186 482438805 888317895 +2628314765 2466219854 717546004 2322237039 416725234 +1544049923 1797944973 3398652364 3111909456 485742908 +2277491072 1056355088 3181001278 129695079 2693624550 +1764438564 3797785470 195503713 3266519725 2053389444 +1961527818 3400226523 3777903038 2597274307 4235851091 +4094406648 2171410785 1781151386 1378577117 654643266 +3424024173 3385813322 679385799 479380913 681715441 +3096225905 276813409 3854398070 2721105350 831263315 +3276280337 2628301522 3984868494 1466099834 2104922114 +1412672743 820330404 3491501010 942735832 710652807 +3972652090 679881088 40577009 3705286397 2815423480 +3566262429 663396513 3777887429 4016670678 404539370 +1142712925 1140173408 2913248352 2872321286 263751841 +3175196073 3162557581 2878996619 75498548 3836833140 +3284664959 1157523805 112847376 207855609 1337979698 +1222578451 157107174 901174378 3883717063 1618632639 +1767889440 4264698824 1582999313 884471997 2508825098 +3756370771 2457213553 3565776881 3709583214 915609601 + 460833524 1091049576 85522880 2553251 132102809 +2429882442 2562084610 1386507633 4112471229 21965213 +1981516006 2418435617 3054872091 4251511224 2025783543 +1916911512 2454491136 3938440891 3825869115 1121698605 +3463052265 802340101 1912886800 4031997367 3550640406 +1596096923 610150600 431464457 2541325046 486478003 + 739704936 2862696430 3037903166 1129749694 2611481261 +1228993498 510075548 3424962587 2458689681 818934833 +4233309125 1608196251 3419476016 1858543939 2682166524 +3317854285 631986188 3008214764 613826412 3567358221 +3512343882 1552467474 3316162670 1275841024 4142173454 + 565267881 768644821 198310105 2396688616 1837659011 + 203429334 854539004 4235811518 3338304926 3730418692 +3852254981 3032046452 2329811860 2303590566 2696092212 +3894665932 145835667 249563655 1932210840 2431696407 +3312636759 214962629 2092026914 3020145527 4073039873 +2739105705 1308336752 855104522 2391715321 67448785 + 547989482 854411802 3608633740 431731530 537375589 +3888005760 696099141 397343236 1864511780 44029739 +1729526891 1993398655 2010173426 2591546756 275223291 +1503900299 4217765081 2185635252 1122436015 3550155364 + 681707194 3260479338 933579397 2983029282 2505504587 +2667410393 2962684490 4139721708 2658172284 2452602383 +2607631612 1344296217 3075398709 2949785295 1049956168 +3917185129 2155660174 3280524475 1503827867 674380765 +1918468193 3843983676 634358221 2538335643 1873351298 +3368723763 2129144130 3203528633 3087174986 2691698871 +2516284287 24437745 1118381474 2816314867 2448576035 +4281989654 217287825 165872888 2628995722 3533525116 +2721669106 872340568 3429930655 3309047304 3916704967 +3270160355 1348884255 1634797670 881214967 4259633554 + 174613027 1103974314 1625224232 2678368291 1133866707 +3853082619 4073196549 1189620777 637238656 930241537 +4042750792 3842136042 2417007212 2524907510 1243036827 +1282059441 3764588774 1394459615 2323620015 1166152231 +3307479609 3849322257 3507445699 4247696636 758393720 + 967665141 1095244571 1319812152 407678762 2640605208 +2170766134 3663594275 4039329364 2512175520 725523154 +2249807004 3312617979 2414634172 1278482215 349206484 +1573063308 1196429124 3873264116 2400067801 268795167 + 226175489 2961367263 1968719665 42656370 1010790699 + 561600615 2422453992 3082197735 1636700484 3977715296 +3125350482 3478021514 2227819446 1540868045 3061908980 +1087362407 3625200291 361937537 580441897 1520043666 +2270875402 1009161260 2502355842 4278769785 473902412 +1057239083 1905829039 1483781177 2080011417 1207494246 +1806991954 2194674403 3455972205 807207678 3655655687 + 674112918 195425752 3917890095 1874364234 1837892715 +3663478166 1548892014 2570748714 2049929836 2167029704 + 697543767 3499545023 3342496315 1725251190 3561387469 +2905606616 1580182447 3934525927 4103172792 1365672522 +1534795737 3308667416 2841911405 3943182730 4072020313 +3494770452 3332626671 55327267 478030603 411080625 +3419529010 1604767823 3513468014 570668510 913790824 +2283967995 695159462 3825542932 4150698144 1829758699 + 202895590 1609122645 1267651008 2910315509 2511475445 +2477423819 3932081579 900879979 2145588390 2670007504 + 580819444 1864996828 2526325979 1019124258 815508628 +2765933989 1277301341 3006021786 855540956 288025710 +1919594237 2331223864 177452412 2475870369 2689291749 + 865194284 253432152 2628531804 2861208555 2361597573 +1653952120 1039661024 2159959078 3709040440 3564718533 +2596878672 2041442161 31164696 2662962485 3665637339 +1678115244 2699839832 3651968520 3521595541 458433303 +2423096824 21831741 380011703 2498168716 861806087 +1673574843 4188794405 2520563651 2632279153 2170465525 +4171949898 3886039621 1661344005 3424285243 992588372 +2500984144 2993248497 3590193895 1535327365 515645636 + 131633450 3729760261 1613045101 3254194278 15889678 +1493590689 244148718 2991472662 1401629333 777349878 +2501401703 4285518317 3794656178 955526526 3442142820 +3970298374 736025417 2737370764 1271509744 440570731 + 136141826 1596189518 923399175 257541519 3505774281 +2194358432 2518162991 1379893637 2667767062 3748146247 +1821712620 3923161384 1947811444 2392527197 4127419685 +1423694998 4156576871 1382885582 3420127279 3617499534 +2994377493 4038063986 1918458672 2983166794 4200449033 + 353294540 1609232588 243926648 2332803291 507996832 +2392838793 4075145196 2060984340 4287475136 88232602 +2491531140 4159725633 2272075455 759298618 201384554 + 838356250 1416268324 674476934 90795364 141672229 +3660399588 4196417251 3249270244 3774530247 59587265 +3683164208 19392575 1463123697 1882205379 293780489 +2553160622 2933904694 675638239 2851336944 1435238743 +2448730183 804436302 2119845972 322560608 4097732704 +2987802540 641492617 2575442710 4217822703 3271835300 +2836418300 3739921620 2138378768 2879771855 4294903423 +3121097946 2603440486 2560820391 1012930944 2313499967 + 584489368 3431165766 897384869 2062537737 2847889234 +3742362450 2951174585 4204621084 1109373893 3668075775 +2750138839 3518055702 733072558 4169325400 788493625 diff --git a/SFMT/SFMT.216091.out.txt b/SFMT/SFMT.216091.out.txt new file mode 100644 index 0000000..8c8a3a4 --- /dev/null +++ b/SFMT/SFMT.216091.out.txt @@ -0,0 +1,405 @@ +SFMT-216091:627-11-3-10-1:bff7bff7-bfffffff-bffffa7f-ffddfbfb +32 bit generated randoms +init_gen_rand__________ +1905350899 752275649 2172726721 1382267163 3279518050 +3268632728 3717363760 4072571273 1344655483 219752927 + 511254305 3596362759 4226641704 4129438728 558485682 +1317634157 4010378104 3580397823 1818301359 3313744323 +1311807646 3802672028 2808584435 3266301975 2020171045 + 620506054 53161800 1537320991 2134803893 2715479037 + 120112962 2441794334 1814983540 1206486557 4161448945 +2366049554 3777104347 739449873 25707446 4065003655 +2161161550 1741136020 657768502 2433923856 2717307829 +1525759538 830194516 459936436 1162980610 334755644 + 384422724 2793270342 828636896 2867499727 3028851983 +1389550954 1307927144 893471662 900883406 2683038639 +3752961866 843578343 22805862 1267242205 706648080 +1235221497 401566969 414340440 183806636 4048355600 + 144171325 1757826623 1187359184 862386598 3200993912 +3519551609 3664131000 3927930108 2280155993 3567109092 +3775477558 935849832 2314171361 4112947106 241167946 +2009679537 4068434237 3401169166 2404496165 2540046975 +1411369610 2565200500 1970906296 189184781 3991085631 +2289307749 772916776 2177298567 2622244404 841323653 +3002297462 1110997129 3903838163 3330917352 3830682741 +1185829981 4069158510 3563499067 1355228158 279174398 +2087329476 2423096782 1016630296 3806781368 441143051 + 298391628 3621582017 2030648235 2778568577 20008614 + 771286796 775965775 2896149172 1792081455 3106136512 + 94759167 1472517982 3534989573 3357084062 3958304829 +1332393462 2190063587 1952654355 1539833518 3822333182 +4274945979 2721966223 3575010048 695018425 2862589877 +3587652205 3552094794 2676233649 3263717172 1637396305 +4027583255 1958060351 4264331398 593683175 408980239 + 988052840 876803380 3140314974 3922813482 1390448671 +3730494261 1145457955 273168740 3292616328 2978721561 +1345183856 1045127570 1051033980 2925181721 2033022892 +1316366587 680747006 3961605821 1441180756 279426804 + 470644301 1741858073 593697194 1767225360 183859904 +3974384281 845903783 1310882131 669406753 1054340021 +4014997838 2938642801 1538049494 1530891450 882749482 +1201044069 679219334 2135595151 2032090146 4158670169 + 256935726 3432106977 3958491628 1223520607 170446626 +2773504093 991316677 3361854848 4169796350 3422898364 + 758069043 4131191096 1007403602 2578499118 3975011761 + 343998493 672215119 2728119719 845695282 3683074078 +4036121292 2386799079 1937349744 4168522699 3721568296 +3257994462 2235973040 4138798405 3416508495 415554641 +1830850018 2272294274 1431434993 3171369806 1613253939 +2403758089 3556453402 2856071833 1227218253 715707246 +2880808631 1417631643 3990886286 609649821 114165630 +2087942882 1081333306 400518308 3793455546 3167928542 + 8941665 4201007837 1876696559 2404116336 1113953214 + 430106456 2335684449 1222027 2592528910 745815402 +3359205119 1397314198 985063645 1435856156 364592888 +2164242233 2889344733 1373414961 3381926854 2333409774 + 421351976 4015789532 3395346051 3782874312 689098557 +1429425300 2629692405 2215730551 2109553092 3672589282 + 405112387 206204079 3265885168 1652102882 199867821 + 662089205 1749535295 1348785678 2585946875 1622353301 +3145896841 3871573397 3871396933 1710241364 4006086513 + 595925263 1495163900 501657747 954738840 559217420 + 937485239 2096175720 2664016451 1650924959 1703340294 +3900873930 1041550706 1511453442 238912931 2273696131 +1914688989 689121986 521960682 1222383853 741801167 +2179811491 3527208543 3035827211 2742762783 2341044996 +2891690164 3609731649 2202071854 1665659873 608668030 + 740015651 3394484943 889328397 1892219396 1035630635 + 303150783 242866685 1156459843 3238094121 1005137614 +1693171753 2017910270 82778904 1512210142 1455571619 +2290401807 2463148413 293243398 69455180 4026701615 +1337514959 3717351941 4361229 3842407776 2080215983 +3669593060 3263059767 2081889249 3045763888 2175848985 +3357888652 4055120041 1513353044 4217354995 2039234489 +3490626025 3057548944 1197440319 1438020449 1959938614 +3366455920 2787368744 1798301159 1030434720 489988194 +2318866924 1899252011 2455865224 4048325487 3774544612 + 440534978 181215195 159896639 2768529360 2004867199 +1011946060 2993917926 3201239590 3581873124 779356519 +2358406154 666324630 381242630 3137262257 3221474981 +2322873782 2760921896 298928658 1353803174 445500537 +3189831613 2199433368 3578130406 67308495 1097363257 +2345086433 2850283446 879892602 3130882565 431969044 +2251884252 1918563667 3814629197 2932239181 915247832 +3944290064 2366036830 385869551 437584686 2828872448 +3671644609 4037169112 4215110938 208323649 2965252484 +2799986380 3082494494 2724601563 1311749244 3231851010 +4142144591 849002738 26518122 299631092 766137831 +2933250906 2358659658 2119050184 2953832477 3488231542 +1951847275 122554435 1466629227 3728408993 2207185674 +1998805080 3344258774 3416013689 2442481343 71788421 +1568331105 2277980228 1900004962 3501955663 1378743000 + 223061576 240469200 2734068860 3141850757 1971215373 +3507256797 484451521 2910208224 645921375 1881701019 +1242948664 1415794074 642481995 3341106988 1233064995 +2118719351 2684563659 3942699681 1661876636 49294522 +3815910708 862726175 60187426 3079050903 340365930 +2175487462 1222347486 1663546068 624493697 3167995909 +3416972739 3548936506 2988463021 4205768043 3373602650 +1874001854 2681314917 2566928537 3694039453 3491697154 + 722699593 3386012388 3699708928 3203712520 1884692942 +3172314623 2886343397 4015110850 3481661006 2333523771 + 394579788 3244486965 3851634617 575958442 661475677 +4027014616 1032733116 1742476501 2699106464 2427387422 +3278968563 1401654580 2434892939 3310709615 1030082652 + 71575511 3286064376 4266478707 4067520610 2035259649 +3956312742 3747564205 1269107995 971482350 3615656023 +2165985934 1347872943 769909410 2141768520 2210728437 +4272113076 3397210555 3842658603 3928093005 1181043821 +3650581809 3837331899 4251287777 857437418 3712160358 + 158112186 2017456377 2091290325 530034986 3958485552 +1130768218 1458679438 711757957 2226951129 1400435199 +2205573989 681132584 1606485119 605061683 1634137208 + 771521733 1883230857 819731249 460566561 2247917649 +3180372503 3956499079 2857265355 2822023457 633551835 + 730663949 4133772982 1541007581 655291723 491833565 +4238613467 4238395265 4148332602 2846709712 3666739336 +1599217927 1992539186 542117821 3381540942 1083521146 +2929587423 1286034197 694687584 2114688830 755884057 +1225480683 2303112066 2216851515 2679964190 2012417031 +2202755208 1055662452 1441196894 1960640136 134891511 +1792286378 96095693 2441587205 2571697140 572348094 +3038698416 1515336879 4119890414 1477774860 2621261274 + 775524487 2370850430 3573588215 2432666246 2805137457 +1705084958 1912673196 1733419047 565540065 3658176306 +1186139561 1540614361 1765415508 2901119453 2677938763 + 608410512 3147563433 2744572721 630281268 4281547057 +3163422031 4042483214 879433734 1474743579 3244105636 + 546449004 3901977495 4271494524 490303826 2830346598 +3538065040 1759889319 2632553428 2497137691 3382364696 +3771178811 4182558868 661217915 2094009163 3473927964 +1933445160 60056494 4286653490 2282498290 1816865056 +1744504080 3877997209 2411794398 1427135069 475576541 +2596725670 2851942858 2688636717 2062076802 2652736260 +1840536028 1796158845 1419491939 2392569010 3543309817 +1857463887 1407222956 1350400882 853369886 357026409 +1916226738 369757202 3595771756 2069824978 1798820858 + 265441812 3933300586 631886096 3719724467 440994221 +4033156456 3539051907 3528500224 2905184043 869863780 +1119918947 349851603 2022008554 3657649802 2502263757 +2887847332 3623549117 3139775195 189879460 3594415232 +1476443725 2027146420 3478737667 2022372715 3635771295 +1247288801 2490343781 2917445650 3486234070 3147298103 + 702157996 1733675174 148961960 3637546432 119043037 +2641607842 1851728830 1493188937 1850960804 776561474 + 486908782 676982621 1360437101 3921558300 524059269 +3616251342 1313444427 2575500259 3008388353 2184228934 +3132104180 2791516052 3933368817 3092737999 1033355673 + 652434873 1795221881 165990977 1591663583 3778618815 + 979411763 1757157297 2978295606 3104401780 4003790533 +3600737390 1902620436 1808442196 148638181 3518506772 + 222273385 3840762809 871803367 2443412330 3369059660 +2184132100 3734420911 654812739 3204847244 3529461580 + 312855498 4052839218 2606765561 404908990 3058325420 + 800669907 2181256043 2913644147 3191177949 469487888 +1163628636 3229479050 4249743748 3343878471 1832882027 +3896395064 290407245 3030125745 4259975835 2395810376 + 586762202 3485368721 2271812809 1646089564 1400554960 +1607918564 3906227975 2551611230 2620472891 3390950610 + 569235675 469225893 2475911543 2493840062 2916795345 + 653901202 4226148040 252276449 2506184468 2456244826 +3350464974 1047531605 1574699344 3231005863 236573044 +1976806281 3474400269 273166164 2376991635 1468294738 +4220744536 3544242931 113085795 3735139209 3015931663 +1183259596 1513537201 3635055725 2815567198 3769886419 +1859125153 1567197264 4039237572 1214682641 3467042661 + 313911929 1071494973 3239591657 1731606646 2380790737 +3117457529 2032056436 82741758 3087189901 1815548596 +2099257988 3135424492 2141920934 2706228204 3227386575 +2408246373 2510580362 2876752042 3275017751 2461160041 +1089028823 132296717 3721613910 4061462406 3116575260 +3637105965 4102598244 4270491831 2219471231 28269712 + 229752821 4012012616 2087217767 1825557711 2913412551 +3827272668 996553880 3048694357 656145720 1400890929 + 855309158 3361316084 2281796537 3621003468 3376712896 + 373269204 2150554304 2644032731 2608297774 3247061906 +2378486044 2197636344 1110248316 510488438 4222508121 +1932487903 1939451788 2726692525 507249057 1189478681 +1968056288 1912686872 1523204488 4135978045 4276393978 + 892470374 2116871245 2873988508 267782302 2600333103 +1118661926 522071866 986506443 3504149281 2288468281 + 85506479 1944847983 3601012475 3242243666 1704027784 +2910918199 2639618413 2842511672 3090899876 3344265804 +3491372023 1284553783 823292036 1042834900 1217014154 +3041156196 3923654801 449145181 4185621008 776101533 +4244012815 4183393238 1630551432 3541095693 518007229 +3786790801 2087362168 4043303764 2541597901 877636548 +1543232672 3223248673 2946294413 2951302921 1762981213 + 646559268 4024991007 875051543 3790758686 662911583 +2393433589 3746877236 2276633172 1958215371 1621859081 +1090430683 4286867349 307201797 137436826 231157450 +1180153035 1217334245 1008255547 894051524 36561812 +1431589635 4046684945 2296659457 188808300 3741772165 +1387380472 3845864591 347066786 1408362619 739470604 +1136979532 130583991 3797954283 1150742889 439975670 +2022875617 2701471236 2597216437 2438216351 3209302349 +3779981080 621383002 3593639869 1112530494 1820064407 +2950023860 1547469744 287878313 3274997972 2298389862 +2236035319 3396268332 206954102 3599143175 451092095 +2173514121 254771403 3560241300 4283726585 664976717 +1385804231 852193920 2060007671 493637957 1056257230 +4007629170 1507468191 2027451508 3051295786 2507318 +4171954654 2938491210 1356393891 3558249995 3711769979 +3434953144 1601628304 2187495640 1762169715 2141213778 + +init_by_array__________ +2175197313 3416852690 2735085457 1320269992 2016635691 + 810525983 4006675942 1301941202 4042575088 1187019939 +2736388103 3781722487 4243529074 246767902 1304070346 + 976271690 2556889879 3073406364 1698928375 2296993776 +1444184832 2595126707 2156126708 1688098107 2179521664 +2803293687 2385281238 4227802979 3134797180 1147971141 + 884537117 2319774828 2957815251 3878881667 3638220066 + 187628187 580180104 3626674378 2659137357 3178256863 +2208485580 2118491266 700978461 3933624247 1702805675 +3421323227 3994113341 3233452765 902746261 3659636479 +3040090851 399690766 3615970251 3284661145 3359446250 +3392410964 678870364 125302232 2971839201 3280031982 +1692954894 1359525016 1205709969 2267560271 2795714772 +3332428943 523833143 814904241 2717831408 750976024 + 987287690 2330824167 4201373885 4108491402 3391537672 +1215583381 4207951069 184863212 519418259 418551471 +2065950398 4203837364 3382375333 901435475 3498831803 +3791603773 920521390 595471020 1684346142 1325404090 + 899206118 2667187708 2524634641 4223857302 420191959 +3600153965 3418779320 2005628553 519485311 1802332047 +1775431541 2974754701 1302953822 718291602 2792216152 + 272273433 2000679835 1115490757 4189014810 4221662093 +3279382464 2167310573 3572981844 986564611 1016187445 +3923385874 1690925277 747521598 896966884 2953660581 +2223572744 2915157846 1695795322 2732766708 2454770935 +1365459672 3542922404 845615953 2952906265 2551210050 +2378603943 714719251 681529710 1450504234 2697092333 +4229290409 4178094760 3804824237 329105432 1148771138 +1816355435 2601460377 2926855389 559774675 204601994 + 619613294 1366647394 631389794 1632373745 1702819439 +1351351499 3926253776 2212069724 2257522855 3182894196 +2144664872 2978782920 4174177214 2264637001 2033550555 +2721089530 3852902799 2358982732 4282409512 645949970 +4158048561 2365295236 2538335946 1422410582 1515666957 +1328540612 3416608278 1907992560 3215610555 3605052737 +2369473152 3046303461 3541223054 4070694226 2911823714 +3015417186 86976646 1894631564 3730827512 2042286503 +2442702782 4065863279 2575067876 2518755498 1231162998 +1708707552 755484493 1196472843 238532071 2794049399 +4068323913 788142385 3439317810 4254806892 2730299359 + 456712940 3105911153 635599068 1919504978 1602271422 +3073159126 1937899444 3250494505 3433658738 2905249014 + 828004134 1274724379 11204149 3065771975 463281632 +1311245967 3607137686 927226106 2125254305 4032264774 +2717798701 1180979891 4140632357 1391872498 489622893 +2237053816 3409142052 1348562203 1181199099 1021856681 +1913287390 4149402416 2044125802 1065033545 3898981831 + 601484044 3713889560 1898297229 1566140406 112283335 + 144370687 2559705952 256226270 749397708 3927764607 +1441819412 260830114 2010196388 2065871892 2078573014 +3372978833 1939689043 3048082384 2868393234 3841503922 +1161036831 3303568233 1635879973 3952891055 1842874301 +2539835055 1982813921 4132924078 449904843 3000078014 +3548435079 3331798910 2230308451 4163397456 1621961694 +2607164414 2196949496 2866571435 1549332011 2614412233 + 446988690 1420449928 285578824 1775783972 2965689197 +3924454932 2082465460 124817675 438267808 528385620 +2636262341 1080131492 1558519152 1116581600 2929512475 +2736868748 3915621037 764731211 1586427655 4090831503 +2859278247 3568367657 1461667032 3073042373 1636409165 + 788064321 4080437576 918221278 114909641 3304636569 +2297221668 17015928 1021721761 3066504010 197231261 +3679321520 50703873 2361931142 862683610 953124365 +3790316208 473924483 3119112329 3641147116 4293169628 +1537054880 3964372923 4010396075 3654613378 3917125842 +2262022437 659622162 2050227208 3312299650 2678098735 + 213107655 3777826433 921076906 2086158981 248548184 +1641066954 2114150584 2838573398 1755756364 338185631 +1525923083 2995417952 2468265825 490566396 3969536020 +2631745927 366431955 925816415 2177840594 2117418995 +3666734578 1192843802 602615620 2264921997 1281680980 +3807690723 4108778961 1507019153 2194700039 1648735668 +1662123733 2545156448 1365100506 1454975775 2939480794 +3868914122 3403436081 2933163888 1226203229 3097935437 + 412741039 2266117260 3946237294 1968556064 4053706233 +4188522920 938480963 1544826626 187079461 3575534833 +3153119555 3003083646 623217156 2682800552 1391523050 +1320972777 3679801797 3731157853 1927511125 2226279215 +4279974680 3294471840 2438551136 965362540 1354235226 +2826329648 1945569688 744342424 517834045 4171419655 +1586512882 3919656292 2856570140 1299221590 1362052002 +4198374247 1942398157 1628264064 3340090278 2696001177 +3371008304 2355576789 4213879562 1577788029 2891482437 + 152253326 3059746846 308725122 883477698 1606888552 + 475456301 3495085382 1708884771 1151106563 2151585755 + 568104092 1171123750 1320333513 2915951392 3101194384 + 833485376 2832675893 2749470956 1850954040 3061763321 +2164320062 1437402049 745474594 476522513 1910684623 +1233503194 1720653281 2563149383 1369917579 2885433700 +4017259377 3527631012 1495165834 1488814059 3042374123 + 253776860 209442710 294595258 2290681583 1453774141 +4225773404 2484925463 4021847441 561499559 1613866912 +2398351554 587600213 592498160 285795251 2163635292 + 140357620 198819979 1495667887 4171446004 2803832664 + 52871663 1271649032 260785107 638082092 3420258153 +4059999016 1173714699 1003989385 3804549249 1700003691 +3325490599 4220913045 3497459584 3754110578 1073652440 +1012934728 1908630564 1548408009 1144290124 3230097511 + 493155866 2098201937 2011702478 1052311189 348816736 +2307344475 4255316055 3972139683 758529954 2479320791 +3436940926 1620978392 1668816453 2442705447 1021687635 +3498850853 780712235 3205066929 2581613651 2197066671 +2866767384 400835161 3733231902 2654797756 1350390285 +2960276823 3019375647 3888260190 1764552268 3153913479 +1984530194 1512481464 379627922 3520063658 2475600509 +3984183971 4275487577 3646980350 1279585319 2000548989 +2218157333 707399500 2204164482 4205919981 1441582841 +3182181210 3877058632 794852786 428188274 1629674176 +1499341650 859137871 1301416764 4168290397 2173539596 + 793979628 2405965440 4137305943 637929855 669254412 + 801661779 3634743833 3628206635 365398844 1808502337 +2723237444 1072681779 2033628304 4245264435 3865184947 +1090467638 3872064476 627298422 396726946 481924798 +3651780346 1585710222 1748228465 348556929 871711709 +1477462651 1604552285 673172061 4182455192 2841924606 +3750792751 2724776922 1934316109 3740695097 1632193719 +3915585028 3809234032 972078571 430124387 3118515724 +3305723824 3966767131 2839025077 4018983439 1801038881 +3186187083 1586513064 3124051036 3206908706 1700234174 +2009338397 368951161 3496940778 1309267904 1454879460 +1534730588 2540462591 3495121659 1286436580 2121123522 +3803296217 3424613127 3263080971 2305527327 2153789609 + 307760308 1162791703 526925408 2708783455 591869996 +2259056771 2968651294 3079688598 1275609000 3768382937 +3998068236 3714609865 811228301 22966662 2046913183 +3589828856 450332931 794632673 2020057902 3299760487 +3470251729 188445207 1705528856 817468666 1027149306 + 544116305 3663174674 1578709146 1762940491 2447389952 +1229001993 203108885 2877754547 3030918381 3848995443 +1633825983 1519190803 4267991805 2607622564 3340941626 +1854830846 1050246808 607338338 3331524841 833234909 +2428311142 2188549171 3852799987 1063052652 2716278187 + 260504929 1991191301 2203905243 3211900247 1076062295 + 911074432 2768884400 3245312982 677284819 2531089803 +2451416863 1248110914 1424518050 3981487522 2159851928 +3077857143 3217033469 1788924090 113479711 4048163260 + 978959509 801049735 2284260051 2448611748 1331883434 +3530821282 2056990087 3267156943 1289431743 3041408991 +3371378966 897374472 3752213871 167182617 2216574346 +3886361619 1262723901 2889845049 661329052 1992684057 +3297093677 602295724 2433775366 399145111 3851953479 +2345657061 3117292882 1408599700 2446398117 1416064500 +3822296248 499265514 1707784044 2282903559 1741480693 +2790411558 720223207 1894367642 2575177054 4280417343 +1500041234 945158823 1581005662 2441117924 1027956854 +4259581671 4077432599 689285855 2493021881 2131028256 + 456332468 389749108 2366746419 2171146063 1062337531 +3755141464 32116264 1833502968 2147328776 2995179629 +1582154861 60770962 3829819981 1435614783 2636025435 +1131130948 2662124059 2476403763 2221250819 2034433547 +2145091724 3943455844 3148913966 3775270579 2721124289 +1266153044 996285842 1377759111 28822593 608877661 +2349716629 3572118512 4030405590 3040902659 4161211660 +1998327724 3244322393 1035715623 1910619407 2476072332 +4243268837 1263015503 396760440 3254107919 1205143202 +2108779348 4114612012 3673092820 3304246765 882827530 +3069979836 2001186664 2493984943 2496763897 2482648785 +1703577363 1201091511 1444732859 361152817 1472553314 +3881615325 3962413370 25022874 3651576874 371022715 +2070053952 2368435695 3740025884 1129856622 3501990541 +3117390023 1192726459 1307545885 1643032670 2092168071 +1896762363 364612316 3661401513 326494149 835912096 +3072879933 1288425070 2386859294 2748042775 1182172695 +3555382231 3811296812 1475947344 2813400362 3534982989 +3902519615 1509970742 1761305367 3337739647 626726617 + 180983034 3242908874 291356705 3436703419 1573230175 +1316827742 3201634875 534578844 1524586559 282553387 +4214854791 1739428771 3737883509 4124531253 2809843337 + 641530665 3966599242 2378521235 3847808362 609156757 + 13915429 282900100 2878769474 1827756868 1988253358 +2025607405 509055324 3094349309 489684985 3489973653 +1970056080 1190267878 2444440525 3213087554 3978291266 +2525337971 3105143204 563053816 3378964804 519789089 +3178344863 3224239129 334890639 789361440 4155831518 +2369475996 1256759340 2959262064 3613020045 754053548 +1648290221 3943556578 1051201026 1243647573 4088893620 +2448193223 3443657995 909908501 2603993110 2485011443 +3739739227 1107006222 1096007957 3858382409 3443387000 +1126627190 3858982888 3288399110 3087251655 1361918679 +4270072291 2241977389 2055272974 2336149023 427604815 +2416945588 477730490 1849166819 2482618186 1197010095 +2175113125 1974984801 402106393 2845848922 413118646 +1044459142 2782431535 1611038346 3784911649 2304516243 +3275169024 2985645336 3776650801 668172808 2645512274 +3387318012 257208369 3271560144 4153868782 2662593401 +2776930762 667310664 2282021200 2559188473 1246615918 +1417978504 4094431725 992705932 1790002730 2271317089 +2183574056 2975890001 4136750819 2317346481 3062774483 +3449787835 847276118 2310548514 2543431891 3159223530 +2938181125 2258677207 1560997372 1640034798 4209071202 +2206879854 1422756023 498967929 1570994471 2713274094 +2641382769 1189132077 2955208070 812147130 3561410021 +2339313903 99232733 3652328368 163270809 3787710791 +1478717943 1458910024 1281535813 2473293563 3910849288 +1880913121 2264643059 157005894 2723897975 1269072463 +1127039487 2279447155 1599885486 2684810945 1871485781 +1981006755 1327140886 1625152520 3132595501 3793357925 +1390503937 2333800871 602768086 4203128997 338005653 +2636137017 4034474558 592484300 1157795121 314769650 + 981204844 1288025446 1687965736 2016140313 1172298096 diff --git a/SFMT/SFMT.2281.out.txt b/SFMT/SFMT.2281.out.txt new file mode 100644 index 0000000..9e2c7be --- /dev/null +++ b/SFMT/SFMT.2281.out.txt @@ -0,0 +1,405 @@ +SFMT-2281:12-19-1-5-1:bff7ffbf-fdfffffe-f7ffef7f-f2f7cbbf +32 bit generated randoms +init_gen_rand__________ + 816899028 2529810904 2984700728 4161010272 3805350266 +1279614432 425690784 1116614207 1104668239 1157865543 +2631428793 1738783324 3817657585 4038396021 3929248340 +2632374408 3059467376 1178391445 1548683528 2345690040 +2324785226 3565094863 2477561011 3810275196 2224650186 +3954132583 2271684514 3280953479 3453754330 1876516579 +3970777246 2889125929 2780400968 2196210122 1644459300 +3635678387 1265164770 996222486 1178405414 38273051 +2218496689 1581218069 4015321227 2976543678 3811184429 + 910419949 1761885375 4087026321 819584600 2800120749 +1834215650 1563887150 2843528502 2093436960 3284397394 + 643838879 1551579238 546347503 1386094991 1043222565 + 760929282 115889273 2329844900 3643949804 446121434 +1731770848 1699066330 692055352 1746525710 2579260501 +1195712685 453310846 2445241891 2733116109 1768560984 + 851520781 317426829 4077861862 4097862822 2766148675 +1026281378 3224734658 780097769 1724015980 4114094301 +3177787407 1498112685 1396388449 3919455633 309245542 +1764381464 3365720744 1002755298 2973254231 3298510080 +1794141014 3633502430 1263800067 1667428176 369193722 +2157664554 3417767090 1779123921 255412492 3613198765 +3569136446 2884229390 653835656 3686815805 395824929 +3186060366 2761354119 1204981652 369730960 1379323924 +2235823993 2508768466 314204115 1812049613 3518141961 +1494532689 2856417088 848968686 3662438435 279488891 +3369631026 3580032182 1206637762 712024745 3013005916 +1331854044 3062102203 1443394602 3391638353 1167618356 + 785106606 1922988868 3641344516 277524423 590765342 +4262829660 27773832 3514308659 4121349199 3666048330 +3559507556 3715041802 2472891704 3679211800 4166236631 +2902898024 4025924573 4222446530 877581995 3233930613 +2053662610 1180420653 229125657 637536940 1409347510 +2394745440 2112670281 2220740521 697667598 2997272986 +1999799070 2453374458 404373343 163619230 2859970083 + 640846468 3979417504 257079139 4092060031 1872202164 +2300567239 361762578 3875507443 2846944059 709052168 + 506849691 1398687851 3305944453 135557337 786787464 +1727900681 3292895892 1074939372 394728759 1279739414 +1683727173 1284262575 3976622897 1253275589 1601967242 +3245726185 938262741 3999151982 3219043728 1669026027 +2570292706 290046311 1837784354 2997894165 1604984294 +2033170034 3647929959 92704829 1698375661 1128145623 +2052247063 2519822621 2785562856 3620689648 3877865686 +3655550747 246626292 1568212770 3948196404 3430798875 +3651938126 1096765664 604642100 2875150256 1249478362 +3377416797 3225140890 1876298020 3379370917 3269858749 +1681247177 490735198 2970954457 2786999707 2697517850 +2385232651 4199969798 1679098127 674448896 413608691 +4069896971 3488373551 675439588 2303940341 3431129901 +3440407031 355880536 555971775 2975220887 1984883183 +2561826762 3456343294 4276852965 515113896 2346559686 +4216818266 3868203994 1230445090 1014102773 3727532 +3782113807 489638922 3013259665 3315120982 511672242 +1755482090 43969573 1851687649 708406454 441251227 +1448680893 266807370 546480825 3498734391 4026033057 +1120042845 2091032077 1926113476 3834654021 2065941214 +2657147089 2594621201 515419744 2985520413 2880399846 +1703547422 1825770272 1343471268 3822672017 3578894293 +4226603430 1179188874 2935557378 2148556167 1174352915 + 6808872 2399670423 3362526488 3600354199 2463065760 +2760200984 2653276527 573013077 1788294601 545520975 +1615264775 714644932 196447461 749440090 3315497900 +1058138433 3662661467 96530802 1042136735 3269229051 +3806615013 1823124873 1818008236 3048271452 2913374020 + 271537122 314211144 3145433497 3083586822 590085584 + 678091142 521794900 3323265008 3508531491 1248703839 +3770986579 3350859642 2169111248 3365920750 1515501107 + 619164448 678942152 1743777205 1360850610 2869746499 +1358022040 163255738 1596158819 848725397 727258867 +1172011040 3389592211 2886231105 3538238822 531366241 +1971487854 2028669184 857976654 2759811165 3282756330 + 134723676 459684557 2267766346 2855210224 2165504088 +2962838672 2634891834 788411108 3425579347 3152602900 +1901537755 2008548228 3977207737 2220545652 236116757 + 114043513 2697833317 1331333716 3888681448 3964179947 +2761997244 3855349155 3587642110 2118570649 1664724454 +3265510726 600524259 59607158 4196187997 3563094563 +2441518232 3122406656 4267427840 822788108 2746172619 +1944125348 1236508147 2750023635 2390237980 1029072381 +2472991086 4279104258 4224627823 3709142444 435666415 +1299933065 2105551419 1692111720 2421152364 2666185353 +2877138421 2053373117 318612861 1979998910 3411799123 +3249432174 2388467144 1088086362 1753262185 835024107 +1208247744 788443567 3075719935 2909310111 2322692637 +3557879327 1256428985 1428653864 1132823743 2637808835 +3901517820 1317252313 709877622 3865555255 4270070506 +1601033365 1754197085 1599659585 2595040135 69678822 +2159011084 1239892911 4009521976 609927430 3357043468 +1172049703 1714027948 3417911333 903211542 1375845927 +3296762232 729286900 1450645278 2007123082 3911689880 +1804336922 3791901897 976209777 763233902 1778772089 +1123669611 368035285 978733750 750487385 372015174 +2032130518 620827236 3282016487 4196160590 862903087 +1030759961 3967478517 1467945155 1299178346 3870547528 +3491821192 1780205278 936022646 4288568420 3417886343 +3944924094 2919520849 3161789319 2955366051 4040493426 +3296618498 2325910317 2776530001 2559227848 1581597070 +3553934504 1653953674 4026643034 4033353310 1370496626 +2926750211 1810900353 3694381893 3573573155 2119908610 +3903451246 2375236422 1398198685 2731327983 3839515392 +2102040430 4047526134 1446916131 1007456505 660143994 + 456191633 2810249183 2829218541 2717617204 1097379533 +2049004540 1168597546 1859596394 3861570037 96276716 +4086357891 464518321 3008924340 4254602251 3749242324 +3244589088 2002625154 3326033644 3449966565 2735820086 +1230058008 1321330753 3292038499 275362798 275916405 + 902751779 289171378 3826434746 1459184217 226538549 +3644401945 1040393247 2042567170 2233481513 1646423540 +1531307021 3048319795 662650618 475521545 3641557843 + 278489693 1980923958 3685637415 2257437852 1634839570 +2642976099 3470388235 3282840158 2117252785 381835370 +1916736013 1548932191 3510021704 1063277541 1674901724 +2327182676 4166887140 1255107139 1599510546 1339487153 + 37420553 2860168947 2169029112 1634379425 3065240292 +3362743767 868962195 263078329 2486245653 3136302351 +1324608078 2417725134 892426712 3698937314 1510120597 +1005224151 3961251591 2065915279 70596668 1671097934 + 319080692 3277843989 2684870298 3278770348 596636344 + 739047890 1397442078 3622072315 2946087517 2870077019 +1596712897 1966237483 470363521 2785682585 3230738041 + 433415607 1415200785 413671098 471662276 1539972827 + 862973352 43745579 382806195 3656530248 287925306 +1849907006 97226555 2057917334 266700817 1406351488 + 820604982 1947222357 4061582130 2661579331 4139252448 + 322593526 161616496 4100877342 3254880213 1250217778 +2622800801 1412552219 1939041111 97771915 3842128746 + 973804625 3990924385 2493365265 1706974605 1930105428 +1788039434 276683724 2234964285 566806433 1102287487 +1536694295 2641638976 2491718177 1772340381 1557550709 +3068144209 3814164796 2610962264 2050162415 1939821410 +1944167805 2695045527 2003312269 1433539020 715509192 +1061791099 1807908624 3857862952 1713001137 2398449136 +2567584300 3913387682 3478767617 1974966532 3360986628 +4131239017 238912503 3190282531 1460335778 2989681704 +2957199364 2551179516 62460310 2570098214 3490157638 +1203311625 914395035 3920357265 3335505726 1742462322 +1917246433 1198783741 503622830 635733614 2567181448 + 908476152 2435299592 3895137584 992081470 3102965528 +2633093378 3894015089 1652672327 1591202621 654401518 +1613115955 3965523016 1460540708 3985313908 1941826903 +1218768752 2768951680 2276338386 1705124290 1440728730 +1670332906 2039801924 4152813223 3724448647 1873534722 +1830937926 3309111254 3023888224 1358324386 2578489692 +4133491788 1883886556 88305226 1768660496 2602269485 +1945814418 3262429138 691085484 3632864730 2077490533 +2363410457 2740719445 2592261156 2453695457 4206196730 +3741676854 1490294718 3550753101 1139715083 418093773 +2103826225 3919131860 2645351362 1606743166 580726424 +4077894669 2477207969 1655237468 3817519618 2612971662 +1579202880 342204206 744212569 1348109452 3501795286 +4144017734 4277741359 1425311542 565480072 3480505439 +4210045701 1952835462 43452966 4216782297 1493947967 +2851599647 1097905527 2228846805 1090239722 1784322048 +4280500441 471375895 2735295314 37051833 2321761463 +2349109722 2497874692 3664449996 2568074166 4075873757 +2650219319 2984037886 2868473007 3244493524 1788551885 +4192489642 2088858684 709686434 3960433705 2806373381 +3554000080 1172722176 4115728976 3860414220 120110920 +3141470177 3525055282 2716448995 1208199737 1933332018 +3361117921 553900500 3859903553 3153060592 2944103821 + 548177270 3671410086 713586644 574043873 449010961 +1903213836 3241729865 2910180989 993485553 156459400 +2189238404 249235939 3759258600 1906222357 3061540655 + 605359407 1997159531 3531126762 2828611105 480758515 +4251322297 4237288577 2899370982 1343346297 1992941345 +2486358087 1458882926 3104184503 1772166441 4040304222 +2575184450 2539025057 4058880215 1844144898 2081179737 + 780179577 2937304194 3339697853 3797549795 1765656341 +2453231746 1093786976 3820326505 1309279495 3475439173 +2239854070 1641669977 1074111409 4229776415 2445632577 +2381696443 3971999116 3368473853 2214484098 3200937513 +3488727861 51030215 2022175307 1569834332 3177964915 +1051093116 2423550978 2624908447 3877182066 1143184335 +3083377280 1607090636 1335712863 4176321550 3101248186 + 738175440 873588785 3959241421 2457403454 3075458850 +1453556155 3007878954 3566901912 4096404192 3610783821 +2348694477 2913251105 285631840 1460601547 3062114428 +1919191503 2936784144 631755322 494712270 2175057382 +3503836056 681508091 4250949169 2314193825 453239697 +2795143942 4023675650 1744370572 1088360840 2779986192 + 885199046 1807303464 1790325254 196315193 318597666 + 315274352 4038913294 3989117482 3224884369 1825152543 +3963230526 2240048110 2132329030 2315997864 3015547289 + 467010649 3821768224 2878813435 2596309465 1742689955 +1062265029 1808591155 1833247679 3866900109 4068473589 +3972564838 3381863987 2322112988 3986871350 2075664387 +1998863215 3673088649 1502467362 3599954507 3897040992 +3940877136 3467980809 2250373232 442582284 3360517568 +3648406506 3348749078 2819110150 1227224748 2024523259 +1041332325 2479402472 1119467221 3310171390 2391400394 + 463751984 1505368385 2955430825 515399378 2563370043 +2425369464 2816833505 3561445428 2203004970 465263254 + 168098309 3684101223 4052226269 1610669110 2138714201 + 737469404 231439360 3757258226 3719836631 1573415501 +1302418576 3144671290 3006711121 2228080897 2329206088 +3153167084 2370023948 3235827454 2560232745 1065410209 +1661425899 2659284686 1476106894 4102667796 1583341668 + 439718779 2084624920 1062068117 3874846970 683338096 +2662391944 1176696104 3587947451 4098993357 3140998698 + 870759742 623529127 3458807285 3341615957 195614711 + +init_by_array__________ +3144719680 30029983 1639299213 3166735680 1400938729 +4210741058 246002107 3003685920 2351192325 3906801022 +1193460972 3763579543 4162818920 904580094 1849642234 +1901989593 4165125265 46885111 2823390370 2815738166 + 561799266 2770955911 1923881802 3845637221 1798467732 + 344547253 3601501396 3773224527 917423687 3357971917 +3199286984 3690279719 3287812755 952365470 2564671164 +1495959583 2999115668 3035781453 3438806605 2996867561 +1256680977 1243044451 2880983964 2141339503 1929970209 + 608137051 3947555859 2165686426 396001878 1107844991 + 321962518 857112683 370556188 870856339 2149697617 +3027002906 3549173102 4237590679 1867670778 2163081121 +3871897180 4084266701 2571151456 2055418072 2587651247 + 966273727 1267989787 2634498797 759225841 3314091800 + 808228151 2670006269 2605397310 3894115828 2422677601 + 61360736 1649260700 3654239650 1562454166 3903379985 +2660399003 2093796491 1119669251 1668668967 4261475682 + 674987509 620532388 3696522987 2665030851 616272535 +1374885124 3301869655 2409104440 3103496931 2620574036 +2422668638 3956171801 1269467810 1700037334 3960542466 +1480422599 3956660557 1162530189 2214801652 1003865163 +3874988979 688113766 4143778851 418214219 3617135304 +2192368929 1901066402 2417779699 3972928030 457524278 + 442363338 2852064881 2947576292 645256600 4202108451 +3881220885 4089887278 1174615302 2532589117 1055602100 +2539633470 685091547 691536395 3708322807 2988469474 +1474335600 2137744081 268413667 1002286150 1297447440 +3985677254 387262515 3059140057 3647155344 1155010538 +1867328360 1996497175 3209124260 3343182567 1427876750 +1861675642 3532532621 4230574926 1696411674 3851885113 +3331871808 3666104246 4034966319 3912741529 270353743 +1762958080 1587509061 3333878387 1186596232 1385994526 +1687539313 1189774485 2289894657 3237546914 339266132 +4005023382 2639203748 2850765900 3771610571 2510386591 +4176103620 491103734 1579508365 859216651 51301705 +2868784560 1646085351 147852393 3069947618 1680665143 +3675186323 1624069081 3949922839 1831953541 3265340292 +1579911334 1028415836 1643889446 2477504391 1222960746 +3628157520 2491108803 2886827672 1591719149 910966226 + 206696855 1232863511 1046336830 3492763244 2638328643 + 865046446 3919892969 2526175880 2352783718 3049013958 +1684135170 1222913325 1959237404 4213939616 2157700187 +3025882446 649859979 3376849558 2027581591 2296648620 + 522256609 77301159 1389557357 1271110848 3524659715 +3231681712 1819219844 1606785669 237949418 2032368535 +2814041873 3733932590 4067183633 2620739551 209969362 +1171745213 2888147249 2567684263 2153608204 2901164391 + 817694202 4245986831 1171458278 3967311422 1834638711 +3527289126 351412409 463498358 2985848347 3532523318 +1061370849 459395184 605521249 4244276818 1962754515 +3543828183 1642883023 38359978 3546142271 3521697770 +1651048418 703464199 388839557 80307599 1707917651 + 415685988 2195147113 1354838206 3886949455 3589798290 +1167320445 2891457930 2134534480 2522980595 4145554912 +2627925345 2528499356 3249144421 3919003953 4190991986 + 101039783 4199723003 1767450914 2236277891 1156414781 +2682841018 541016357 1825670548 1902632843 2416464018 + 754779197 2136276021 3221769526 951481804 901790466 +3891874875 2938940829 3360700903 3959205742 3374140478 +1281538380 2438793969 1483519067 2854024950 1423931607 +2548585945 303695785 1844285145 1297594724 1667595664 + 389606953 3802773053 1146038930 2820488158 1072045116 +1113139860 1641692939 440523253 999006301 2058451381 +2986048262 2848697730 4025538901 3121812228 3919593423 + 871660956 4142693421 1924532205 1910806753 4142166185 +1805437400 3397534300 3474207879 1820711894 2577045152 + 959123886 258359259 3709711498 3171585112 2572797226 +3046882963 652271814 468934460 96538515 2973996123 +2892632939 958351664 3565569355 2202783744 3443598377 +2717573199 1181967787 2173524557 3199081837 2020471519 +3832996797 2030799564 3503174144 652954350 3962776284 +1076549635 3506864427 1041825853 3043389907 142653815 +1752985848 686442632 2481933400 1224413696 656115965 +2179277550 3347068558 3200335804 95784608 2123354752 + 3826895 1980440317 3782207482 325002378 503279840 +4017640480 3209374094 3318682318 914241560 2819813870 +1966587440 2926163888 4261765845 876498326 1743029339 + 338255889 935975124 618637085 4059808827 3456158813 +4284617661 1907738501 4145260845 2912421610 1148182757 +2881547907 17718610 2102520006 3405289251 2906309675 +3972745075 2764035676 701837719 1223337859 1049726310 + 594069713 1612594198 305255906 4075538851 958502860 +2800289791 1571417281 1574451143 2321880886 2292191315 +2885970749 4179590121 419384867 1946896394 1429519827 +4188461808 921159472 3910810348 2631172194 3991107392 +4212958658 3661845694 1810935406 1552580826 3827604589 + 386816439 4215574765 3617994114 2667106555 3673562907 + 906995995 4281941699 1353236717 1446819412 935183602 +3123999498 3983298597 2424575982 1477602810 4242674259 +2561947795 2833345810 4163717626 1143441479 628118799 +3700731631 4147940486 2443786276 2015336223 1980707931 +1818883750 1269942655 1852032933 3703715862 1309659054 +1504157621 2820261949 4177937525 3118195115 3112736380 +1735650650 2726291279 1694032167 2249046111 923047627 +2796140914 2629729807 3186393319 3816651765 372407459 +1356864623 1730654047 3892306369 2536303278 3261317705 +2486306856 3022927993 1936641018 3828188998 118352853 +2266829002 960449808 2455502458 3298616402 2590956680 +1420018659 2426044457 3017493145 610258543 2469700828 +1231780549 3615477667 1916854829 2517813987 1331780247 +3348151466 147542513 2405809570 1765153938 3182778444 + 259201548 1442082832 3747126177 4119855713 2386038469 +2035051985 1468713739 2547395440 3821564001 3656057708 + 310120432 2232617797 2133355795 1561106113 2834330127 +1587799889 1355584811 173747358 1504279745 396921482 + 266992237 384650968 3783139334 2157166362 1088894635 +2879379028 1130039443 1817903660 3640122600 1212071933 + 620197482 2403911896 2726302551 3071573989 798580146 + 557392967 1426844153 2560135628 3476227407 640561173 + 887778035 415957595 2557387138 968133999 2209113245 +3862017710 2944235995 979407776 3855454771 798037118 + 100165520 163402313 2714880079 2082834782 4121784969 +4252537031 3443235140 671552018 2653133751 2694948841 +4021825370 3132660095 4247624206 3526649267 1528342325 +4174276241 4262899606 567350054 2176875325 3621464582 + 588539913 2782667956 838099590 1714431578 3344101223 +2102810848 2710144265 231164735 2768215950 129713106 +1571305822 221673401 2452989275 2230326562 2808690281 +1737118910 1881131613 214085183 2526335860 2823612301 +2690582866 2790815750 3340434836 2618480083 3584998106 +2721482385 3345525484 3410513857 3423684362 2492843219 +2927649361 3531307689 3944970788 227540032 4046548408 +2088857909 1740207976 2947446314 2679625992 2924438726 +1159570367 19251160 663031330 2563227426 3948040935 +2120519577 2625608081 2514080103 1205665288 19636779 +3268108625 3565154138 257175509 812503520 410647501 + 763020667 610348186 1535968199 2004983220 3539825721 +3679630091 3615182985 3318919881 1018623859 1256930437 +3594745358 3988536074 2183407559 236513610 2325113418 +4006439010 3009107067 2135968082 562007763 1165820690 +3119494966 3746632150 1050624005 1269927618 551872993 +3582740718 2888140354 3027769014 2758265458 3807194847 +2188931814 2659875829 1368107467 464474838 3913461513 +2855681718 1900424431 1769240030 2008986982 3871311883 + 980699038 3607973150 2288691464 1808488 1682547987 +3074273594 1133663078 1931018299 2661580815 1140462012 +1957362395 3609661081 3268354866 1368288147 3897560558 +1461820281 1185500055 78687382 3588020250 1321581273 +2475193153 3751983290 2691085119 2806830388 1100332428 +1548094489 1860632827 3779340584 4265701571 1004376368 +1825621448 2784866856 3423801310 3464900662 3540350033 +2684638642 1737581863 183379540 562923875 1693223542 +2541805029 2476523181 1784191994 635508831 433074773 +3781577835 2953746522 17006794 3577479716 1311803263 +3225173327 1845612899 731077191 3046074794 2188496307 +1342808812 1870707926 380540872 2171327453 2573239143 +2349506741 2975940384 2305067296 3636388743 324658310 +1300229029 2252212549 881254430 857229559 1117505715 + 19579757 3742835097 2855362701 2649009396 3777789611 +3775887498 2615878665 3989461915 3112931720 588669263 +3988437882 1696270640 3706868539 4152073359 1237827524 +2517318579 1786727542 3961783276 565553503 1803741892 +3780755523 1363947408 3822204919 699974423 682009960 +3423435931 2866810758 41850517 893895054 3018602157 +3493668917 1353407377 780793825 1794319410 208925743 +2518462565 3266048009 3049904051 3289535185 1728090357 + 489789879 536162157 3855935039 2319977628 1270547464 +1856958366 180417565 3823691258 4069443304 1158468785 +3496276671 1375629330 1420359495 3534323192 3518641308 +3088081400 4177706954 142203802 1500479829 3071828052 +3937008042 3159294759 1928539406 3497398090 3131385618 + 714257583 1908058862 1210128114 2769829276 416794343 + 906251214 1812221600 1864859005 286018696 835940589 + 243776200 3283782188 1085959747 1360849031 4051519297 +3973393227 2856184934 3653467683 1151630693 812621116 +1836437797 1034350259 1953133959 2682963557 1676756942 +2278617242 1196786223 2879466866 2428007574 867714070 +2182593716 679287813 4280972432 1146540733 2574999339 + 34618034 3989827742 3460711046 11081671 3852518119 +2777273098 1178437350 908635549 3789723034 1674052873 + 659808851 165384074 2389366854 623395229 3134350242 +3155177669 1044113334 2605677172 1553889457 2369539546 +3711282320 1034165926 3062249868 3240212555 3975219765 + 974239058 2076185634 1788997082 200099441 1378069477 +3732520531 3252180121 624145932 2403366224 2819058868 + 43855081 1318751958 1088256690 850968167 241089873 +2587970839 2866027237 708534783 2191634836 2488088535 +2898606441 3118269454 127018438 628453232 3487986736 +4201665671 2698882191 733824847 946623213 2127515135 +2258651197 1418611171 209261003 2114586351 1598285361 +3580611092 3822063319 1555259591 598461514 2511002387 +3022928890 3186332559 4155589357 1586371441 3356171644 +3245224962 4116405901 840206674 1108636423 3262819804 +1562880111 1928937926 3077156964 2607571992 1564305796 + 147941660 4107063317 943950762 2631608628 3464706327 +2422748629 3013551845 3855122996 3704215111 3586700100 +3290023613 2734212792 2375798578 3796535460 938429367 +3609129419 556225257 3544288405 1488710320 1196934756 +3606668976 2809743844 1034641770 681187514 3059881558 + 895484537 3248582540 1522555790 2215032888 3763073051 +1237818225 2392667754 1704752819 1989008103 1110700303 +2416781264 1929525334 3392556873 2270668644 2835987911 +1959704977 1479984555 1669541868 2448139361 364298562 + 412566471 143175275 84786299 2115007720 2258889800 +1614438832 4248452727 3671350612 1065619905 2601845713 +2075017753 2659924946 2771323989 1031907666 1447484496 +3427774382 1959810889 4167798514 1287533728 232072677 +3192646933 2623994184 3747530834 3992551011 1153547871 +2650034770 581442184 1012736926 2255458706 3099952298 +2441904759 141653443 661979435 2242682681 1006984333 diff --git a/SFMT/SFMT.4253.out.txt b/SFMT/SFMT.4253.out.txt new file mode 100644 index 0000000..75f6d90 --- /dev/null +++ b/SFMT/SFMT.4253.out.txt @@ -0,0 +1,405 @@ +SFMT-4253:17-20-1-7-1:9f7bffff-9fffff5f-3efffffb-fffff7bb +32 bit generated randoms +init_gen_rand__________ +2527479900 1368357778 2663671614 1404435254 2699472814 + 90613554 184715818 548052880 3165295246 3747208322 +1553584151 4006205422 686873885 2973265227 338288274 + 840903586 118479351 2113933085 2454705318 4160313692 + 258320158 2069535581 3111482672 1808812962 1061444454 +3414467438 2429935983 22860572 1366710514 3914109077 + 431345992 2592701388 4278051019 2953043318 3980401588 +3881325187 1564504370 834859481 3060669055 1337040117 + 550209132 3820737668 730655732 2134953975 3660203170 +3949145665 3089869106 2462203695 2517266551 127768183 +1458427300 968958252 4160350980 197127760 1732124944 + 94014226 1531549192 113002317 677141155 287564565 +4257548747 4292783614 2751209905 1752328661 3243295598 + 923465190 2894924894 2740856471 4055981426 473191365 + 908700607 422974067 469692967 757624668 3432965499 +1831360524 1428429851 2483671900 1390761012 3810347628 + 629385285 3930097219 2052308184 4168023275 388853205 +3768997406 3330670734 2055104098 1106186192 1933427225 +2226099390 3454131780 2957350718 3823231548 1817256940 +4215997696 871018468 3167946875 2754001419 236180895 +3233859043 2373649380 1292426575 3607842917 2701992479 + 148610584 3264599936 1393846909 2499792154 736433790 +3157082272 2880794545 994805876 534093287 197116649 + 851477442 2146732429 2183911085 894942183 832710978 +3901770969 3359969465 882420449 2241823448 1492166544 +3992403187 597213559 1969755128 426287380 4061611377 +1687362889 1946092277 4125751232 2340826817 1023094896 +2453795243 1016397383 2066650694 2829818145 4240397962 +1677661629 2003846114 809330389 3806142170 201244744 +2566284206 571778809 3414471796 1048918104 1729550124 +2292438588 1801879825 595036908 4103514229 3405015679 + 529495538 3896500793 2584783745 2054273460 3846917154 + 751616450 2298779837 744937613 2655442675 3129294927 +2616177535 109487464 2084297522 3149948545 146626839 + 141416550 219840792 198827062 180973611 1821886528 +4017582600 1052759440 1015031793 991373390 508903622 +2182588526 3077049840 521761680 1545070310 3957281201 + 171128523 1147783672 2533170216 3838957621 1237736619 + 552147257 1556527506 1515560982 2308626297 3482690030 +2879183618 2457518673 1850653525 3553910637 2860551374 +3434228513 1731298733 3588698536 806858307 3613883468 + 523208067 3414202318 3393689440 2353240359 4127122117 +1831732142 847638871 1619828199 2124696779 3990800766 +3933888641 3182339244 3360495242 3916631449 2657507170 +3148012381 1372045589 409909367 1928161391 2430406320 +3344152345 3461790387 2879089167 187732582 97521756 +4177685510 300969389 3888421994 3639345081 1296034375 +3343230691 2614990524 201084198 1280068382 2992697415 +2115717691 1189674758 87443442 1108849849 3999298855 + 551654632 2843181712 1438915708 634243182 2011185720 + 608579410 897151476 3827358299 441056267 3958241396 +2377342291 3825269665 520209674 3742883636 3483477678 + 429112330 1063433049 460156961 1983998260 3131916395 +3825314043 1541860318 505894702 1118748714 2750017164 +1318839272 2705734886 1348131583 1671597785 327049114 +2349038687 3191898447 65778986 309294146 4210524532 + 954190761 2796234546 760913068 1495807915 719879568 +1098025642 2507498292 1989256114 3199663249 1687943539 +2797834855 2875620767 3049687385 675610541 2679231804 +1993787755 103928858 270737000 2250936910 1319674681 +3533390078 2940559205 3485860854 1971895540 494103928 + 229873064 1674251374 3656511507 1613711330 1864093473 +3380224706 2579813873 1443886615 553363027 321798783 + 343406389 3588518585 2027235001 3491435871 944912015 +1291890419 763467230 1301595200 35530017 1654917296 +2369528163 43914463 3385342605 1519096256 1160702704 + 918487363 2675524986 2527817177 1370542519 2651742660 +2103037069 1397939248 264689110 1413288205 4004778218 +3299683988 2841441176 3598691083 2182457567 4054937081 +1066677974 434982562 1000338728 2872338526 3178007830 + 112950674 3265963247 1078618426 4136037652 1802343389 +3054995837 2634801100 3576860529 2756572027 163670376 +2755164619 3193086267 3523741517 2787825626 3599211537 +3179624644 3877008080 2628341823 3637377170 4088700641 +2241341851 2170453568 193416186 3372714382 2794968447 + 935329275 996794956 2916776696 613865948 2342638185 + 620153472 293440707 3098925541 3075946626 3105163113 +2278427178 2512248278 3302195243 1901360844 341805416 +1498812479 1022193034 2730690487 1608087974 3769133791 +3085978560 2569008479 4163889308 1373206796 2318025416 +3851861687 3012946747 3977347475 364722855 2611302503 +4115709997 78751760 1281200331 907864348 1360886565 +1264593706 2195635559 1140394436 1250223897 76307824 +3678248796 1596987024 1463275883 3347064538 2245531442 +3000401995 1424992573 3512991755 2510621610 1721715256 +3075463170 1466887879 1999485116 3962926634 3870497011 +1751227678 705057364 1443520104 2059482087 3250691665 +3255166375 1569067129 3412844722 3098977431 2792159953 +2395673009 3857642389 1178307671 2243727662 3864522806 +3675533812 2816048058 1312820066 3479095187 2480595183 +2835049824 3561740422 3174217287 416749385 2139285735 +3821231700 3329469401 3091148385 3510293280 4191591727 + 868224009 2963941189 4197718379 3532559426 1904090497 +1054636757 813484583 2750528848 2712557992 652666704 +1883222671 4050435510 1330436237 2596765439 300221336 +2181019682 2979671327 2514204653 649224002 342470286 +1851796018 1300049431 580587812 1304252851 3522677854 +1923755784 556752185 1914802797 3654065680 2752469800 +1726881082 2250771284 2135743124 1830931411 1469151786 +2104783727 478155961 1789588437 739862484 3135185315 +3386692983 796221342 3824201775 774903840 2539841190 +1798701707 3156002374 1557540949 2038233868 3369775005 +1967992094 2352432999 1754555210 3383598210 912042820 +1556344175 2063567860 3141410825 3725100803 935008972 +2420154214 229384961 932794923 3121147627 3677397520 +2030936421 3783938574 1056242163 1094152240 3130795881 +2212578528 3650393830 3763562182 2941501937 891356726 +3480329562 2001363572 3650716087 2039712773 2082265319 +3897556400 2306486314 794776544 2658262370 1205963556 +1244950749 4068472397 2316768749 570442349 597720630 +2389394507 3094855718 2509408387 3458849306 4003913153 +1606513088 3682030133 1351428839 1329052705 756713129 +3228203269 2549330089 1003597149 815801656 2935040849 +2126394226 1966835343 2123147961 1100473787 3508260126 +1347682278 1813807731 4087504287 4274225369 1233072466 +3982558179 2182729378 3788359817 455938583 107595104 +2183482541 349724043 3170305794 1478463324 3535450698 +2266873512 1125200363 1782202842 562451765 659545839 +3205089880 1007748157 1332259119 2190756187 2498360841 +1821141260 2384457148 3597604326 2466625944 3444958869 +2393658085 3021642990 3653781223 988709427 3343088257 +2542070759 3030195976 3201593233 1146775076 91189100 + 937553383 2253494027 2923147891 2964305654 3687677728 + 215864044 1165902544 3094419018 1084293644 3755627654 +4240346365 2634668923 3266634895 459317309 2448760566 + 285022386 1188948452 2910236783 2785682666 1232664118 +1696483321 260914322 1643952881 1205118871 625088862 +2895045934 2361165720 3685846715 342173372 1277134079 + 436664487 3913210554 3853335638 3294636303 897284118 + 80550011 35785936 734063644 3331155243 3040972843 +2825628859 1587205482 2916119016 1453645622 29066455 +3674104445 3856300201 3910466588 2305622298 2500902145 +1471525683 1665091699 122696731 438232290 1485481363 +3134096607 582664744 36553553 2555071952 2875800128 +3558076452 2341670027 1048189476 3448631571 3105098020 +2836116166 1164096049 3336285606 1777820482 3259731819 +2535236186 2173206310 2141664756 1795309580 2712514906 + 839414197 3515333131 3456768398 894724664 152591334 +3828470515 101544558 3139903673 1758740316 3655835928 + 283689183 1191066662 1645801598 2513632659 2641101384 +3242370052 3750378668 1209952866 3622825606 3916290440 +2462296242 3979411843 2566629928 1703841226 3580800515 +2835163070 800968534 4126472075 1336809651 1698066670 +2583945033 3719656938 4161420199 333983592 3012713349 +2215029854 3459379580 3989216021 3909381318 3299172785 + 377164461 2190647378 3773598435 1082059749 688217589 +3202128248 1309168765 2186797462 893982067 3808151150 +3750218766 3488505749 2160698729 175659562 366321575 + 244537428 709975671 2243085387 2437312200 4072237343 +2793242070 895851642 987225785 1918724975 2286944600 + 426287935 987266265 1518170331 2787455281 1808098392 +3384283435 396002370 3092824209 3925958672 1766217507 + 283368391 3162646348 2985035730 2837362361 2168498198 +1429383440 632822315 3899799712 1362373986 3513820808 +2093651918 2842493476 4157113475 684687567 2908504190 +1879244483 3704911505 342871386 1801214563 1217345650 +3918483325 1656942815 1165618293 1833497946 3890213046 +2613428343 1994103566 2428507209 2820676607 2180335657 +1346479967 1639143184 4139533466 1909445436 3639600424 +4126977421 2181979647 811910263 365549549 3705120026 + 808002836 455149150 1807086335 2130995526 4108275506 +1266847062 4061326824 2349396929 3915985329 1783849271 + 905837971 2683630735 1800744620 3875631925 2252142673 +3251456840 1459039165 2833099474 3531992522 3710388286 +2190951573 3354562341 3268151049 1184967222 4195586075 + 684446072 2608178903 2819665960 3088369994 2748683558 +1704439164 4223437573 1436190950 4278853819 3091164007 +1078378076 723311767 587703477 3851946555 3697804869 +4160379401 2106953594 593626618 128041410 4286706683 +2003531224 1330231761 2384455624 1159174223 1183759240 + 218042236 3850479175 897884664 2599517199 3299195163 +1142309209 339715569 1115023699 4248957598 4175318311 + 814230681 3810578707 1621592119 3753479739 2769366523 +2739541076 3336778504 2762821764 425111024 248054828 + 302670898 1344961520 2877121830 60326824 3038819906 +2130084958 3806365850 1934968383 2737798910 2477223327 +1787404583 4215091681 3785408410 889455514 42797744 + 962836281 393066514 3660403389 1818627315 1810946116 +3051684939 1522629715 2052877416 1991288115 317781593 +3953883323 1889817433 666448014 1795497776 1035321190 +3341408107 938679669 3586178906 1816245957 2643186312 +1189583008 626879504 2847556591 1667291872 931370811 +4119804642 1282359131 121925540 414885461 1990063976 + 867354577 2817097111 668512758 301590583 1495974696 +3023244186 675868526 4291773200 1659882362 3340006089 +3053343330 135103191 1693243673 146669000 2312300071 +1615088906 2568797318 861836502 3760445871 356249917 +3258909047 1935024562 2856523904 1272143201 1814325026 +2664552812 2095630716 1099988794 4142196794 2544506753 +3485384650 430826333 3924498758 983842871 559469780 +3046537394 2558191397 1748641471 1703543157 2592035313 +2251132756 2856434124 2430276451 872764094 317121707 + 5966309 614613705 2441932614 4081181581 1363577429 +3826195148 2914574007 2140015550 2722653761 530702262 +3776839949 3174244398 2662996664 1756025237 3550819102 +3080894760 281074394 4231680860 1586364407 885384955 +1179007550 931623610 3518953087 4271433909 2889139566 + 338082013 1870466325 4025577775 1558936021 2570741014 + 90342133 1083987943 1785481425 1921212667 3164342992 +1489324569 603530523 952851722 2380944844 3335854133 + +init_by_array__________ +1062977953 3988658264 3431706209 1392605999 4228283283 +2176715587 1174527495 1437388515 1427996751 695075490 +1301589112 2690299642 2598744544 4174173975 3840835486 + 649977762 3847428333 3934078688 4132816682 556148516 +2851104082 3954729007 3097254441 860119530 607379520 +3718940465 2709081067 813237911 2924835801 2963392311 +3680758495 1577302373 3824698389 2815029755 3735459688 +1049070169 362381609 2957904656 372615294 3089059009 +2922792390 850518085 1949211416 2774780728 958090172 +1402882513 884435661 2707170196 4040686310 3303235824 + 531013120 1120643530 3743098775 2782106294 1873189429 +3925566315 3963388587 1020947340 3331747991 965762908 +1951956255 3746908851 3237005575 3521733560 2020343472 +3519323690 3283214119 732274313 3583292148 1482011760 + 571098358 1348921825 3758785517 3183635786 4174957504 + 87235097 2463718310 3219991336 4058881618 3157574682 +2461829889 3221549242 1503840346 3271995478 1186014072 +2999824180 3608855116 3164700504 490219523 61835442 +2852281519 2016590083 985075993 4116522450 2631194335 +3859050228 3316723388 380634589 1221404336 1067167387 + 689027224 4266641514 1121616698 3536706232 1119158170 +2180719025 2498648561 2504146192 2311035163 845621371 +4128509118 3892985425 1813068737 2460350520 3759123765 +3296755451 1816280435 1337283858 1475630799 3256862205 +1337643899 3513481577 1988910274 16415099 2657012513 +1443983529 418728586 3845107811 3061513829 4155867140 +1134954493 1447378215 2302142465 255878528 3127668772 + 510234782 3776394042 4141964975 1650621698 1533858893 +1209322108 4029779072 162792549 3181781509 1100835531 +2363857919 3538513172 3684647403 1384987708 4019976256 +3731558642 2229919300 2328038081 114481344 1204695341 +3806584361 3052259902 758156143 1922833515 2512455614 +1959267688 3979468422 939313070 867267185 1125655886 +2449907737 2089431866 2051025568 3380263529 3233391830 + 975418890 312209732 868932083 2293558246 3815276622 +2990754247 3499722318 932565535 444827781 1528462469 +2698714898 2743756627 3434008644 873788496 3380936986 +3608899544 953021925 3451735586 2250710574 3468720220 +3343718905 4035831874 3954118972 2248859214 3984572623 + 753461748 1644933373 2531152575 2122960842 2811679914 +1404866161 4046601927 2052546518 3297455234 404120354 + 720034026 2140471195 4273885119 535493623 639530637 +1539978282 3429289165 518639888 2686788213 3775498952 +1164531239 2986965634 3361563406 2584579727 2785235835 + 733820092 2268011329 38148886 737053025 1628043757 +2544174810 1648477722 3709221873 1379149111 3531979758 +1221572282 1563825729 4253854479 65433694 533775106 +3222053881 1729749449 255087793 3913625882 553608014 +3024452738 853024724 2463017395 3795560372 1312860406 +2993638562 938799276 2581767293 666831235 1325927429 +1365838766 61120276 353502425 2544639597 1678046875 + 764979350 3168164174 4077951098 2277469483 1912714498 + 942908935 1515872309 2846964651 2597034560 3590871645 +1807427631 1567315708 3057991288 773104571 1735252788 +4186000299 2439697319 3799133606 1489084279 3255647577 + 209954954 2997581608 2649120094 3480122550 2452457542 +3651928132 3834048357 4209272756 3224959801 2216933822 + 893314057 2294323056 3749294512 3080920488 561037491 +3338761342 447355527 2338440308 1737592883 422327385 +4258522190 1209183807 2690327397 167638878 3330526580 +2319258588 4220970122 3447686174 3965143099 3942838788 +1862484277 749652831 173916209 1387371801 831597358 + 99626001 4080184935 2910604269 1319899287 1767393944 +2788122967 3943547548 825406912 2891560664 895801096 +4072883032 152388381 3474538897 9335402 1428918622 +3871291263 2615658331 1528089976 1289521459 1788424614 +2375251067 313787483 2230744792 165487802 3369546802 +1975904289 614861503 4077435827 894834880 3431452511 + 507597583 1236954312 1177004543 3043832377 2007301139 + 891305779 1369806077 2295518537 4280670275 2293751897 +2665524490 2040163654 222042893 1844523211 241378809 +1879443735 2127424351 2924350603 1574825940 1415259711 + 387967870 61935243 3388729280 2841013010 1520433792 +1784720886 3291949677 3688434613 1394655683 4211258084 +2073085422 1989061149 2512433879 2022998905 1191788973 +2122532652 943439225 869264260 1539795484 2865559700 +2713151187 3364233838 1313990094 4080274575 1894558395 +2109055874 4035039714 1863026199 3278302265 3444105052 +4043443818 3568442974 725986502 4126681387 3384084611 +2525863321 2603581177 4170330001 3461395479 2284849407 + 467709468 2858763673 3994399223 2096515112 1252359120 +1161325666 2552110153 2015904716 3028085166 2823289225 + 599932643 3002926624 3776820139 2852420574 2198968094 +3704374112 3352458013 1026597381 1333645364 3464629087 +1219584571 905644983 730345625 319080809 850459661 +3751927743 2417085524 642165059 2635546304 2495822510 +2581598917 3141929484 163520054 93529769 2604848738 +3827256775 4210137441 3279988863 3635764092 1731797228 +3619866751 2303119102 4071670885 1497688282 458621690 + 872290947 1608713899 1292788211 16976616 781503920 +2177679833 2546012879 3409301963 1934614646 465669708 +2110834381 2620642698 3280100156 4261091393 3809656207 +1350791638 2815489944 901265186 2524542494 2963003163 +3390714350 3819328865 3332582778 2605968629 3924460738 +1461359983 1742885903 2740806815 3604177662 1332560478 + 193881028 3574724144 2995765505 1266600026 3843889955 +1337559312 1519245169 3050842016 3917841145 1260596819 + 311383843 664281834 3441373905 2773077312 1321238534 +3120829650 1540397577 1141700233 193940413 471171264 +2943124290 1744564942 3658007369 932570102 3392154961 +1423050826 4267569834 2388121391 3601196137 3210156547 + 609050404 3357791300 3199268170 1581068879 817572355 +1667488394 2835369758 66797414 408411894 2121962482 +2549139641 3823996660 732552958 1056231775 1294860719 +2216132903 3574131052 3723086356 2115092646 1210146588 +1308307031 4253640262 1833388949 4086070180 4248546214 +3194688214 2735925048 1480102152 2533650791 650012195 +3394827872 1276090814 243151392 2709788773 3973232265 + 304359816 2104405020 1625960938 942064417 1903389659 +1242894605 1986766019 2093860487 1561808784 1416089757 +4290630606 2031355425 3787610922 3341659357 2306129900 + 796897271 3613711854 3454622255 2096307286 3899856244 +2168793787 811488054 3003959093 920536190 235236856 + 870345839 2125533070 3150976410 1602865420 1686727350 +1608193802 2741573520 4124857144 1714662903 2275463448 + 652180875 2431468754 452841239 3278749002 3303889829 +4152546007 616695080 3812554858 4164332608 967496881 +2727662435 1846779112 2458739734 2618013467 1628521962 +1419194199 3966902011 3179263968 4148167983 3842398422 + 509032837 1175303318 1934363098 4224144523 1995784127 +1302446734 2589103897 2297122363 2683613448 973146994 +4187092500 294073826 2493057870 1349784078 1603343250 +1950753701 836900536 4032766444 3858987808 1092338324 +2481664746 2056962973 3232626732 4231314042 1113897298 +1886299844 2322607178 4064885313 1203830751 2912214584 + 834402639 1208292382 1999114528 3758660474 1373518547 +2548109435 3519395113 1679598283 1638789519 2238935587 +2844652636 2041665859 3234305169 3533221867 924228217 +4067605767 61845809 1238213296 2838594765 589764255 +1936987607 1391268719 3827406164 2712481406 2729640782 +4288074168 857810267 1054017611 3634461966 2234205278 + 928947596 1488919655 3043038432 714434122 3069879143 +2689232763 2816694376 2617247742 477570758 1746369489 + 172225618 3443843044 3721316126 3036844258 700862569 +2685768491 3798794306 531509971 2468704980 163723231 +1001440253 1923631932 353653849 3043181127 565463912 +1688707242 3301654360 3291779647 110569235 435896924 +2158166724 164829096 478630567 1583156167 4161886811 +2490103241 2049527522 3398164752 702587304 1961268132 +1974777464 2406604166 3184969912 1731222480 2395181225 +2072651612 4242978947 180388302 1618159866 461166179 +3035596072 837688430 1161716079 3450078309 3387286520 + 453546686 3999327789 329294889 3068190473 3936666478 +1256948525 3461282703 2849746490 3334649727 4240625231 + 585392901 3135247071 664765953 4215090368 2635308248 + 593999569 3963326537 1409143395 3509200733 3667922064 + 668012972 1872586565 4020510717 3211932514 1160080851 +4134725660 2181587848 1382851160 4226977682 3945723623 +1633583368 2675890776 1942255133 1667454516 1812284667 +4185572712 3022303989 2954682536 3102137388 2951656276 +1098054436 1916247543 1254534493 2901272726 3530113571 +4179948015 2677554703 1449372317 1848303323 2571715881 +1323382615 7182921 1335537230 230388913 23501567 +4049151880 3148947783 1592021722 2658376882 4213562912 +1395346159 152368572 2348516725 2748023749 1042229554 +2056811387 4128932243 2116447834 2871666904 2932907257 +3634967378 3507472489 1234512567 181112439 1649268488 +1309531357 991020632 4095945632 4106363582 44612861 +3169431716 3527387294 270209417 1135425065 357583385 +3320452294 241402391 2208094317 2741285578 658304376 +1985477119 3613060938 1671700863 3315652183 1147928999 +3507584064 3659676075 3958123430 3789032232 213778736 + 113362053 823154826 679416244 3093555549 952331786 + 483720823 3923189529 511116411 2592246221 1981105076 +1309731863 1878031973 831041222 2709217523 3103009700 +3265900884 2813913857 1561537471 2659001234 443425288 +3519777403 2051589061 2469814936 1270770633 1326141892 +1910762052 3515605318 3693223622 326554153 3077815192 +3142218763 1913029727 3109111769 3260800278 4004110215 +1087796599 4132376308 1577851316 369005883 3651129230 +3071137486 989815298 2762688254 2118736280 3692405840 + 530238339 639311061 229507947 4292303116 2143249556 +3680229821 580416601 3298651230 3875274605 199468613 + 842402642 2811863886 68938908 1985484503 669875367 + 967535426 1278692878 3038302253 3140415113 558809104 + 619436771 2604294408 1258951495 3095806816 2922083768 +4028913928 2785297592 1170640660 4150329982 2289198195 +1789527031 2051300571 1644716864 1941173724 1779210948 + 146650713 3898640830 2896145212 1130810947 1632710659 +1261716023 3646761445 3499688921 1806682856 2510501108 +3139606161 2520429840 2481922341 4116609971 1543857241 +1720918944 2658985854 2804551144 606553611 2000318963 +3845609019 1025171844 758006856 966724549 180359768 +1712807788 3323312958 1481876703 2108993945 936187231 +1478404033 1457786023 1609921868 2191632727 2508111676 +4180102827 1578831525 2016382398 1587556765 1211681661 +4171013367 4115760320 3753323748 218758715 3065466885 +1470205391 2463635171 2567063470 123639014 3119232552 +2095587371 3203819687 2039462058 1700395840 2495844348 +3737134992 1708331935 2494394257 246547750 158878228 +2192533008 816911028 4247527774 1463348146 3902414713 +1212566211 1601253113 879983220 4196777127 2009850819 + 283876563 3045658651 369742524 1926673106 1526954735 +3546901483 4071394124 519539678 298210345 4143734272 + 581648927 779209738 4086935284 1377998651 2593828532 + 87588891 505935827 405427193 163470145 2556596192 + 32480673 487726617 383705146 2900145016 3379405498 +3865627777 1502203695 4075458576 1031563820 3316652859 +1139327012 2247677950 522475785 1040797340 975956695 +3208203744 722884788 2004479119 171172741 3261843831 diff --git a/SFMT/SFMT.44497.out.txt b/SFMT/SFMT.44497.out.txt new file mode 100644 index 0000000..6708e1d --- /dev/null +++ b/SFMT/SFMT.44497.out.txt @@ -0,0 +1,405 @@ +SFMT-44497:330-5-3-9-3:effffffb-dfbebfff-bfbf7bef-9ffd7bff +32 bit generated randoms +init_gen_rand__________ +3668471065 3938124162 4226228648 1183164762 959305109 +2236634761 1737928337 1068590968 3291811912 438989883 +3781999933 3563472944 2602217062 3696065256 4239318581 + 600000730 307966818 9789691 3596262746 4049798863 + 214000891 2824657360 3401599604 4084185957 241354882 +2606104362 3350316152 1210189242 956851300 428314233 +3496239949 2553393773 715503161 1503533865 2409071411 +3720288303 3163234373 1966474779 2310392540 2097191938 +2197028828 1059701116 4266659183 1774483317 1571386112 +2168327624 3672944477 3063369424 4223758748 3685829169 +1090539779 620035341 3365385515 4222182628 4183383137 + 594933048 3450871960 1352101656 3902914885 1731004782 +2760236537 2081803457 2570222764 4048523979 248156801 +2600643123 1817685073 1968293488 3576078775 981562410 +1805583156 1343375494 3164177767 2780605897 2076516353 +3788566596 4117756860 3367883848 2289329031 2921339930 +1743986361 1727106344 1833850427 3750676455 4176756476 +3138275147 3834722234 253290855 4159875912 333560160 + 289945216 3065004471 3119224239 3950217856 750566052 +1879854821 1079185965 418199396 3605518556 2475870057 +1215532958 3953209850 1069578365 2561700523 461233929 + 571306934 1665480644 2352745674 2333284139 816689027 + 521695839 577677178 925115487 3268605454 2925280507 + 818376724 2765037170 3387701710 2493131447 1373426262 + 957043528 231214681 1479541201 3677505186 418322763 +2780533861 3595572878 856130714 1300256770 4157344003 +3191677717 2138486720 1215914067 3687237744 1931891023 +1561352010 1172418912 1506554008 2031661455 2077744726 +4000638947 2157398374 2116801448 1167153875 3658311631 +2264923400 4086619644 238096042 2052176473 3721012419 +1083371007 2528909843 245849814 4293498808 3557294589 + 519744913 1054550756 2626726854 3385911002 3094744326 +2052448271 4198985573 3252308784 4251495372 2820713376 + 89026744 1343444563 2491264117 4015221172 2925816909 +4111900412 3806669100 1230222486 1968470262 52328799 + 634244867 2431822557 316017391 333253817 2768339044 +4003653076 940576000 1181928687 1147879332 3857662527 +4176040643 881145720 242444761 1224124983 4251960466 +2921064958 1447744715 2157496962 3832193337 2972646800 +3797899393 2430635309 463281550 820073350 96282779 +3054747094 2277108126 1914931552 79961237 1244810248 + 468360831 864476736 3168112817 2604375886 3752023769 +3822478969 3392767416 2707517232 4293931739 1194024122 +2563256986 3634780466 2800677793 1703243209 2301298236 +1934593057 3510926096 3984334374 3188915212 2799848510 +4007731498 2301115727 1383343593 286166726 1217889422 + 191404597 4219647274 178357379 1116506706 725250649 +4131865415 3983608816 770535705 3966813426 4025075453 + 557662654 4175024917 2563492750 3832556290 1870625229 +4196007234 1168212900 3516487257 1566560411 1548852392 +3253707787 4118892983 3863430210 3200390603 4054130806 +2053917664 3904403307 845564479 861714700 996396981 +1865180888 468309921 1413915976 632944325 1908083025 +1380877218 2677708929 3815178898 3910439272 3423348286 +1966664493 3937230547 3541458131 3056762916 2424045303 + 557061908 2943212109 632696247 3670035387 4077524513 +3094691621 2684463965 1824263502 2648204785 1288166405 + 78047510 1471683082 661249222 1951403822 1686323466 +3210289579 2759787000 4238366569 300775971 1932659812 +4024710497 1751327592 2974591301 1211502932 1872848709 +2867646014 2202022915 3686335429 2460518686 3248965230 +3856557812 1689347388 30556487 2723355731 153373155 +2560775636 1966083226 1838282549 3843502231 874259385 +3419152363 1597881641 3196758215 3198743754 2574241613 +2665414716 2918606421 957032739 1063315021 3938418125 +3089328447 1826591805 3821204021 1334787263 1150738420 +1814731952 2459596315 4178131701 2768857647 2315022757 +2578240716 491666359 2597859143 702138144 2286627628 +2754943374 1584816573 399610346 1347175572 518494131 +1304124989 1469415010 110390133 3771042229 3557573144 +4284386549 4211194656 2510057277 2306536991 711443859 +1533321010 1541982713 1073817423 1921756124 827772977 +4065010113 1603869810 2392272617 2114562047 4155255484 +1627005278 3771108335 2895984492 904975369 1733328370 + 709652621 530614145 460062668 3691684513 1299478976 +3836789414 486842819 1872267498 4070567976 3319570519 +2128277197 2388268478 240108571 4125625515 4270141283 +3644055815 3115455195 3822144200 3360812198 1037290037 + 909010578 4239505225 2829222507 1762355225 3539505380 + 238983232 474391724 3874036674 205757016 968202594 +3124476026 1222960157 1329830214 1090395383 2204442551 +4277701969 2328748412 1284334994 867221060 92017439 +1024793394 3450371731 3139741656 99876861 3601757810 +2586165476 2664361471 469681386 1677699172 1229428870 + 774289262 4202235456 2343626992 3402393540 830439819 +2191812394 2699126692 1908336401 2481705494 434428810 +3393783746 2815077229 2703098120 2025880350 2185716097 + 250306694 2879624656 3537556270 3215644148 1499821968 +1061450939 1776261558 16810303 4163970943 2024401413 +2772604644 901847589 2380032337 3456929058 3341693939 +1201666757 1563664807 2280779497 1641443561 700851793 +3264062932 2962816317 1603877007 177453634 467029654 + 332285038 587207529 3671911212 1277709384 3288458872 +2411528263 3426823463 3532671990 4134452986 4025767448 + 547335263 3164869181 3970808498 97375206 3356405786 +3098223729 4190773327 200935111 3954015694 1383984572 + 956182239 3809831195 3362013645 163750531 2424243341 +2093128576 4146298994 1906609787 2154154611 3668124640 +1766927907 2025241589 4222689844 100428254 1294821014 +4057102939 1232150499 1720414681 3965983610 2431630630 +3383370832 304453348 520914697 2951903556 3736806694 +3639052774 3746640371 2883128319 444821350 3276341492 +1992708679 3472126898 2697357850 2232331553 568502379 +2774444761 671721204 3508505965 237966378 4195028471 +2825154392 1125119371 3069427307 2209537752 3983536457 + 903433738 2520145936 2220561995 12907436 94760256 +4177472245 3752630479 1469918497 1041799071 704849474 +1235395033 1388272685 288911159 486367835 1443018700 +1800251476 1479959892 3700628490 599987231 111397546 +3309445586 394194964 3434451911 3859141113 576940132 +1552446671 2646402026 1879677356 4154520027 3039676590 + 120886928 3055291763 2506115127 2688481669 2474502957 +2632911205 1773984050 3199155193 1079287375 3662861927 + 460686384 396728453 1073792880 3471944918 719136261 +3283394898 3425628413 4104238366 463876074 162022272 +4130133370 4200448482 3351069702 4274221219 3903841308 +1701983564 1804655700 2726177665 4183879629 2078583656 +2755132613 3578527073 1515470958 1404769395 604115077 + 648361734 765091477 1486420245 3026361116 4010433049 + 202251369 2798176874 3827295270 2923565899 3934195075 +1353795733 619331940 3673734204 4129009467 671492969 + 396116589 3312560796 24100167 2963949118 731654588 +4023163045 1185021024 3755508734 238340499 562366552 +2294446540 1788417929 609470783 4135169103 3057117800 +3904842512 2384470391 2322551780 869908773 2071054519 +4025608343 2017359745 747884988 3506255313 814709863 +1109473400 670903697 3818189624 586014739 4031605358 +3932641706 2912737692 949208089 2535979868 3492127502 +3519759236 2907912894 1171839275 149869870 1551897769 +3388140819 530103856 1061165230 3843932369 2440047826 +3295199596 2308733431 3852368188 517851268 2437724713 + 609166024 1235745525 3792552259 1856620882 701654446 + 763346753 157367246 3902279574 2133026351 17361257 +3289613377 3673527696 972720319 825113425 4270860334 +3563897014 2736989862 1136644116 2834015816 2091856750 +2882295327 3688068604 764250835 666382379 3904626950 +3292192469 2261829517 4178989490 811424867 1055674996 +1739590022 91235693 1317700293 991872191 3872846511 +2212748309 2415463196 1679761841 2059549608 2396500149 +2872048880 2290246831 253301488 567254774 3000195235 + 934780318 1792446648 1741686869 4152856444 4099647021 +2977466397 3737476792 985753970 1099626078 2220150905 +3820039986 2727104245 1341851333 1166622599 76524896 +2816878482 2420005686 2796966347 1807652744 1106141956 +2968784517 3881748460 3620841976 3723856769 2730519008 +2812775155 3287045090 4190833598 264893300 2409752701 +1631108493 1631100009 1307937757 2253064226 4243107387 + 400043454 1795477000 1285395115 3789707549 3478508813 + 670359955 82110046 3062186815 736049302 791902270 +3013859461 89725297 3501974273 1327213906 720937231 +1558736874 2501022772 885956349 3634031972 247951155 +4246010942 1482542578 2045299900 3098535940 328300839 +1266315543 2485122502 2515642934 1941597329 2141425621 + 858009460 1800572110 2694121840 2907168710 3177698792 +3764081722 2989883712 620540482 625518192 716543246 +3317582704 2155036046 209487585 489137596 1948890051 +3843819351 2285115188 3919128084 3325426356 4154907130 +1997316562 3188326029 2436085004 4072050003 924611992 + 361545429 164330605 757417108 4237276716 415808197 +2078811012 1583856346 3808319704 578996186 1441176245 +2417150484 1938835031 891301201 7234411 1201514993 +2731743807 1146735750 1820386225 97698457 2790714152 +3848237689 2715879657 1024441545 2458068994 3453072562 +1755444989 716147771 3285652666 3788760884 4250706482 + 687645990 3028317522 2344486950 2997970741 4155340582 +1465732681 1386659782 2471813121 2861504206 919935469 +1785892173 3554336178 315273598 2517441760 1137546813 +3061951994 2342366659 1039911139 859018891 2675508108 +2966918334 3581057550 3850447785 4186090558 1991360108 + 362343044 563103072 4226070610 4074153608 4209763434 +2092329502 260176025 1226404159 2098258390 970009559 + 707151395 1915000160 1317604528 4042264273 2026976800 +1669450950 2280675081 355032296 1435313411 4288027938 +3112975881 4249994558 2023866087 2533310216 1508811118 +3916687231 1446316669 916164280 650128889 2908097559 +4184733170 147848713 3505797198 2898326314 657351178 +3239217236 3250003594 429788236 3659309536 2870420702 +2632220419 645284771 2098842906 348489627 1777817617 +1053425496 644535629 2139719735 347947737 4101346312 +3067206190 2822292569 2199011214 476949484 1119224820 + 775333821 554748861 4064902759 4266570770 1546548501 +2526237667 2803082123 1962577111 3305312830 1807838801 +2436907200 1651927029 1244830606 727876668 3232450407 +1104953743 92449386 4281939925 3380390821 2356276908 +3477029072 2150703187 763377102 3357720372 960125101 +3195485160 49716104 277963460 1681312873 2123240963 +2227465138 2016614367 2842184996 1192258763 2784706689 +1672627768 2660365442 1240803123 353830762 3372517974 +1965407360 954894947 40133935 1152324029 392954500 + 15026379 417100912 2261871275 1926518514 3638741165 +1110641020 2742698958 710920372 2424938611 145119866 +1406562238 90257725 1129334365 2205447699 1352826484 +2219220808 1814531525 772385308 117336543 1848169948 +2357308811 3863089713 2967687149 2764225167 34438731 +1771178970 2467406279 96500709 2427662038 1527860408 +2488803444 1920376085 2470587471 3097984093 3319609258 +3560925349 2481438710 485377602 3012935809 2728787840 +2537282231 487321294 1759605900 789200824 46017448 +1483092082 1895679637 9122740 635864575 320732971 +4253159584 30097521 839233316 1431693534 645981752 + +init_by_array__________ + 684975361 2487942892 4151500063 54722954 342503900 +2056596948 2988817246 4115463554 3909146713 2954953855 +2392358767 2805985593 337683357 3744843600 4062780564 +2849031419 3311297738 2073551555 2645431070 3521908773 +2525510316 563603035 1358376030 2464853050 2212361572 +1897669050 1341168415 2663496237 3730590905 2177714665 + 3708408 1017773362 3153611644 255331818 2371411126 +3779915620 1698275394 1470906491 1266552795 2841612460 +2099156677 1657011499 3832220803 1719456599 684450823 +1586753818 1074981324 1415783495 3674439465 2677731497 +3922465187 996394686 3895252050 665404286 563289119 +1619890258 1449533762 3120934807 2067107528 1055630497 +1032879739 3151004457 3542785958 4168316829 2519834186 +3306413181 3832405685 2257061362 2360361651 2322816283 + 936713972 3366713329 329082198 1237646659 461119731 +1855601012 2600763382 697883013 1302517116 932253293 +1600171040 3193927591 4197726818 2490578457 4130874991 +4242899165 3725337733 363161476 3084505702 3247499688 + 975533818 3710151092 2765291830 1421623829 914407309 +1845701572 4112553229 2049444703 991296597 3615367192 +2220595495 3878745150 857488219 902083463 114172732 +1942374497 2345473985 1959808724 2693959659 1873555581 +2480343508 287169754 2737441125 2258749576 2497218716 +1663030569 787017291 4076291104 710825601 1192142920 +3819099754 2796134222 1353840633 1375260846 2280539058 +3521884290 2790934703 2788957726 2565659212 4095721521 +3320649137 2699360917 1562966751 1130447114 2903910056 +1171391383 3497813995 1607965401 1935680607 1197803692 + 128258597 765135286 2169079268 2151663592 4184115523 + 775299448 2824961602 1399440855 1273632402 1276253509 +3495617889 1217642205 56477934 1590819929 2270347856 + 745605971 4048203448 2756166044 3004303000 3115093450 +1127867080 2869792922 2408572067 495574931 3655945042 +2123108497 51567216 803469706 690135403 1732397580 +3087105235 1841102639 1527639759 3899711070 2542743308 +1698985801 9350005 922919897 3978083185 3686269289 +2753241014 3700697546 2176984517 2592770926 3324127759 +3140135044 398927337 1995747171 2439522503 3235962603 +3314578837 948434804 3887275779 2903321385 879793513 +3344634253 3505357122 2888691656 492079120 693932803 + 999907939 3356399207 4022936501 3376323365 787569271 + 890637583 3301988790 2968470994 3218607885 1166122209 + 926291418 4099445588 778467247 3743982117 2022062016 +2903184875 4187830769 799823061 3221414271 3623859198 +2519869985 667057891 874655225 2518696247 4040370784 +2241464701 426790262 1763346894 488019312 3222126248 +4207331182 335346595 4226852268 276331012 3577109997 + 172016932 3817060878 779137378 1759784420 3768126519 +1060129497 1177151560 1681823301 1138043988 385137952 +3079606477 4043088157 3912726260 1705078374 1686645242 +3954418529 1550739145 82508189 1233872303 1731274661 +2614638744 3680529200 3822612437 1648886489 3761017431 + 636291140 536886849 1267695503 165271750 1218857469 +3796110535 3749066613 1421452984 485039738 3912706166 + 24258852 1646289630 2758488579 631040720 3446088674 +1690145059 2114593518 1102292481 20334757 1421842045 +3394074090 1354124663 987615861 2799990871 2174635609 + 34662850 2487615774 4182921436 405423782 3671831829 +1259386906 2221952747 434917264 746327640 3169535910 +2871122554 3292584106 2234401265 1320639855 19293933 +2970905356 715449597 562725345 3180272122 3052942630 +3720180016 3976109710 3374348864 1083429223 1386112314 +4196366891 1531536373 1762082785 846692171 4261231491 +2270559091 4186110629 4014655319 4096629750 897171642 +2974939145 4173036245 833494220 857259553 664876368 + 312038353 2414814982 3128523230 2940054013 1943209572 + 63223506 3351103993 966139776 1787218600 3519333609 +3366381182 2261216540 403616014 3631074671 1801703243 + 287742111 1047211510 3236430376 857724104 3913815258 +2173081363 92984431 2670026167 4211010100 2024406728 + 501007146 189488668 2141434335 324334037 1635101308 +2456311806 3374778413 2621277156 1609449907 1628993583 + 236437798 1292255819 605962801 1937844131 221923282 +2948575326 3454587280 971479933 3542163502 1697837850 + 32422817 3223284882 845152623 1584490692 3086530488 +1923024297 1455829718 4100655553 2542626342 1391459697 +2416406726 770691897 1162088077 446047331 2988521380 +2496235159 3237970291 3354753208 4208541968 4109013479 + 753355965 3076153711 724837335 497842836 792686325 +2799292337 58448095 72367036 93387345 3801061135 + 351535252 3480371512 4157060233 2986630890 1389831856 +1536904354 759093557 2168801837 2112892969 589384258 +4266026414 1591084529 2865362337 2568148776 3803893019 +4099023039 1523326035 3298237325 3957084972 60920028 +1098333253 319031688 2926386528 3824665159 364742618 +3272865002 300767042 2293701793 1604130009 774792687 +2620876029 3383211711 179271372 906536187 1393265969 +4059077578 3145239434 3249711767 2618421236 1630455841 + 485435478 2560017961 2605151120 1482891609 380322578 +1359433822 4079826681 3833759552 413985578 1920228571 +1773134197 2179571509 4078859619 2330769072 1733337870 +3328658980 832747128 1563770656 969223214 1840793897 +3659929592 3278579848 3275871712 310479483 400262102 +1770939224 437274814 2950215871 347749928 4019277934 +2320073534 2283017209 1023601518 3482767365 3902131696 +3422852160 2464812985 2976221138 1651023701 1050460931 + 199848361 3296851303 1459955097 771011185 4220052530 +1813544374 1370255200 4190864819 3727442680 3545208544 +1831809223 1395491272 2027579389 1669401598 2292078490 + 554108218 3274751565 1768284236 2079430058 1495165627 +1433502343 3054057761 1413762911 3405340896 2955704881 +3717955534 966755105 4005384894 1748340606 1037087026 +1614468879 1179006662 3923511915 4124386352 3443912930 +3500765253 12337586 666110904 969847404 3878185809 +2070954448 1161710505 4241205957 1337222355 1652663555 + 406710859 3136093625 803137086 4294390171 1011217971 +3531173898 3944724422 13297832 3728052176 3613185933 + 988598314 709061770 3060669882 1459547049 3504836811 +1060864165 4067037856 2138554249 3073017993 1041861495 +1447529993 1785141820 4098979843 1648224543 2490097646 + 65209449 3680651012 2693284107 984759948 3251406596 + 370590747 3243196406 1785731763 590283726 1963439114 + 176186720 175331635 575814080 2284386170 3442614813 + 603858074 4276303569 619129767 1394525629 3843731906 +2831203904 1314320458 2557431506 2568469869 1135134494 +2377656107 1071106524 3698650747 3291589750 519683978 +1914121510 2979993925 3994217106 1574831031 247704662 +2416291830 1016776283 3974839830 3180073839 803275325 +2543778236 1734477206 2553683793 3178076968 3367398574 + 667329297 3737662587 3854573846 561559009 2489817655 +2334454110 679269539 2349179569 3735225237 653957767 +3555137137 3894601347 3152974963 4139069232 2240781730 + 523688285 3166167015 3471800877 955125274 107478146 +3013140726 1640264073 3971825508 3490189286 2285435046 +3573578481 3250872938 744654755 3436231084 921129838 + 811891477 3607582846 2918438798 3246286893 3912591629 +1274726348 3514828575 475164486 3268749252 839610326 + 957142402 1667457940 3786171593 1270963994 580648699 +2872993498 2991141990 3425309289 3936025456 2158743955 + 384630373 517652940 3513584012 810054900 2745664097 +1570635852 2074484253 677606390 4009443607 1385781894 +2393669976 165686249 1496450589 4013865530 2290621688 +3385357180 2210629116 4148597911 1202809305 455672086 +4048940332 726424906 2269285382 3316666291 250231004 +2462114401 2308635961 3943593113 1266704610 1163967864 + 828848921 287923784 1938913292 1929880277 660026720 +1694073064 2327608261 686131676 3571825177 1310090872 + 843906573 2319937167 528434635 2049406819 3373034099 +2288595656 4123538177 820252657 271521983 28292127 +1239301430 58272310 3455007578 3839850828 3883402667 +4060701226 597088921 4078456301 2519171459 3626900665 + 52212125 3120331907 159131871 985166730 2236824863 +4060195572 217208747 3749149192 4269940571 1490968864 + 290092356 212271720 1078395790 306551567 3569154778 +3918766124 1715019761 2022281943 3894237181 1685061613 +3613570500 3884854785 1746685699 1974934664 3109086778 + 191094725 2026320531 858695557 1227189640 4209480691 +4119128751 469840833 3952391967 3525709291 531652111 + 917040323 590539629 3280239642 2289215332 569706427 +1889832844 3310878393 2396092275 1172707390 312670280 +3015965505 2063451345 3138590088 3591167004 4145089791 +4168674656 166403028 856460074 859310504 822163878 +1867811711 841721884 227849240 3851247325 59916961 +2590964017 122077343 1907758232 610616835 96783291 +2650533543 837605791 1082097965 2010518271 2620266369 +1066209021 2534182964 779292692 1298963853 3611682883 + 362586592 1849409613 2833380477 4018736478 1881193151 +4000743062 1789015738 325371520 1626243809 3545161922 +3098959584 293926097 3748930635 2379584738 310424004 + 8219353 191285632 72013098 508867080 2524106895 +1173604872 1746821946 1299664703 1489155837 2736533793 +1878394623 235447201 876569140 777848722 3710031465 + 445308600 1306046325 3169511728 3002405582 2906319429 +1017065573 2391738845 1632204455 1915589132 1293139389 +3955649589 3718614309 900446372 1404116789 4000130860 +2484929064 912006813 3525225278 1613317968 537734584 +3958185848 2349727129 82304607 3017584172 2177195469 +2911722307 425625638 334461051 3251097319 934896212 + 800472108 341276622 2700905245 3990616448 641387636 +1209957780 236027388 3337048604 2312820416 450262488 +4246816041 1990087069 621901267 3761510927 308535352 +2423363391 799259935 3536255815 1517219757 3251042517 +1609771552 670418175 3004508582 3801331787 674369786 +2459102211 3472827872 1524857071 2981241625 1209482347 +3507570951 1022898042 4238119858 2990929867 3737869670 +1783005784 3956102596 893145358 4248333549 4126981715 + 970294753 3782823697 1793671802 3583687220 3562326438 + 444934810 3248763868 1065283618 1661369025 3056949600 + 706764867 575458674 3036992317 2163501640 3381714343 + 595721710 77458567 1149744974 4225463217 971933200 +2874514061 4247146911 2846911276 3472989449 3618689153 +3136621753 2220597035 2453395120 3166114260 1419856729 +2073563868 2232629242 2665380307 1831624028 4065571792 +3228887488 4052810701 3673096883 2782398940 3464368053 +3976902066 214378622 3144291184 3831753728 3426318004 + 99629543 2579257929 175451450 3145770440 3980286744 +1987265694 2631682253 3240699503 2911487256 4215555091 +1907916097 3068515022 1214348574 4087495565 3841307810 +3133855061 2896148255 1452464920 3295295973 4014205741 +3983387873 4278530705 1285590983 2486012196 2645424275 +4088015497 1011201408 956627565 104107756 249913506 + 879980540 2505016230 1144832662 3262987074 853625579 +2545491673 1607844245 1657493894 4258031523 3494981418 +3245738256 2872824830 3102640800 3934790280 1215485083 +2165576981 691171919 890142672 320933457 3933525051 +2492443562 2246064783 2661424963 1581891487 1271384172 +1461803060 3471828900 1332453373 288105585 2299919311 + 167904102 1820959195 2866722432 2052650573 3406613036 +2679795393 3278648081 3378363089 4164467575 726954514 +1866835396 1199611926 2185729502 274315749 453317054 diff --git a/SFMT/SFMT.607.out.txt b/SFMT/SFMT.607.out.txt new file mode 100644 index 0000000..e5ff822 --- /dev/null +++ b/SFMT/SFMT.607.out.txt @@ -0,0 +1,405 @@ +SFMT-607:2-15-3-13-3:fdff37ff-ef7f3f7d-ff777b7d-7ff7fb2f +32 bit generated randoms +init_gen_rand__________ +1196421539 2865311212 3866479472 2692900087 3838928621 +3188765817 2751632982 3712143069 549918413 2026167923 +1600383423 1164248707 3597250909 1646078700 3597866549 + 738391729 1195673494 320418194 3419357688 4060638541 +3132037965 2907853147 886556822 1640020536 2638235623 + 538643813 513603633 1576774846 2624061267 1520310145 +1556074285 274920712 1875395000 435607661 4280948541 +3881013247 1871389704 1386666007 1521983728 2017380625 +2474071325 2968934185 563020868 1031564816 1981146826 +3652334148 2471529270 3572107826 3394691737 1294344698 +1209143334 488934364 347248244 887759301 539745038 +1564691999 177466989 1195243631 1676525668 3463273900 +2472936126 1317767033 3326192931 2206926957 2159193172 +3015304372 507778107 1649225853 2398850965 68775227 +4014588077 1498704485 513323460 58006716 2206203452 +2002124206 639160438 4021083080 2900290131 2631574044 + 809863548 620952881 3319558763 3208741780 3168227511 +2806750943 3328453134 3734687450 2975600227 747454709 + 382480240 1540538655 2520181844 2067407551 839678855 +3109877890 2876703613 4211018088 271968959 4231105707 +4158436362 2633767851 123617477 3990029657 2933852587 +1087074084 3643562721 2264260651 2862036524 820629023 +2559932954 3033951441 2454257183 268259955 4254748684 + 218177143 1085516335 2920669698 1369673038 3625847514 +3583791905 1549519964 92244746 2981951799 967416236 + 566673899 3823379343 3518440609 294612836 809034584 + 798567885 4145592634 4231868868 3923949552 3495405505 + 644091345 3484678002 1853985452 3562224034 77701257 +3985811366 2659094691 4160649567 1459273375 1206850698 +3515893001 4056739495 790262694 2170353942 3034023845 +1866606784 4108583244 3572767766 371629668 531290358 +4145080668 1681745291 3478318575 4265672250 4191849287 +3754770837 3787018798 3348570561 2359911217 1070488654 + 826188262 477544520 947161014 2815522 3598852264 +1723251845 4216818156 2269301827 341913345 3279941709 +1878860471 188578809 17554473 1797301125 796821606 +2518597957 1585735274 2861932133 4183436883 448055123 +3298281906 3858433023 2571242096 3320122719 264595292 + 951235594 302531725 3575697071 1565107752 2522984875 +4202633183 1343074970 1235668833 1052216889 3271484119 +1140051640 840134111 2009138304 3684412213 136414981 +2012147313 1721331717 1010475673 1242059377 3846082391 + 286635302 3464127941 3186894905 2873496456 3708705635 + 386739807 3768476892 881122115 1344888238 2196649106 +2408339015 2393724110 1409957917 4104329509 2732352324 +2245622770 2916279499 701367106 2818152461 97304239 +3868078005 181298085 2441965305 2924255565 1736376205 +2030371109 1197039000 3051970155 1337824902 2418923493 + 719072282 2447965011 2277636191 973455679 428543080 +3074528064 3081528202 2348783902 3291806189 2721462254 +1737336288 1671654558 1441380353 1414369745 3351091118 +3928797055 896415492 2615565720 2713114846 584692028 +1724505320 1369217050 2559792910 3709802790 2040574736 + 227534011 1328228308 433874042 3961897210 771527286 + 198818939 3489199083 997406006 3875971072 1806983272 +3961027289 1466189037 2322556159 3085479121 588533000 +2853731837 1306826309 3637561520 3708154266 943448030 + 360656311 3945855398 2606313341 492746354 487036034 + 164880756 3008148136 694325965 495409668 2864732455 +1814111757 4103554862 198926303 105165497 3097624350 +1943362337 1744306457 283634577 3092757275 2432009022 +3866690395 420956813 993852981 1455918011 4183606539 +2402504661 1683628286 1488936951 1818364464 382298201 +1911628866 699255764 3799985705 1363369809 881287919 +3577175365 552601418 3741886622 305397376 2138779629 +4245718058 1205661334 4050018882 2318877696 3098578905 + 511547863 2885006216 490558514 3342443666 3844780113 +3928194260 3879215495 1686207582 2906132996 1706797624 +3109314274 4273956052 1800863504 1207283183 1014386912 +1561444908 352645098 1708224450 488939896 3603991658 +1268297587 2483677019 1850112684 402212578 842568149 +3446271276 2380490792 28975013 3897647126 2877536437 + 369532329 490951577 2722903043 1958796242 683558750 +2306940213 1726077572 3391815817 98312053 2120427142 + 366014292 1325639565 1289879472 2265886217 3145790356 + 849278833 958196703 601367739 2218681360 1708472466 +3293000197 385381018 229518574 975826905 932862824 +3146025764 555913496 3030446353 2770044246 332991182 + 550073358 3130908017 3133667774 699686924 905020778 +2912691769 3284668840 1637231207 3413427200 3829933899 +2113281635 1753924041 497020896 4035187062 3330583188 +2341641279 2253354324 2906635077 748051051 210730258 + 275218493 370718452 3144507848 3572627242 2692586737 +3486799665 1415002017 2588197742 501158979 2216606388 +1959825514 3185369722 2743195581 3687005779 1584912299 + 444300290 665178297 2006322838 1889764006 561071313 + 101299867 3846697354 3376497938 4193750324 485450541 + 112718035 647550319 993795105 2820891562 3362348389 +2213093823 651858971 404350990 651498925 1504867463 +1900818130 65383700 1801919137 913649123 4269928469 +2662476766 3793173264 26869762 3499650644 1138980334 +1210199539 3362506186 2669170795 2949927941 3141248460 +1180911127 4129171431 504639688 1496063012 1709808543 +1689525624 878130828 3295985334 110840315 4047467918 +4145280016 2916569199 326683517 1768900673 595930005 + 324306786 1487137920 1124568703 3905978779 874730000 +3362468830 1397446833 3266311377 3560923693 1686697729 +1611392216 1627916880 3277255568 3443621164 581117864 +3719275683 3152667205 3675000896 3013638834 843597249 +2152932257 1940348938 2929823468 3096595336 3038582797 + 101884686 1840375592 1696430022 1979618902 2508655378 +3652581760 2542935628 404289830 3576446993 1809618356 +2402816497 2191713724 251469888 3652982646 3824773957 +1404879064 890695911 1904137674 662695577 3637070531 +3429921890 3594169910 3908626306 2264799861 3278108366 +1909713562 1640461275 867660486 98850410 3533713494 + 967115761 2269650721 3055851776 1894514802 2427310710 +2227931808 1050719741 510803189 522828620 3737103489 + 412000758 1398291763 2080584852 626153494 799093460 +3694215698 2673090626 3654915943 2930921591 647525186 +2316225776 1841613610 2942111578 1876524150 1496398320 +1104088489 3699360346 1539132782 184588763 3648180059 +3604669131 4157568956 1806964100 1417720133 931983072 +1968834098 2777088770 3873851830 1639173983 3543685261 +2065189356 1670581940 1223855034 2989792629 1809977097 +1875811443 4227562332 1670476847 1154758869 3427236995 +2498400797 319241644 1035366872 2947128631 267667087 + 226905755 3630268752 2665165917 449770512 3479613272 +4277953704 1304491129 246429665 4048627658 2335248253 +1721534446 3668219108 602606507 3606778707 217078527 +2462010980 189731322 4035734287 3051995431 3436042452 +3848332279 1303716288 596895220 2847087526 1793978879 + 789845679 3334761386 42259927 1988218208 1853172342 +3183943116 3115896099 2056268624 3565828958 2109847845 + 300329982 2438778799 624201808 1317928914 3709443147 +4282631257 79828958 674413184 2640064881 1140557428 + 107481386 833132031 2398620479 397057326 774701723 + 995399905 1688672626 212894658 2737370723 342159914 +3385239441 1387048271 1510776561 3854320253 1968630255 +3637445533 4055273425 2299077287 872799104 3124137491 +3615758003 1610473012 2470285439 3365937560 3074678675 + 895982664 3893733617 1510510873 3526687491 4041708170 + 748592940 372467988 2974139083 1369552376 3713393131 +3318567727 647786524 4093984756 2006863617 1163251866 +4253272489 4107786591 116333398 604910036 3311731128 +2440943214 3244822569 3636790172 2255133710 2433025708 + 112787416 3872548227 1233516411 708924037 2361018962 +2991368295 3303324385 2842011707 2178207559 249606939 +1222683236 2134069908 2078591261 1295550828 1306098784 +1458823628 1817292410 3760004583 97971808 3445630818 + 822646021 844827188 3065031254 3166318126 2300983832 +2251709321 274267653 2243231555 2161236475 2282271118 +3921858132 2497468803 3158556880 561740411 4265883388 +3061471540 4270596555 2022091249 2719052497 2214320191 +1603495991 379616965 599003062 2115484688 2744216056 + 565061522 3923412445 413733948 1867786437 2706231924 +3894232783 2637135933 3590645480 1769525659 135784527 +1117351223 187646255 4243744512 2831745988 180521176 +2966831424 4153583784 2368395432 710730097 2303744468 + 777615683 2586293103 1425694392 337023247 1130138042 +2733619416 2409353045 805250003 2445772358 1632125264 +2453317804 3914037689 3496190539 3612800316 2252268118 +2341251035 3326391324 1710159132 721335093 1830725060 +1630477302 2976298625 3053349000 222793695 2587918576 +3747179265 4000911840 336544219 4045457953 2050139410 +3064640381 2955225409 2817679824 3223027060 2303893358 +3840287987 3632674894 1831319195 1345007230 1225184526 +2417981680 3117819471 2859843506 1056817170 4052116406 +3872183733 3514499807 813274787 936349377 2007359068 +1253933179 3155500873 2096329073 546642626 665475055 +1473073709 2332233324 3323558320 95879818 492840830 +1920696869 3771395899 2576038047 1011453165 2681244132 +2476955960 2463332109 781125076 2028393533 204521083 +2320272404 2809583732 3289108397 1856267893 2391018094 +4028779855 808977986 153155498 2319616370 1309228705 +4028797170 610769874 1121362138 1981447595 325339652 + 610241177 3475612926 3872224904 122718344 1688488846 +1278996204 209382475 1919230322 386052258 396279010 +2576119162 1178251560 3232629172 2789003460 2962389702 +1481114042 1760721525 4036142681 3670570725 3117283094 +3165032966 1646380023 498747483 2252669427 822100766 +1101134705 2930081282 637591399 3040829742 137805365 + 428511268 22457782 1702963968 1038479242 1046427834 +2336657358 3197439937 1581079844 4114478551 1775898469 +3625286893 990848125 4208853553 3890606085 2897119912 +2729414723 2008262926 2899578180 3513543681 4120965189 + 217756721 526680465 4229365288 3483579946 172878397 +1775988343 2701094379 3784563186 3013726534 2918169775 + 548996991 2854852809 4162015982 3274014282 338197965 + 761382689 1064834258 4001550105 3350983253 1407587469 + 317254599 3248232859 1290091253 4011651573 3227939736 +2850615130 821598723 1808321986 1349876116 2429344939 + 249734354 99269121 1110843241 521462481 1129183658 +1366431504 773209265 1685383896 2218488528 3584750972 +3746609454 1646222603 1918617018 1626226587 1880734214 +1725948264 2071663621 3057073805 103432954 2431529109 +3091943973 2611245506 3584837020 2903196112 2004742767 +2043894142 1407953274 1474555657 152707034 93618108 + 783046825 3820152174 344516296 3292970244 3114538551 +1711409885 2567261312 1707970454 1171700617 2288151849 +2099703889 2664895095 375598407 1308750054 2910310386 +2392426188 3709863199 2150655288 3819094880 2063093521 +2228295690 3368794217 610202037 3890104132 851713523 +3310255686 2582885461 3505584812 160527117 3237023579 + 683953932 2499798882 2795490813 3691528275 2319728878 +2978139121 3587229750 1552802700 1555487280 249949761 +3800715047 349143205 2118420903 1423850027 1806771672 +4126288455 1829726551 1635451152 1509683305 3394280785 +1318548553 1985957974 1367744196 3463392791 2780736231 +3894488561 3157036262 3491812767 1724574180 3645035493 + +init_by_array__________ +1556592192 2713881341 1840174392 3468073604 2004354026 +1304494515 366015052 1011850603 67279901 1051755907 +1308953792 1479381587 1197340276 2749666614 1052362076 + 168556043 2392613760 3444358776 1926822224 1889847275 +3381829651 3127256300 575892644 690779511 2177747339 + 876361305 1258924403 1843502566 2615657527 4126312896 +1995725090 3314751056 3983944544 3639584965 2937574811 +2317092480 3919684981 2516099471 1540111829 2559931611 +3884249792 297435776 2215000335 3831860889 2332779987 +3771083128 2982917666 1289897207 2760622557 669535824 +3936118862 3080364742 2880890828 4053594458 3802721715 +1540829749 118351242 4275259452 1646758339 3671481171 +1236634677 2645527235 2562942478 1347268862 1297927267 +2057465222 4134548012 1663980978 2955981563 2196700436 +4028526500 1538256092 2628052013 2777368251 1222279597 +2555975830 300176348 2145743946 1323578746 100427171 +3726128684 1044809119 3590086589 2617649711 3493503829 +1511057261 162787675 3301664653 1545579015 431280049 +2853789101 882465036 1950759228 3393129265 2160602242 +2727551730 1706287957 2838736133 3145962937 936223657 +1018931109 3208024647 825834480 1644623576 1699087361 +4252038431 45500998 850117698 1871595684 3948521913 + 617638223 3658742302 484443012 2581115585 2640369858 +2904554187 1759213578 626588168 2108795136 1662136808 +4245639883 3855741236 184411390 2730827585 2514070377 +2871180667 2751576522 4279016004 3486055042 4050547537 +1925322977 2299933396 3340458091 1624389220 1595119545 +2146273476 2694418184 4095728020 2692711813 1326086380 + 599457867 779504759 3679544128 3753749243 1663274771 +2299160373 3580891083 1859575966 4228385133 3261029369 + 695799349 757696528 2731276496 3655816581 3079602515 +2143052304 195651560 3010985352 2360090997 2460054883 +1008575913 680965846 933678835 2664829675 3574567239 +1260731953 3639664216 4185254176 3474803226 40909797 +2776750904 3381944459 4076464616 2976399875 2082668522 +1598726088 1734386267 2611279300 311205417 3201176228 +2893289137 2797032131 3238017077 2092301401 1034273519 +1594528635 1387314785 662922052 2201696947 2923335212 +2001691302 4086698764 2369139061 1161293709 2762333179 +2662554687 441789430 3882191772 1090234286 3032622786 +3211037413 84667620 2486078138 907175135 4065918788 + 702591331 3029424030 1371185732 1148570789 4102140991 +1749582049 2932276825 4275102115 2213736392 2771782100 +3728394678 490178165 1142566982 739097413 307975374 +1806950837 3482941664 3376674231 1139030188 1555369950 +4225610701 2335363123 157204999 4293004658 1372903021 + 94129649 2527962256 2262382944 317501595 159987373 +3134579863 542363170 3321915644 1606412388 775721925 +3574943011 2461558839 1599787942 2798340814 608716087 +3178427745 3985211542 2880905942 386971705 474882803 +4291702277 2546092383 3359045870 295135838 79296164 + 158785280 805773175 1092883771 40230847 2229695891 +4005864302 369523482 1624215995 1381575190 1726775216 +2214858332 1436336172 3897680116 397583087 669286525 +3287180651 943956992 1934103213 2476851219 3288209383 +3681612823 2865943811 1954339107 4117844749 1843974779 +1267008904 2658133774 44899186 755345233 686968410 +1521676891 477471911 3484034910 2961029682 2395398949 +2134539233 724312398 2980142509 2229312550 3015342419 +3692389090 3253106465 599588717 3901588102 2808797698 + 411869396 1441761210 2752638839 285692855 2657232529 +1338089778 642485740 946549366 2125760281 1778513071 +1595296458 4235010082 2660035414 327777864 2926366692 +2931249289 2495474510 3876711805 1685925498 231150709 +2958482926 1971683076 4079743342 748560863 1887203170 +3220415930 4121053773 1588037852 3581847110 1012143696 + 779630500 442260588 1745834896 4067857205 4129456946 + 154033209 660650104 2871872439 56130217 1455233133 +1962920819 4134320395 2388115110 2136692741 3666696255 + 24896330 3662800383 777053154 1406737975 3399473000 + 602143869 125932812 217366196 2101891074 1779033414 +4200432798 2683028545 3623312792 3653437900 4193268247 +2911723447 1513559233 4056045416 1675540301 3171641093 + 46860421 4275427720 2536235218 3763038404 3839875348 +1817994307 4224499090 3348832099 1175797126 900920824 + 989697993 2391175418 2379211744 2740068049 633981162 + 936041259 3633858468 1801734952 3395137285 444281683 +4139311686 2592788790 2455135746 631339200 3847460057 + 445228257 1520487218 2685955887 2154370095 1239497087 +2522314627 277166598 1861562672 1320104828 1957660813 +3906785664 84531427 2373255275 192060126 3566142336 +4091831891 2210606995 3718733452 1840881409 2052909453 + 507369601 3355435953 2767829533 404764671 2105227200 +3838201187 2539918099 2026220113 1455844682 3746975315 +1096911848 1224562255 379067298 4073739285 1423209946 +3447333417 1269625850 2066300766 2869355360 2117956727 + 921477967 3913819321 2993262661 4048466912 3321625084 +2514494509 1899020827 2617748077 2825275571 2652230110 +2262498157 695237212 1890351188 254707354 4107111399 +3209646005 2560392237 1714108466 2123120224 36734592 +1762117499 3429054523 2802979686 3468819662 4052485302 + 607659670 1392665609 148102101 2057122833 1408599635 + 404849067 337151853 2259179235 1450297807 13037092 +3560908091 1809049720 2958361884 1897612139 3095752630 +2549311506 1971758214 1602398570 1683338829 2789927009 +3767015724 2346243151 4123552368 2567093056 203200826 +2360560686 114672545 2952878555 3580479836 1253681850 + 207028493 2742443921 1217910520 444724257 2402025906 +3276700120 409810719 2560033210 1603048388 1813071228 +1470593154 1745253272 2195212307 377190361 2328288183 + 401382585 2450634194 2006291461 3825372027 1722367338 +2692832577 1050697614 4119566598 3028428293 101061524 + 915217911 3408472996 2965960632 847616616 355432445 +1075726646 2378879589 3516710254 1563294375 424413191 +1111576600 835097676 2434532301 2607859622 941446560 +2251966337 4260262135 2422487394 3720498193 2910310630 +2301973528 1940810754 344319114 1547152173 640456954 +1074707927 1834890322 1607982657 417992674 1090397871 +2009422622 3191440508 1432705879 783663814 3796644066 + 791779766 1508136140 335075191 3979612823 3794303784 + 238855885 446618201 2790581314 2833699754 2009297696 +4194656370 1694699230 1271428251 3724397074 1608472508 + 142528536 997716174 3803341249 1128167233 2687605024 +2625356025 2055168913 1594254167 3243768967 2564427840 +1281827896 1916378262 1641520660 1963068911 3272856472 +1178319485 2921090963 2977623121 535152467 1044304423 + 901561798 2424344635 4221077707 1808585834 2755513906 +3355577025 2438113106 1649093895 568063824 1173751673 +3951226879 1928825599 2356443733 3413904573 1739787840 +4270093290 4130641756 1684246347 1023035457 550970779 +3290367637 3743204221 2421963305 2482593584 1996236391 +2455170315 162039676 3393556387 2116827952 376133197 +2921810488 1254918826 2449953243 1968684081 3354383140 +1370643236 1770810819 3603108351 1485228068 2524941749 + 809600614 3321121622 1875866389 1706152319 299551028 + 977280966 3007045557 2180066992 3741215075 2609076651 +3359153717 2000559785 1034425798 3553206650 1571671634 +2049056120 590790859 3246963209 2774711201 765394947 +4286794664 1661649947 96550471 2598119254 146138455 +4242668163 102790499 585811010 1167123242 203713764 + 456188028 3168161413 1807786708 3220206279 2508484604 + 624550581 2637177121 3241105352 3843262209 3747737858 +3076728900 1467914958 3099613203 878511215 3838000079 + 554463654 673201757 3805957607 2364115996 283960872 + 621872052 523765086 1975138089 733205552 849951398 +2449654800 1262858164 4071152536 1099282290 3213619352 +2540257149 1564432552 1928011443 2745777573 480577109 +2919947635 1906916132 2602859872 748271270 3183487421 +2779529741 2141777137 2368763772 2787238865 2449111643 +4098749624 80885680 927736798 2796906309 3717377139 +3495152189 507003952 1071984666 1356967752 3768351186 +1248595023 1604471054 754349737 2385813735 3824816244 +1832713010 3042912486 3444161026 3722439852 1102219726 +3635252707 2479114205 602394730 4165973019 1757739650 + 290838357 1951647351 1383596666 1704648841 1054912780 +2835686760 2486021870 4125857188 1651556820 2109948316 + 307218957 2581812831 2860961938 4235291043 2180932086 +2428540824 3855477946 2993328505 818228660 2717327011 +3278006137 3046951748 2118245185 1671287569 1808293087 +1639141986 1614709642 3102980783 80946040 156132284 +3273988635 463704798 443458026 1350781302 162942451 +3240980847 1096304380 1244482180 18815122 3128268952 + 441792506 3796914178 2664051115 3199159047 41929707 + 885197932 2266128873 2987789757 3379864480 4182706709 +1200872350 3283870806 1655889729 2985647331 18874732 +1544173242 2649931979 4089915939 671308686 959190883 +1969903421 1432216572 2463884262 2995132517 97025504 +2858545788 3015887053 60915684 174291011 3462170330 + 991244574 705674783 4267835414 3543140859 1415906014 + 956368536 176110722 3247658272 673487243 3645377817 +3861037016 1723622684 961347192 3516470162 695627514 +3228936384 1230738239 1859810813 3262871388 2362347996 +1968586373 265085439 644084010 1001415002 1333790203 +3517737980 3195724787 2265754813 1845182455 4120730508 +4290541093 2886015724 1924732003 3999671706 3838402651 +1981035560 1643352826 2170070968 726214772 4077433186 +1602289983 2741116677 2355817517 3400587509 1820368051 + 577116249 869934995 3620362636 3057237272 1977100821 +2041319904 3970370837 2843947037 1629161388 2103758655 +3787550875 3684856700 3136178047 2681908188 2857917430 +1120834666 2239870052 905409072 2964581312 2067602345 +2705035383 1100673578 1619715848 2726873618 2823831567 +1398204160 3074693876 3941921311 3987811376 3137528005 +4278780713 2383373510 1395190952 2007030616 698489535 + 724495519 2542942239 1633306940 1924685933 2351551465 +3393733686 3977993546 1981176475 3407916967 2246791509 +1167114087 1200105585 3939850748 1979047945 938015226 +3794154494 257644866 195309899 3681716935 1517319699 +3980402282 2417540492 1040716686 2139866247 3461903022 +2718025409 3735779798 1335999149 1304186696 859875403 + 364456909 3018556848 821525018 675165687 4189447268 +1652928276 2954511997 1515584047 96669577 1767449383 +2584965196 3789809599 2992874174 1936010922 2382026211 +2417057736 2161138556 1717127568 2363543864 3622553290 +2418648935 1575015841 1401096459 1013762322 390785017 +4236163519 2722095626 292053172 535701659 2441697597 +1269979192 1847939069 1720949988 1252649200 720837751 +4284728874 3153810484 2969469487 536339527 4268928374 +4108017776 1249838852 3375962852 2022128590 2700344542 + 923640229 1461565844 942318758 92486581 1163645995 + 684876949 3241807576 317693855 1298234403 1163254400 +3525767463 468056238 4080096339 2399926912 4043250518 + 435185531 2977625717 4139974839 1004735238 2082093241 +3798956451 3160950934 469248200 3593066883 294156713 +2060665322 225533871 240630624 988450315 2646753624 +1521876974 3761205673 879347907 1577977838 1502071712 + 816635195 3796095593 4151953092 3636831062 3259976164 +2787187451 1311239585 49123830 2987307464 1290024926 +2746445588 1794262040 396903876 232876554 2682545876 +2518876032 2415705441 4058432246 1897269176 2249840353 diff --git a/SFMT/SFMT.86243.out.txt b/SFMT/SFMT.86243.out.txt new file mode 100644 index 0000000..e130847 --- /dev/null +++ b/SFMT/SFMT.86243.out.txt @@ -0,0 +1,405 @@ +SFMT-86243:366-6-7-19-1:fdbffbff-bff7ff3f-fd77efff-bf9ff3ff +32 bit generated randoms +init_gen_rand__________ + 729010956 4245516629 2851064434 363057815 4150273260 + 802798522 976169071 3393068005 3351056475 2112374092 +2951503395 75264394 3725198372 3171075061 4054667720 +1970282238 2826304822 103324300 1192438872 1645653767 +3276917106 1837939138 3134877800 2607296330 1268482729 +2287079542 1979339044 1955581610 881350673 1823446539 +4048330951 3240075473 118504416 129971735 3591962661 +2091536776 4274939420 1863737156 1265039931 2781464376 + 910720625 1800307101 2661350362 1662715020 763261808 +4190901248 3240306562 4071392780 3521238710 2216729195 +2681794184 3704686067 1371630197 1425644030 3214704688 +3409026067 3890926247 1877897829 1214572652 4100786555 +2136104558 1577549957 3713059767 687516317 3474974503 +3987985113 256501997 4031868903 2957819669 2516381723 +3710683262 3903566687 1802116397 3447346253 817250261 +2174395407 1157688427 833430586 1326443572 3317666696 +1989394575 177775310 1326133551 1740093500 1606094052 +3953810581 1161317742 3840154932 239393099 1758212452 +2875981548 1246818203 2828412702 1043079420 3689339235 +3952173912 2266523411 2097168210 2424942254 1977723931 +3191248427 1141148931 2159755709 3163859128 1963754045 +3039521849 2267589370 654469580 3596215250 2001266227 +2863096384 3634136799 679081172 3343228716 3934885515 +3107771246 1617014000 1084059423 3412393079 414885861 +3240116095 3392583127 3068401547 2344996209 3082244636 +2191607617 2883406675 4215546335 3911079206 4057967123 + 283341933 1825707351 2761341934 2745563273 2411202686 +2245672085 3028564336 2067237660 1262025285 2431187699 +3343572994 4168260037 1982927877 4031455885 1056162342 +1972927344 754392849 2230139411 2079936925 3743828108 +4126556308 3575289489 2452908300 3518576153 3043225427 + 708606088 1678373786 1034219615 2970746029 1701232684 +2201103679 4046337686 2670360177 1398398336 1434766889 + 386371989 1626226263 492400945 481950391 1460878895 +2628214666 32289354 725695154 2364791700 4147904097 +1330666671 951572257 4071746789 3472089248 1024391664 +2870237847 2220169758 1458643991 830628738 4203519645 +2158683768 3709772869 404705230 3939314002 1103584614 +4126061147 1901021337 2461209386 2595029040 1891531232 +3316358683 2334074771 1903339503 63429741 836860961 +3923685094 3891307686 4283600816 1560907700 1700586486 +4027428226 389182566 3670491119 3043511022 3298652151 +1549588263 360800661 1032595419 2181736673 2391118495 +3215035908 3641500686 2981094278 1462339155 3669218017 + 747623658 1310489742 1661043588 2163895602 3922398827 +2279556901 1656918269 2674387238 2446094403 1095853624 +2009826539 2956799056 2308543818 1400656324 1067418943 +3509245063 2691006827 3696168052 3639848521 2704738475 +3657965231 3531869387 3213091703 1230098623 1764041643 +1318921975 305982504 3180433163 2730063134 3742799449 +2317197147 197078888 839071640 888019515 2229014632 +2173551210 2144468959 3091463255 664070932 1307118288 +2053036022 2738928606 1699931212 1060293457 3942095912 + 776198701 505412647 3493765645 829893884 4218593896 +3859797268 1277761100 3078428845 3060646271 1279588255 + 509968865 2429696176 1638741938 2735497608 3118275229 +2973402167 1796599314 2822753828 3074430055 2972512995 +2243015695 3479222174 1242301285 2866876508 2293528727 +3936735978 3668861260 1082401638 4107997703 3134202231 +2831454223 3621360765 1943611588 2772460896 4185398010 +1004507088 4018759773 3821877289 2389953204 3886463573 +3373595801 2492703200 647435995 3664523778 3980639492 +4100788114 1445534383 3480168898 405585975 4271719706 +3448968408 2238517786 1669484731 2123645126 3453964614 +2617074879 13995529 1381016801 2528612293 1331221517 +1477363636 3926557641 2237361776 2346477954 53455005 +1071265630 3265780151 2766486889 3726613115 2531736866 +2910433974 3595223566 4275493813 3209923272 497970084 + 855160633 2425828858 57729569 2398339897 268041903 +3734888826 91235453 2345061755 3595316747 685652234 +3531007132 4090360456 3341498190 383924394 4030577791 +2456025320 1998244838 482407387 2944560147 3955236550 +4008437911 2464349259 455158039 490555617 840706181 +2978647503 1804206358 1025005403 2142837153 2309021659 +1847609206 3518581333 108081811 992944563 3498090648 +2994051750 2991940712 758795200 1448280814 888276860 +3470929408 3145149528 483815082 2823832788 3764323061 +2144188577 3670832015 344906016 1874881610 1082160472 + 203711731 3254093292 365574161 911275170 615087091 +1242348040 1330138764 3638990628 3672526066 3004026353 +2175177269 3340195954 3911004560 956880536 312377411 + 280838375 2864682921 1832506819 1775787578 3016957190 + 186310818 3483990367 4159255940 2651833909 1283932244 +1512006886 2103626414 209688809 2652161551 2461547664 +2620510199 645182508 2058247389 1394959005 136956934 +1155807397 3701803893 184596033 3688850764 3581259789 +2834785331 1720826765 1135293870 4197167465 2837977447 +2845229313 3654632919 1743103177 583096433 1844273856 +3880118263 2210301412 558291137 3162955681 1733939067 +3740476151 1579067969 2141789151 3677512135 1483341249 + 956880446 4250192148 2637623631 1493912249 2537223037 +3246604399 2895045064 3475724970 1857821732 1466989523 +4158684710 905806571 3016878587 875032262 1058447535 +1475580338 3045563026 4024347645 3809538152 361863533 +3955301503 3836208842 69482559 2249036788 3129568965 + 1200753 2391268154 3511230203 1768492378 4116779442 + 293792430 1667422872 4264595309 2534933783 701873615 +1757791677 448307575 4007528520 4007513845 2779548099 +1560781623 550777012 2698938147 801405929 2927098133 +3730253117 1260454516 2603372086 1157755133 3432365810 + 407480530 1294231974 3297404415 2612149380 738197407 +3892088373 2341602773 7592194 348342543 3342111872 +3521969406 2734056325 751069145 3972010741 3899949399 +3155733721 2549441157 2809118078 1492263425 2607114222 +2515464697 367700352 818293454 3477949309 1762073966 +2657244603 3213965552 1001612746 1036362360 2271269021 + 98908859 939819937 843394200 3968314675 830345119 +2821766013 4142088541 2744143338 3818660546 3323527541 +1470664619 3674784285 3895701971 1060102331 4141523920 +2492162101 2353153078 1132385908 1838838398 1627034847 + 748395117 1949555789 954483925 1968656545 1987154068 +2818175581 2775828346 499336891 2028392560 1470060285 +2518056657 1654542697 3345563418 552345174 4189901821 +3780872161 3853103084 4234929235 536089383 3103678518 + 718238933 1331331083 1435090206 1889684288 1462774461 +1537819088 2572325365 370331116 2725029072 756922289 +3608759848 3948633836 3789181628 3327241266 1635558909 +2211726424 1587643204 2077448904 3373812985 4051582185 +3132370070 377711482 992004943 1003802471 2493164736 +1781250968 4148826668 812982322 2276021433 2081555884 +2861351479 421702633 3094615582 2065430361 1294405142 +1470055929 1065051109 3422154346 510532463 584484083 +1605964174 2978459459 4062994652 592525574 2816167511 +3806542768 1839580221 2366229748 2809729394 2086631212 +3886315615 4120460884 3363911317 3866152539 924199459 +3918265448 3675032787 2103485162 3570626418 4205051978 +1229346744 1483779908 2994240418 1296460692 969956593 +3107695883 2748959663 4044113738 767194251 3288615551 +3625423774 1102298349 2726790491 3919602997 3876653085 + 752097278 1272297311 1424989193 3485650104 2708742514 +2209576765 231814313 3769493048 1519951132 3005702085 + 492505731 315603780 1521149790 1836206806 8923089 +3849311358 3856139290 1006598280 2442103768 3740655309 +3110544479 2326773515 2912274838 3955847546 1102953895 +2795144531 2664788818 1297485889 2975844926 471418468 +3364065649 2457504318 1390435412 130517954 776248116 +3225796107 1551933429 1515865777 2058126181 1068451002 +1905363428 4084892408 960467460 1484204142 3857504453 + 947683105 636184077 2958017175 4247848375 588168350 +1377797941 1593939803 714732730 4127411544 3144714541 + 310200065 1153028864 630717440 474192919 583394638 +2206060302 2051227633 3356470620 206793455 299622012 + 547759498 518154368 1287476184 1668907344 2398107896 +2261319555 3052930212 1275920809 2265433157 2970292714 +4198496198 298206029 1923974956 4021416493 3291131619 +2732097473 1841884448 3698918219 1937141518 3891483873 +3442683595 2094678316 721967122 2002904374 1541332768 +1886968642 2151165910 2472474128 3972590168 378327601 +4082985483 1992757200 3844461420 3483041022 1455851379 + 498308106 3258630228 1977086874 598580485 2802264261 +2824852478 2687114899 1815099863 1255085601 2542289479 +3748141675 3290276363 2189933079 1654265127 2803680420 +4248276931 1243875867 2241173763 3038297380 1597301639 +2190196158 2496219619 2119114031 2403493446 1102203512 +1460097018 584419755 4059382205 2374358877 1476960232 +1383481623 3449132780 2111366846 3411377385 3872603731 +1399408425 3203153665 1083384435 201295826 1427860254 +4081776486 320259891 3924338797 2864392125 3495053400 +2999890342 995543149 3213994701 1339779519 258066582 +1819748230 3257648050 1305483209 1240684732 2691672352 +1713056899 2164157758 1778642761 3162455645 447994277 +1335690983 2151511043 1381539085 3196339150 1674815487 +1319762492 700701192 3428082639 3518808088 1749810767 +3422519286 2432877187 770737794 4059924715 2195426623 + 259935033 4167398154 3324349141 739599641 3845440202 +3545350790 3612324675 2192230155 1548175971 937162094 + 203279111 393686178 4168364525 1599778598 2233988210 +2630437051 515739758 1228695103 1711770102 3982132583 +1622416320 3224168482 1161443667 186554552 4219595220 +2513774714 4222912597 3233812998 3055654171 3961857144 +2565297041 3743687880 868973910 2217774352 2699858314 +2124304791 721186157 212484339 4037384865 524514500 +1436777513 1225661161 2642161873 1487431520 2940228565 +2080942134 908374070 2820970552 1594228495 604039131 +1504532155 2510624986 3034247087 2532269705 220741335 +1127623311 2547541078 126704043 3092086086 3639117079 +1148159661 3734337273 3521598637 3693492906 1125551373 +3847604950 367502671 4143880100 2781734525 811685177 +1939954097 3298647545 141074408 4229084407 3127462752 + 467242827 2611487694 457899207 3674387256 3389423083 +3761844294 3127319307 110735185 668485394 68929538 + 440108597 2359099634 3921057811 1062337191 2057462132 + 757735442 721661736 1075969837 1373986067 3127600229 + 265107800 1254380190 2503509045 267081199 1469044117 + 918804406 512292947 2553144455 1427553643 1920872478 +2241527618 2556155948 3035212247 4074653117 15041492 +1164794895 320094188 1918433870 2083084809 3168846156 +2652084277 322821672 2894596186 2964847989 2744014862 +2201570264 3977857627 3380703105 3174277560 195439905 +4173380805 212478290 3748429722 1003643790 105725427 +2268847723 2756816290 124651683 973414226 2218060667 +3771155392 3653038793 97751670 2719070801 2269904449 +2649780074 1581241935 4125964342 648976279 2772488746 +3612590868 2975870828 2862756677 2963847772 278116730 +1526571968 2432559256 447115025 100891833 1470984623 +3053438437 1057147666 3842358627 3629670374 3627859257 +3641245524 554945544 412029681 2509880133 1564568268 +4006513335 1088660626 752462740 4186652972 3432980371 +3910985535 100094501 3120362616 1854432382 314688154 + 522122712 3026095676 3681962735 1851548627 2153846465 + +init_by_array__________ +1213401037 1002219625 3788189515 93095675 1795375119 +1808998847 4076462670 1269636572 373702949 3356118227 +3950917039 1031381744 1194934186 3292904843 3270983098 +4013778474 3819662841 3810490693 2451963113 794766842 + 940337222 1333176417 2492894110 3815163219 1954977255 +4081804223 2056609068 572576408 1489430565 1332009465 +2274262584 2603751473 1622933372 1392147195 1452768864 +3805590192 4174204325 178363955 3753630707 3694261297 +3746868623 809795660 1587666085 3047614531 2544206440 + 271172382 3577649978 3782077959 1080058267 1609836193 +2395740271 3301016495 2742038099 3721735030 2582511269 +1620909122 2247508014 831480346 3883723715 522929941 +1232038779 2682273014 1769584739 1058456033 6337615 +2609862123 3957258151 508083088 3067603061 1238577947 +1540705381 2363860633 1646973919 2697693571 2094758834 + 997864129 3674187401 3555146101 2513681524 2427901422 +4139582134 1249778801 2933775913 1208745439 833054245 + 226037094 3361439176 2360034639 731605689 764942843 +2394647425 923867126 4242388902 2271245870 1117874031 +2365323303 2347482462 3033036290 2303957295 1765201161 +4141588795 422117451 2299940481 230156325 4012497835 +3747882391 2934073988 1091932655 342353629 5586442 +3584836627 3656266524 3528714782 4142382649 2464628244 +1297683482 2426249706 575471389 381694163 3351210869 + 885374272 1849329256 1419416589 1880533361 3953304143 + 897229606 4250664871 4013803380 3290132224 1646393872 +4093440915 280719033 2047322779 1356847086 886856583 +1593677749 3476521925 1970050786 2358740102 1311182559 +2869125693 211865142 4069373597 3554212940 166889574 +4285007264 3050291917 3950870595 1028938734 3486397217 +1896930485 332027367 425164142 4051587231 3868242151 +4216664206 1652064451 1324674794 985265162 4095434235 + 597665698 3783258350 2797146500 2006908765 3359031041 +3908532852 3733853616 2335115317 4156443603 858075300 +3399928503 652790337 2026749703 935005793 4246320173 +1080203296 3293981718 983876287 411173312 3019821437 +1983789230 218616616 323041965 2215013039 1401362246 +2622149389 3015201269 1883429325 325278760 3680641326 +2747217382 1598855851 1215319906 3976809275 3831807375 +3385761537 1964266316 2142040207 2502117845 908785041 +1705515573 1915231606 1270163815 2824068016 3610830587 + 724504274 308147842 3432514289 1624095708 2718149267 +3175810064 3608031230 764529199 1288567466 2055305201 +2031751267 4028468099 1693536571 3316411300 2605553626 +2902169638 2287627627 934898594 464375985 1110793572 +2578052236 604058164 3850731763 759290885 640351056 + 855968309 121241201 1377248171 3471452241 989724146 +1874965893 2818024967 1099221252 2575897924 1211288100 +3386309408 3980049659 121399517 1022796858 1416027009 +1094149839 536118347 457632147 1015209083 464261658 + 641239573 1753875184 1323212669 3646085356 1394493575 + 164907016 2568646193 1298591334 2596978376 2713346823 +2235719212 3404874420 2926483015 817521639 2325337599 +1190194336 1121711051 2871987415 1996392102 3732019047 +2057754050 1285797620 3525747015 3599316192 1311557910 +4073156812 3334963259 501862533 3187185148 2834493700 +1962918922 3193906273 2607994135 623782957 2954186234 +3505476359 1037699835 528251538 3827319387 537623337 +1608895986 1044022733 2299981400 3038608441 997582371 + 723669727 4197437247 3681222029 2193076438 115962248 +4011967047 3467475503 2072481816 126311702 876614208 +3478515577 2646238025 19562665 378399552 3642937993 +2058611917 2111004394 1926866103 2887742563 618906666 +4258407965 2958263973 2419816644 3314626229 1442458721 + 558076912 3053848791 3333535560 995592633 1047922908 +2356500762 4207275767 376639869 3529066690 4222332910 +3156552049 1462554360 986966587 1767928657 1429222119 + 977695158 2526255648 2982685435 3869803532 1095012039 + 267680546 2845102093 1082566213 1332136828 522815606 +4139687737 330964150 3454169628 2201079869 1740196729 +2349409998 2818834539 2120939493 3376126758 2946051667 + 4924567 2111031725 3824175290 2473266075 2428982960 +3102587221 3690443407 506689177 2798344888 3525715741 +1539031458 3636702492 1470941841 175810149 2827707744 +2903465077 1650959247 3437601585 3034497372 472118010 +4051978563 1901031796 1409064727 1971741620 2527435792 +3672974796 1393942329 3819796441 1556101329 2052248169 +2557936496 1848902047 2235898955 3973767610 1690868146 +3077322427 2608200001 833944767 3998542921 2008926979 +3802104409 2450570315 2426406043 2198590908 3979654780 +1561617744 1323118922 4070281713 284790709 4141515358 + 736142438 329507857 3052265563 2317825753 1742462174 +1594087153 4088013046 4254983338 429583236 972856373 + 628743711 2381102700 1051287930 627333394 1597449252 +1382413907 782354833 3434647006 1226629497 906647676 +3929130393 3973610462 342835343 1928368793 1394796823 +1934497469 4289189187 1315021676 2031856979 3587930678 + 868328634 694962903 3165451711 3251192370 235342767 +1510092975 4044997301 3984157879 1375892399 1731198083 + 897183534 3802763805 814589972 142299678 1207574729 +2721196600 3012142849 3377965874 3938002659 3456025350 +2487959559 904765592 2292812414 2599274412 2178549968 +3271888617 2907425088 1128303638 1801894018 869026091 +2035727974 3148527216 2516657100 942617434 4270550483 +2321278085 11963886 1159717858 953580654 4175912858 +4179683786 2182988288 2504001291 1082949763 1612523311 +1215231374 4175744445 880012230 3989047066 453294526 + 586221520 3768508464 1827725669 4241587799 441082319 +1298770459 2497310139 4196896920 1577701951 4254714667 + 862249229 2012903970 2096820613 1990849796 1703270117 + 852272511 3229237980 3697809515 867672785 17221026 + 288848412 2088315744 1440742383 3844911232 2986498221 + 814099612 2062983048 229264819 2079291882 323917132 + 243717768 356852074 201866217 504556726 3315205738 + 450701405 4134049543 856165036 2961305615 1651574742 +2092328938 913251909 2932915112 692676614 691196510 +2546180050 4083776864 2480694391 3163041102 2432664524 +1725997673 3546933482 992733299 592525824 295713684 +2993483017 297440700 3517389226 3599068943 2280378170 +3472102781 2823687084 1072311987 3571812747 550522631 + 204762998 965995049 2603455559 2759877645 2499285182 +1878178774 4125269177 3992081280 3879467901 3731604236 +3424565176 2420188662 1230680928 224329290 1789127563 +2356611594 4232337703 437915186 527139689 317221748 +2820346665 2371412394 1091430547 362811554 3954005242 + 589811487 3922172475 3682858225 1305600294 330864566 +3811823509 969630425 2242311394 2120243236 3945642955 + 444052283 129657022 961406690 4012095830 1569950408 +3057580478 85571849 4169424671 1045676313 4192235593 + 155093330 1287782822 186319587 1070205521 1351656704 + 701839079 4164473197 1426746528 4013088441 1424854980 +4257176207 2098556313 2714455545 881819196 2149812594 +4224374605 153249521 762156887 3911390861 2314558009 +1509054394 598675012 4193138277 2822137310 1277707950 +2399873326 600095973 1046837556 1727252309 1921065218 +2451546993 4286744527 2429014699 917512105 2146476202 +3314509263 2240592149 1399312633 1924468513 860594147 +2402718697 1090036732 3451548256 631863464 3760041460 + 708486403 3771336539 604445173 939789219 80036401 +3590064041 1695161011 3984992088 2535160053 1048040763 + 842173014 879261125 3263255701 2693326530 2787136932 +2203029018 2527879816 721332286 3943249838 1439267105 +3407165594 2652438420 2510159896 1895686121 3010461540 +2019063783 377456939 4058553802 3985549007 3990648065 + 35891133 1084255889 4058741536 3017262213 854733992 +2961817127 1566191274 1269974535 1061385893 1934296790 +3414627357 1207154213 2169063962 3645713217 1479522 +2689985438 1634530225 864065277 2672726682 859689319 + 635323776 3365255313 1569018822 4217263691 4042097075 +3695316210 4138227098 629666892 1351285517 1934369390 +2162647800 2099295887 1271763036 1883303738 2253158917 +2571830301 2021354299 4245348230 930564723 717657347 + 860626062 2635560677 3610527454 608615661 869271169 +1236749490 220395479 1578173002 3119440492 4102908789 +2883369051 443494207 3066476468 2053051671 3495052118 +2931697191 2445226742 1168952815 2722178203 227518833 +1821405664 1984333173 178408471 1649711654 2741506961 +3736312552 3057151173 3610556956 3408112927 1335860450 +3378168144 3939908355 3599806580 879059944 3157765948 +3569390375 3320093939 453056499 294491075 3502570840 +2351671522 2097831502 520013670 4122641375 360833785 +4032004203 605909800 2821812620 768719594 192414323 +1688520714 157860104 3327948248 1240329952 3212947902 + 976889466 3548320346 1762646325 342962173 1003544616 + 65126654 471424221 4061906609 350603531 2047537397 +2460383607 1124011704 2239298963 2401787777 2395657063 +2809606252 4011206815 2103078498 849681665 3239658138 + 454377878 318962394 134678707 1645848595 3688219627 +1119459724 2212606443 243069356 4096678109 4049950924 +1430188855 3376687605 2713071284 397063508 202199470 +3207123536 3523498674 2144158622 1156392159 2897908607 +1400157671 2394352073 990056620 3144770445 1536804654 +4089632658 4055427606 2183978336 2970981982 3525778176 +3366552852 3242943082 2117204540 3996086902 2746280565 +1949889669 2949740123 3138662162 50154986 94445067 +3860163230 1398775754 1275595861 3221456668 1615414812 +1426209298 1509166518 2886331650 1361931038 4247915749 +2235497887 1145437786 2190827817 4167305565 3361795949 +4120512272 517650201 2794964517 4067973019 799550940 +2100720011 1656535186 3554801317 2273864605 3721246389 +1848650174 4111661788 252555371 1479149169 4207511886 +3771592078 1085550976 1444352474 361783830 197262084 +1872651058 510129635 643408024 2380283299 3537991311 +4108692298 2712439525 4185893506 3127244235 1545177637 + 775067312 1234633845 2293720577 3778045647 1893569650 + 955596059 3130502632 3512322487 2457236623 3247250980 +3633960328 2429641312 577152631 3611721077 1890309659 + 875637133 2890867574 152541005 1205356740 856777352 +1962130546 4228049260 1832751323 1136560654 2320155579 + 749675601 3954333865 1704165610 2177165756 1966195240 +3547474042 501064771 290232796 3418362513 1609407374 +2133025968 3544255562 4049262104 4016434687 2026338560 +1105071235 3970613579 3009120745 117571106 2728067687 +4254524777 3624601829 684100681 3881760944 2157408568 +1633150817 3607482443 1195137474 838063811 2671430283 +3779028933 184059818 1998815784 754698425 879596005 + 855239848 1318366942 2498942515 687484589 1378955192 + 895763157 3400833754 2912732490 2791045459 639561355 + 638097599 991007343 1112019452 1450713999 851566038 +3014206548 1019682192 259110455 4013700475 1137615360 +2333427341 1665782564 407615411 1645678339 1712572929 + 427221509 1115350847 183410243 3117255003 2926399354 + 357446483 3130495927 1177477989 1487365345 3225554801 +2764909127 1893438844 1433636831 1121233427 212375185 +2235354016 440100203 1201781269 1401424411 4256059105 +3476447550 3958909757 603116189 1992155441 1450512874 +1301692771 2969787235 4092530603 1954938445 873105978 +3346443957 300451651 517315823 3784036939 166169681 +3888022637 3342589770 4248214348 3902418067 1571362573 + 778966034 3710173278 4226663802 2983892053 625306958 diff --git a/SFMT/SFMT.c b/SFMT/SFMT.c new file mode 100644 index 0000000..1092971 --- /dev/null +++ b/SFMT/SFMT.c @@ -0,0 +1,427 @@ +/** + * @file SFMT.c + * @brief SIMD oriented Fast Mersenne Twister(SFMT) + * + * @author Mutsuo Saito (Hiroshima University) + * @author Makoto Matsumoto (Hiroshima University) + * + * Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima + * University. + * Copyright (C) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima + * University and The University of Tokyo. + * All rights reserved. + * + * The 3-clause BSD License is applied to this software, see + * LICENSE.txt + */ + +#if defined(__cplusplus) +extern "C" { +#endif + +#include +#include +#include "SFMT.h" +#include "SFMT-params.h" +#include "SFMT-common.h" + +#if defined(__BIG_ENDIAN__) && !defined(__amd64) && !defined(BIG_ENDIAN64) +#define BIG_ENDIAN64 1 +#endif +#if defined(HAVE_ALTIVEC) && !defined(BIG_ENDIAN64) +#define BIG_ENDIAN64 1 +#endif +#if defined(ONLY64) && !defined(BIG_ENDIAN64) + #if defined(__GNUC__) + #error "-DONLY64 must be specified with -DBIG_ENDIAN64" + #endif +#undef ONLY64 +#endif + +/** + * parameters used by sse2. + */ +static const w128_t sse2_param_mask = {{SFMT_MSK1, SFMT_MSK2, + SFMT_MSK3, SFMT_MSK4}}; +/*---------------- + STATIC FUNCTIONS + ----------------*/ +inline static int idxof(int i); +inline static void gen_rand_array(sfmt_t * sfmt, w128_t *array, int size); +inline static uint32_t func1(uint32_t x); +inline static uint32_t func2(uint32_t x); +static void period_certification(sfmt_t * sfmt); +#if defined(BIG_ENDIAN64) && !defined(ONLY64) +inline static void swap(w128_t *array, int size); +#endif + +#if defined(HAVE_ALTIVEC) + #include "SFMT-alti.h" +#elif defined(HAVE_SSE2) + #include "SFMT-sse2.h" +#endif + +/** + * This function simulate a 64-bit index of LITTLE ENDIAN + * in BIG ENDIAN machine. + */ +#ifdef ONLY64 +inline static int idxof(int i) { + return i ^ 1; +} +#else +inline static int idxof(int i) { + return i; +} +#endif + +#if (!defined(HAVE_ALTIVEC)) && (!defined(HAVE_SSE2)) +/** + * This function fills the user-specified array with pseudorandom + * integers. + * + * @param sfmt SFMT internal state + * @param array an 128-bit array to be filled by pseudorandom numbers. + * @param size number of 128-bit pseudorandom numbers to be generated. + */ +inline static void gen_rand_array(sfmt_t * sfmt, w128_t *array, int size) { + int i, j; + w128_t *r1, *r2; + + r1 = &sfmt->state[SFMT_N - 2]; + r2 = &sfmt->state[SFMT_N - 1]; + for (i = 0; i < SFMT_N - SFMT_POS1; i++) { + do_recursion(&array[i], &sfmt->state[i], &sfmt->state[i + SFMT_POS1], r1, r2); + r1 = r2; + r2 = &array[i]; + } + for (; i < SFMT_N; i++) { + do_recursion(&array[i], &sfmt->state[i], + &array[i + SFMT_POS1 - SFMT_N], r1, r2); + r1 = r2; + r2 = &array[i]; + } + for (; i < size - SFMT_N; i++) { + do_recursion(&array[i], &array[i - SFMT_N], + &array[i + SFMT_POS1 - SFMT_N], r1, r2); + r1 = r2; + r2 = &array[i]; + } + for (j = 0; j < 2 * SFMT_N - size; j++) { + sfmt->state[j] = array[j + size - SFMT_N]; + } + for (; i < size; i++, j++) { + do_recursion(&array[i], &array[i - SFMT_N], + &array[i + SFMT_POS1 - SFMT_N], r1, r2); + r1 = r2; + r2 = &array[i]; + sfmt->state[j] = array[i]; + } +} +#endif + +#if defined(BIG_ENDIAN64) && !defined(ONLY64) && !defined(HAVE_ALTIVEC) +inline static void swap(w128_t *array, int size) { + int i; + uint32_t x, y; + + for (i = 0; i < size; i++) { + x = array[i].u[0]; + y = array[i].u[2]; + array[i].u[0] = array[i].u[1]; + array[i].u[2] = array[i].u[3]; + array[i].u[1] = x; + array[i].u[3] = y; + } +} +#endif +/** + * This function represents a function used in the initialization + * by init_by_array + * @param x 32-bit integer + * @return 32-bit integer + */ +static uint32_t func1(uint32_t x) { + return (x ^ (x >> 27)) * (uint32_t)1664525UL; +} + +/** + * This function represents a function used in the initialization + * by init_by_array + * @param x 32-bit integer + * @return 32-bit integer + */ +static uint32_t func2(uint32_t x) { + return (x ^ (x >> 27)) * (uint32_t)1566083941UL; +} + +/** + * This function certificate the period of 2^{MEXP} + * @param sfmt SFMT internal state + */ +static void period_certification(sfmt_t * sfmt) { + int inner = 0; + int i, j; + uint32_t work; + uint32_t *psfmt32 = &sfmt->state[0].u[0]; + const uint32_t parity[4] = {SFMT_PARITY1, SFMT_PARITY2, + SFMT_PARITY3, SFMT_PARITY4}; + + for (i = 0; i < 4; i++) + inner ^= psfmt32[idxof(i)] & parity[i]; + for (i = 16; i > 0; i >>= 1) + inner ^= inner >> i; + inner &= 1; + /* check OK */ + if (inner == 1) { + return; + } + /* check NG, and modification */ + for (i = 0; i < 4; i++) { + work = 1; + for (j = 0; j < 32; j++) { + if ((work & parity[i]) != 0) { + psfmt32[idxof(i)] ^= work; + return; + } + work = work << 1; + } + } +} + +/*---------------- + PUBLIC FUNCTIONS + ----------------*/ +#define UNUSED_VARIABLE(x) (void)(x) +/** + * This function returns the identification string. + * The string shows the word size, the Mersenne exponent, + * and all parameters of this generator. + * @param sfmt SFMT internal state + */ +const char *sfmt_get_idstring(sfmt_t * sfmt) { + UNUSED_VARIABLE(sfmt); + return SFMT_IDSTR; +} + +/** + * This function returns the minimum size of array used for \b + * fill_array32() function. + * @param sfmt SFMT internal state + * @return minimum size of array used for fill_array32() function. + */ +int sfmt_get_min_array_size32(sfmt_t * sfmt) { + UNUSED_VARIABLE(sfmt); + return SFMT_N32; +} + +/** + * This function returns the minimum size of array used for \b + * fill_array64() function. + * @param sfmt SFMT internal state + * @return minimum size of array used for fill_array64() function. + */ +int sfmt_get_min_array_size64(sfmt_t * sfmt) { + UNUSED_VARIABLE(sfmt); + return SFMT_N64; +} + +#if !defined(HAVE_SSE2) && !defined(HAVE_ALTIVEC) +/** + * This function fills the internal state array with pseudorandom + * integers. + * @param sfmt SFMT internal state + */ +void sfmt_gen_rand_all(sfmt_t * sfmt) { + int i; + w128_t *r1, *r2; + + r1 = &sfmt->state[SFMT_N - 2]; + r2 = &sfmt->state[SFMT_N - 1]; + for (i = 0; i < SFMT_N - SFMT_POS1; i++) { + do_recursion(&sfmt->state[i], &sfmt->state[i], + &sfmt->state[i + SFMT_POS1], r1, r2); + r1 = r2; + r2 = &sfmt->state[i]; + } + for (; i < SFMT_N; i++) { + do_recursion(&sfmt->state[i], &sfmt->state[i], + &sfmt->state[i + SFMT_POS1 - SFMT_N], r1, r2); + r1 = r2; + r2 = &sfmt->state[i]; + } +} +#endif + +#ifndef ONLY64 +/** + * This function generates pseudorandom 32-bit integers in the + * specified array[] by one call. The number of pseudorandom integers + * is specified by the argument size, which must be at least 624 and a + * multiple of four. The generation by this function is much faster + * than the following gen_rand function. + * + * For initialization, init_gen_rand or init_by_array must be called + * before the first call of this function. This function can not be + * used after calling gen_rand function, without initialization. + * + * @param sfmt SFMT internal state + * @param array an array where pseudorandom 32-bit integers are filled + * by this function. The pointer to the array must be \b "aligned" + * (namely, must be a multiple of 16) in the SIMD version, since it + * refers to the address of a 128-bit integer. In the standard C + * version, the pointer is arbitrary. + * + * @param size the number of 32-bit pseudorandom integers to be + * generated. size must be a multiple of 4, and greater than or equal + * to (MEXP / 128 + 1) * 4. + * + * @note \b memalign or \b posix_memalign is available to get aligned + * memory. Mac OSX doesn't have these functions, but \b malloc of OSX + * returns the pointer to the aligned memory block. + */ +void sfmt_fill_array32(sfmt_t * sfmt, uint32_t *array, int size) { + assert(sfmt->idx == SFMT_N32); + assert(size % 4 == 0); + assert(size >= SFMT_N32); + + gen_rand_array(sfmt, (w128_t *)array, size / 4); + sfmt->idx = SFMT_N32; +} +#endif + +/** + * This function generates pseudorandom 64-bit integers in the + * specified array[] by one call. The number of pseudorandom integers + * is specified by the argument size, which must be at least 312 and a + * multiple of two. The generation by this function is much faster + * than the following gen_rand function. + * + * @param sfmt SFMT internal state + * For initialization, init_gen_rand or init_by_array must be called + * before the first call of this function. This function can not be + * used after calling gen_rand function, without initialization. + * + * @param array an array where pseudorandom 64-bit integers are filled + * by this function. The pointer to the array must be "aligned" + * (namely, must be a multiple of 16) in the SIMD version, since it + * refers to the address of a 128-bit integer. In the standard C + * version, the pointer is arbitrary. + * + * @param size the number of 64-bit pseudorandom integers to be + * generated. size must be a multiple of 2, and greater than or equal + * to (MEXP / 128 + 1) * 2 + * + * @note \b memalign or \b posix_memalign is available to get aligned + * memory. Mac OSX doesn't have these functions, but \b malloc of OSX + * returns the pointer to the aligned memory block. + */ +void sfmt_fill_array64(sfmt_t * sfmt, uint64_t *array, int size) { + assert(sfmt->idx == SFMT_N32); + assert(size % 2 == 0); + assert(size >= SFMT_N64); + + gen_rand_array(sfmt, (w128_t *)array, size / 2); + sfmt->idx = SFMT_N32; + +#if defined(BIG_ENDIAN64) && !defined(ONLY64) + swap((w128_t *)array, size /2); +#endif +} + +/** + * This function initializes the internal state array with a 32-bit + * integer seed. + * + * @param sfmt SFMT internal state + * @param seed a 32-bit integer used as the seed. + */ +void sfmt_init_gen_rand(sfmt_t * sfmt, uint32_t seed) { + int i; + + uint32_t *psfmt32 = &sfmt->state[0].u[0]; + + psfmt32[idxof(0)] = seed; + for (i = 1; i < SFMT_N32; i++) { + psfmt32[idxof(i)] = 1812433253UL * (psfmt32[idxof(i - 1)] + ^ (psfmt32[idxof(i - 1)] >> 30)) + + i; + } + sfmt->idx = SFMT_N32; + period_certification(sfmt); +} + +/** + * This function initializes the internal state array, + * with an array of 32-bit integers used as the seeds + * @param sfmt SFMT internal state + * @param init_key the array of 32-bit integers, used as a seed. + * @param key_length the length of init_key. + */ +void sfmt_init_by_array(sfmt_t * sfmt, uint32_t *init_key, int key_length) { + int i, j, count; + uint32_t r; + int lag; + int mid; + int size = SFMT_N * 4; + uint32_t *psfmt32 = &sfmt->state[0].u[0]; + + if (size >= 623) { + lag = 11; + } else if (size >= 68) { + lag = 7; + } else if (size >= 39) { + lag = 5; + } else { + lag = 3; + } + mid = (size - lag) / 2; + + memset(sfmt, 0x8b, sizeof(sfmt_t)); + if (key_length + 1 > SFMT_N32) { + count = key_length + 1; + } else { + count = SFMT_N32; + } + r = func1(psfmt32[idxof(0)] ^ psfmt32[idxof(mid)] + ^ psfmt32[idxof(SFMT_N32 - 1)]); + psfmt32[idxof(mid)] += r; + r += key_length; + psfmt32[idxof(mid + lag)] += r; + psfmt32[idxof(0)] = r; + + count--; + for (i = 1, j = 0; (j < count) && (j < key_length); j++) { + r = func1(psfmt32[idxof(i)] ^ psfmt32[idxof((i + mid) % SFMT_N32)] + ^ psfmt32[idxof((i + SFMT_N32 - 1) % SFMT_N32)]); + psfmt32[idxof((i + mid) % SFMT_N32)] += r; + r += init_key[j] + i; + psfmt32[idxof((i + mid + lag) % SFMT_N32)] += r; + psfmt32[idxof(i)] = r; + i = (i + 1) % SFMT_N32; + } + for (; j < count; j++) { + r = func1(psfmt32[idxof(i)] ^ psfmt32[idxof((i + mid) % SFMT_N32)] + ^ psfmt32[idxof((i + SFMT_N32 - 1) % SFMT_N32)]); + psfmt32[idxof((i + mid) % SFMT_N32)] += r; + r += i; + psfmt32[idxof((i + mid + lag) % SFMT_N32)] += r; + psfmt32[idxof(i)] = r; + i = (i + 1) % SFMT_N32; + } + for (j = 0; j < SFMT_N32; j++) { + r = func2(psfmt32[idxof(i)] + psfmt32[idxof((i + mid) % SFMT_N32)] + + psfmt32[idxof((i + SFMT_N32 - 1) % SFMT_N32)]); + psfmt32[idxof((i + mid) % SFMT_N32)] ^= r; + r -= i; + psfmt32[idxof((i + mid + lag) % SFMT_N32)] ^= r; + psfmt32[idxof(i)] = r; + i = (i + 1) % SFMT_N32; + } + + sfmt->idx = SFMT_N32; + period_certification(sfmt); +} +#if defined(__cplusplus) +} +#endif diff --git a/SFMT/SFMT.h b/SFMT/SFMT.h new file mode 100644 index 0000000..bd12d6b --- /dev/null +++ b/SFMT/SFMT.h @@ -0,0 +1,295 @@ +#pragma once +/** + * @file SFMT.h + * + * @brief SIMD oriented Fast Mersenne Twister(SFMT) pseudorandom + * number generator using C structure. + * + * @author Mutsuo Saito (Hiroshima University) + * @author Makoto Matsumoto (The University of Tokyo) + * + * Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima + * University. + * Copyright (C) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima + * University and The University of Tokyo. + * All rights reserved. + * + * The 3-clause BSD License is applied to this software, see + * LICENSE.txt + * + * @note We assume that your system has inttypes.h. If your system + * doesn't have inttypes.h, you have to typedef uint32_t and uint64_t, + * and you have to define PRIu64 and PRIx64 in this file as follows: + * @verbatim + typedef unsigned int uint32_t + typedef unsigned long long uint64_t + #define PRIu64 "llu" + #define PRIx64 "llx" +@endverbatim + * uint32_t must be exactly 32-bit unsigned integer type (no more, no + * less), and uint64_t must be exactly 64-bit unsigned integer type. + * PRIu64 and PRIx64 are used for printf function to print 64-bit + * unsigned int and 64-bit unsigned int in hexadecimal format. + */ + +#ifndef SFMTST_H +#define SFMTST_H +#if defined(__cplusplus) +extern "C" { +#endif + +#include +#include + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) + #include +#elif defined(_MSC_VER) || defined(__BORLANDC__) + typedef unsigned int uint32_t; + typedef unsigned __int64 uint64_t; + #define inline __inline +#else + #include + #if defined(__GNUC__) + #define inline __inline__ + #endif +#endif + +#ifndef PRIu64 + #if defined(_MSC_VER) || defined(__BORLANDC__) + #define PRIu64 "I64u" + #define PRIx64 "I64x" + #else + #define PRIu64 "llu" + #define PRIx64 "llx" + #endif +#endif + +#include "SFMT-params.h" + +/*------------------------------------------ + 128-bit SIMD like data type for standard C + ------------------------------------------*/ +#if defined(HAVE_ALTIVEC) + #if !defined(__APPLE__) + #include + #endif +/** 128-bit data structure */ +union W128_T { + vector unsigned int s; + uint32_t u[4]; + uint64_t u64[2]; +}; +#elif defined(HAVE_SSE2) + #include + +/** 128-bit data structure */ +union W128_T { + uint32_t u[4]; + uint64_t u64[2]; + __m128i si; +}; +#else +/** 128-bit data structure */ +union W128_T { + uint32_t u[4]; + uint64_t u64[2]; +}; +#endif + +/** 128-bit data type */ +typedef union W128_T w128_t; + +/** + * SFMT internal state + */ +struct SFMT_T { + /** the 128-bit internal state array */ + w128_t state[SFMT_N]; + /** index counter to the 32-bit internal state array */ + int idx; +}; + +typedef struct SFMT_T sfmt_t; + +void sfmt_fill_array32(sfmt_t * sfmt, uint32_t * array, int size); +void sfmt_fill_array64(sfmt_t * sfmt, uint64_t * array, int size); +void sfmt_init_gen_rand(sfmt_t * sfmt, uint32_t seed); +void sfmt_init_by_array(sfmt_t * sfmt, uint32_t * init_key, int key_length); +const char * sfmt_get_idstring(sfmt_t * sfmt); +int sfmt_get_min_array_size32(sfmt_t * sfmt); +int sfmt_get_min_array_size64(sfmt_t * sfmt); +void sfmt_gen_rand_all(sfmt_t * sfmt); + +#ifndef ONLY64 +/** + * This function generates and returns 32-bit pseudorandom number. + * init_gen_rand or init_by_array must be called before this function. + * @param sfmt SFMT internal state + * @return 32-bit pseudorandom number + */ +inline static uint32_t sfmt_genrand_uint32(sfmt_t * sfmt) { + uint32_t r; + uint32_t * psfmt32 = &sfmt->state[0].u[0]; + + if (sfmt->idx >= SFMT_N32) { + sfmt_gen_rand_all(sfmt); + sfmt->idx = 0; + } + r = psfmt32[sfmt->idx++]; + return r; +} +#endif +/** + * This function generates and returns 64-bit pseudorandom number. + * init_gen_rand or init_by_array must be called before this function. + * The function gen_rand64 should not be called after gen_rand32, + * unless an initialization is again executed. + * @param sfmt SFMT internal state + * @return 64-bit pseudorandom number + */ +inline static uint64_t sfmt_genrand_uint64(sfmt_t * sfmt) { +#if defined(BIG_ENDIAN64) && !defined(ONLY64) + uint32_t * psfmt32 = &sfmt->state[0].u[0]; + uint32_t r1, r2; +#else + uint64_t r; +#endif + uint64_t * psfmt64 = &sfmt->state[0].u64[0]; + assert(sfmt->idx % 2 == 0); + + if (sfmt->idx >= SFMT_N32) { + sfmt_gen_rand_all(sfmt); + sfmt->idx = 0; + } +#if defined(BIG_ENDIAN64) && !defined(ONLY64) + r1 = psfmt32[sfmt->idx]; + r2 = psfmt32[sfmt->idx + 1]; + sfmt->idx += 2; + return ((uint64_t)r2 << 32) | r1; +#else + r = psfmt64[sfmt->idx / 2]; + sfmt->idx += 2; + return r; +#endif +} + +/* ================================================= + The following real versions are due to Isaku Wada + ================================================= */ +/** + * converts an unsigned 32-bit number to a double on [0,1]-real-interval. + * @param v 32-bit unsigned integer + * @return double on [0,1]-real-interval + */ +inline static double sfmt_to_real1(uint32_t v) +{ + return v * (1.0/4294967295.0); + /* divided by 2^32-1 */ +} + +/** + * generates a random number on [0,1]-real-interval + * @param sfmt SFMT internal state + * @return double on [0,1]-real-interval + */ +inline static double sfmt_genrand_real1(sfmt_t * sfmt) +{ + return sfmt_to_real1(sfmt_genrand_uint32(sfmt)); +} + +/** + * converts an unsigned 32-bit integer to a double on [0,1)-real-interval. + * @param v 32-bit unsigned integer + * @return double on [0,1)-real-interval + */ +inline static double sfmt_to_real2(uint32_t v) +{ + return v * (1.0/4294967296.0); + /* divided by 2^32 */ +} + +/** + * generates a random number on [0,1)-real-interval + * @param sfmt SFMT internal state + * @return double on [0,1)-real-interval + */ +inline static double sfmt_genrand_real2(sfmt_t * sfmt) +{ + return sfmt_to_real2(sfmt_genrand_uint32(sfmt)); +} + +/** + * converts an unsigned 32-bit integer to a double on (0,1)-real-interval. + * @param v 32-bit unsigned integer + * @return double on (0,1)-real-interval + */ +inline static double sfmt_to_real3(uint32_t v) +{ + return (((double)v) + 0.5)*(1.0/4294967296.0); + /* divided by 2^32 */ +} + +/** + * generates a random number on (0,1)-real-interval + * @param sfmt SFMT internal state + * @return double on (0,1)-real-interval + */ +inline static double sfmt_genrand_real3(sfmt_t * sfmt) +{ + return sfmt_to_real3(sfmt_genrand_uint32(sfmt)); +} + +/** + * converts an unsigned 32-bit integer to double on [0,1) + * with 53-bit resolution. + * @param v 32-bit unsigned integer + * @return double on [0,1)-real-interval with 53-bit resolution. + */ +inline static double sfmt_to_res53(uint64_t v) +{ + return v * (1.0/18446744073709551616.0L); +} + +/** + * generates a random number on [0,1) with 53-bit resolution + * @param sfmt SFMT internal state + * @return double on [0,1) with 53-bit resolution + */ +inline static double sfmt_genrand_res53(sfmt_t * sfmt) +{ + return sfmt_to_res53(sfmt_genrand_uint64(sfmt)); +} + + +/* ================================================= + The following function are added by Saito. + ================================================= */ +/** + * generates a random number on [0,1) with 53-bit resolution from two + * 32 bit integers + */ +inline static double sfmt_to_res53_mix(uint32_t x, uint32_t y) +{ + return sfmt_to_res53(x | ((uint64_t)y << 32)); +} + +/** + * generates a random number on [0,1) with 53-bit resolution + * using two 32bit integers. + * @param sfmt SFMT internal state + * @return double on [0,1) with 53-bit resolution + */ +inline static double sfmt_genrand_res53_mix(sfmt_t * sfmt) +{ + uint32_t x, y; + + x = sfmt_genrand_uint32(sfmt); + y = sfmt_genrand_uint32(sfmt); + return sfmt_to_res53_mix(x, y); +} + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/SFMT/check.sh b/SFMT/check.sh new file mode 100755 index 0000000..d259e70 --- /dev/null +++ b/SFMT/check.sh @@ -0,0 +1,40 @@ +#!/bin/sh +bit_len=$1 +prefix=$2 +tmp=tmp.$$ +tmp64=tmp64.$$ +exps="607 1279 2281 4253 11213 19937 44497 86243 132049 216091" +for mexp in $exps; do + if [ $bit_len = "64" ]; then + ./test-std-M${mexp} -b64 > $tmp64 + compare=$tmp64 + else + compare=SFMT.${mexp}.out.txt + fi + command=${prefix}-M${mexp} + if ./$command -b${bit_len}> $tmp; then + :; + else + echo $command exexute error! + rm -f $tmp + if [ -n "$tmp64" ] && [ -e $tmp64 ]; then + rm -f $tmp64 + fi + exit 1 + fi + if diff -q -w $tmp $compare; then + echo $command output check OK + rm -f $tmp + else + echo $command output check NG! + rm -f $tmp + if [ -n "$tmp64" ] && [ -e $tmp64 ]; then + rm -f $tmp64 + fi + exit 1 + fi +done +if [ -n "$tmp64" ] && [ -e $tmp64 ]; then + rm -f $tmp64 +fi +exit 0 diff --git a/SFMT/html/_s_f_m_t_8c.html b/SFMT/html/_s_f_m_t_8c.html new file mode 100644 index 0000000..1e1dd68 --- /dev/null +++ b/SFMT/html/_s_f_m_t_8c.html @@ -0,0 +1,607 @@ + + + + + +SFMT: SFMT.c File Reference + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + +
+
+ +
+
SFMT.c File Reference
+
+
+ +

SIMD oriented Fast Mersenne Twister(SFMT) +More...

+
#include <string.h>
+#include <assert.h>
+#include "SFMT.h"
+#include "SFMT-params.h"
+#include "SFMT-common.h"
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Defines

#define UNUSED_VARIABLE(x)   (void)(x)

+Functions

static int idxof (int i)
 This function simulate a 64-bit index of LITTLE ENDIAN in BIG ENDIAN machine.
static void gen_rand_array (sfmt_t *sfmt, w128_t *array, int size)
 This function fills the user-specified array with pseudorandom integers.
static uint32_t func1 (uint32_t x)
 This function represents a function used in the initialization by init_by_array.
static uint32_t func2 (uint32_t x)
 This function represents a function used in the initialization by init_by_array.
static void period_certification (sfmt_t *sfmt)
 This function certificate the period of 2^{MEXP}.
const char * sfmt_get_idstring (sfmt_t *sfmt)
 This function returns the identification string.
int sfmt_get_min_array_size32 (sfmt_t *sfmt)
 This function returns the minimum size of array used for fill_array32() function.
int sfmt_get_min_array_size64 (sfmt_t *sfmt)
 This function returns the minimum size of array used for fill_array64() function.
void sfmt_gen_rand_all (sfmt_t *sfmt)
 This function fills the internal state array with pseudorandom integers.
void sfmt_fill_array32 (sfmt_t *sfmt, uint32_t *array, int size)
 This function generates pseudorandom 32-bit integers in the specified array[] by one call.
void sfmt_fill_array64 (sfmt_t *sfmt, uint64_t *array, int size)
 This function generates pseudorandom 64-bit integers in the specified array[] by one call.
void sfmt_init_gen_rand (sfmt_t *sfmt, uint32_t seed)
 This function initializes the internal state array with a 32-bit integer seed.
void sfmt_init_by_array (sfmt_t *sfmt, uint32_t *init_key, int key_length)
 This function initializes the internal state array, with an array of 32-bit integers used as the seeds.

+Variables

static const w128_t sse2_param_mask
 parameters used by sse2.
+

Detailed Description

+

SIMD oriented Fast Mersenne Twister(SFMT)

+
Author:
Mutsuo Saito (Hiroshima University)
+
+Makoto Matsumoto (Hiroshima University)
+

Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. Copyright (C) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and The University of Tokyo. All rights reserved.

+

The 3-clause BSD License is applied to this software, see LICENSE.txt

+

Define Documentation

+ +
+
+ + + + + + + + +
#define UNUSED_VARIABLE( x)   (void)(x)
+
+ +
+

Function Documentation

+ +
+
+ + + + + + + + +
static uint32_t func1 (uint32_t x) [inline, static]
+
+
+ +

This function represents a function used in the initialization by init_by_array.

+
Parameters:
+ + +
x32-bit integer
+
+
+
Returns:
32-bit integer
+ +

Referenced by sfmt_init_by_array().

+ +
+
+ +
+
+ + + + + + + + +
static uint32_t func2 (uint32_t x) [inline, static]
+
+
+ +

This function represents a function used in the initialization by init_by_array.

+
Parameters:
+ + +
x32-bit integer
+
+
+
Returns:
32-bit integer
+ +

Referenced by sfmt_init_by_array().

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void gen_rand_array (sfmt_tsfmt,
w128_tarray,
int size 
) [inline, static]
+
+
+ +

This function fills the user-specified array with pseudorandom integers.

+
Parameters:
+ + + + +
sfmtSFMT internal state
arrayan 128-bit array to be filled by pseudorandom numbers.
sizenumber of 128-bit pseudorandom numbers to be generated.
+
+
+ +

References SFMT_T::state.

+ +

Referenced by sfmt_fill_array32(), and sfmt_fill_array64().

+ +
+
+ +
+
+ + + + + + + + +
static int idxof (int i) [inline, static]
+
+
+ +

This function simulate a 64-bit index of LITTLE ENDIAN in BIG ENDIAN machine.

+ +

Referenced by period_certification(), sfmt_init_by_array(), and sfmt_init_gen_rand().

+ +
+
+ +
+
+ + + + + + + + +
static void period_certification (sfmt_tsfmt) [static]
+
+
+ +

This function certificate the period of 2^{MEXP}.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+ +

References idxof(), SFMT_T::state, and W128_T::u.

+ +

Referenced by sfmt_init_by_array(), and sfmt_init_gen_rand().

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sfmt_fill_array32 (sfmt_tsfmt,
uint32_t * array,
int size 
)
+
+
+ +

This function generates pseudorandom 32-bit integers in the specified array[] by one call.

+

The number of pseudorandom integers is specified by the argument size, which must be at least 624 and a multiple of four. The generation by this function is much faster than the following gen_rand function.

+

For initialization, init_gen_rand or init_by_array must be called before the first call of this function. This function can not be used after calling gen_rand function, without initialization.

+
Parameters:
+ + + + +
sfmtSFMT internal state
arrayan array where pseudorandom 32-bit integers are filled by this function. The pointer to the array must be "aligned" (namely, must be a multiple of 16) in the SIMD version, since it refers to the address of a 128-bit integer. In the standard C version, the pointer is arbitrary.
sizethe number of 32-bit pseudorandom integers to be generated. size must be a multiple of 4, and greater than or equal to (MEXP / 128 + 1) * 4.
+
+
+
Note:
memalign or posix_memalign is available to get aligned memory. Mac OSX doesn't have these functions, but malloc of OSX returns the pointer to the aligned memory block.
+ +

References gen_rand_array(), and SFMT_T::idx.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sfmt_fill_array64 (sfmt_tsfmt,
uint64_t * array,
int size 
)
+
+
+ +

This function generates pseudorandom 64-bit integers in the specified array[] by one call.

+

The number of pseudorandom integers is specified by the argument size, which must be at least 312 and a multiple of two. The generation by this function is much faster than the following gen_rand function.

+
Parameters:
+ + + + +
sfmtSFMT internal state For initialization, init_gen_rand or init_by_array must be called before the first call of this function. This function can not be used after calling gen_rand function, without initialization.
arrayan array where pseudorandom 64-bit integers are filled by this function. The pointer to the array must be "aligned" (namely, must be a multiple of 16) in the SIMD version, since it refers to the address of a 128-bit integer. In the standard C version, the pointer is arbitrary.
sizethe number of 64-bit pseudorandom integers to be generated. size must be a multiple of 2, and greater than or equal to (MEXP / 128 + 1) * 2
+
+
+
Note:
memalign or posix_memalign is available to get aligned memory. Mac OSX doesn't have these functions, but malloc of OSX returns the pointer to the aligned memory block.
+ +

References gen_rand_array(), and SFMT_T::idx.

+ +
+
+ +
+
+ + + + + + + + +
void sfmt_gen_rand_all (sfmt_tsfmt)
+
+
+ +

This function fills the internal state array with pseudorandom integers.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+ +

References SFMT_T::state.

+ +

Referenced by sfmt_genrand_uint32(), and sfmt_genrand_uint64().

+ +
+
+ +
+
+ + + + + + + + +
const char* sfmt_get_idstring (sfmt_tsfmt)
+
+
+ +

This function returns the identification string.

+

The string shows the word size, the Mersenne exponent, and all parameters of this generator.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+ +

References UNUSED_VARIABLE.

+ +
+
+ +
+
+ + + + + + + + +
int sfmt_get_min_array_size32 (sfmt_tsfmt)
+
+
+ +

This function returns the minimum size of array used for fill_array32() function.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
minimum size of array used for fill_array32() function.
+ +

References UNUSED_VARIABLE.

+ +
+
+ +
+
+ + + + + + + + +
int sfmt_get_min_array_size64 (sfmt_tsfmt)
+
+
+ +

This function returns the minimum size of array used for fill_array64() function.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
minimum size of array used for fill_array64() function.
+ +

References UNUSED_VARIABLE.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sfmt_init_by_array (sfmt_tsfmt,
uint32_t * init_key,
int key_length 
)
+
+
+ +

This function initializes the internal state array, with an array of 32-bit integers used as the seeds.

+
Parameters:
+ + + + +
sfmtSFMT internal state
init_keythe array of 32-bit integers, used as a seed.
key_lengththe length of init_key.
+
+
+ +

References func1(), func2(), SFMT_T::idx, idxof(), period_certification(), SFMT_T::state, and W128_T::u.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void sfmt_init_gen_rand (sfmt_tsfmt,
uint32_t seed 
)
+
+
+ +

This function initializes the internal state array with a 32-bit integer seed.

+
Parameters:
+ + + +
sfmtSFMT internal state
seeda 32-bit integer used as the seed.
+
+
+ +

References SFMT_T::idx, idxof(), period_certification(), SFMT_T::state, and W128_T::u.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const w128_t sse2_param_mask [static]
+
+
+Initial value:
 {{SFMT_MSK1, SFMT_MSK2,
+                                        SFMT_MSK3, SFMT_MSK4}}
+
+

parameters used by sse2.

+ +
+
+
+ + + + + + diff --git a/SFMT/html/_s_f_m_t_8h.html b/SFMT/html/_s_f_m_t_8h.html new file mode 100644 index 0000000..86e5740 --- /dev/null +++ b/SFMT/html/_s_f_m_t_8h.html @@ -0,0 +1,848 @@ + + + + + +SFMT: SFMT.h File Reference + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + +
+
+ +
+
SFMT.h File Reference
+
+
+ +

SIMD oriented Fast Mersenne Twister(SFMT) pseudorandom number generator using C structure. +More...

+
#include <stdio.h>
+#include <assert.h>
+#include <inttypes.h>
+#include "SFMT-params.h"
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

union  W128_T
 128-bit data structure More...
struct  SFMT_T
 SFMT internal state. More...

+Defines

#define PRIu64   "llu"
#define PRIx64   "llx"

+Typedefs

typedef union W128_T w128_t
 128-bit data type
typedef struct SFMT_T sfmt_t

+Functions

void sfmt_fill_array32 (sfmt_t *sfmt, uint32_t *array, int size)
 This function generates pseudorandom 32-bit integers in the specified array[] by one call.
void sfmt_fill_array64 (sfmt_t *sfmt, uint64_t *array, int size)
 This function generates pseudorandom 64-bit integers in the specified array[] by one call.
void sfmt_init_gen_rand (sfmt_t *sfmt, uint32_t seed)
 This function initializes the internal state array with a 32-bit integer seed.
void sfmt_init_by_array (sfmt_t *sfmt, uint32_t *init_key, int key_length)
 This function initializes the internal state array, with an array of 32-bit integers used as the seeds.
const char * sfmt_get_idstring (sfmt_t *sfmt)
 This function returns the identification string.
int sfmt_get_min_array_size32 (sfmt_t *sfmt)
 This function returns the minimum size of array used for fill_array32() function.
int sfmt_get_min_array_size64 (sfmt_t *sfmt)
 This function returns the minimum size of array used for fill_array64() function.
void sfmt_gen_rand_all (sfmt_t *sfmt)
 This function fills the internal state array with pseudorandom integers.
static uint32_t sfmt_genrand_uint32 (sfmt_t *sfmt)
 This function generates and returns 32-bit pseudorandom number.
static uint64_t sfmt_genrand_uint64 (sfmt_t *sfmt)
 This function generates and returns 64-bit pseudorandom number.
static double sfmt_to_real1 (uint32_t v)
 converts an unsigned 32-bit number to a double on [0,1]-real-interval.
static double sfmt_genrand_real1 (sfmt_t *sfmt)
 generates a random number on [0,1]-real-interval
static double sfmt_to_real2 (uint32_t v)
 converts an unsigned 32-bit integer to a double on [0,1)-real-interval.
static double sfmt_genrand_real2 (sfmt_t *sfmt)
 generates a random number on [0,1)-real-interval
static double sfmt_to_real3 (uint32_t v)
 converts an unsigned 32-bit integer to a double on (0,1)-real-interval.
static double sfmt_genrand_real3 (sfmt_t *sfmt)
 generates a random number on (0,1)-real-interval
static double sfmt_to_res53 (uint64_t v)
 converts an unsigned 32-bit integer to double on [0,1) with 53-bit resolution.
static double sfmt_genrand_res53 (sfmt_t *sfmt)
 generates a random number on [0,1) with 53-bit resolution
static double sfmt_to_res53_mix (uint32_t x, uint32_t y)
 generates a random number on [0,1) with 53-bit resolution from two 32 bit integers
static double sfmt_genrand_res53_mix (sfmt_t *sfmt)
 generates a random number on [0,1) with 53-bit resolution using two 32bit integers.
+

Detailed Description

+

SIMD oriented Fast Mersenne Twister(SFMT) pseudorandom number generator using C structure.

+
Author:
Mutsuo Saito (Hiroshima University)
+
+Makoto Matsumoto (The University of Tokyo)
+

Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. Copyright (C) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and The University of Tokyo. All rights reserved.

+

The 3-clause BSD License is applied to this software, see LICENSE.txt

+
Note:
We assume that your system has inttypes.h. If your system doesn't have inttypes.h, you have to typedef uint32_t and uint64_t, and you have to define PRIu64 and PRIx64 in this file as follows:
 typedef unsigned int uint32_t
+ typedef unsigned long long uint64_t
+ #define PRIu64 "llu"
+ #define PRIx64 "llx"
+
uint32_t must be exactly 32-bit unsigned integer type (no more, no less), and uint64_t must be exactly 64-bit unsigned integer type. PRIu64 and PRIx64 are used for printf function to print 64-bit unsigned int and 64-bit unsigned int in hexadecimal format.
+

Define Documentation

+ +
+
+ + + + +
#define PRIu64   "llu"
+
+
+ +
+
+ +
+
+ + + + +
#define PRIx64   "llx"
+
+
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef struct SFMT_T sfmt_t
+
+
+ +
+
+ +
+
+ + + + +
typedef union W128_T w128_t
+
+
+ +

128-bit data type

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sfmt_fill_array32 (sfmt_tsfmt,
uint32_t * array,
int size 
)
+
+
+ +

This function generates pseudorandom 32-bit integers in the specified array[] by one call.

+

The number of pseudorandom integers is specified by the argument size, which must be at least 624 and a multiple of four. The generation by this function is much faster than the following gen_rand function.

+

For initialization, init_gen_rand or init_by_array must be called before the first call of this function. This function can not be used after calling gen_rand function, without initialization.

+
Parameters:
+ + + + +
sfmtSFMT internal state
arrayan array where pseudorandom 32-bit integers are filled by this function. The pointer to the array must be "aligned" (namely, must be a multiple of 16) in the SIMD version, since it refers to the address of a 128-bit integer. In the standard C version, the pointer is arbitrary.
sizethe number of 32-bit pseudorandom integers to be generated. size must be a multiple of 4, and greater than or equal to (MEXP / 128 + 1) * 4.
+
+
+
Note:
memalign or posix_memalign is available to get aligned memory. Mac OSX doesn't have these functions, but malloc of OSX returns the pointer to the aligned memory block.
+ +

References gen_rand_array(), and SFMT_T::idx.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sfmt_fill_array64 (sfmt_tsfmt,
uint64_t * array,
int size 
)
+
+
+ +

This function generates pseudorandom 64-bit integers in the specified array[] by one call.

+

The number of pseudorandom integers is specified by the argument size, which must be at least 312 and a multiple of two. The generation by this function is much faster than the following gen_rand function.

+
Parameters:
+ + + + +
sfmtSFMT internal state For initialization, init_gen_rand or init_by_array must be called before the first call of this function. This function can not be used after calling gen_rand function, without initialization.
arrayan array where pseudorandom 64-bit integers are filled by this function. The pointer to the array must be "aligned" (namely, must be a multiple of 16) in the SIMD version, since it refers to the address of a 128-bit integer. In the standard C version, the pointer is arbitrary.
sizethe number of 64-bit pseudorandom integers to be generated. size must be a multiple of 2, and greater than or equal to (MEXP / 128 + 1) * 2
+
+
+
Note:
memalign or posix_memalign is available to get aligned memory. Mac OSX doesn't have these functions, but malloc of OSX returns the pointer to the aligned memory block.
+ +

References gen_rand_array(), and SFMT_T::idx.

+ +
+
+ +
+
+ + + + + + + + +
void sfmt_gen_rand_all (sfmt_tsfmt)
+
+
+ +

This function fills the internal state array with pseudorandom integers.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+ +

References SFMT_T::state.

+ +

Referenced by sfmt_genrand_uint32(), and sfmt_genrand_uint64().

+ +
+
+ +
+
+ + + + + + + + +
static double sfmt_genrand_real1 (sfmt_tsfmt) [inline, static]
+
+
+ +

generates a random number on [0,1]-real-interval

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
double on [0,1]-real-interval
+ +

References sfmt_genrand_uint32(), and sfmt_to_real1().

+ +
+
+ +
+
+ + + + + + + + +
static double sfmt_genrand_real2 (sfmt_tsfmt) [inline, static]
+
+
+ +

generates a random number on [0,1)-real-interval

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
double on [0,1)-real-interval
+ +

References sfmt_genrand_uint32(), and sfmt_to_real2().

+ +
+
+ +
+
+ + + + + + + + +
static double sfmt_genrand_real3 (sfmt_tsfmt) [inline, static]
+
+
+ +

generates a random number on (0,1)-real-interval

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
double on (0,1)-real-interval
+ +

References sfmt_genrand_uint32(), and sfmt_to_real3().

+ +
+
+ +
+
+ + + + + + + + +
static double sfmt_genrand_res53 (sfmt_tsfmt) [inline, static]
+
+
+ +

generates a random number on [0,1) with 53-bit resolution

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
double on [0,1) with 53-bit resolution
+ +

References sfmt_genrand_uint64(), and sfmt_to_res53().

+ +
+
+ +
+
+ + + + + + + + +
static double sfmt_genrand_res53_mix (sfmt_tsfmt) [inline, static]
+
+
+ +

generates a random number on [0,1) with 53-bit resolution using two 32bit integers.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
double on [0,1) with 53-bit resolution
+ +

References sfmt_genrand_uint32(), and sfmt_to_res53_mix().

+ +
+
+ +
+
+ + + + + + + + +
static uint32_t sfmt_genrand_uint32 (sfmt_tsfmt) [inline, static]
+
+
+ +

This function generates and returns 32-bit pseudorandom number.

+

init_gen_rand or init_by_array must be called before this function.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
32-bit pseudorandom number
+ +

References SFMT_T::idx, sfmt_gen_rand_all(), SFMT_T::state, and W128_T::u.

+ +

Referenced by sfmt_genrand_real1(), sfmt_genrand_real2(), sfmt_genrand_real3(), and sfmt_genrand_res53_mix().

+ +
+
+ +
+
+ + + + + + + + +
static uint64_t sfmt_genrand_uint64 (sfmt_tsfmt) [inline, static]
+
+
+ +

This function generates and returns 64-bit pseudorandom number.

+

init_gen_rand or init_by_array must be called before this function. The function gen_rand64 should not be called after gen_rand32, unless an initialization is again executed.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
64-bit pseudorandom number
+ +

References SFMT_T::idx, sfmt_gen_rand_all(), SFMT_T::state, W128_T::u, and W128_T::u64.

+ +

Referenced by sfmt_genrand_res53().

+ +
+
+ +
+
+ + + + + + + + +
const char* sfmt_get_idstring (sfmt_tsfmt)
+
+
+ +

This function returns the identification string.

+

The string shows the word size, the Mersenne exponent, and all parameters of this generator.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+ +

References UNUSED_VARIABLE.

+ +
+
+ +
+
+ + + + + + + + +
int sfmt_get_min_array_size32 (sfmt_tsfmt)
+
+
+ +

This function returns the minimum size of array used for fill_array32() function.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
minimum size of array used for fill_array32() function.
+ +

References UNUSED_VARIABLE.

+ +
+
+ +
+
+ + + + + + + + +
int sfmt_get_min_array_size64 (sfmt_tsfmt)
+
+
+ +

This function returns the minimum size of array used for fill_array64() function.

+
Parameters:
+ + +
sfmtSFMT internal state
+
+
+
Returns:
minimum size of array used for fill_array64() function.
+ +

References UNUSED_VARIABLE.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sfmt_init_by_array (sfmt_tsfmt,
uint32_t * init_key,
int key_length 
)
+
+
+ +

This function initializes the internal state array, with an array of 32-bit integers used as the seeds.

+
Parameters:
+ + + + +
sfmtSFMT internal state
init_keythe array of 32-bit integers, used as a seed.
key_lengththe length of init_key.
+
+
+ +

References func1(), func2(), SFMT_T::idx, idxof(), period_certification(), SFMT_T::state, and W128_T::u.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void sfmt_init_gen_rand (sfmt_tsfmt,
uint32_t seed 
)
+
+
+ +

This function initializes the internal state array with a 32-bit integer seed.

+
Parameters:
+ + + +
sfmtSFMT internal state
seeda 32-bit integer used as the seed.
+
+
+ +

References SFMT_T::idx, idxof(), period_certification(), SFMT_T::state, and W128_T::u.

+ +
+
+ +
+
+ + + + + + + + +
static double sfmt_to_real1 (uint32_t v) [inline, static]
+
+
+ +

converts an unsigned 32-bit number to a double on [0,1]-real-interval.

+
Parameters:
+ + +
v32-bit unsigned integer
+
+
+
Returns:
double on [0,1]-real-interval
+ +

Referenced by sfmt_genrand_real1().

+ +
+
+ +
+
+ + + + + + + + +
static double sfmt_to_real2 (uint32_t v) [inline, static]
+
+
+ +

converts an unsigned 32-bit integer to a double on [0,1)-real-interval.

+
Parameters:
+ + +
v32-bit unsigned integer
+
+
+
Returns:
double on [0,1)-real-interval
+ +

Referenced by sfmt_genrand_real2().

+ +
+
+ +
+
+ + + + + + + + +
static double sfmt_to_real3 (uint32_t v) [inline, static]
+
+
+ +

converts an unsigned 32-bit integer to a double on (0,1)-real-interval.

+
Parameters:
+ + +
v32-bit unsigned integer
+
+
+
Returns:
double on (0,1)-real-interval
+ +

Referenced by sfmt_genrand_real3().

+ +
+
+ +
+
+ + + + + + + + +
static double sfmt_to_res53 (uint64_t v) [inline, static]
+
+
+ +

converts an unsigned 32-bit integer to double on [0,1) with 53-bit resolution.

+
Parameters:
+ + +
v32-bit unsigned integer
+
+
+
Returns:
double on [0,1)-real-interval with 53-bit resolution.
+ +

Referenced by sfmt_genrand_res53(), and sfmt_to_res53_mix().

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
static double sfmt_to_res53_mix (uint32_t x,
uint32_t y 
) [inline, static]
+
+
+ +

generates a random number on [0,1) with 53-bit resolution from two 32 bit integers

+ +

References sfmt_to_res53().

+ +

Referenced by sfmt_genrand_res53_mix().

+ +
+
+
+ + + + + + diff --git a/SFMT/html/_s_f_m_t_8h_source.html b/SFMT/html/_s_f_m_t_8h_source.html new file mode 100644 index 0000000..9e02e31 --- /dev/null +++ b/SFMT/html/_s_f_m_t_8h_source.html @@ -0,0 +1,261 @@ + + + + + +SFMT: SFMT.h Source File + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + +
+
+
+
SFMT.h
+
+
+Go to the documentation of this file.
00001 #pragma once
+00002 
+00035 #ifndef SFMTST_H
+00036 #define SFMTST_H
+00037 #if defined(__cplusplus)
+00038 extern "C" {
+00039 #endif
+00040 
+00041 #include <stdio.h>
+00042 #include <assert.h>
+00043 
+00044 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
+00045   #include <inttypes.h>
+00046 #elif defined(_MSC_VER) || defined(__BORLANDC__)
+00047   typedef unsigned int uint32_t;
+00048   typedef unsigned __int64 uint64_t;
+00049   #define inline __inline
+00050 #else
+00051   #include <inttypes.h>
+00052   #if defined(__GNUC__)
+00053     #define inline __inline__
+00054   #endif
+00055 #endif
+00056 
+00057 #ifndef PRIu64
+00058   #if defined(_MSC_VER) || defined(__BORLANDC__)
+00059     #define PRIu64 "I64u"
+00060     #define PRIx64 "I64x"
+00061   #else
+00062     #define PRIu64 "llu"
+00063     #define PRIx64 "llx"
+00064   #endif
+00065 #endif
+00066 
+00067 #include "SFMT-params.h"
+00068 
+00069 /*------------------------------------------
+00070   128-bit SIMD like data type for standard C
+00071   ------------------------------------------*/
+00072 #if defined(HAVE_ALTIVEC)
+00073   #if !defined(__APPLE__)
+00074     #include <altivec.h>
+00075   #endif
+00076 
+00077 union W128_T {
+00078     vector unsigned int s;
+00079     uint32_t u[4];
+00080     uint64_t u64[2];
+00081 };
+00082 #elif defined(HAVE_SSE2)
+00083   #include <emmintrin.h>
+00084 
+00086 union W128_T {
+00087     uint32_t u[4];
+00088     uint64_t u64[2];
+00089     __m128i si;
+00090 };
+00091 #else
+00092 
+00093 union W128_T {
+00094     uint32_t u[4];
+00095     uint64_t u64[2];
+00096 };
+00097 #endif
+00098 
+00100 typedef union W128_T w128_t;
+00101 
+00105 struct SFMT_T {
+00107     w128_t state[SFMT_N];
+00109     int idx;
+00110 };
+00111 
+00112 typedef struct SFMT_T sfmt_t;
+00113 
+00114 void sfmt_fill_array32(sfmt_t * sfmt, uint32_t * array, int size);
+00115 void sfmt_fill_array64(sfmt_t * sfmt, uint64_t * array, int size);
+00116 void sfmt_init_gen_rand(sfmt_t * sfmt, uint32_t seed);
+00117 void sfmt_init_by_array(sfmt_t * sfmt, uint32_t * init_key, int key_length);
+00118 const char * sfmt_get_idstring(sfmt_t * sfmt);
+00119 int sfmt_get_min_array_size32(sfmt_t * sfmt);
+00120 int sfmt_get_min_array_size64(sfmt_t * sfmt);
+00121 void sfmt_gen_rand_all(sfmt_t * sfmt);
+00122 
+00123 #ifndef ONLY64
+00124 
+00130 inline static uint32_t sfmt_genrand_uint32(sfmt_t * sfmt) {
+00131     uint32_t r;
+00132     uint32_t * psfmt32 = &sfmt->state[0].u[0];
+00133 
+00134     if (sfmt->idx >= SFMT_N32) {
+00135         sfmt_gen_rand_all(sfmt);
+00136         sfmt->idx = 0;
+00137     }
+00138     r = psfmt32[sfmt->idx++];
+00139     return r;
+00140 }
+00141 #endif
+00142 
+00150 inline static uint64_t sfmt_genrand_uint64(sfmt_t * sfmt) {
+00151 #if defined(BIG_ENDIAN64) && !defined(ONLY64)
+00152     uint32_t * psfmt32 = &sfmt->state[0].u[0];
+00153     uint32_t r1, r2;
+00154 #else
+00155     uint64_t r;
+00156 #endif
+00157     uint64_t * psfmt64 = &sfmt->state[0].u64[0];
+00158     assert(sfmt->idx % 2 == 0);
+00159 
+00160     if (sfmt->idx >= SFMT_N32) {
+00161         sfmt_gen_rand_all(sfmt);
+00162         sfmt->idx = 0;
+00163     }
+00164 #if defined(BIG_ENDIAN64) && !defined(ONLY64)
+00165     r1 = psfmt32[sfmt->idx];
+00166     r2 = psfmt32[sfmt->idx + 1];
+00167     sfmt->idx += 2;
+00168     return ((uint64_t)r2 << 32) | r1;
+00169 #else
+00170     r = psfmt64[sfmt->idx / 2];
+00171     sfmt->idx += 2;
+00172     return r;
+00173 #endif
+00174 }
+00175 
+00176 /* =================================================
+00177    The following real versions are due to Isaku Wada
+00178    ================================================= */
+00184 inline static double sfmt_to_real1(uint32_t v)
+00185 {
+00186     return v * (1.0/4294967295.0);
+00187     /* divided by 2^32-1 */
+00188 }
+00189 
+00195 inline static double sfmt_genrand_real1(sfmt_t * sfmt)
+00196 {
+00197     return sfmt_to_real1(sfmt_genrand_uint32(sfmt));
+00198 }
+00199 
+00205 inline static double sfmt_to_real2(uint32_t v)
+00206 {
+00207     return v * (1.0/4294967296.0);
+00208     /* divided by 2^32 */
+00209 }
+00210 
+00216 inline static double sfmt_genrand_real2(sfmt_t * sfmt)
+00217 {
+00218     return sfmt_to_real2(sfmt_genrand_uint32(sfmt));
+00219 }
+00220 
+00226 inline static double sfmt_to_real3(uint32_t v)
+00227 {
+00228     return (((double)v) + 0.5)*(1.0/4294967296.0);
+00229     /* divided by 2^32 */
+00230 }
+00231 
+00237 inline static double sfmt_genrand_real3(sfmt_t * sfmt)
+00238 {
+00239     return sfmt_to_real3(sfmt_genrand_uint32(sfmt));
+00240 }
+00241 
+00248 inline static double sfmt_to_res53(uint64_t v)
+00249 {
+00250     return v * (1.0/18446744073709551616.0L);
+00251 }
+00252 
+00258 inline static double sfmt_genrand_res53(sfmt_t * sfmt)
+00259 {
+00260     return sfmt_to_res53(sfmt_genrand_uint64(sfmt));
+00261 }
+00262 
+00263 
+00264 /* =================================================
+00265    The following function are added by Saito.
+00266    ================================================= */
+00271 inline static double sfmt_to_res53_mix(uint32_t x, uint32_t y)
+00272 {
+00273     return sfmt_to_res53(x | ((uint64_t)y << 32));
+00274 }
+00275 
+00282 inline static double sfmt_genrand_res53_mix(sfmt_t * sfmt)
+00283 {
+00284     uint32_t x, y;
+00285 
+00286     x = sfmt_genrand_uint32(sfmt);
+00287     y = sfmt_genrand_uint32(sfmt);
+00288     return sfmt_to_res53_mix(x, y);
+00289 }
+00290 
+00291 #if defined(__cplusplus)
+00292 }
+00293 #endif
+00294 
+00295 #endif
+
+ + + + + + diff --git a/SFMT/html/annotated.html b/SFMT/html/annotated.html new file mode 100644 index 0000000..9f67beb --- /dev/null +++ b/SFMT/html/annotated.html @@ -0,0 +1,72 @@ + + + + + +SFMT: Data Structures + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + +
+
+
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+ + +
SFMT_TSFMT internal state
W128_T128-bit data structure
+
+ + + + + + diff --git a/SFMT/html/bc_s.png b/SFMT/html/bc_s.png new file mode 100644 index 0000000..51ba006 Binary files /dev/null and b/SFMT/html/bc_s.png differ diff --git a/SFMT/html/bdwn.png b/SFMT/html/bdwn.png new file mode 100644 index 0000000..d0b575b Binary files /dev/null and b/SFMT/html/bdwn.png differ diff --git a/SFMT/html/classes.html b/SFMT/html/classes.html new file mode 100644 index 0000000..357a024 --- /dev/null +++ b/SFMT/html/classes.html @@ -0,0 +1,78 @@ + + + + + +SFMT: Data Structure Index + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + +
+
+
+
Data Structure Index
+
+
+
S | W
+ + + + + +
  S  
+
  W  
+
SFMT_T   W128_T   
+
S | W
+
+ + + + + + diff --git a/SFMT/html/closed.png b/SFMT/html/closed.png new file mode 100644 index 0000000..b7d4bd9 Binary files /dev/null and b/SFMT/html/closed.png differ diff --git a/SFMT/html/doxygen.css b/SFMT/html/doxygen.css new file mode 100644 index 0000000..c151fde --- /dev/null +++ b/SFMT/html/doxygen.css @@ -0,0 +1,1012 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 13px; + line-height: 1.3; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 8px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + margin-left: 5px; + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 7px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } + pre.fragment + { + overflow: visible; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + } +} + diff --git a/SFMT/html/doxygen.png b/SFMT/html/doxygen.png new file mode 100644 index 0000000..635ed52 Binary files /dev/null and b/SFMT/html/doxygen.png differ diff --git a/SFMT/html/files.html b/SFMT/html/files.html new file mode 100644 index 0000000..d583eae --- /dev/null +++ b/SFMT/html/files.html @@ -0,0 +1,72 @@ + + + + + +SFMT: File List + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + +
+
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+ + +
SFMT.cSIMD oriented Fast Mersenne Twister(SFMT)
SFMT.h [code]SIMD oriented Fast Mersenne Twister(SFMT) pseudorandom number generator using C structure
+
+ + + + + + diff --git a/SFMT/html/functions.html b/SFMT/html/functions.html new file mode 100644 index 0000000..2a30376 --- /dev/null +++ b/SFMT/html/functions.html @@ -0,0 +1,84 @@ + + + + + +SFMT: Data Fields + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + + +
+
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+
+ + + + + + diff --git a/SFMT/html/functions_vars.html b/SFMT/html/functions_vars.html new file mode 100644 index 0000000..52bdbe0 --- /dev/null +++ b/SFMT/html/functions_vars.html @@ -0,0 +1,84 @@ + + + + + +SFMT: Data Fields - Variables + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + + +
+
+
+ + + + + + diff --git a/SFMT/html/globals.html b/SFMT/html/globals.html new file mode 100644 index 0000000..6847d69 --- /dev/null +++ b/SFMT/html/globals.html @@ -0,0 +1,213 @@ + + + + + +SFMT: Globals + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + + + +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- f -

+ + +

- g -

    +
  • gen_rand_array() +: SFMT.c +
  • +
+ + +

- i -

+ + +

- p -

+ + +

- s -

+ + +

- u -

    +
  • UNUSED_VARIABLE +: SFMT.c +
  • +
+ + +

- w -

+
+ + + + + + diff --git a/SFMT/html/globals_defs.html b/SFMT/html/globals_defs.html new file mode 100644 index 0000000..75903d8 --- /dev/null +++ b/SFMT/html/globals_defs.html @@ -0,0 +1,84 @@ + + + + + +SFMT: Globals + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + + +
+
+
+ + + + + + diff --git a/SFMT/html/globals_func.html b/SFMT/html/globals_func.html new file mode 100644 index 0000000..3ae8add --- /dev/null +++ b/SFMT/html/globals_func.html @@ -0,0 +1,185 @@ + + + + + +SFMT: Globals + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + + + +
+
+  + +

- f -

+ + +

- g -

    +
  • gen_rand_array() +: SFMT.c +
  • +
+ + +

- i -

+ + +

- p -

    +
  • period_certification() +: SFMT.c +
  • +
+ + +

- s -

+
+ + + + + + diff --git a/SFMT/html/globals_type.html b/SFMT/html/globals_type.html new file mode 100644 index 0000000..6147ad6 --- /dev/null +++ b/SFMT/html/globals_type.html @@ -0,0 +1,81 @@ + + + + + +SFMT: Globals + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + + +
+
+
+ + + + + + diff --git a/SFMT/html/globals_vars.html b/SFMT/html/globals_vars.html new file mode 100644 index 0000000..76c13e2 --- /dev/null +++ b/SFMT/html/globals_vars.html @@ -0,0 +1,78 @@ + + + + + +SFMT: Globals + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + + + +
+
    +
  • sse2_param_mask +: SFMT.c +
  • +
+
+ + + + + + diff --git a/SFMT/html/howto-compile.html b/SFMT/html/howto-compile.html new file mode 100644 index 0000000..8d08d1e --- /dev/null +++ b/SFMT/html/howto-compile.html @@ -0,0 +1,493 @@ + + + + + + How to compile SFMT + + + +

How to compile SFMT

+ +

+ This document explains how to compile SFMT for users who + are using UNIX like systems (for example Linux, Free BSD, + cygwin, osx, etc) on terminal. I can't help those who use IDE + (Integrated Development Environment,) please see your IDE's help + to use SIMD feature of your CPU. +

+ +

1. First Step: Compile test programs using Makefile.

+

1-1. Compile standard C test program.

+

+ Check if SFMT.c and Makefile are in your current directory. + If not, cd to the directory where they exist. + Then, type +

+
+
make std
+
+

+ If it causes an error, try to type +

+
+
cc -DSFMT_MEXP=19937 -o test-std-M19937 test.c SFMT.c
+
+

+ or try to type +

+
+
gcc -DSFMT_MEXP=19937 -o test-std-M19937 test.c SFMT.c
+
+

+ If success, then check the test program. Type +

+
+
./test-std-M19937 -b32
+
+

+ You will see many random numbers displayed on your screen. + If you want to check these random numbers are correct output, + redirect output to a file and diff it with + SFMT.19937.out.txt, like this:

+
+
./test-std-M19937 -b32 > foo.txt
+diff -w foo.txt SFMT.19937.out.txt
+
+

+ Silence means they are the same because diff + reports the difference of two file. +

+

+ If you want to know the generation speed of SFMT, type +

+
+
./test-std-M19937 -s
+
+

+ It is very slow. To make it fast, compile it + with -O3 option. If your compiler is gcc, you + should specify -fno-strict-aliasing option + with -O3. type +

+
+
gcc -O3 -fno-strict-aliasing -DSFMT_MEXP=19937 -o test-std-M19937 test.c SFMT.c
+./test-std-M19937 -s
+
+ +

1-2. Compile SSE2 test program.

+

+ If your CPU supports SSE2 and you can use gcc version 3.4 or later, + you can make test-sse2-Mxxx. To do this, type +

+
+
make sse2
+
+

or type

+
+
gcc -O3 -msse2 -fno-strict-aliasing -DHAVE_SSE2=1 -DSFMT_MEXP=19937 -o test-sse2-M19937 test.c SFMT.c
+
+

If everything works well,

+
+
./test-sse2-M19937 -s
+
+

will show much shorter time than test-std-M19937 -s.

+ + + +

1-4. Compile and check output automatically.

+

+ To make test program and check 32-bit output + automatically for all supported MEXPs of SFMT, type +

+
+
make std-check
+
+ +

+ To check test program optimized for SSE2, type +

+
+
make sse2-check
+
+ +

+ These commands may take some time. +

+ +

2. Second Step: Use SFMT pseudorandom number generator with + your C program.

+

2-1. Use sequential call and static link.

+

+ Here is a very simple program sample1.c which + calculates PI using Monte-Carlo method. +

+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "SFMT.h"
+
+int main(int argc, char* argv[]) {
+    int i, cnt, seed;
+    double x, y, pi;
+    const int NUM = 10000;
+    sfmt_t sfmt;
+
+    if (argc >= 2) {
+	seed = strtol(argv[1], NULL, 10);
+    } else {
+	seed = 12345;
+    }
+    cnt = 0;
+    sfmt_init_gen_rand(&sfmt, seed);
+    for (i = 0; i < NUM; i++) {
+	x = sfmt_genrand_res53(&sfmt);
+	y = sfmt_genrand_res53(&sfmt);
+	if (x * x + y * y < 1.0) {
+	    cnt++;
+	}
+    }
+    pi = (double)cnt / NUM * 4;
+    printf("%lf\n", pi);
+    return 0;
+}
+      
+
+

To compile sample1.c with SFMT.c with the period of + 2607, type

+
+
gcc -O3 -DSFMT_MEXP=607 -o sample1 SFMT.c sample1.c
+
+ +

If your CPU supports SSE2 and you want to use optimized SFMT for + SSE2, type

+
+
gcc -O3 -msse2 -DHAVE_SSE2 -DSFMT_MEXP=607 -o sample1 SFMT.c sample1.c
+
+ + +

2-2. Use block call and static link.

+

+ Here is sample2.c which modifies sample1.c. + The block call fill_array64 is much faster than + sequential call, but it needs an aligned memory. The standard function + to get an aligned memory is posix_memalign, but + it isn't usable in every OS. +

+
+
+#include <stdio.h>
+#define _XOPEN_SOURCE 600
+#include <stdlib.h>
+#include "SFMT.h"
+
+int main(int argc, char* argv[]) {
+    int i, j, cnt, seed;
+    double x, y, pi;
+    const int NUM = 10000;
+    const int R_SIZE = 2 * NUM;
+    int size;
+    uint64_t *array;
+    sfmt_t sfmt;
+
+    if (argc >= 2) {
+	seed = strtol(argv[1], NULL, 10);
+    } else {
+	seed = 12345;
+    }
+    size = sfmt_get_min_array_size64(&sfmt);
+    if (size < R_SIZE) {
+	size = R_SIZE;
+    }
+#if defined(__APPLE__) || \
+    (defined(__FreeBSD__) && __FreeBSD__ >= 3 && __FreeBSD__ <= 6)
+    printf("malloc used\n");
+    array = malloc(sizeof(double) * size);
+    if (array == NULL) {
+	printf("can't allocate memory.\n");
+	return 1;
+    }
+#elif defined(_POSIX_C_SOURCE)
+    printf("posix_memalign used\n");
+    if (posix_memalign((void **)&array, 16, sizeof(double) * size) != 0) {
+	printf("can't allocate memory.\n");
+	return 1;
+    }
+#elif defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
+    printf("memalign used\n");
+    array = memalign(16, sizeof(double) * size);
+    if (array == NULL) {
+	printf("can't allocate memory.\n");
+	return 1;
+    }
+#else /* in this case, gcc doesn't support SSE2 */
+    printf("malloc used\n");
+    array = malloc(sizeof(double) * size);
+    if (array == NULL) {
+	printf("can't allocate memory.\n");
+	return 1;
+    }
+#endif
+    cnt = 0;
+    j = 0;
+    sfmt_init_gen_rand(&sfmt, seed);
+    sfmt_fill_array64(&sfmt, array, size);
+    for (i = 0; i < NUM; i++) {
+	x = sfmt_to_res53(array[j++]);
+	y = sfmt_to_res53(array[j++]);
+	if (x * x + y * y < 1.0) {
+	    cnt++;
+	}
+    }
+    free(array);
+    pi = (double)cnt / NUM * 4;
+    printf("%lf\n", pi);
+    return 0;
+}
+      
+
+

To compile sample2.c with SFMT.c with the period of + 22281, type

+
+
gcc -O3 -DSFMT_MEXP=2281 -o sample2 SFMT.c sample2.c
+
+ +

If your CPU supports SSE2 and you want to use optimized SFMT for + SSE2, type

+
+
gcc -O3 -msse2 -DHAVE_SSE2 -DSFMT_MEXP=2281 -o sample2 SFMT.c sample2.c
+
+ + + +

2-4. Initialize SFMT using sfmt_init_by_array function.

+

+ Here is sample4.c which modifies sample1.c. + The 32-bit integer seed can only make 232 kinds of + initial state, to avoid this problem, SFMT + provides sfmt_init_by_array function. This sample + uses sfmt_init_by_array function which initialize the internal state + array with an array of 32-bit. The size of an array can be + larger than the internal state array and all elements of the + array are used for initialization, but too large array is + wasteful. +

+
+
+#include <stdio.h>
+#include <string.h>
+#include "SFMT.h"
+
+int main(int argc, char* argv[]) {
+    int i, cnt, seed_cnt;
+    double x, y, pi;
+    const int NUM = 10000;
+    uint32_t seeds[100];
+    sfmt_t sfmt;
+
+    if (argc >= 2) {
+	seed_cnt = 0;
+	for (i = 0; (i < 100) && (i < strlen(argv[1])); i++) {
+	    seeds[i] = argv[1][i];
+	    seed_cnt++;
+	}
+    } else {
+	seeds[0] = 12345;
+	seed_cnt = 1;
+    }
+    cnt = 0;
+    sfmt_init_by_array(&sfmt, seeds, seed_cnt);
+    for (i = 0; i < NUM; i++) {
+	x = sfmt_genrand_res53(&sfmt);
+	y = sfmt_genrand_res53(&sfmt);
+	if (x * x + y * y < 1.0) {
+	    cnt++;
+	}
+    }
+    pi = (double)cnt / NUM * 4;
+    printf("%lf\n", pi);
+    return 0;
+}
+      
+
+

To compile sample4.c, type

+
+
gcc -O3 -DSFMT_MEXP=19937 -o sample4 SFMT.c sample4.c
+
+ +

Now, seed can be a string. Like this:

+
+
./sample4 your-full-name
+
+

Appendix: C preprocessor definitions

+

+ Here is a list of C preprocessor definitions that users can + specify to control code generation. These macros must be set + just after -D compiler option. +

+
+
SFMT_MEXP
+
This macro is required. This macro means Mersenne exponent + and the period of generated code will be 2SFMT_MEXP-1. + SFMT_MEXP must be one of 607, 1279, 2281, 4253, 11213, 19937, + 44497, 86243, 132049, 216091. +
+
HAVE_SSE2
+
This is optional. If this macro is specified, optimized code + for SSE2 will be generated.
+
HAVE_ALTIVEC
+
This is optional. If this macro is specified, optimized code + for AltiVec will be generated. This macro automatically turns on + BIG_ENDIAN64 macro. This macro of SFMT ver. 1.4 is not tested + at all.
+
BIG_ENDIAN64
+
This macro is required when your CPU is BIG ENDIAN and you + use 64-bit output. If __BIG_ENDIAN__ macro is defined, this macro + is automatically turned on. GCC defines __BIG_ENDIAN__ macro on + BIG ENDIAN CPUs. This macro of SFMT ver. 1.4 is not tested + at all.
+
ONLY64
+
This macro is optional. If this macro is specified, + optimized code for 64-bit output for BIG ENDIAN CPUs will be + generated and code for 32-bit output won't be + generated. BIG_ENDIAN64 macro must be specified with this macro + by user or automatically. This macro of SFMT ver. 1.4 is not tested + at all.
+
+ + + + + + +
32-bit outputLITTLE ENDIAN 64-bit outputBIG ENDIAN 64-bit output
requiredSFMT_MEXPSFMT_MEXPSFMT_MEXP, + BIG_ENDIAN64
optionalHAVE_SSE2, + HAVE_ALTIVECHAVE_SSE2HAVE_ALTIVEC, ONLY64
+ + diff --git a/SFMT/html/index.html b/SFMT/html/index.html new file mode 100644 index 0000000..3c9dcff --- /dev/null +++ b/SFMT/html/index.html @@ -0,0 +1,123 @@ + + + + + +SFMT: Main Page + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
SFMT +  1.4 +
+ +
+
+ + + +
+
+
+
SFMT Documentation
+
+
+

This is SIMD oriented Fast Mersenne Twister pseudorandom number generator(SFMT). This Project provides pseudorandom number generators of various Mersenne Prime Period: from 2607-1 to 2216091-1.

+

Please check endianness in source codes carefully, if you are using BIG ENDIAN.

+ +
Author:
Mutsuo Saito (saito.nosp@m.@mat.nosp@m.h.sci.nosp@m..hir.nosp@m.oshim.nosp@m.a-u..nosp@m.ac.jp) (Hiroshima University)
+
+Makoto Matsumoto (The University of Tokyo)
+
Date:
2012-6-27
+

Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. All rights reserved. Copyright (C) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and The University of Tokyo. All rights reserved.

+

The 3-clause BSD License is applied to this software, see LICENSE.txt

+
Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
+University.
+Copyright (c) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima University
+and The University of Tokyo.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+    * Neither the names of Hiroshima University, The University of
+      Tokyo nor the names of its contributors may be used to endorse
+      or promote products derived from this software without specific
+      prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ + + + + + diff --git a/SFMT/html/jquery.js b/SFMT/html/jquery.js new file mode 100644 index 0000000..90b3a2b --- /dev/null +++ b/SFMT/html/jquery.js @@ -0,0 +1,64 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0) +{I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function() +{G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); + +/* + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('