diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README b/README new file mode 100644 index 0000000..909e6fd --- /dev/null +++ b/README @@ -0,0 +1,24 @@ +Chemical Metabolism Simulator +============================= + +Chemical Metabolism Simulator is a work in progress. + +Dependencies +============ + +This project uses code developed by the Qt, Qwt, and SFMT projects. + +To build this program, you will need to install the development tools for +Qt 4 (version 4.3 or later, available from www.trolltech.com) and the Qwt +libraries (available from qwt.sourceforge.net). The SFMT libraries have +been modified and are included with the source code, but the project page +can be found at http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT ). + +Compilation Instructions +======================== +This program uses the standard Qt build process run from the src directory: + + cd src + qmake + make + diff --git a/dSFMT/CHANGE-LOG.txt b/dSFMT/CHANGE-LOG.txt new file mode 100644 index 0000000..7848fea --- /dev/null +++ b/dSFMT/CHANGE-LOG.txt @@ -0,0 +1,40 @@ +ver 1.2.1 +------- +add #include to dSFMT.c + +ver 1.2 +------- +The precision specifier of printf was too large in test.c +CAUTION! *.out.txt is changed. +add dSFMT-params216091.h +gcc compile option changed form -O9 to -O3. +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 period certification code more smart. +change source files for BORLANDC and Visual Studio. + +ver 1.1.1 +------- +BUG in dSFMT-sse2.h is fixed. +This bug didn't change the result. +Change test.c + +ver 1.1 +------- +add dSFMT-params132049.h +fix bug in period_certification. It's a bug but result is the same for +all parameter files. +change macro definition names and global variables. Thank you, Adam Piatyszek. +remove L suffix from floating point constants. It's Saito's misunderstanding. +fix bug of sfmt_idxof definition for BIG ENDIAN machine. + +ver 1.0.1 +------- +change name dSFMT-alti.c to SFMT-alti.h +change name dSFMT-sse2.c to SFMT-sse2.h +This version is not released. + +ver 1.0 +------- +The first version. diff --git a/dSFMT/FILES.txt b/dSFMT/FILES.txt new file mode 100644 index 0000000..4f4f339 --- /dev/null +++ b/dSFMT/FILES.txt @@ -0,0 +1,37 @@ +This archive contails following directories and files. + +TOP DIRECTORY +FILES.txt: This file. +CHANGE-LOG.txt change log. +LICENSE.txt: License file. +Makefile: Makefile for test programs. +dSFMT.h: Header file. +dSFMT-params.h: parameter file control for various Mersenne expornent +dSFMT-params607.h: parameters for period of 2^{607}-1 +dSFMT-params1279.h: parameters for period of 2^{1279}-1 +dSFMT-params2281.h: parameters for period of 2^{2281}-1 +dSFMT-params4423.h: parameters for period of 2^{4423}-1 +dSFMT-params11213.h: parameters for period of 2^{11213}-1 +dSFMT-params19937.h: parameters for period of 2^{19937}-1 +dSFMT-params44497.h: parameters for period of 2^{44497}-1 +dSFMT-params86243.h: parameters for period of 2^{86243}-1 +dSFMT-params132049.h: parameters for period of 2^{132049}-1 +dSFMT-params216091.h: parameters for period of 2^{216091}-1 +dSFMT-ref.c: simple reference C code. +dSFMT.c: C code for standard C (c99) and unix like systems. +dSFMT-alti.h: C code optimized for PowerPC AltiVec. +dSFMT-sse2.h: C code optimized for intel SSE2. +test.c: Test driver for standard C. +check.sh: Test shell script. +dSFMT.607.out.txt: correct output of dSFMT MEXP=607 +dSFMT.1279.out.txt: correct output of dSFMT MEXP=1279 +dSFMT.2281.out.txt: correct output of dSFMT MEXP=2281 +dSFMT.4423.out.txt: correct output of dSFMT MEXP=4423 +dSFMT.11213.out.txt: correct output of dSFMT MEXP=11213 +dSFMT.19937.out.txt: correct output of dSFMT MEXP=19937 +dSFMT.44497.out.txt: correct output of dSFMT MEXP=44497 +dSFMT.86243.out.txt: correct output of dSFMT MEXP=86243 +dSFMT.132049.out.txt: correct output of dSFMT MEXP=132049 +dSFMT.216091.out.txt: correct output of dSFMT MEXP=216091 + +html DIRECTORY: The documents generated by doxygen. diff --git a/dSFMT/LICENSE.txt b/dSFMT/LICENSE.txt new file mode 100644 index 0000000..81ef37c --- /dev/null +++ b/dSFMT/LICENSE.txt @@ -0,0 +1,29 @@ +Copyright (c) 2007, Mutsuo Saito, Makoto Matsumoto and Hiroshima University. +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 name of the Hiroshima University 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/dSFMT/Makefile b/dSFMT/Makefile new file mode 100644 index 0000000..c03bc4f --- /dev/null +++ b/dSFMT/Makefile @@ -0,0 +1,188 @@ +# @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 +ALL_STD_TARGET = test-std-M607 test-std-M1279 test-std-M2281 test-std-M4423 \ +test-std-M11213 test-std-M19937 test-std-M44497 test-std-M86243 \ +test-std-M132049 test-std-M216091 +ALTI_TARGET = $(STD_TARGET) test-alti-M19937 +ALL_ALTI_TARGET = test-alti-M607 test-alti-M1279 test-alti-M2281 \ +test-alti-M4423 test-alti-M11213 test-alti-M19937 test-alti-M44497 \ +test-alti-M86243 test-alti-M132049 test-alti-M216091 +SSE2_TARGET = $(STD_TARGET) test-sse2-M19937 +ALL_SSE2_TARGET = test-sse2-M607 test-sse2-M1279 test-sse2-M2281 \ +test-sse2-M4423 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 + +std-check: ${ALL_STD_TARGET} + ./check.sh test-std + +sse2-check: ${ALL_SSE2_TARGET} + ./check.sh test-sse2 + +alti-check: ${ALL_ALTI_TARGET} + ./check.sh test-alti + +osx-alti-check: + make "ALTIFLAGS=${OSXALTIFLAGS}" alti-check + +test-std-M607: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=607 -o $@ test.c + +test-alti-M607: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=607 -o $@ test.c + +test-sse2-M607: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=607 -o $@ test.c + +test-std-M1279: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=1279 -o $@ test.c + +test-alti-M1279: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=1279 -o $@ test.c + +test-sse2-M1279: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=1279 -o $@ test.c + +test-std-M2281: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=2281 -o $@ test.c + +test-alti-M2281: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=2281 -o $@ test.c + +test-sse2-M2281: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=2281 -o $@ test.c + +test-std-M4423: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=4423 -o $@ test.c + +test-alti-M4423: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=4423 -o $@ test.c + +test-sse2-M4423: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=4423 -o $@ test.c + +test-std-M11213: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=11213 -o $@ test.c + +test-alti-M11213: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=11213 -o $@ test.c + +test-sse2-M11213: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=11213 -o $@ test.c + +test-std-M19937: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=19937 -o $@ test.c + +test-alti-M19937: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=19937 -o $@ test.c + +test-sse2-M19937: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=19937 -o $@ test.c + +test-std-M44497: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=44497 -o $@ test.c + +test-alti-M44497: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=44497 -o $@ test.c + +test-sse2-M44497: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=44497 -o $@ test.c + +test-std-M86243: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=86243 -o $@ test.c + +test-alti-M86243: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=86243 -o $@ test.c + +test-sse2-M86243: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=86243 -o $@ test.c + +test-std-M132049: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=132049 -o $@ test.c + +test-alti-M132049: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=132049 -o $@ test.c + +test-sse2-M132049: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=132049 -o $@ test.c + +test-std-M216091: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} -DSFMT_MEXP=216091 -o $@ test.c + +test-alti-M216091: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${ALTIFLAGS} -DSFMT_MEXP=216091 -o $@ test.c + +test-sse2-M216091: test.c dSFMT.c dSFMT.h + ${CC} ${CCFLAGS} ${SSE2FLAGS} -DSFMT_MEXP=216091 -o $@ test.c + +.c.o: + ${CC} ${CCFLAGS} -c $< + +clean: + rm -f *.o *~ diff --git a/dSFMT/README.txt b/dSFMT/README.txt new file mode 100644 index 0000000..7f010f7 --- /dev/null +++ b/dSFMT/README.txt @@ -0,0 +1,30 @@ + ================================================================= + dSFMT ver. 1.2 + 2007.08.22 + + double precision SIMD oriented Fast Mersenne Twister(dSFMT) + based on IEEE 754 floating point format. + + Mutsuo Saito (Hiroshima University) and + Makoto Matsumoto (Hiroshima University) + + Copyright (C) 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima + University. All rights reserved. + + The (modified) BSD License is applied to this software, see + LICENSE.txt + ================================================================= + This program only works on systems which have IEEE754 floating point + format. + + To see documents, see html/index.html. + + To make test program, see html/howto-compile.html. + If your CPU is BIG ENDIAN and your compiler is not gcc, + define BIG_ENDIAN preprocessor macro, please. + + 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/dSFMT/check.sh b/dSFMT/check.sh new file mode 100644 index 0000000..7ee483a --- /dev/null +++ b/dSFMT/check.sh @@ -0,0 +1,18 @@ +#!/bin/sh +prefix=$1 +tmp=tmp.$$ +exps="607 1279 2281 4423 11213 19937 44497 86243 132049 216091" +for mexp in $exps; do + compare=dSFMT.${mexp}.out.txt + command=${prefix}-M${mexp} + ./$command -v > $tmp + if diff -q -w $tmp $compare; then + echo $command output check OK + rm -f $tmp + else + echo $command output check NG! + rm -f $tmp + exit 1 + fi +done +exit 0 diff --git a/dSFMT/dSFMT-alti.h b/dSFMT/dSFMT-alti.h new file mode 100644 index 0000000..b124e3e --- /dev/null +++ b/dSFMT/dSFMT-alti.h @@ -0,0 +1,131 @@ +/** + * @file dSFMT-alti.h + * @brief double precision SIMD-oriented Fast Mersenne Twister (dSFMT) + * + * @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 DSFMT_ALTI_H +#define DSFMT_ALTI_H +/** + * This function represents the recursion formula. + * @param a position of array. + * @param b position of array. + * @param reg position of array which may keep in register. + * @param lung special posion of array which may keep in register. + * @return next value of recursion + */ +inline static vector unsigned int vec_recursion(vector unsigned int a, + vector unsigned int b, + vector unsigned int reg, + vector unsigned int lung) { + vector unsigned int r, s, t, u, v, w, x, y, z; + const vector unsigned char sl1 = ALTI_SL1; + const vector unsigned char sl1_perm = ALTI_SL1_PERM; + const vector unsigned int sl1_msk = ALTI_SL1_MSK; + const vector unsigned char sl2_perm = ALTI_SL2_PERM; + const vector unsigned char sr1 = ALTI_SR1; + const vector unsigned int sr1_msk = ALTI_SR1_MSK; + const vector unsigned char sr2_perm = ALTI_SR2_PERM; + const vector unsigned char perm = ALTI_PERM; + const vector unsigned int low_mask = ALTI_LOW_MSK; + /* const vector unsigned int high_const = ALTI_HIGH_CONST;*/ + + x = vec_perm(a, (vector unsigned int)sl2_perm, sl2_perm); + y = vec_srl(b, sr1); + y = vec_and(y, sr1_msk); + z = vec_perm(reg, (vector unsigned int)sl1_perm, sl1_perm); + z = vec_sll(z, sl1); + z = vec_and(z, sl1_msk); + w = vec_perm(reg, (vector unsigned int)sr2_perm, sr2_perm); + v = vec_perm(lung, (vector unsigned int)perm, perm); + s = vec_xor(a, x); + t = vec_xor(y, z); + u = vec_xor(w, v); + r = vec_xor(s, t); + r = vec_xor(r, u); + r = vec_and(r, low_mask); + /* r = vec_or(r, high_const);*/ + return r; +} + +/** + * This function fills the internal state array with double precision + * floating point pseudorandom numbers of the IEEE 754 format. + */ +inline static void gen_rand_all(void) { + int i; + vector unsigned int r, lung; + const vector unsigned int high_const = ALTI_HIGH_CONST; + + lung = sfmt[SFMT_N].s; + r = sfmt[SFMT_N - 1].s; + for (i = 0; i < SFMT_N - SFMT_POS1; i++) { + r = vec_recursion(sfmt[i].s, sfmt[i + SFMT_POS1].s, r, lung); + lung = vec_xor(lung, r); + r = vec_or(r, high_const); + sfmt[i].s = r; + } + for (; i < SFMT_N; i++) { + r = vec_recursion(sfmt[i].s, sfmt[i + SFMT_POS1 - SFMT_N].s, r, lung); + lung = vec_xor(lung, r); + r = vec_or(r, high_const); + sfmt[i].s = r; + } + sfmt[SFMT_N].s = lung; +} + +/** + * This function fills the user-specified array with double precision + * floating point pseudorandom numbers of the IEEE 754 format. + * @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(w128_t array[], int size) { + int i, j; + vector unsigned int r, lung; + const vector unsigned int high_const = ALTI_HIGH_CONST; + + /* read from sfmt */ + lung = sfmt[SFMT_N].s; + r = sfmt[SFMT_N - 1].s; + for (i = 0; i < SFMT_N - SFMT_POS1; i++) { + r = vec_recursion(sfmt[i].s, sfmt[i + SFMT_POS1].s, r, lung); + lung = vec_xor(lung, r); + r = vec_or(r, high_const); + array[i].s = r; + } + for (; i < SFMT_N; i++) { + r = vec_recursion(sfmt[i].s, array[i + SFMT_POS1 - SFMT_N].s, r, lung); + lung = vec_xor(lung, r); + r = vec_or(r, high_const); + array[i].s = r; + } + /* main loop */ + for (; i < size - SFMT_N; i++) { + r = vec_recursion(array[i - SFMT_N].s, array[i + SFMT_POS1 - SFMT_N].s, + r, lung); + lung = vec_xor(lung, r); + r = vec_or(r, high_const); + array[i].s = r; + } + for (j = 0; j < 2 * SFMT_N - size; j++) { + sfmt[j].s = array[j + size - SFMT_N].s; + } + for (; i < size; i++) { + r = vec_recursion(array[i - SFMT_N].s, array[i + SFMT_POS1 - SFMT_N].s, + r, lung); + lung = vec_xor(lung, r); + r = vec_or(r, high_const); + array[i].s = r; + sfmt[j++].s = r; + } + sfmt[SFMT_N].s = lung; +} + +#endif /* DSFMT_ALTI_H*/ diff --git a/dSFMT/dSFMT-params.h b/dSFMT/dSFMT-params.h new file mode 100644 index 0000000..59444ad --- /dev/null +++ b/dSFMT/dSFMT-params.h @@ -0,0 +1,102 @@ +#ifndef DSFMT_PARAMS_H +#define DSFMT_PARAMS_H + +#if !defined(SFMT_MEXP) +#ifdef __GNUC__ + #warning "SFMT_MEXP is not defined. I assume SFMT_MEXP is 19937." +#endif + #define SFMT_MEXP 19937 +#endif +/*----------------- + BASIC DEFINITIONS + -----------------*/ +/** Mersenne Exponent. The period of the sequence + * is a multiple of 2^SFMT_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 / 104) +/** 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 dSFMT-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 (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 (SL2 * 8) bits. +#define SFMT_SR2 1 +*/ + +/** A bitmask, used in the recursion. These parameters are introduced + * to break symmetry of SIMD. +#define SFMT_MSK1 (uint64_t)0xdfffffefULL +#define SFMT_MSK2 (uint64_t)0xddfecb7fULL +*/ + +/** These definitions are part of a 128-bit period certification vector. +#define SFMT_PCV1 UINT64_C(0x00000001) +#define SFMT_PCV2 UINT64_C(0x00000000) +*/ + +#define SFMT_LOW_MASK UINT64_C(0x000FFFFFFFFFFFFF) +#define SFMT_LOW_MASK32_1 0x000fffffU +#define SFMT_LOW_MASK32_2 0xffffffffU +#define SFMT_HIGH_CONST UINT64_C(0x3FF0000000000000) +#define SFMT_HIGH_CONST32 0x3ff00000U + +/* for sse2 */ +#define SSE2_SHUFF 0x4e + +#if SFMT_MEXP == 607 + #include "dSFMT-params607.h" +#elif SFMT_MEXP == 1279 + #include "dSFMT-params1279.h" +#elif SFMT_MEXP == 2281 + #include "dSFMT-params2281.h" +#elif SFMT_MEXP == 4423 + #include "dSFMT-params4423.h" +#elif SFMT_MEXP == 11213 + #include "dSFMT-params11213.h" +#elif SFMT_MEXP == 19937 + #include "dSFMT-params19937.h" +#elif SFMT_MEXP == 44497 + #include "dSFMT-params44497.h" +#elif SFMT_MEXP == 86243 + #include "dSFMT-params86243.h" +#elif SFMT_MEXP == 132049 + #include "dSFMT-params132049.h" +#elif SFMT_MEXP == 216091 + #include "dSFMT-params216091.h" +#else +#ifdef __GNUC__ + #error "SFMT_MEXP is not valid." + #undef SFMT_MEXP +#else + #undef SFMT_MEXP +#endif + +#endif + +#endif /* DSFMT_PARAMS_H */ diff --git a/dSFMT/dSFMT-params11213.h b/dSFMT/dSFMT-params11213.h new file mode 100644 index 0000000..1c0bf8c --- /dev/null +++ b/dSFMT/dSFMT-params11213.h @@ -0,0 +1,66 @@ +#ifndef DSFMT_PARAMS11213_H +#define DSFMT_PARAMS11213_H + +#define SFMT_POS1 42 +#define SFMT_SL1 37 +#define SFMT_SL2 3 +#define SFMT_SR1 7 +#define SFMT_SR2 16 +#define SFMT_MSK1 UINT64_C(0xffdbfdbfdfbb7ffe) +#define SFMT_MSK2 UINT64_C(0xfbf7ff7ffbef3df7) +#define SFMT_MSK32_1 0xffdbfdbfU +#define SFMT_MSK32_2 0xdfbb7ffeU +#define SFMT_MSK32_3 0xfbf7ff7fU +#define SFMT_MSK32_4 0xfbef3df7U +#define SFMT_PCV1 UINT64_C(0x0000000000000001) +#define SFMT_PCV2 UINT64_C(0x00032a9a00000000) +#define SFMT_IDSTR \ + "dSFMT-11213:42-37-3-7-16:ffdbfdbfdfbb7ffe-fbf7ff7ffbef3df7" + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define ALTI_SL1 (vector unsigned int)(5, 5, 5, 5) + #define ALTI_SL1_PERM \ + (vector unsigned char)(4,5,6,7,28,28,28,28,12,13,14,15,0,1,2,3) + #define ALTI_SL1_MSK \ + (vector unsigned int)(0xffffffe0U,0x00000000U,0xffffffe0U,0x00000000U) + #define ALTI_SL2_PERM \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define ALTI_SR1_MSK \ + (vector unsigned int)(0x01dbfdbfU,0xdfbb7ffeU,0x01f7ff7fU,0xfbef3df7U) + #define ALTI_SR2_PERM \ + (vector unsigned char)(18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13) + #define ALTI_PERM \ + (vector unsigned char)(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + #define ALTI_LOW_MSK \ + (vector unsigned int)(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2) + #define ALTI_HIGH_CONST \ + (vector unsigned int)(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0) +#else /* For OTHER OSs(Linux?) */ + #define ALTI_SL1 {5, 5, 5, 5} + #define ALTI_SL1_PERM \ + {4,5,6,7,28,28,28,28,12,13,14,15,0,1,2,3} + #define ALTI_SL1_MSK \ + {0xffffffe0U,0x00000000U,0xffffffe0U,0x00000000U} + #define ALTI_SL2_PERM \ + {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define ALTI_SR1 \ + {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define ALTI_SR1_MSK \ + {0x01dbfdbfU,0xdfbb7ffeU,0x01f7ff7fU,0xfbef3df7U} + #define ALTI_SR2_PERM \ + {18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13} + #define ALTI_PERM \ + {8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7} + #define ALTI_LOW_MSK \ + {SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2} + #define ALTI_HIGH_CONST \ + {SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0} +#endif + +#endif /* DSFMT_PARAMS11213_H */ diff --git a/dSFMT/dSFMT-params1279.h b/dSFMT/dSFMT-params1279.h new file mode 100644 index 0000000..e4f14ab --- /dev/null +++ b/dSFMT/dSFMT-params1279.h @@ -0,0 +1,66 @@ +#ifndef DSFMT_PARAMS1279_H +#define DSFMT_PARAMS1279_H + +#define SFMT_POS1 5 +#define SFMT_SL1 33 +#define SFMT_SL2 1 +#define SFMT_SR1 4 +#define SFMT_SR2 8 +#define SFMT_MSK1 UINT64_C(0xfbaffbde7bffef7f) +#define SFMT_MSK2 UINT64_C(0xf7ffbcbff5ffffff) +#define SFMT_MSK32_1 0xfbaffbdeU +#define SFMT_MSK32_2 0x7bffef7fU +#define SFMT_MSK32_3 0xf7ffbcbfU +#define SFMT_MSK32_4 0xf5ffffffU +#define SFMT_PCV1 UINT64_C(0x0007f1de08000001) +#define SFMT_PCV2 UINT64_C(0x000d303ee3092a2b) +#define SFMT_IDSTR \ + "dSFMT-1279:5-33-1-4-8:fbaffbde7bffef7f-f7ffbcbff5ffffff" + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define ALTI_SL1 (vector unsigned int)(1, 1, 1, 1) + #define ALTI_SL1_PERM \ + (vector unsigned char)(4,5,6,7,28,28,28,28,12,13,14,15,0,1,2,3) + #define ALTI_SL1_MSK \ + (vector unsigned int)(0xfffffffeU,0x00000000U,0xfffffffeU,0x00000000U) + #define ALTI_SL2_PERM \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define ALTI_SR1_MSK \ + (vector unsigned int)(0x0baffbdeU,0x7bffef7fU,0x07ffbcbfU,0xf5ffffffU) + #define ALTI_SR2_PERM \ + (vector unsigned char)(17,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14) + #define ALTI_PERM \ + (vector unsigned char)(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + #define ALTI_LOW_MSK \ + (vector unsigned int)(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2) + #define ALTI_HIGH_CONST \ + (vector unsigned int)(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0) +#else /* For OTHER OSs(Linux?) */ + #define ALTI_SL1 {1, 1, 1, 1} + #define ALTI_SL1_PERM \ + {4,5,6,7,28,28,28,28,12,13,14,15,0,1,2,3} + #define ALTI_SL1_MSK \ + {0xfffffffeU,0x00000000U,0xfffffffeU,0x00000000U} + #define ALTI_SL2_PERM \ + {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define ALTI_SR1 \ + {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define ALTI_SR1_MSK \ + {0x0baffbdeU,0x7bffef7fU,0x07ffbcbfU,0xf5ffffffU} + #define ALTI_SR2_PERM \ + {17,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14} + #define ALTI_PERM \ + {8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7} + #define ALTI_LOW_MSK \ + {SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2} + #define ALTI_HIGH_CONST \ + {SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0} +#endif + +#endif /* DSFMT_PARAMS1279_H */ diff --git a/dSFMT/dSFMT-params132049.h b/dSFMT/dSFMT-params132049.h new file mode 100644 index 0000000..f5479dd --- /dev/null +++ b/dSFMT/dSFMT-params132049.h @@ -0,0 +1,66 @@ +#ifndef DSFMT_PARAMS132049_H +#define DSFMT_PARAMS132049_H + +#define SFMT_POS1 695 +#define SFMT_SL1 15 +#define SFMT_SL2 5 +#define SFMT_SR1 4 +#define SFMT_SR2 8 +#define SFMT_MSK1 UINT64_C(0xdffffffedf53ffff) +#define SFMT_MSK2 UINT64_C(0xffffeffffbd35ffe) +#define SFMT_MSK32_1 0xdffffffeU +#define SFMT_MSK32_2 0xdf53ffffU +#define SFMT_MSK32_3 0xffffefffU +#define SFMT_MSK32_4 0xfbd35ffeU +#define SFMT_PCV1 UINT64_C(0x0000000000000001) +#define SFMT_PCV2 UINT64_C(0x000395e065400000) +#define SFMT_IDSTR \ + "dSFMT-132049:695-15-5-4-8:dffffffedf53ffff-ffffeffffbd35ffe" + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define ALTI_SL1 (vector unsigned int)(7, 7, 7, 7) + #define ALTI_SL1_PERM \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define ALTI_SL1_MSK \ + (vector unsigned int)(0xffffffffU,0xffff8000U,0xffffffffU,0xffff8000U) + #define ALTI_SL2_PERM \ + (vector unsigned char)(5,6,7,27,27,27,27,27,13,14,15,0,1,2,3,4) + #define ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define ALTI_SR1_MSK \ + (vector unsigned int)(0x0ffffffeU,0xdf53ffffU,0x0fffefffU,0xfbd35ffeU) + #define ALTI_SR2_PERM \ + (vector unsigned char)(17,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14) + #define ALTI_PERM \ + (vector unsigned char)(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + #define ALTI_LOW_MSK \ + (vector unsigned int)(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2) + #define ALTI_HIGH_CONST \ + (vector unsigned int)(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0) +#else /* For OTHER OSs(Linux?) */ + #define ALTI_SL1 {7, 7, 7, 7} + #define ALTI_SL1_PERM \ + {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define ALTI_SL1_MSK \ + {0xffffffffU,0xffff8000U,0xffffffffU,0xffff8000U} + #define ALTI_SL2_PERM \ + {5,6,7,27,27,27,27,27,13,14,15,0,1,2,3,4} + #define ALTI_SR1 \ + {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define ALTI_SR1_MSK \ + {0x0ffffffeU,0xdf53ffffU,0x0fffefffU,0xfbd35ffeU} + #define ALTI_SR2_PERM \ + {17,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14} + #define ALTI_PERM \ + {8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7} + #define ALTI_LOW_MSK \ + {SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2} + #define ALTI_HIGH_CONST \ + {SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0} +#endif + +#endif /* DSFMT_PARAMS132049_H */ diff --git a/dSFMT/dSFMT-params19937.h b/dSFMT/dSFMT-params19937.h new file mode 100644 index 0000000..58bb18e --- /dev/null +++ b/dSFMT/dSFMT-params19937.h @@ -0,0 +1,66 @@ +#ifndef DSFMT_PARAMS19937_H +#define DSFMT_PARAMS19937_H + +#define SFMT_POS1 36 +#define SFMT_SL1 29 +#define SFMT_SL2 1 +#define SFMT_SR1 7 +#define SFMT_SR2 16 +#define SFMT_MSK1 UINT64_C(0x57fbfffdffff575f) +#define SFMT_MSK2 UINT64_C(0xffff6febffffffee) +#define SFMT_MSK32_1 0x57fbfffdU +#define SFMT_MSK32_2 0xffff575fU +#define SFMT_MSK32_3 0xffff6febU +#define SFMT_MSK32_4 0xffffffeeU +#define SFMT_PCV1 UINT64_C(0x0000000000000001) +#define SFMT_PCV2 UINT64_C(0x000ec8f3d0b00000) +#define SFMT_IDSTR \ + "dSFMT-19937:36-29-1-7-16:57fbfffdffff575f-ffff6febffffffee" + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define ALTI_SL1 (vector unsigned int)(5, 5, 5, 5) + #define ALTI_SL1_PERM \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define ALTI_SL1_MSK \ + (vector unsigned int)(0xffffffffU,0xe0000000U,0xffffffffU,0xe0000000U) + #define ALTI_SL2_PERM \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define ALTI_SR1_MSK \ + (vector unsigned int)(0x01fbfffdU,0xffff575fU,0x01ff6febU,0xffffffeeU) + #define ALTI_SR2_PERM \ + (vector unsigned char)(18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13) + #define ALTI_PERM \ + (vector unsigned char)(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + #define ALTI_LOW_MSK \ + (vector unsigned int)(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2) + #define ALTI_HIGH_CONST \ + (vector unsigned int)(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0) +#else /* For OTHER OSs(Linux?) */ + #define ALTI_SL1 {5, 5, 5, 5} + #define ALTI_SL1_PERM \ + {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define ALTI_SL1_MSK \ + {0xffffffffU,0xe0000000U,0xffffffffU,0xe0000000U} + #define ALTI_SL2_PERM \ + {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define ALTI_SR1 \ + {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define ALTI_SR1_MSK \ + {0x01fbfffdU,0xffff575fU,0x01ff6febU,0xffffffeeU} + #define ALTI_SR2_PERM \ + {18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13} + #define ALTI_PERM \ + {8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7} + #define ALTI_LOW_MSK \ + {SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2} + #define ALTI_HIGH_CONST \ + {SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0} +#endif + +#endif /* DSFMT_PARAMS19937_H */ diff --git a/dSFMT/dSFMT-params216091.h b/dSFMT/dSFMT-params216091.h new file mode 100644 index 0000000..88f7960 --- /dev/null +++ b/dSFMT/dSFMT-params216091.h @@ -0,0 +1,66 @@ +#ifndef DSFMT_PARAMS216091_H +#define DSFMT_PARAMS216091_H + +#define SFMT_POS1 1009 +#define SFMT_SL1 15 +#define SFMT_SL2 3 +#define SFMT_SR1 1 +#define SFMT_SR2 16 +#define SFMT_MSK1 UINT64_C(0xffffffffffebffbe) +#define SFMT_MSK2 UINT64_C(0xdfbbf7fb9ffdffab) +#define SFMT_MSK32_1 0xffffffffU +#define SFMT_MSK32_2 0xffebffbeU +#define SFMT_MSK32_3 0xdfbbf7fbU +#define SFMT_MSK32_4 0x9ffdffabU +#define SFMT_PCV1 UINT64_C(0x0000000000000001) +#define SFMT_PCV2 UINT64_C(0x000cadf580000000) +#define SFMT_IDSTR \ + "dSFMT-216091:1009-15-3-1-16:ffffffffffebffbe-dfbbf7fb9ffdffab" + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define ALTI_SL1 (vector unsigned int)(7, 7, 7, 7) + #define ALTI_SL1_PERM \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define ALTI_SL1_MSK \ + (vector unsigned int)(0xffffffffU,0xffff8000U,0xffffffffU,0xffff8000U) + #define ALTI_SL2_PERM \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define ALTI_SR1_MSK \ + (vector unsigned int)(0x7fffffffU,0xffebffbeU,0x5fbbf7fbU,0x9ffdffabU) + #define ALTI_SR2_PERM \ + (vector unsigned char)(18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13) + #define ALTI_PERM \ + (vector unsigned char)(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + #define ALTI_LOW_MSK \ + (vector unsigned int)(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2) + #define ALTI_HIGH_CONST \ + (vector unsigned int)(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0) +#else /* For OTHER OSs(Linux?) */ + #define ALTI_SL1 {7, 7, 7, 7} + #define ALTI_SL1_PERM \ + {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define ALTI_SL1_MSK \ + {0xffffffffU,0xffff8000U,0xffffffffU,0xffff8000U} + #define ALTI_SL2_PERM \ + {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define ALTI_SR1 \ + {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define ALTI_SR1_MSK \ + {0x7fffffffU,0xffebffbeU,0x5fbbf7fbU,0x9ffdffabU} + #define ALTI_SR2_PERM \ + {18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13} + #define ALTI_PERM \ + {8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7} + #define ALTI_LOW_MSK \ + {SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2} + #define ALTI_HIGH_CONST \ + {SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0} +#endif + +#endif /* DSFMT_PARAMS216091_H */ diff --git a/dSFMT/dSFMT-params2281.h b/dSFMT/dSFMT-params2281.h new file mode 100644 index 0000000..68d9495 --- /dev/null +++ b/dSFMT/dSFMT-params2281.h @@ -0,0 +1,66 @@ +#ifndef DSFMT_PARAMS2281_H +#define DSFMT_PARAMS2281_H + +#define SFMT_POS1 14 +#define SFMT_SL1 31 +#define SFMT_SL2 1 +#define SFMT_SR1 3 +#define SFMT_SR2 8 +#define SFMT_MSK1 UINT64_C(0xfe9fe9ffe7bffdfd) +#define SFMT_MSK2 UINT64_C(0xf77fdfdff7ffffff) +#define SFMT_MSK32_1 0xfe9fe9ffU +#define SFMT_MSK32_2 0xe7bffdfdU +#define SFMT_MSK32_3 0xf77fdfdfU +#define SFMT_MSK32_4 0xf7ffffffU +#define SFMT_PCV1 UINT64_C(0x0000000000000001) +#define SFMT_PCV2 UINT64_C(0x0000e00000000000) +#define SFMT_IDSTR \ + "dSFMT-2281:14-31-1-3-8:fe9fe9ffe7bffdfd-f77fdfdff7ffffff" + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define ALTI_SL1 (vector unsigned int)(7, 7, 7, 7) + #define ALTI_SL1_PERM \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define ALTI_SL1_MSK \ + (vector unsigned int)(0xffffffffU,0x80000000U,0xffffffffU,0x80000000U) + #define ALTI_SL2_PERM \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define ALTI_SR1_MSK \ + (vector unsigned int)(0x1e9fe9ffU,0xe7bffdfdU,0x177fdfdfU,0xf7ffffffU) + #define ALTI_SR2_PERM \ + (vector unsigned char)(17,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14) + #define ALTI_PERM \ + (vector unsigned char)(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + #define ALTI_LOW_MSK \ + (vector unsigned int)(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2) + #define ALTI_HIGH_CONST \ + (vector unsigned int)(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0) +#else /* For OTHER OSs(Linux?) */ + #define ALTI_SL1 {7, 7, 7, 7} + #define ALTI_SL1_PERM \ + {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define ALTI_SL1_MSK \ + {0xffffffffU,0x80000000U,0xffffffffU,0x80000000U} + #define ALTI_SL2_PERM \ + {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define ALTI_SR1 \ + {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define ALTI_SR1_MSK \ + {0x1e9fe9ffU,0xe7bffdfdU,0x177fdfdfU,0xf7ffffffU} + #define ALTI_SR2_PERM \ + {17,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14} + #define ALTI_PERM \ + {8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7} + #define ALTI_LOW_MSK \ + {SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2} + #define ALTI_HIGH_CONST \ + {SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0} +#endif + +#endif /* DSFMT_PARAMS2281_H */ diff --git a/dSFMT/dSFMT-params4423.h b/dSFMT/dSFMT-params4423.h new file mode 100644 index 0000000..e9610bd --- /dev/null +++ b/dSFMT/dSFMT-params4423.h @@ -0,0 +1,66 @@ +#ifndef DSFMT_PARAMS4423_H +#define DSFMT_PARAMS4423_H + +#define SFMT_POS1 5 +#define SFMT_SL1 31 +#define SFMT_SL2 1 +#define SFMT_SR1 5 +#define SFMT_SR2 16 +#define SFMT_MSK1 UINT64_C(0xfbff7fffffffffff) +#define SFMT_MSK2 UINT64_C(0xdabfdb9fffffb77f) +#define SFMT_MSK32_1 0xfbff7fffU +#define SFMT_MSK32_2 0xffffffffU +#define SFMT_MSK32_3 0xdabfdb9fU +#define SFMT_MSK32_4 0xffffb77fU +#define SFMT_PCV1 UINT64_C(0x0000000000000001) +#define SFMT_PCV2 UINT64_C(0x000de72ad8bbb330) +#define SFMT_IDSTR \ + "dSFMT-4423:5-31-1-5-16:fbff7fffffffffff-dabfdb9fffffb77f" + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define ALTI_SL1 (vector unsigned int)(7, 7, 7, 7) + #define ALTI_SL1_PERM \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define ALTI_SL1_MSK \ + (vector unsigned int)(0xffffffffU,0x80000000U,0xffffffffU,0x80000000U) + #define ALTI_SL2_PERM \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define ALTI_SR1_MSK \ + (vector unsigned int)(0x03ff7fffU,0xffffffffU,0x02bfdb9fU,0xffffb77fU) + #define ALTI_SR2_PERM \ + (vector unsigned char)(18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13) + #define ALTI_PERM \ + (vector unsigned char)(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + #define ALTI_LOW_MSK \ + (vector unsigned int)(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2) + #define ALTI_HIGH_CONST \ + (vector unsigned int)(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0) +#else /* For OTHER OSs(Linux?) */ + #define ALTI_SL1 {7, 7, 7, 7} + #define ALTI_SL1_PERM \ + {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define ALTI_SL1_MSK \ + {0xffffffffU,0x80000000U,0xffffffffU,0x80000000U} + #define ALTI_SL2_PERM \ + {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define ALTI_SR1 \ + {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define ALTI_SR1_MSK \ + {0x03ff7fffU,0xffffffffU,0x02bfdb9fU,0xffffb77fU} + #define ALTI_SR2_PERM \ + {18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13} + #define ALTI_PERM \ + {8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7} + #define ALTI_LOW_MSK \ + {SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2} + #define ALTI_HIGH_CONST \ + {SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0} +#endif + +#endif /* DSFMT_PARAMS4423_H */ diff --git a/dSFMT/dSFMT-params44497.h b/dSFMT/dSFMT-params44497.h new file mode 100644 index 0000000..afd5eb5 --- /dev/null +++ b/dSFMT/dSFMT-params44497.h @@ -0,0 +1,66 @@ +#ifndef DSFMT_PARAMS44497_H +#define DSFMT_PARAMS44497_H + +#define SFMT_POS1 244 +#define SFMT_SL1 9 +#define SFMT_SL2 3 +#define SFMT_SR1 7 +#define SFMT_SR2 16 +#define SFMT_MSK1 UINT64_C(0xfefffcfdeffef7ff) +#define SFMT_MSK2 UINT64_C(0xffffffffd7eff6ff) +#define SFMT_MSK32_1 0xfefffcfdU +#define SFMT_MSK32_2 0xeffef7ffU +#define SFMT_MSK32_3 0xffffffffU +#define SFMT_MSK32_4 0xd7eff6ffU +#define SFMT_PCV1 UINT64_C(0x0000000000000001) +#define SFMT_PCV2 UINT64_C(0x0001930400000000) +#define SFMT_IDSTR \ + "dSFMT-44497:244-9-3-7-16:fefffcfdeffef7ff-ffffffffd7eff6ff" + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define ALTI_SL1 (vector unsigned int)(1, 1, 1, 1) + #define ALTI_SL1_PERM \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define ALTI_SL1_MSK \ + (vector unsigned int)(0xffffffffU,0xfffffe00U,0xffffffffU,0xfffffe00U) + #define ALTI_SL2_PERM \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define ALTI_SR1_MSK \ + (vector unsigned int)(0x00fffcfdU,0xeffef7ffU,0x01ffffffU,0xd7eff6ffU) + #define ALTI_SR2_PERM \ + (vector unsigned char)(18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13) + #define ALTI_PERM \ + (vector unsigned char)(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + #define ALTI_LOW_MSK \ + (vector unsigned int)(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2) + #define ALTI_HIGH_CONST \ + (vector unsigned int)(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0) +#else /* For OTHER OSs(Linux?) */ + #define ALTI_SL1 {1, 1, 1, 1} + #define ALTI_SL1_PERM \ + {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define ALTI_SL1_MSK \ + {0xffffffffU,0xfffffe00U,0xffffffffU,0xfffffe00U} + #define ALTI_SL2_PERM \ + {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define ALTI_SR1 \ + {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define ALTI_SR1_MSK \ + {0x00fffcfdU,0xeffef7ffU,0x01ffffffU,0xd7eff6ffU} + #define ALTI_SR2_PERM \ + {18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13} + #define ALTI_PERM \ + {8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7} + #define ALTI_LOW_MSK \ + {SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2} + #define ALTI_HIGH_CONST \ + {SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0} +#endif + +#endif /* DSFMT_PARAMS44497_H */ diff --git a/dSFMT/dSFMT-params607.h b/dSFMT/dSFMT-params607.h new file mode 100644 index 0000000..44da1ca --- /dev/null +++ b/dSFMT/dSFMT-params607.h @@ -0,0 +1,66 @@ +#ifndef DSFMT_PARAMS607_H +#define DSFMT_PARAMS607_H + +#define SFMT_POS1 2 +#define SFMT_SL1 33 +#define SFMT_SL2 1 +#define SFMT_SR1 7 +#define SFMT_SR2 24 +#define SFMT_MSK1 UINT64_C(0xffcfeef7fdffffff) +#define SFMT_MSK2 UINT64_C(0xfdffffb7ffffffff) +#define SFMT_MSK32_1 0xffcfeef7U +#define SFMT_MSK32_2 0xfdffffffU +#define SFMT_MSK32_3 0xfdffffb7U +#define SFMT_MSK32_4 0xffffffffU +#define SFMT_PCV1 UINT64_C(0x0000000000000001) +#define SFMT_PCV2 UINT64_C(0x0005196200000000) +#define SFMT_IDSTR \ + "dSFMT-607:2-33-1-7-24:ffcfeef7fdffffff-fdffffb7ffffffff" + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define ALTI_SL1 (vector unsigned int)(1, 1, 1, 1) + #define ALTI_SL1_PERM \ + (vector unsigned char)(4,5,6,7,28,28,28,28,12,13,14,15,0,1,2,3) + #define ALTI_SL1_MSK \ + (vector unsigned int)(0xfffffffeU,0x00000000U,0xfffffffeU,0x00000000U) + #define ALTI_SL2_PERM \ + (vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0) + #define ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define ALTI_SR1_MSK \ + (vector unsigned int)(0x01cfeef7U,0xfdffffffU,0x01ffffb7U,0xffffffffU) + #define ALTI_SR2_PERM \ + (vector unsigned char)(19,19,19,0,1,2,3,4,19,19,19,8,9,10,11,12) + #define ALTI_PERM \ + (vector unsigned char)(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + #define ALTI_LOW_MSK \ + (vector unsigned int)(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2) + #define ALTI_HIGH_CONST \ + (vector unsigned int)(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0) +#else /* For OTHER OSs(Linux?) */ + #define ALTI_SL1 {1, 1, 1, 1} + #define ALTI_SL1_PERM \ + {4,5,6,7,28,28,28,28,12,13,14,15,0,1,2,3} + #define ALTI_SL1_MSK \ + {0xfffffffeU,0x00000000U,0xfffffffeU,0x00000000U} + #define ALTI_SL2_PERM \ + {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0} + #define ALTI_SR1 \ + {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define ALTI_SR1_MSK \ + {0x01cfeef7U,0xfdffffffU,0x01ffffb7U,0xffffffffU} + #define ALTI_SR2_PERM \ + {19,19,19,0,1,2,3,4,19,19,19,8,9,10,11,12} + #define ALTI_PERM \ + {8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7} + #define ALTI_LOW_MSK \ + {SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2} + #define ALTI_HIGH_CONST \ + {SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0} +#endif + +#endif /* DSFMT_PARAMS607_H */ diff --git a/dSFMT/dSFMT-params86243.h b/dSFMT/dSFMT-params86243.h new file mode 100644 index 0000000..90b14ce --- /dev/null +++ b/dSFMT/dSFMT-params86243.h @@ -0,0 +1,66 @@ +#ifndef DSFMT_PARAMS86243_H +#define DSFMT_PARAMS86243_H + +#define SFMT_POS1 147 +#define SFMT_SL1 43 +#define SFMT_SL2 3 +#define SFMT_SR1 4 +#define SFMT_SR2 16 +#define SFMT_MSK1 UINT64_C(0xfffffdfaff3ffeff) +#define SFMT_MSK2 UINT64_C(0xf3efffffffd6fbbe) +#define SFMT_MSK32_1 0xfffffdfaU +#define SFMT_MSK32_2 0xff3ffeffU +#define SFMT_MSK32_3 0xf3efffffU +#define SFMT_MSK32_4 0xffd6fbbeU +#define SFMT_PCV1 UINT64_C(0x000b8f71b0000001) +#define SFMT_PCV2 UINT64_C(0x000c0671c63a820d) +#define SFMT_IDSTR \ + "dSFMT-86243:147-43-3-4-16:fffffdfaff3ffeff-f3efffffffd6fbbe" + + +/* PARAMETERS FOR ALTIVEC */ +#if defined(__APPLE__) /* For OSX */ + #define ALTI_SL1 (vector unsigned int)(3, 3, 3, 3) + #define ALTI_SL1_PERM \ + (vector unsigned char)(5,6,7,27,27,27,27,27,13,14,15,0,1,2,3,4) + #define ALTI_SL1_MSK \ + (vector unsigned int)(0xfffff800U,0x00000000U,0xfffff800U,0x00000000U) + #define ALTI_SL2_PERM \ + (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2) + #define ALTI_SR1 \ + (vector unsigned int)(SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1) + #define ALTI_SR1_MSK \ + (vector unsigned int)(0x0ffffdfaU,0xff3ffeffU,0x03efffffU,0xffd6fbbeU) + #define ALTI_SR2_PERM \ + (vector unsigned char)(18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13) + #define ALTI_PERM \ + (vector unsigned char)(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + #define ALTI_LOW_MSK \ + (vector unsigned int)(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2) + #define ALTI_HIGH_CONST \ + (vector unsigned int)(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0) +#else /* For OTHER OSs(Linux?) */ + #define ALTI_SL1 {3, 3, 3, 3} + #define ALTI_SL1_PERM \ + {5,6,7,27,27,27,27,27,13,14,15,0,1,2,3,4} + #define ALTI_SL1_MSK \ + {0xfffff800U,0x00000000U,0xfffff800U,0x00000000U} + #define ALTI_SL2_PERM \ + {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2} + #define ALTI_SR1 \ + {SFMT_SR1, SFMT_SR1, SFMT_SR1, SFMT_SR1} + #define ALTI_SR1_MSK \ + {0x0ffffdfaU,0xff3ffeffU,0x03efffffU,0xffd6fbbeU} + #define ALTI_SR2_PERM \ + {18,18,0,1,2,3,4,5,18,18,8,9,10,11,12,13} + #define ALTI_PERM \ + {8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7} + #define ALTI_LOW_MSK \ + {SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, \ + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2} + #define ALTI_HIGH_CONST \ + {SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0} +#endif + +#endif /* DSFMT_PARAMS86243_H */ diff --git a/dSFMT/dSFMT-ref.c b/dSFMT/dSFMT-ref.c new file mode 100644 index 0000000..221f0ee --- /dev/null +++ b/dSFMT/dSFMT-ref.c @@ -0,0 +1,407 @@ +/** + * @file dSFMT-ref.c + * @brief double precision SIMD-oriented Fast Mersenne Twister (dSFMT) + * based on IEEE 754 format. + * + * @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 + */ +#include +#include +#include +#include "dSFMT-params.h" + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) + #include +#elif defined(_MSC_VER) + typedef unsigned int uint32_t; + typedef unsigned long long uint64_t; +#else + #include +#endif + +#ifndef PRIu64 + #if defined(_MSC_VER) + #define PRIu64 "I64u" + #define PRIx64 "I64x" + #else + #define PRIu64 "llu" + #define PRIx64 "llx" + #endif +#endif + +#ifndef UINT64_C + #define UINT64_C(v) (v ## ULL) +#endif + +#if defined(__ppc__) +/** + * This function simulate a 64-bit index of LITTLE ENDIAN + * in BIG ENDIAN machine. + */ +inline static int sfmt_idxof(int i) { + return i ^ 1; +} +#else +inline static int sfmt_idxof(int i) { + return i; +} +#endif + +double genrand_close1_open2(void); + +char *get_idstring(void); +int get_min_array_size(void); +void init_gen_rand(uint32_t seed); + +/*------------------------------------------ + 128-bit SIMD like data type for standard C + ------------------------------------------*/ +/** 128-bit data structure */ +union W128_T { + uint64_t u[2]; + uint32_t u32[4]; + double d[2]; +}; + +/** 128-bit data type */ +typedef union W128_T w128_t; + +/*-------------------------------------- + FILE GLOBAL VARIABLES + internal state, index counter and flag + --------------------------------------*/ +/** the 128-bit internal state array */ +static w128_t sfmt[SFMT_N + 1]; +/** the double pointer to the 128-bit internal state array */ +static double *psfmt64 = &sfmt[0].d[0]; +/** index counter to the internal state array as double */ +static int sfmt_idx; +/** a flag: it is 0 if and only if the internal state is not yet + * initialized. */ +static int is_sfmt_initialized = 0; +/** a period certification vector which certificate the period of 2^{MEXP}-1. */ +static uint64_t sfmt_pcv[2] = {SFMT_PCV1, SFMT_PCV2}; + +/*---------------- + STATIC FUNCTIONS + ----------------*/ +static void lshift128(w128_t *out, const w128_t *in, int shift); +static void gen_rand_all(void); +static void gen_rand_array(w128_t array[], int size); +static void initial_mask(void); +static void period_certification(void); + +/** + * This function simulates SIMD 128-bit left shift by the standard C. + * The 128-bit integer given in \b 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 + */ +inline static void lshift128(w128_t *out, const w128_t *in, int shift) { + out->u[0] = in->u[0] << (shift * 8); + out->u[1] = in->u[1] << (shift * 8); + out->u[1] |= in->u[0] >> (64 - shift * 8); +} + +/** + * 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 lung a 128-bit part of the internal state array + */ +inline static void do_recursion(w128_t *r, w128_t *a, w128_t *b, w128_t *c, + w128_t *lung) { + w128_t x; + + lshift128(&x, a, SFMT_SL2); + r->u[0] = a->u[0] ^ x.u[0] ^ ((b->u[0] >> SFMT_SR1) & SFMT_MSK1) + ^ (c->u[0] >> SFMT_SR2) ^ (c->u[0] << SFMT_SL1) ^ lung->u[1]; + r->u[1] = a->u[1] ^ x.u[1] ^ ((b->u[1] >> SFMT_SR1) & SFMT_MSK2) + ^ (c->u[1] >> SFMT_SR2) ^ (c->u[1] << SFMT_SL1) ^ lung->u[0]; + r->u[0] &= SFMT_LOW_MASK; + r->u[1] &= SFMT_LOW_MASK; + lung->u[0] ^= r->u[0]; + lung->u[1] ^= r->u[1]; + r->u[0] |= SFMT_HIGH_CONST; + r->u[1] |= SFMT_HIGH_CONST; +} + +/** + * This function fills the internal state array with double precision + * floating point pseudorandom numbers of the IEEE 754 format. + */ +inline static void gen_rand_all(void) { + int i; + w128_t lung; + + lung = sfmt[SFMT_N]; + do_recursion(&sfmt[0], &sfmt[0], &sfmt[SFMT_POS1], &sfmt[SFMT_N -1], &lung); + for (i = 1; i < SFMT_N - SFMT_POS1; i++) { + do_recursion(&sfmt[i], &sfmt[i], &sfmt[i + SFMT_POS1], &sfmt[i - 1], + &lung); + } + for (; i < SFMT_N; i++) { + do_recursion(&sfmt[i], &sfmt[i], &sfmt[i + SFMT_POS1 - SFMT_N], + &sfmt[i - 1], &lung); + } + sfmt[SFMT_N] = lung; +} + +/** + * This function initializes the internal state array to fit the IEEE + * 754 format. + */ +void initial_mask(void) { + int i; + uint64_t *psfmt; + + psfmt = &sfmt[0].u[0]; + for (i = 0; i < (SFMT_N + 1) * 2; i++) { + psfmt[i] = (psfmt[i] & SFMT_LOW_MASK) | SFMT_HIGH_CONST; + } +} + +/** + * This function certificate the period of 2^{MEXP}-1. + */ +static void period_certification() { + int inner = 0; + int i, j; + uint64_t new[2]; + uint64_t work; + uint64_t fix[2]; + + fix[0] = (((SFMT_HIGH_CONST >> SFMT_SR1) & SFMT_MSK2) + ^ (SFMT_HIGH_CONST >> SFMT_SR2)) | SFMT_HIGH_CONST; + fix[1] = (((SFMT_HIGH_CONST >> SFMT_SR1) & SFMT_MSK1) + ^ (SFMT_HIGH_CONST >> SFMT_SR2)) | SFMT_HIGH_CONST; + fix[0] = fix[0] ^ (SFMT_HIGH_CONST >> (64 - 8 * SFMT_SL2)); + new[0] = sfmt[SFMT_N].u[0] ^ fix[0]; + new[1] = sfmt[SFMT_N].u[1] ^ fix[1]; + for (i = 0; i < 2; i++) { + work = new[i] & sfmt_pcv[i]; + for (j = 0; j < 52; j++) { + inner ^= work & 1; + work = work >> 1; + } + } + /* check OK, the period is 2^{MEXP}-1 */ + if (inner == 1) { + return; + } + /* check NG, the period may not be 2^{MEXP}-1 then modify */ + for (i = 0; i < 2; i++) { + work = 1; + for (j = 0; j < 52; j++) { + if ((work & sfmt_pcv[i]) != 0) { + sfmt[SFMT_N].u[i] ^= work; + return; + } + work = work << 1; + } + } +} + +/** + * 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 ini_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 ini_func2(uint32_t x) { + return (x ^ (x >> 27)) * (uint32_t)1566083941UL; +} + +/*---------------- + PUBLIC FUNCTIONS + ----------------*/ +/** + * This function returns the identification string. The string shows + * the Mersenne exponent, and all parameters of this generator. + * @return id string. + */ +char *get_idstring(void) { + return SFMT_IDSTR; +} + +/** + * This function returns the minimum size of array used for \b + * fill_array functions. + * @return minimum size of array used for fill_array functions. + */ +int get_min_array_size(void) { + return SFMT_N64; +} + +/** + * This function generates and returns double precision pseudorandom + * number which distributes uniformly in the range [1, 2). + * init_gen_rand() or init_by_array() must be called before this + * function. + * @return double precision floating point pseudorandom number + */ +inline double genrand_close1_open2(void) { + double r; + + assert(is_sfmt_initialized); + + if (sfmt_idx >= SFMT_N * 2) { + gen_rand_all(); + sfmt_idx = 0; + } + r = psfmt64[sfmt_idx++]; + return r; +} + +/** + * This function initializes the internal state array with a 32-bit + * integer seed. + * @param seed a 32-bit integer used as the seed. + */ +void init_gen_rand(uint32_t seed) { + int i; + uint32_t *psfmt; + + psfmt = (uint32_t *)&sfmt[0]; + psfmt[sfmt_idxof(0)] = seed; + for (i = 1; i < (SFMT_N + 1) * 4; i++) { + psfmt[sfmt_idxof(i)] = 1812433253UL + * (psfmt[sfmt_idxof(i - 1)] + ^ (psfmt[sfmt_idxof(i - 1)] >> 30)) + i; + } + initial_mask(); + period_certification(); + sfmt_idx = SFMT_N64; + is_sfmt_initialized = 1; +} + +/** + * This function initializes the internal state array, + * with an array of 32-bit integers used as the seeds + * @param init_key the array of 32-bit integers, used as a seed. + * @param key_length the length of init_key. + */ +void init_by_array(uint32_t init_key[], int key_length) { + int i, j, count; + uint32_t r; + uint32_t *psfmt32; + int lag; + int mid; + int size = (SFMT_N + 1) * 4; /* pulmonary */ + + + if (size >= 623) { + lag = 11; + } else if (size >= 68) { + lag = 7; + } else if (size >= 39) { + lag = 5; + } else { + lag = 3; + } + mid = (size - lag) / 2; + + psfmt32 = &sfmt[0].u32[0]; + memset(sfmt, 0x8b, sizeof(sfmt)); + if (key_length + 1 > size) { + count = key_length + 1; + } else { + count = size; + } + r = ini_func1(psfmt32[sfmt_idxof(0)] ^ psfmt32[sfmt_idxof(mid % size)] + ^ psfmt32[sfmt_idxof((size - 1) % size)]); + psfmt32[sfmt_idxof(mid % size)] += r; + r += key_length; + psfmt32[sfmt_idxof((mid + lag) % size)] += r; + psfmt32[sfmt_idxof(0)] = r; + i = 1; + count--; + for (i = 1, j = 0; (j < count) && (j < key_length); j++) { + r = ini_func1(psfmt32[sfmt_idxof(i)] + ^ psfmt32[sfmt_idxof((i + mid) % size)] + ^ psfmt32[sfmt_idxof((i + size - 1) % size)]); + psfmt32[sfmt_idxof((i + mid) % size)] += r; + r += init_key[j] + i; + psfmt32[sfmt_idxof((i + mid + lag) % size)] += r; + psfmt32[sfmt_idxof(i)] = r; + i = (i + 1) % size; + } + for (; j < count; j++) { + r = ini_func1(psfmt32[sfmt_idxof(i)] + ^ psfmt32[sfmt_idxof((i + mid) % size)] + ^ psfmt32[sfmt_idxof((i + size - 1) % size)]); + psfmt32[sfmt_idxof((i + mid) % size)] += r; + r += i; + psfmt32[sfmt_idxof((i + mid + lag) % size)] += r; + psfmt32[sfmt_idxof(i)] = r; + i = (i + 1) % size; + } + for (j = 0; j < size; j++) { + r = ini_func2(psfmt32[sfmt_idxof(i)] + + psfmt32[sfmt_idxof((i + mid) % size)] + + psfmt32[sfmt_idxof((i + size - 1) % size)]); + psfmt32[sfmt_idxof((i + mid) % size)] ^= r; + r -= i; + psfmt32[sfmt_idxof((i + mid + lag) % size)] ^= r; + psfmt32[sfmt_idxof(i)] = r; + i = (i + 1) % size; + } + initial_mask(); + period_certification(); + sfmt_idx = SFMT_N64; + is_sfmt_initialized = 1; +} + +#ifdef MAIN +int main(int argc, char *argv[]) { + int i; + double d; + uint32_t ar[4] = {1, 2, 3, 4}; + + if (argc <= 1) { + printf("%s\n", get_idstring()); + printf("generated randoms [1, 2)\n"); + init_gen_rand(1234); + for (i = 0; i < 1000; i++) { + d = genrand_close1_open2(); + printf("%1.15f ", d); + if (i % 4 == 3) { + printf("\n"); + } + } + } else { /* option -ar */ + printf("%s\n", get_idstring()); + printf("init_by_array\n"); + printf("generated randoms [1, 2)\n"); + init_by_array(ar, 4); + for (i = 0; i < 1000; i++) { + d = genrand_close1_open2(); + printf("%1.15f ", d); + if (i % 4 == 3) { + printf("\n"); + } + } + } + return 0; +} +#endif diff --git a/dSFMT/dSFMT-sse2.h b/dSFMT/dSFMT-sse2.h new file mode 100644 index 0000000..520db9b --- /dev/null +++ b/dSFMT/dSFMT-sse2.h @@ -0,0 +1,203 @@ +/** + * @file dSFMT-sse2.h + * @brief double precision SIMD-oriented Fast Mersenne Twister (dSFMT) + * for Intel SSE2. + * + * @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 DSFMT_SSE2_H +#define DSFMT_SSE2_H + +#include + +static __m128i sse2_param_mask; +static __m128i sse2_low_mask; +static __m128i sse2_high_const; +static __m128i sse2_int_one; +static __m128d sse2_double_two; +static __m128d sse2_double_m_one; + +static void setup_const(void); + +#if defined(__GNUC__) +inline static __m128i mm_recursion(__m128i *a, __m128i *b, __m128i c, __m128i d) + __attribute__((always_inline)); +#elif defined(_MSC_VER) && _MSC_VER >= 1200 +__forceinline static __m128i mm_recursion(__m128i *a, __m128i *b, __m128i c, + __m128i d); +#else +inline static __m128i mm_recursion(__m128i *a, __m128i *b, __m128i c, + __m128i d); +#endif +/** + * This function setup some constant variables for SSE2. + */ +static void setup_const(void) { + static int first = 1; + if (!first) { + return; + } + sse2_param_mask = _mm_set_epi32(SFMT_MSK32_3, SFMT_MSK32_4, + SFMT_MSK32_1, SFMT_MSK32_2); + sse2_low_mask = _mm_set_epi32(SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2, + SFMT_LOW_MASK32_1, SFMT_LOW_MASK32_2); + sse2_int_one = _mm_set_epi32(0, 1, 0, 1); + sse2_high_const = _mm_set_epi32(SFMT_HIGH_CONST32, 0, SFMT_HIGH_CONST32, 0); + sse2_double_two = _mm_set_pd(2.0, 2.0); + sse2_double_m_one = _mm_set_pd(-1.0, -1.0); + first = 0; +} + +/** + * This function represents the recursion formula. + * @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 + * @return next value of recursion + */ +inline static __m128i mm_recursion(__m128i *a, __m128i *b, + __m128i c, __m128i d) { + __m128i v, w, x, y, z; + + z = _mm_load_si128(a); + y = _mm_srli_epi64(*b, SFMT_SR1); + y = _mm_and_si128(y, sse2_param_mask); + w = _mm_slli_epi64(c, SFMT_SL1); + x = _mm_srli_epi64(c, SFMT_SR2); + v = _mm_shuffle_epi32(d, SSE2_SHUFF); + w = _mm_xor_si128(w, x); + v = _mm_xor_si128(v, z); + z = _mm_slli_si128(z, SFMT_SL2); + w = _mm_xor_si128(w, y); + v = _mm_xor_si128(v, z); + v = _mm_xor_si128(v, w); + v = _mm_and_si128(v, sse2_low_mask); + /*v = _mm_or_si128(v, sse2_high_const);*/ + return v; +} + +/** + * This function converts the double precision floating point numbers which + * distribute uniformly in the range [1, 2) to those which distribute uniformly + * in the range [0, 1). + * @param array array of double precision floating point numbers + * @param size size of the array + */ +inline static void convert_co(w128_t array[], int size) { + int i; + + for (i = 0; i < size; i++) { + array[i].sd = _mm_add_pd(array[i].sd, sse2_double_m_one); + } +} + +/** + * This function converts the double precision floating point numbers which + * distribute uniformly in the range [1, 2) to those which distribute uniformly + * in the range (0, 1]. + * @param array array of double precision floating point numbers + * @param size size of the array + */ +inline static void convert_oc(w128_t array[], int size) { + int i; + + for (i = 0; i < size; i++) { + array[i].sd = _mm_sub_pd(sse2_double_two, array[i].sd); + } +} + +/** + * This function converts the double precision floating point numbers which + * distribute uniformly in the range [1, 2) to those which distribute uniformly + * in the range (0, 1). + * @param array array of double precision floating point numbers + * @param size size of the array + */ +inline static void convert_oo(w128_t array[], int size) { + int i; + for (i = 0; i < size; i++) { + array[i].si = _mm_or_si128(array[i].si, sse2_int_one); + array[i].sd = _mm_add_pd(array[i].sd, sse2_double_m_one); + } +} + +/** + * This function fills the internal state array with double precision + * floating point pseudorandom numbers of the IEEE 754 format. + */ +inline static void gen_rand_all(void) { + int i; + __m128i r, lung; + + lung = _mm_load_si128(&sfmt[SFMT_N].si); + r = _mm_load_si128(&sfmt[SFMT_N - 1].si); + for (i = 0; i < SFMT_N - SFMT_POS1; i++) { + r = mm_recursion(&sfmt[i].si, &sfmt[i + SFMT_POS1].si, r, lung); + lung = _mm_xor_si128(lung, r); + r = _mm_or_si128(r, sse2_high_const); + _mm_store_si128(&sfmt[i].si, r); + } + for (; i < SFMT_N; i++) { + r = mm_recursion(&sfmt[i].si, &sfmt[i + SFMT_POS1 - SFMT_N].si, r, + lung); + lung = _mm_xor_si128(lung, r); + r = _mm_or_si128(r, sse2_high_const); + _mm_store_si128(&sfmt[i].si, r); + } + _mm_store_si128(&sfmt[SFMT_N].si, lung); +} + +/** + * This function fills the user-specified array with double precision + * floating point pseudorandom numbers of the IEEE 754 format. + * @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(w128_t array[], int size) { + int i, j; + __m128i r, lung; + + lung = _mm_load_si128(&sfmt[SFMT_N].si); + r = _mm_load_si128(&sfmt[SFMT_N - 1].si); + for (i = 0; i < SFMT_N - SFMT_POS1; i++) { + r = mm_recursion(&sfmt[i].si, &sfmt[i + SFMT_POS1].si, r, lung); + lung = _mm_xor_si128(lung, r); + r = _mm_or_si128(r, sse2_high_const); + _mm_store_si128(&array[i].si, r); + } + for (; i < SFMT_N; i++) { + r = mm_recursion(&sfmt[i].si, &array[i + SFMT_POS1 - SFMT_N].si, r, + lung); + lung = _mm_xor_si128(lung, r); + r = _mm_or_si128(r, sse2_high_const); + _mm_store_si128(&array[i].si, r); + } + /* main loop */ + for (; i < size - SFMT_N; i++) { + r = mm_recursion(&array[i - SFMT_N].si, + &array[i + SFMT_POS1 - SFMT_N].si, r, lung); + lung = _mm_xor_si128(lung, r); + r = _mm_or_si128(r, sse2_high_const); + _mm_store_si128(&array[i].si, r); + } + for (j = 0; j < 2 * SFMT_N - size; j++) { + sfmt[j].si = array[j + size - SFMT_N].si; + } + for (; i < size; i++, j++) { + r = mm_recursion(&array[i - SFMT_N].si, + &array[i + SFMT_POS1 - SFMT_N].si, r, lung); + lung = _mm_xor_si128(lung, r); + r = _mm_or_si128(r, sse2_high_const); + _mm_store_si128(&array[i].si, r); + _mm_store_si128(&sfmt[j].si, r); + } + _mm_store_si128(&sfmt[SFMT_N].si, lung); +} +#endif /* DSFMT_SSE2_H */ diff --git a/dSFMT/dSFMT.11213.out.txt b/dSFMT/dSFMT.11213.out.txt new file mode 100644 index 0000000..d4f7ad2 --- /dev/null +++ b/dSFMT/dSFMT.11213.out.txt @@ -0,0 +1,252 @@ +dSFMT-11213:42-37-3-7-16:ffdbfdbfdfbb7ffe-fbf7ff7ffbef3df7 +generated randoms [1, 2) +1.052618684753761 1.839044593720330 1.521696392492255 1.231090805609236 +1.403725080674842 1.489451928137466 1.437457197788952 1.232671289743026 +1.631780017136274 1.005540405255487 1.023667957707457 1.724588687042713 +1.479093175478183 1.804199784800703 1.131531441617550 1.507248056884892 +1.038765006559073 1.233834134641747 1.020806254987758 1.782685650422070 +1.528704878223176 1.136888583412306 1.317454523355969 1.670515451560453 +1.857182880379573 1.030452585012940 1.460796355433366 1.054962215349831 +1.535046739663272 1.478149437345708 1.153713878152333 1.114829026284545 +1.829757940387581 1.724953460214019 1.562615373071375 1.253299869000909 +1.991666577118047 1.868252887451483 1.412218895628512 1.838491937171702 +1.515072456933145 1.080740150477135 1.464887724551355 1.998584108050359 +1.182198009526285 1.264806571738698 1.251839840221459 1.615087538966740 +1.646504200104808 1.993023697632021 1.121508996490130 1.828024308286918 +1.508311700115220 1.257442926404486 1.256365729574773 1.531391579798851 +1.504750231707505 1.170998920426991 1.227520518958153 1.363868839836882 +1.195646106178590 1.291523213951201 1.277588138006009 1.400356743236173 +1.328432545758136 1.365947385466344 1.403269013553612 1.045968510419090 +1.421164267738755 1.189069817411460 1.624316204962699 1.640863191024335 +1.845199283111013 1.504760133926293 1.523976003843935 1.363775467219762 +1.108959115048153 1.322926715476666 1.887570229658333 1.325001530072659 +1.403095921509369 1.378626726361408 1.614668829560945 1.339721332820326 +1.629775213497502 1.050776667841905 1.797816295881129 1.455495225415750 +1.037463798573878 1.416929686906317 1.775379800860280 1.468730897464019 +1.446595639200280 1.486333557578921 1.862766791616813 1.740939679617434 +1.436898198585280 1.616661646256853 1.500517010235334 1.185968243893628 +1.674268801145272 1.529761358404378 1.875779426816864 1.548258064633102 +1.547795864823283 1.386493582320716 1.425306004639340 1.006129425519120 +1.554036789741329 1.076907573218380 1.147390862540522 1.137120565235742 +1.733407870284029 1.578203442131945 1.833469755156754 1.099191454118401 +1.608009865342618 1.318071142974334 1.305961472247024 1.875204543963078 +1.909635656115090 1.623210667765303 1.715140956794585 1.174602387051283 +1.033193180337119 1.825152104826469 1.751766892239332 1.610503892796189 +1.774513144583903 1.175551261309052 1.426349235825476 1.984805719804805 +1.102410645785135 1.729875051529875 1.398252810904744 1.354621419970116 +1.741305791372415 1.953879485908479 1.390845916313387 1.139186843851069 +1.023181131830157 1.660677838176038 1.380958632587640 1.247822232614200 +1.841707362622007 1.371147367003023 1.424728724734495 1.304720448515825 +1.411351229237995 1.110450950461893 1.007153562336681 1.973566887121086 +1.466463388280363 1.366072381833338 1.035206883299050 1.616311140274964 +1.853187631415645 1.192870520447698 1.412552592146513 1.124601373544028 +1.053465987755461 1.856278251274412 1.871637565500146 1.118555797006080 +1.461814001953303 1.065261610211652 1.485391410065527 1.241085841811559 +1.403259647073880 1.441956379796331 1.674227939721869 1.862328518646146 +1.189819555314578 1.791477635490702 1.065595923681566 1.955297122542815 +1.252720917000357 1.049471481621012 1.254811537404594 1.367220360320522 +1.819473690613133 1.772990615979645 1.817944573987903 1.111101778002400 +1.039845808685854 1.345799158420482 1.435192667523872 1.742323871570437 +1.964233706279178 1.179159551619387 1.039980024472589 1.169203646323967 +1.278341075149553 1.274471521599430 1.993364487402656 1.003338319795382 +1.784954078147211 1.570308999507114 1.168723038545248 1.568445361471571 +1.383714983861532 1.759892417454767 1.031916379690420 1.176627840410405 +1.335821779497032 1.300543121662878 1.070051583511189 1.748439760076400 +1.451652692404685 1.314450510902136 1.038642032499746 1.453870324225282 +1.028883340234880 1.051482986460591 1.913025883258610 1.045314556961841 +1.192135385016296 1.073752093512978 1.310646062665723 1.666923176047638 +1.526373600555568 1.597407730163104 1.652934817572941 1.301036209673139 +1.945230891796085 1.239924148951932 1.051864263844371 1.082001414073302 +1.114821230906769 1.956568762642158 1.148691125226643 1.325470600969394 +1.103912135304459 1.812817981622654 1.256354564028261 1.067629393539529 +1.954368983485752 1.466952361641147 1.991114327935023 1.003561601899605 +1.930800101470243 1.398967471528323 1.990180709857526 1.589925181263506 +1.854240173121622 1.574193304160054 1.052866154362122 1.530625638046838 +1.313600371267702 1.841168190707531 1.989782233219608 1.933353427642379 +1.245808037247074 1.082437869221004 1.693950581073346 1.873768260408446 +1.737578004198810 1.586971468838486 1.902243228162132 1.371795343953186 +1.187216540134549 1.304710459874222 1.053590912899987 1.214024577644395 +1.608927418749234 1.016977361312242 1.271033967403511 1.961298421344955 +1.474776389511559 1.160461353959577 1.883318296246227 1.468818699615698 +1.010368230258400 1.557553787863959 1.283580785172918 1.498543588585841 +1.389135425865106 1.305503062966817 1.989038269538193 1.012086741227668 +1.538337630444893 1.797641274818003 1.071593901014138 1.800168778095557 +1.695126956318519 1.176822353056097 1.140248150989726 1.302475847377134 +1.716689227001512 1.511028166720298 1.487715436012742 1.241940481759173 +1.325210735329422 1.377695515666716 1.662792036342303 1.698883109193266 +1.994812808806234 1.838113714048665 1.803405791482539 1.897643929814275 +1.705568608991182 1.803925798092391 1.086183463598301 1.097893052710509 +1.375057818344554 1.731310331973235 1.778861093876252 1.412487267034195 +1.992663726043029 1.353914073731940 1.150840386247648 1.143531053403211 +1.661139478199043 1.708564831675665 1.115775002122827 1.521855898179217 +1.316240843282474 1.712414024430638 1.722768845386313 1.830315367408775 +1.388220365689286 1.033915404322036 1.061169345050694 1.769131175911370 +1.371462825584780 1.190443017482967 1.674998334264897 1.620619107171316 +1.666690154690630 1.455820664184710 1.165077976770778 1.554910029025563 +1.444197088501167 1.918493601196301 1.147136765307157 1.949012788259390 +1.866791853940095 1.626970655971631 1.182434590798520 1.889768811944575 +1.304974822877119 1.986518971359655 1.579558801679572 1.622627360493858 +1.073540048890119 1.298539353239492 1.475171215789250 1.023416468963237 +1.250823380771201 1.940750087082261 1.947173706901177 1.052560226877827 +1.162027362930897 1.666264391791824 1.845578653959450 1.671827932769188 +1.964332757349503 1.511347792963796 1.175165855422231 1.602891794899363 +1.094455619649876 1.119268643904166 1.601150539172486 1.051932842348335 +1.533235278477578 1.906606610205377 1.499809185865827 1.099051154417050 +1.225086481349245 1.980850558248256 1.004929726320200 1.266557041989572 +1.141354554798891 1.567674045416354 1.107821525656515 1.916877320164766 +1.031372308755458 1.727466846995823 1.284617089563879 1.676394721664404 +1.579096409011388 1.949952374927495 1.770444329893718 1.491269413220990 +1.417294025220144 1.765380162282503 1.018100752262687 1.885596776756526 +1.780331654108034 1.050730771625335 1.677058388052372 1.216445481332637 +1.203449414982501 1.153502640829509 1.345775412551666 1.576001158840955 +1.751351518534396 1.103189770767390 1.949878494709789 1.748589762090155 +1.470507821300637 1.651147490648917 1.521381013605140 1.937126480700550 +1.755889473817459 1.848306718521872 1.459023917522103 1.883450744875093 +1.784587844703655 1.248467835280016 1.480290208840662 1.450832192383629 +1.179273025276259 1.213838424005559 1.967987534871045 1.193195504748283 +1.365611764646271 1.042423249988520 1.920530700037509 1.825424102221241 +1.442285555688264 1.029112766492258 1.798299901193227 1.741312923784467 +1.168034447886508 1.428037912485466 1.941265571919710 1.017314100861905 +1.489323734548128 1.320615166339422 1.783647592993469 1.827428308157059 +1.224769791842334 1.528406124179918 1.771236544897941 1.413417879485907 +1.638808977501348 1.184479917020958 1.083306056805889 1.893224786790074 +1.143741010602621 1.663445170600100 1.508472781697545 1.271332617126582 +1.938691623497905 1.668589253089906 1.922890440942079 1.428464949071989 +1.442014211651168 1.779497789697310 1.000495965465816 1.864285258698259 +1.918673149048645 1.709127537006371 1.722105706375489 1.119527838966189 +1.192224796173711 1.037313320309096 1.309554270033197 1.545368378957165 +1.304498956627214 1.462228373244908 1.654863936195347 1.718276307794111 +1.818816650754938 1.403189404521441 1.652123538884981 1.170329905641091 +1.733672956123921 1.278948629099385 1.921061613363865 1.906596351509581 +1.205754082882497 1.765539696575781 1.935980129750041 1.720326172258814 +1.916123493423383 1.586499438105724 1.232523780009146 1.567677923381337 +1.239523330718490 1.349380769340471 1.900939136193841 1.895713561215474 +1.169111796579676 1.282850632052852 1.548940384242267 1.285758798543407 +1.975078970874169 1.112207675860611 1.538108783458367 1.732254628768040 +1.059366141938352 1.403208985096305 1.190379750294146 1.254176069054078 +1.082720173352072 1.653218684911258 1.412452906047608 1.080130598429958 +1.368791842737705 1.690877318529811 1.260217503581036 1.392840534482720 +1.541258733391011 1.151720647864279 1.895405975567398 1.337851543739312 +1.969934478491314 1.369087674386934 1.283554662609740 1.729625095194018 +1.565191138538424 1.446800238660198 1.496839184959707 1.195318121085492 +1.432333795016529 1.864318469054395 1.305662471270251 1.831675572038425 +1.370568018592347 1.741019780931252 1.125559780598038 1.969489106594438 +1.085747527502555 1.885507114398346 1.261285255743609 1.076851712987774 +1.832746781090047 1.244623280832088 1.367801166884118 1.864417193748058 +1.911928666731855 1.757665898979861 1.995371661938406 1.475359504647136 +1.585011048314088 1.095780038328847 1.143923919911761 1.761025328129607 +1.358207766642811 1.526644638837840 1.091659237846557 1.031943355637253 +1.724399504266081 1.603944424925731 1.491764058886214 1.529131181760766 +1.895268570688768 1.445110026948409 1.684473614804165 1.391017374163483 +1.682886568460928 1.825988606854602 1.332029425510411 1.701505053304873 +1.125927238448665 1.510686422875789 1.317024489540296 1.076907195585892 +1.088798136941946 1.711291291247299 1.465234764326889 1.097123124112101 +1.477516537504476 1.620357824572578 1.126437570571524 1.090427477623341 +1.731675225782412 1.236986278185632 1.930698969031186 1.010232692566432 +1.334585516574309 1.989392947302934 1.425714134218338 1.365656010749206 +1.485061698716266 1.592838912613314 1.152115151277251 1.448546751436748 +1.343643291952750 1.385390429288747 1.195887587984503 1.798656163269382 +1.255106868461063 1.847961509498147 1.246604352669545 1.052740109797794 +1.662706113537033 1.930055754337764 1.867754820015879 1.948261532117061 +1.300475063638678 1.162831297035787 1.974962603356198 1.716881914830025 +1.078365569711820 1.795313789906378 1.555421103860509 1.535038651721766 +1.094205800512068 1.132528672856737 1.943150855947012 1.376703563686373 +1.330851961935334 1.422547743065910 1.674154675322399 1.609950156654861 +1.310107588087803 1.985286697991460 1.274624505779257 1.612985230286892 +1.379599509596713 1.963379056036185 1.548229698793937 1.672681281687347 +1.563118414388800 1.211768054211908 1.078060069623923 1.000307584446757 +1.308774523229059 1.018547983002302 1.348487830876560 1.284907363112227 +1.506959127413342 1.513042669357018 1.127428343412711 1.300980515819613 +1.570771056150658 1.925802956147915 1.531526864163067 1.004163302861976 +1.466858976197247 1.205971459281184 1.667154278653465 1.166093136838219 +1.375336030249624 1.265423984699229 1.714227350382275 1.972273707916255 +1.217045701410928 1.979147664786221 1.441467121621571 1.533549519400613 +1.168975320588404 1.751896854300107 1.122389414011396 1.431988959616220 +1.307221457980737 1.780594199514799 1.000530339004340 1.086885968735162 +1.597815729023891 1.391778083576734 1.107918508680757 1.127085835119562 +1.647525333424130 1.168410352324956 1.429769281710969 1.290588340158548 +1.798587043163717 1.648549402213476 1.156367713011015 1.403240204372193 +1.505060011219990 1.271181230055877 1.705500413413040 1.587126720800849 +1.934941545477919 1.480328837512046 1.934583633636800 1.234876368001744 +1.475894100693696 1.503199237840261 1.164187394459997 1.542901922942161 +1.052505175894590 1.341299386018665 1.471139490196673 1.887071228383699 +1.386358067937376 1.828186240835163 1.294960702933997 1.266532915921679 +1.061989380290485 1.255999485322527 1.618386921586518 1.413361609067186 +1.302839177230414 1.213337391459267 1.292505764217977 1.453608795448328 +1.504384621762344 1.367043993954987 1.105322636957006 1.827685456148401 +1.924172960453672 1.380253026170615 1.531737406650245 1.600099160820812 +1.762533494061995 1.939800310672504 1.462639389572723 1.772080058418210 +1.988798743905783 1.537941499877267 1.206360896737741 1.330265559039627 +1.013548311717535 1.631680392088665 1.412022731693406 1.369475397725036 +1.354656936584886 1.681562033339732 1.533737568079123 1.527562772517381 +1.517224330049167 1.748191831547340 1.333104402897215 1.335841729921688 +1.599827495573902 1.703794807556213 1.467719546279451 1.943636499405380 +1.776785789139602 1.871944362599834 1.553702485866201 1.838424202129238 +1.219454905381347 1.985499418202782 1.326692118875259 1.948885308690770 +1.592000193930435 1.871782608534542 1.395798478353443 1.008811599424396 +1.591817191414113 1.716043447085590 1.333853035292116 1.610842756140154 +1.212697005404352 1.898545327572715 1.428749296753020 1.806434990416224 +1.846638079808151 1.606021002043787 1.669805839090771 1.153167418281724 +1.501262791429362 1.022625031701647 1.603471167828239 1.419607983729088 +1.120784002029721 1.378339302318526 1.415020281309844 1.424715432368679 +1.451954852802066 1.072697113280055 1.730256259971434 1.988664146064022 +1.804074976543426 1.609503969617276 1.819024769055748 1.994577730276184 +1.467925717760386 1.332586803898109 1.806111903933846 1.808983773471470 +1.552292142392286 1.052997247553936 1.145929890499626 1.104507004673348 +1.857205732526595 1.103794559848151 1.487211212972690 1.208606332858731 +1.884265819245104 1.779665392660963 1.812039313796252 1.185849640931215 +1.622118935721221 1.064432977713571 1.816663927696125 1.746842554168574 +1.588382374668740 1.986071553086706 1.240367886125065 1.354417957908723 +1.276352521747860 1.128683789164908 1.473520232530387 1.019708735517159 +1.909950630984687 1.277640316530340 1.687143213818848 1.338124602966518 +1.367434264847987 1.562942101162090 1.018878753411013 1.600552245004826 +1.295431395129634 1.667913118743497 1.368047167142557 1.591677624814217 +1.147185639004753 1.004154919288298 1.198038176355104 1.347102913700407 +1.689262898671791 1.217595365709447 1.460828566328120 1.106276442902854 +1.576482139578531 1.168525736699848 1.188896166023809 1.411540351748955 +1.836541449033043 1.760980288806535 1.905172182476538 1.331163562587429 +1.508296738953204 1.457655079262073 1.052581873374040 1.181851562397044 +1.643263346083292 1.920185512026058 1.548435431761581 1.837711551363133 +1.503801865785932 1.622379283633875 1.810277325219333 1.269050079650025 +1.039919236416842 1.333375611707700 1.808957486807093 1.186718189389283 +1.155761683270783 1.623337933624230 1.913547424597377 1.928359930252267 +1.783531584629082 1.776700425400723 1.223283358284128 1.767340565675152 +1.292942445485314 1.811715875288066 1.835203830981638 1.542642217812437 +1.988414312703954 1.410500011578317 1.646215237070280 1.356363726826077 +1.339402424990266 1.033603285945449 1.844088113024840 1.295277751822586 +1.774065615445052 1.159006371805017 1.627641801784538 1.550455626825832 +1.158812691132040 1.554065456862121 1.356517900545953 1.801474686098535 +1.841207316148873 1.130430496824528 1.003843909788903 1.424003366546828 +1.555065696486850 1.536504400361869 1.024433237401336 1.251988167798806 +1.989517042923385 1.900290492489103 1.745956442722303 1.126826979311225 +1.644431032091768 1.775189414454792 1.161690490147534 1.879923977780325 +1.105525565630024 1.909867804071452 1.757812124995763 1.098219474345431 +1.566283324863227 1.312958136579648 1.135530735262440 1.159520556058536 +1.240202345064390 1.401222966157391 1.350012584689331 1.742819946287667 +1.318677200271121 1.191340275549293 1.356917629271659 1.819834547306390 +1.405936466455953 1.340758683808301 1.248263010619723 1.188897812927683 +1.876761726156340 1.481980395143473 1.679422621827471 1.872445201367426 +1.301776917639669 1.890010086459014 1.957994230270423 1.554658961330220 +1.058785856514995 1.377875755538582 1.673508836153109 1.910575819282664 +1.458688732660142 1.073801091934813 1.432611854874958 1.491978721946686 +1.817274429419195 1.266919626414632 1.660558571112172 1.766136845921977 +1.720070066769827 1.847567613712049 1.208855088562769 1.911598927517652 +1.113353918757672 1.680366377822528 1.516531522086563 1.949929313513188 +1.206096463808769 1.429463333619932 1.644503179579259 1.944717593848393 +1.847982751370829 1.235174634557789 1.813016229479926 1.411565983419458 +1.215616390255720 1.053372991619429 1.971611006096335 1.616181979330331 +1.042951185854755 1.853883036553758 1.541606816609528 1.592322653113109 +1.308816460408777 1.682934561975691 1.646197008397280 1.461540821431400 +1.811808218447856 1.855663581889637 1.007464852160157 1.036071642281614 +1.669625666757390 1.359928204858543 1.891130789804332 1.718974284270023 +1.313354698947483 1.951183321978833 1.918994326315902 1.127349172781017 +1.020994452786187 1.674164224690125 1.592645490471282 1.486187483064769 +1.176131377233083 1.492828660405881 1.530718852735995 1.024381202364614 +1.762340625058584 1.390361778604293 1.714227212248455 1.783614032964701 +1.123601769293196 1.125769698248833 1.573747248684840 1.107598640532722 +1.190190204275011 1.371830235317743 1.919019952377347 1.540192769190275 +1.036061512564719 1.167155479932559 1.352448307560021 1.545179703575822 +1.152713272350920 1.736669434651665 1.635273133578077 1.231386876215573 +1.675590551734252 1.605302899399780 1.979657505674168 1.864864572298046 +1.431191553245036 1.344235214711324 1.488467456899641 1.877467118456746 +1.565079130435527 1.985737216329181 1.503419397536742 1.878974527017566 diff --git a/dSFMT/dSFMT.1279.out.txt b/dSFMT/dSFMT.1279.out.txt new file mode 100644 index 0000000..0f282f4 --- /dev/null +++ b/dSFMT/dSFMT.1279.out.txt @@ -0,0 +1,252 @@ +dSFMT-1279:5-33-1-4-8:fbaffbde7bffef7f-f7ffbcbff5ffffff +generated randoms [1, 2) +1.532288085154719 1.947450333464394 1.366052991248537 1.515614769421875 +1.009156151422797 1.295748980680018 1.747499400527088 1.826510223557833 +1.851501830910790 1.192170628676051 1.851489505476663 1.703185329224401 +1.435132560135228 1.831879703571359 1.046853945240255 1.268454257874294 +1.395121062759535 1.352448129690893 1.716977718756553 1.155603059475603 +1.894651668611648 1.771400591667682 1.137853244967471 1.895749424584614 +1.323439670944906 1.556266201002426 1.736415796399832 1.523193810978369 +1.770189067007913 1.839801909032907 1.161281516119663 1.251605103516191 +1.928748204405420 1.808898489949181 1.228384870886534 1.562519263132728 +1.499536370171145 1.042091300624255 1.138631836357076 1.898321095631188 +1.796567341636060 1.061594219561592 1.841674365188196 1.022722731107153 +1.494834374882573 1.154758490623017 1.476518121766276 1.690844446173690 +1.943751478771089 1.411048289511438 1.359322726197888 1.888433607558927 +1.625311329149937 1.648464686834730 1.984360088157140 1.421612716417805 +1.908619249188448 1.418133724143804 1.355131289828077 1.975688793888135 +1.801925827184817 1.283945150456423 1.346565765135786 1.852542502826355 +1.523527899699121 1.325702064813310 1.554175674089599 1.868648868699571 +1.304541720687611 1.517293786171708 1.291073204420226 1.502125568224479 +1.390953402987839 1.935478207845139 1.087173461896521 1.895172469655312 +1.121439650052365 1.542039829222840 1.135478516768549 1.071651975823281 +1.241580725102922 1.131204210317358 1.169170896381026 1.143824877163074 +1.628816774910409 1.570504959741128 1.296554930687467 1.297344188403684 +1.236499783415470 1.543326167541964 1.385859806532402 1.976698718389090 +1.215016699512228 1.727849377852026 1.791494628493302 1.946177632535593 +1.826302765132928 1.813027397045085 1.247274837817683 1.656257879907006 +1.382186104265283 1.897643272724106 1.512180395269694 1.767820787365341 +1.112668819440731 1.783646066834673 1.467610105261883 1.178722886044420 +1.144908443026294 1.397084129903848 1.085672592182091 1.863190430376752 +1.591824805746136 1.006570128291833 1.884174734540007 1.818319745708640 +1.456550082332032 1.617463095192162 1.151635511823934 1.597296032164124 +1.899205616207496 1.473403406796022 1.174926097043848 1.614994508284624 +1.524904104759121 1.653220231461269 1.991957899079302 1.731420057559349 +1.969183443165961 1.544862129530124 1.100388100084440 1.185141270835162 +1.218715419357852 1.544748053974270 1.467317290109386 1.315897078247984 +1.551334150150116 1.570453227032917 1.344660692392437 1.911642425168310 +1.672778828353886 1.929805809498093 1.271981985973855 1.097444946656093 +1.710971940839126 1.686583598756245 1.114582099716110 1.931927476438711 +1.553694792291040 1.814450632507428 1.961847551009769 1.939859051358495 +1.947312926076430 1.060750623868366 1.241800053326072 1.927245419325608 +1.940310963614380 1.625757227221001 1.748867710422027 1.858222416886735 +1.073588051367256 1.298749117204805 1.956514863511364 1.045932302828540 +1.145247677997549 1.364879558640251 1.498228497405383 1.158936525284875 +1.234531136767748 1.049906702172487 1.789871581332289 1.028844659205147 +1.579327619960087 1.650404419683263 1.704355272629799 1.458321437241190 +1.825352034156307 1.278861162062198 1.620907096959734 1.981666333023270 +1.635860355728855 1.807948039138699 1.898525435055241 1.660970757196577 +1.540816709529551 1.445362815345724 1.323703003553055 1.006828307663640 +1.684449130609170 1.082110457075075 1.975011719162267 1.719449348451739 +1.958067058183186 1.957353826367239 1.282349243023118 1.235723682732494 +1.458090747410573 1.646822824927218 1.212378437089961 1.092310447402786 +1.493582406926402 1.759340122106799 1.371874871124818 1.559216697519483 +1.756842023141878 1.984406295102556 1.631069227478171 1.165152332956119 +1.815439035645434 1.265218706273832 1.117713482109627 1.929520499760059 +1.948573813727789 1.990921992863561 1.562425389386790 1.155184532635051 +1.321066483927424 1.636725281335170 1.400003806186230 1.801353057159527 +1.701068507585359 1.318339968773920 1.649898242061556 1.708279781302977 +1.227926435770704 1.978026897209463 1.290131376588851 1.768485504295136 +1.087171659987733 1.171196599923022 1.451211505149805 1.858273607411247 +1.376320571856130 1.392215177971733 1.618940037776315 1.767964948266677 +1.250654481901386 1.325059485619881 1.183345378740685 1.666817759285880 +1.051611131377926 1.307763928493682 1.767287232459210 1.531118316538256 +1.340953472830715 1.668681509657243 1.314307011819675 1.267118982492074 +1.312961785743600 1.411244635369144 1.344907603357190 1.159676816103243 +1.463322940719552 1.948233745751702 1.936413446436579 1.852051978915788 +1.792859025169202 1.425012232774319 1.381510837174057 1.499774613729662 +1.059203426371944 1.842334786830492 1.179325183397787 1.493625815856199 +1.580288604402801 1.602662894374324 1.778463607612431 1.389324997058805 +1.950803067890994 1.143785299343243 1.276361382430371 1.121063753828663 +1.877441175153622 1.175920461380491 1.652370451948521 1.374138796563356 +1.107449829261837 1.123706451087860 1.033778689119417 1.011212085948613 +1.056250102906715 1.869907074187779 1.790426937922693 1.421042377656239 +1.032422036882762 1.727849572470632 1.995304737780431 1.209852155565395 +1.619543962211313 1.127936169616209 1.769911294121690 1.114019274255182 +1.648066033824781 1.107049821016510 1.175518058958907 1.210244088705999 +1.382913697680807 1.115616938391805 1.954448614088513 1.122940572847706 +1.874969978564675 1.228719124101033 1.451648464283759 1.053846159824648 +1.677912436863529 1.835939695874345 1.511266999581525 1.200920535219021 +1.844756396582370 1.177209769137563 1.136939809050086 1.847620592279723 +1.825472667348031 1.881247957505993 1.182233263078688 1.194430630923138 +1.872520185451664 1.303327763769647 1.438195354746765 1.964845762803213 +1.826196049383289 1.558961349318197 1.039694726997662 1.498961678673389 +1.157447794811996 1.058495314556865 1.486603210752073 1.081547980745276 +1.147923397047745 1.246371675209417 1.535224557412063 1.480671178913709 +1.463788518659508 1.671706305933774 1.619820965297239 1.664376614721714 +1.987565797901321 1.541823689392754 1.619997137093410 1.328276244888447 +1.364696970907271 1.132894941248941 1.531065551702981 1.236711823963276 +1.443541437357576 1.796504869257727 1.294384395857063 1.240926848703395 +1.821137409956491 1.713043793832360 1.163655351565820 1.953143082260486 +1.785030585341512 1.135955765208355 1.786532778133380 1.336320212846754 +1.747467640944878 1.429906759878529 1.855574260169149 1.415904885596260 +1.517708014507624 1.979521107186423 1.314775853891906 1.878317884580668 +1.833109917067730 1.453144521273086 1.274277269759844 1.840269444956216 +1.867231123315404 1.727059844417754 1.673314700055261 1.045139794577184 +1.443367509167027 1.897766252340623 1.004933565006148 1.237407806440765 +1.501136693692803 1.315888970895906 1.726349301658876 1.848240969055262 +1.339354429708613 1.378935336083048 1.515836454039039 1.727637464197843 +1.026788223075143 1.705080997886118 1.150526099552727 1.470866950604757 +1.537933594360333 1.775223926206164 1.293991728279644 1.551225501051339 +1.559372509758904 1.633856887193875 1.919249043439695 1.936396703824828 +1.535678445402678 1.074477606510024 1.612690681636848 1.162986051449887 +1.024738076594183 1.909564387746056 1.899255264036792 1.233115358658601 +1.397832722867668 1.959871858416140 1.968345733505122 1.207541693793451 +1.175929507070693 1.723551584524847 1.171793462086495 1.578663004294635 +1.010357086332180 1.312270143765347 1.987973701726083 1.183656486812888 +1.188178612648312 1.283885705585531 1.276050961547650 1.272698684699781 +1.603484271187069 1.127407317716145 1.335590808822796 1.489796442211558 +1.517357643585483 1.811075882426336 1.677838454948786 1.159665332242130 +1.020232528129134 1.999135084862385 1.907926334795733 1.719137162782051 +1.109625403251704 1.703374560191664 1.885715498298965 1.870870509629807 +1.291933942567872 1.370806345149594 1.997272025841532 1.483184790606509 +1.199010551712661 1.293394740709069 1.744382129128944 1.396670200167578 +1.128022528299846 1.716712231867180 1.051586091032168 1.229033170369094 +1.775094784105917 1.618254262929033 1.312478179870595 1.866759287211498 +1.031461658917765 1.692830210158583 1.849383629096590 1.607675487642135 +1.959389322102959 1.856669493210006 1.140527097158397 1.059353759010795 +1.354564776404647 1.668583465117761 1.711585920648234 1.581538723419147 +1.366923835677533 1.991143054000279 1.088166875962984 1.829825191838201 +1.112923793541927 1.400828220088097 1.451327138888185 1.674478718371918 +1.508145240633455 1.233195941423053 1.275595965807467 1.147254343319340 +1.516312743163289 1.761960786499146 1.218003368006352 1.563766516573177 +1.685652880960876 1.047163417204527 1.317489011159213 1.417854528192893 +1.710899448541145 1.277999601400982 1.012622803023703 1.705782620194082 +1.712310128480963 1.727341992491236 1.744496219257006 1.859092822410599 +1.659428718747320 1.313953575601396 1.704172774209607 1.673436591907193 +1.705668968918463 1.582520716527645 1.014828626527817 1.121980929721059 +1.117746628840418 1.996275604751812 1.405181281638161 1.268279824661341 +1.953293827850043 1.632563195243414 1.462265393852230 1.571201887623921 +1.871846042793948 1.900629170490076 1.970553569314990 1.878992396725578 +1.326185229970361 1.088230199229065 1.635147788154424 1.152169493362789 +1.999100707498038 1.243224419748466 1.022769008426055 1.240731873935583 +1.946275979737428 1.771690071123538 1.069585872653464 1.796470562837168 +1.345288112127358 1.051578251992676 1.703216018067470 1.525247335240308 +1.696897112227436 1.235715620707975 1.038247915351971 1.057206815867782 +1.512445374802433 1.448892271073354 1.248184225639958 1.676641380342803 +1.269151601661017 1.795426931215625 1.975064144595032 1.425692965918496 +1.065805167455924 1.416978834463080 1.757533187399041 1.357602989011853 +1.781474661982170 1.523932554275109 1.967286625426325 1.496570054223784 +1.896881501001786 1.380671240332529 1.311469460445186 1.923875042452228 +1.047631160100067 1.410493523681198 1.065871288959603 1.629553465633162 +1.721435670441939 1.660852888954810 1.759177589769124 1.936496509982447 +1.507805686177076 1.707194457158795 1.573865999362248 1.477048208374869 +1.885089250486858 1.351437427511048 1.502586586092695 1.113631166649410 +1.934961590406572 1.261109540151069 1.952542601434680 1.453514896245692 +1.364861368316576 1.954966388824307 1.717520287362391 1.398218775936531 +1.004342812950979 1.860759011942677 1.978781864131880 1.741017338256330 +1.056085846651197 1.436561312749421 1.045068197174759 1.465504193194136 +1.203694897172455 1.677275820242728 1.067153187276778 1.241697865309854 +1.102970496289487 1.281037905894026 1.352626572074584 1.479019246762285 +1.238475709939909 1.797812202636809 1.801212160929516 1.660613805940145 +1.926661378057374 1.266438312580271 1.287805737082833 1.999926342483334 +1.491407089377493 1.799797817946776 1.710049953650023 1.474672216183080 +1.822926429600710 1.211844697804276 1.568120711343829 1.454323133457031 +1.971100059522564 1.736198871521036 1.179268550783662 1.464406771203234 +1.009502019982526 1.631955646969230 1.497226601334803 1.981202087847254 +1.362655815929923 1.013230158552513 1.345559301802093 1.648017438325123 +1.875345053513377 1.074674568689246 1.980355720035615 1.528450930267205 +1.774567253574166 1.656538256889943 1.112396270103773 1.182590321556718 +1.882403234584386 1.354958202711892 1.421614150744774 1.979963218381845 +1.245351602575343 1.178801095773025 1.424256982468864 1.603821053483132 +1.887550195846865 1.085953537898298 1.266456286644653 1.579497232726233 +1.955626170751615 1.318870983232775 1.751551749096784 1.609037037736366 +1.613367232093785 1.114350775729278 1.752839942655974 1.020795867475866 +1.412587045389717 1.821679922291614 1.167046038056962 1.953250182322737 +1.683027787389068 1.248804596624481 1.910086882206447 1.992770046767464 +1.379135083616016 1.261000729353830 1.860727320090733 1.943720765124739 +1.898848340615396 1.128337946774570 1.283206551989818 1.915429603396696 +1.119582017421618 1.159243784921801 1.332665800287815 1.840737814825764 +1.794043284584481 1.333958599655220 1.811213090580823 1.746729998063181 +1.469710289553721 1.880049470126302 1.696093881162233 1.762128928871028 +1.506799502427708 1.734400627218744 1.314795310912785 1.931480596593060 +1.256540999327038 1.676657803709375 1.966589089383032 1.394525802728977 +1.678033525403364 1.305034186543403 1.614504766281594 1.362129435667184 +1.213353520513713 1.123458263737885 1.183900660470600 1.290971171059092 +1.407266045079658 1.457671309892913 1.929467735524176 1.701844521984315 +1.215208033028621 1.433859741645650 1.499133221938423 1.405598965554082 +1.878101393344739 1.103844832617392 1.836488598150366 1.545721404759140 +1.620345814182195 1.877454541015706 1.235422744174302 1.875739455374666 +1.734398567209419 1.615756827522928 1.981532677915317 1.164280210943317 +1.303240651854958 1.502637046172687 1.445390007352739 1.611336247023498 +1.979030894626954 1.035418079392305 1.697788165298790 1.308137506116926 +1.324405162577079 1.146609817663966 1.762697851262670 1.111325682187749 +1.370582436132718 1.787268672510856 1.849715560345841 1.469669996804483 +1.494512459944992 1.553209919130250 1.141954235190609 1.952689820118747 +1.583832805910358 1.538746768498837 1.150193647284712 1.262095756327419 +1.120663136620438 1.816591699147249 1.182182163330708 1.299705316037166 +1.677164096156807 1.767367420613213 1.963996802582803 1.425936197969148 +1.802299072571060 1.418047825046351 1.999373198257783 1.975309712757655 +1.613741833596826 1.813360951644260 1.381479921993416 1.546690484881917 +1.739053320013653 1.808592749387230 1.070290353418966 1.501075040120369 +1.746940029411783 1.457549553962017 1.896268523801848 1.512076836475829 +1.335568962014342 1.684319148959960 1.069646483848363 1.163487042889778 +1.323752601415664 1.953286621491837 1.582393140197222 1.422617719162103 +1.355097298650805 1.994533632685357 1.008943535563857 1.873875413873032 +1.769959642216639 1.612721782748821 1.519992267297118 1.582201388501206 +1.131067437111451 1.181187872271493 1.920380391432731 1.771758185729480 +1.510829433867586 1.346728502964083 1.468032589776727 1.962293776346870 +1.181293845800522 1.158570897214237 1.240755612027301 1.177626422755796 +1.756523936449440 1.085988804174009 1.464113960689560 1.286402448244675 +1.878043597014815 1.094735371055422 1.801598779663089 1.486758503536546 +1.198853009188857 1.022558151883840 1.498438716643666 1.685125261740859 +1.666686438423115 1.619574380570273 1.600188725840126 1.483869809360474 +1.392622322085121 1.647444350053785 1.907046811930409 1.416457718045342 +1.187411574416426 1.147469195979465 1.523284569837517 1.466134989346850 +1.931123234351781 1.987836856311846 1.091692903384911 1.865432054192489 +1.768254777560249 1.613055322979190 1.075717203310860 1.093377522532079 +1.970837045107963 1.425989745854354 1.748795301739606 1.703792460280759 +1.674392048831304 1.142127242413203 1.865225903043122 1.072290107688014 +1.720732010054350 1.820161792544215 1.585130174909229 1.981340541496645 +1.589756680491879 1.334384519737793 1.688693816535937 1.961523825267221 +1.912363819207957 1.861592966321284 1.021920433995978 1.383663547225247 +1.236378903346031 1.029451072881469 1.811378170225331 1.900217387510054 +1.116423239545714 1.276617648503189 1.086133816711709 1.274316500803253 +1.303727098507321 1.285729730717770 1.887023748342413 1.381199776570113 +1.152129567828697 1.873268129301921 1.477236399171628 1.866441317695640 +1.487498418621008 1.581404315171524 1.069813744111888 1.898728179616713 +1.324392984863451 1.356733015831701 1.445550518547844 1.219048631282417 +1.699492987137491 1.450536444490581 1.849858203909632 1.526670017561186 +1.934627931312305 1.298250343573515 1.699927400903387 1.467861501239794 +1.408495572024630 1.255945023013178 1.411876518087198 1.681801163029498 +1.420527247571894 1.606479146155209 1.936064605876705 1.489552664073554 +1.892664189399625 1.562568741381570 1.769216744485351 1.532646382626034 +1.488078611168005 1.153497710832896 1.937268430725948 1.021900783409114 +1.560458917959072 1.011710946318030 1.712585178354470 1.876475716791121 +1.210160618062834 1.282429983465955 1.992514234353970 1.683913017226241 +1.463728007826395 1.482645776971271 1.920101211338993 1.225822664856083 +1.840439891602847 1.898380126433719 1.730141082189212 1.582263163423858 +1.549940989495022 1.414799258167134 1.466652913382722 1.971445388943120 +1.020096219491818 1.959793379198876 1.553210896861254 1.579719897754584 +1.621224591960957 1.224135914873054 1.943296066824605 1.799202673973747 +1.088414013194283 1.929855679622088 1.344420312908798 1.586441604359892 +1.729707794274719 1.027667592331487 1.028704454686035 1.712254196250119 +1.493781595323462 1.518225501847485 1.580395483019829 1.124873366093841 +1.716032899216410 1.504471030600907 1.130664270532318 1.290376045070382 +1.818924728560065 1.217206496589442 1.633214200574980 1.776510033520542 +1.351818412949131 1.602984406800473 1.057405221813084 1.370189958706171 +1.513147923698285 1.405962206260301 1.167957642939611 1.751150508116552 +1.379674680878342 1.663862176720133 1.020408515976134 1.431149891546414 +1.520729035561216 1.210016961609816 1.325449901932542 1.736548461612873 +1.134700345629128 1.800394150244516 1.644674603009770 1.162882461687213 +1.137420621395108 1.311794094215848 1.242749992948339 1.636968539862269 +1.671658834348573 1.707999039440943 1.449949098583798 1.160615710584899 +1.580280784082340 1.885936792483635 1.662438312114189 1.249782507513509 +1.062689996147215 1.609819713341795 1.852145740811851 1.643335071927362 +1.618463447980054 1.684873324414096 1.176943547737296 1.911829014348756 +1.656507644246254 1.028009276276467 1.903162265193765 1.433033637191970 +1.920871226485586 1.216678404876686 1.074642605302353 1.021007152002247 +1.134219218022902 1.901301854528747 1.353594441490956 1.862678486626324 +1.527202813718517 1.594819752588319 1.235714074083894 1.236824045438024 +1.377035427049681 1.682964902590229 1.862207848773605 1.605455937597064 +1.925855666921453 1.025671671983096 1.579605523211032 1.879004189465159 diff --git a/dSFMT/dSFMT.132049.out.txt b/dSFMT/dSFMT.132049.out.txt new file mode 100644 index 0000000..6b9098c --- /dev/null +++ b/dSFMT/dSFMT.132049.out.txt @@ -0,0 +1,252 @@ +dSFMT-132049:695-15-5-4-8:dffffffedf53ffff-ffffeffffbd35ffe +generated randoms [1, 2) +1.240786216121365 1.347671533389844 1.609431945862614 1.818336875195132 +1.841341494696919 1.112099442816254 1.418581244328686 1.727555398132252 +1.791657058624414 1.448707288753546 1.875748809873433 1.279555707288646 +1.027233197661306 1.742708935692054 1.568639860254585 1.882594481561167 +1.712054667790698 1.164350797652498 1.327660356374716 1.118747819973691 +1.453994930380138 1.936866581264610 1.500131845955965 1.573977930740173 +1.586588978207069 1.444744662623973 1.804733663839194 1.690997153899501 +1.997230965703541 1.679078989777176 1.157718888256696 1.581857127166805 +1.786522458245064 1.732509153366519 1.614379816724759 1.360157346119315 +1.584304739938786 1.290967940925910 1.803023914338665 1.166829318447769 +1.882260940374840 1.668388525121759 1.296907935368657 1.190360713203013 +1.440342366625327 1.191337778244094 1.731297904239605 1.509980034875874 +1.595181218945090 1.074596535352064 1.610028079523617 1.586231430720153 +1.796544294280728 1.120083505210456 1.529992790055928 1.414708162122975 +1.574919845173674 1.103742863161387 1.207520414508866 1.776446158598790 +1.422513398194149 1.689446885445082 1.193706743540929 1.581438437788768 +1.951650436700564 1.948819521521600 1.181140813692449 1.306429364149664 +1.638673881152393 1.847510108089631 1.122823172175988 1.934367595902642 +1.334308517467522 1.097603860481102 1.956659806404727 1.023512892924480 +1.196085212569186 1.715791705250468 1.351952429648441 1.991463754807771 +1.133458013243523 1.915371926818404 1.165736634315538 1.575173388886349 +1.853487112009255 1.660598472861345 1.272597488650447 1.117876371459052 +1.005240520841750 1.812421442976473 1.513934891837483 1.120332887954491 +1.228282684151649 1.552791447363313 1.788769916921823 1.815586141088400 +1.127247697208892 1.297782916647482 1.084424203620153 1.640218643736377 +1.886137409714316 1.056068901774966 1.262461625313023 1.302562073729486 +1.670586898696476 1.266129480330503 1.295369066348352 1.913806898408008 +1.976321005084993 1.161160227769259 1.504818160060031 1.522926436306296 +1.728867961289615 1.387033693995171 1.663945676184065 1.505943959943081 +1.795757950865452 1.253937200998595 1.835142211375417 1.976210057179307 +1.275544988932769 1.761685945673724 1.737106733209709 1.680392165112853 +1.836973260413477 1.283811756843138 1.483732247260567 1.625472580078080 +1.379710329741201 1.589491134678637 1.954031355115655 1.624856953574900 +1.796030657248596 1.408278342147447 1.834589383424109 1.803545474885423 +1.356637867626836 1.774142450030258 1.011956395069368 1.869158834572733 +1.320432125728932 1.897345450425812 1.770848725957326 1.598327917526360 +1.888406801827715 1.581880661686335 1.040127372625552 1.223865556328771 +1.724482113317174 1.804807080698543 1.255837417624518 1.604095470924431 +1.853712789622750 1.111628060852902 1.944411905103543 1.154118239957246 +1.613297702248713 1.298132864535666 1.485244971099466 1.366830946738195 +1.928591541286698 1.713659947845659 1.524233626307971 1.056841534800342 +1.679969599364278 1.887881227175812 1.817764789964886 1.614065310373154 +1.589558909136299 1.369143925688571 1.283994424089937 1.587361165784290 +1.517295452803662 1.038726676893958 1.724752496212899 1.864661230644922 +1.520958262335654 1.517545893345118 1.530078452822991 1.745365957163371 +1.304189689061896 1.625720797145437 1.568130725204780 1.044967278147140 +1.990362424915870 1.521740919710963 1.127499610711933 1.726349036630217 +1.612849029810863 1.492313174804244 1.942378514009496 1.960524809244143 +1.993242530307360 1.584794764968858 1.554497641960676 1.988671427953702 +1.748581164917097 1.798947168364277 1.482525708790362 1.332127038816297 +1.206077896528403 1.109935500746298 1.679934270722932 1.884943794968495 +1.646347476689835 1.323968375467928 1.806463460098888 1.068424396886083 +1.869133358999487 1.709145679781370 1.353397649996192 1.590487654315096 +1.299577234185575 1.344052679519635 1.809116940292933 1.004222522772940 +1.245657783287453 1.133321061504753 1.229631842639508 1.428443128505393 +1.435565875619150 1.004272385830357 1.058038534185726 1.133689373384881 +1.955211833162047 1.766797541942428 1.713270654006981 1.542467404000480 +1.736422587993122 1.333004500133752 1.548120817621545 1.968720912091339 +1.126933064665062 1.224061025405205 1.722792504636523 1.845768523966497 +1.786988502870113 1.997859119146682 1.223750836746550 1.072321557268711 +1.113423493397560 1.354370594111897 1.120752552203904 1.677974838850154 +1.824340764832643 1.074341128689492 1.407915763133778 1.188480692018105 +1.224211257790300 1.541164685230523 1.482521670028258 1.441703653306424 +1.262038641884980 1.541060210098451 1.943750332001860 1.928430482565075 +1.906619122521002 1.464484802431755 1.841531899963795 1.790603657999093 +1.201332820795293 1.756152583485927 1.091598887293051 1.914462699145837 +1.919971247804020 1.546162892578745 1.125783307817429 1.793815740547821 +1.071644929440549 1.797371985038822 1.731231656436795 1.607038210860475 +1.750986787586706 1.911981429705314 1.815448093365486 1.201798249733403 +1.214570804692878 1.609417166530614 1.682167049844114 1.662314588643825 +1.219297575752508 1.854519304638628 1.074875461875698 1.607595845969502 +1.962113483443063 1.858586113439153 1.270081185960378 1.763659087912371 +1.234211577628193 1.607744061231655 1.555084478549528 1.124830154671444 +1.715763122943174 1.106614244923961 1.491975698767984 1.867301012985414 +1.825883668129938 1.272790694187131 1.255399942578147 1.833540373592003 +1.588469761408420 1.352687662004183 1.127333935106403 1.573740579260920 +1.576748638937454 1.381568471612325 1.021027093291806 1.393095510894402 +1.031817884804776 1.962399156706323 1.306571783742419 1.982430080747751 +1.240579030353638 1.608057918336433 1.573689955135078 1.753353598371807 +1.564472539439905 1.659019505305958 1.580160669944809 1.765936879652879 +1.752006460207609 1.688308918053745 1.312018470919548 1.268706801167600 +1.657118476225809 1.497184001233668 1.572638718148542 1.959504260821737 +1.386940661423761 1.168778973766007 1.095958494303605 1.394933124341539 +1.449397354252527 1.305964914981794 1.303441065202680 1.559721945032841 +1.258272488306189 1.071682918061917 1.325137729806389 1.594530553412971 +1.999785330541635 1.465313191147058 1.995427261270980 1.013924104457859 +1.550828471846885 1.969609400329573 1.821347174243850 1.105183762667883 +1.746538206996320 1.759533840376257 1.987000177273219 1.904432226321518 +1.208162007498324 1.823234733567459 1.698865179076615 1.602942719320228 +1.317850386435638 1.889087141171881 1.378839622915776 1.400539872498209 +1.680063201738501 1.905075657757167 1.043707466531434 1.628570081544476 +1.570217672748387 1.088747578543654 1.439719254151552 1.644367498280225 +1.719091780534417 1.903504146332821 1.563873629228828 1.630909679224296 +1.321257545836792 1.258918552229391 1.634423998233185 1.430566163177711 +1.135513604027401 1.337456504777089 1.578608328640182 1.860950006974289 +1.723609216870502 1.590220637221337 1.837589443017566 1.692976421818252 +1.480435406968035 1.938909270093844 1.114247443539048 1.856620250800353 +1.265919923325109 1.520366997871613 1.712099689690853 1.481909474387153 +1.689127795326262 1.080489335416194 1.062876357859195 1.337643463685434 +1.013494742530196 1.977423645548840 1.955434191515833 1.631281842357549 +1.732469366666216 1.763690406235090 1.655435900957361 1.741303793774533 +1.318050579286411 1.022502983762076 1.316482217457727 1.453514163158271 +1.786140247747486 1.976948024833315 1.539886679210421 1.677305670483601 +1.490016377389237 1.209310029823525 1.661993698764356 1.289180901352120 +1.313453272100118 1.707503151270447 1.514891923849309 1.617519531422523 +1.419692857129582 1.349171301887743 1.810097919793725 1.024917872570082 +1.903705493244081 1.253327890800297 1.150551795688070 1.882748466749105 +1.604480381957987 1.183137100854354 1.945904910934229 1.796673753446747 +1.886717659886252 1.230064964866099 1.240256589333960 1.800371780950988 +1.754682006555789 1.357673811546293 1.404306381436891 1.080391209040011 +1.931664933711476 1.652291304654128 1.502638062947141 1.612953729847574 +1.915071092789787 1.999235175973302 1.904485340288380 1.050225195937432 +1.627551979763589 1.393634909685439 1.194522372474042 1.813732282798848 +1.948384358954501 1.224340274619627 1.173738186975788 1.152767938006457 +1.225140325723270 1.610993102217569 1.530576686195656 1.523430111458952 +1.861629178948333 1.882310812851372 1.560893566507584 1.255951375791148 +1.135466802948409 1.935331656897893 1.926687350022029 1.498077926443307 +1.940578785867682 1.423128797588237 1.323168518197973 1.782783103141677 +1.238043417356560 1.523839341087485 1.882774498172175 1.019496921559899 +1.678068622152996 1.206396201409644 1.473761257104165 1.710114387752113 +1.244397015146111 1.684838174461463 1.179417783978407 1.996196390162633 +1.656928966178470 1.586677913441565 1.453674460486114 1.666393052155315 +1.599580183054783 1.575713792600569 1.007280869531672 1.031325934623978 +1.690193401227791 1.237110238816639 1.253634010333347 1.874268149254968 +1.322986766543028 1.113870734807120 1.154736427110831 1.981216667854277 +1.366687864587524 1.774054405474727 1.562940827012118 1.062170512710435 +1.331820371322699 1.153629211436491 1.355007468362271 1.852564796484493 +1.929197652776306 1.067429862616714 1.877139102123268 1.320082003623068 +1.404684675104576 1.136207484134575 1.334137852915551 1.856882769801108 +1.254242940939860 1.051863368704783 1.797055167135528 1.557459006438927 +1.980329019537967 1.648020688001624 1.587519745124040 1.798949993388723 +1.942286118619442 1.038596956451352 1.085614371375110 1.124669642388108 +1.048100916732438 1.469633347293881 1.565232866655708 1.455487756579550 +1.825678536650055 1.538036558842231 1.909803394771418 1.726301824586696 +1.310816384016251 1.622776273470671 1.051276047422874 1.639419282700902 +1.978379089302289 1.850025354868636 1.047349711218560 1.355885824724459 +1.049079725355593 1.371037348305116 1.750356539084760 1.076509702584304 +1.252089247874201 1.141455558149424 1.811679100174165 1.129804141219040 +1.567609232674970 1.845826626799955 1.555529130040944 1.409389620740488 +1.887351280443893 1.923630685256882 1.113791374083292 1.652996994739569 +1.989730601612658 1.371013615482584 1.989362579145638 1.617311868914480 +1.698295372963790 1.492610576037575 1.720423742557967 1.023179590347305 +1.181115520107761 1.360252669312225 1.805178276509461 1.572649478262233 +1.268203657953257 1.774784998485550 1.537768192678685 1.495718282793663 +1.772544115440277 1.470908109161651 1.325797422394868 1.683808692757473 +1.901913128102703 1.712851841344979 1.366416250406517 1.568220259043138 +1.308767577583039 1.518636307044984 1.802299415046799 1.819468624326319 +1.183565725515676 1.888579413089012 1.802817024741996 1.539858136656356 +1.160125915989405 1.865369564490031 1.107506432707519 1.254926505858583 +1.566971382495837 1.570585983744843 1.765046799421859 1.228100933438161 +1.486532831948863 1.583362024128955 1.589307543755068 1.881563747324420 +1.138695970122179 1.245965605124332 1.875834080664711 1.330284487106517 +1.041831547105491 1.667262589908867 1.201345978057750 1.029503867675444 +1.014834994541834 1.349508246808024 1.125182206730468 1.332007627672524 +1.640891936376610 1.284719622573574 1.747358845039086 1.944635583319333 +1.889418418987251 1.512160561188167 1.526410452824115 1.861816401858230 +1.365363196661104 1.157903909387582 1.301726918258241 1.326744906591495 +1.905663857251144 1.465783133223617 1.350109543247864 1.987077938620381 +1.220531294095683 1.584357570968485 1.827590600790930 1.778448598181096 +1.721366170246589 1.287753014801299 1.495996133914405 1.564565154426719 +1.504801181410605 1.201257193257662 1.154054467288656 1.486862758103602 +1.822225294008105 1.944875879767821 1.778875491058948 1.579275827309038 +1.610166401142919 1.113723330121674 1.262697611342783 1.791894488150772 +1.353793902675727 1.287144752770604 1.344173474782687 1.423389308151199 +1.972121614567333 1.727231359744229 1.875715328264178 1.956561972401940 +1.476436985510840 1.544078127976316 1.181557467064899 1.766190502084419 +1.451674443205970 1.671636514128308 1.374902622489245 1.045478705237655 +1.207942979726514 1.994941479061382 1.285705576478738 1.095279017452639 +1.753643669296484 1.930747887433836 1.685904319073858 1.751239727772995 +1.531309779044749 1.864151400276323 1.730716928847728 1.522775707893108 +1.408033039279290 1.557950903922408 1.750970420763744 1.662092958785332 +1.423484174060515 1.042801658381847 1.585697741940959 1.104281020944102 +1.906715523167795 1.249866615505782 1.531258523307635 1.086519684884808 +1.766287900658273 1.569416508459999 1.726959699983322 1.812798113430088 +1.671235439193377 1.091241442640839 1.876820917213715 1.614974566048411 +1.595425477755953 1.422245454612380 1.421583544263782 1.675791907380054 +1.930131034032876 1.896306945421965 1.978700040443453 1.156184710978772 +1.042989689764819 1.682672658502787 1.616033164253008 1.009337185611402 +1.313614425007121 1.644200871635602 1.292633408233393 1.064798650889160 +1.093069452146100 1.138798399892326 1.963077324907225 1.142737490875442 +1.670982305384451 1.216466654513597 1.011118122549308 1.885085521049507 +1.896976888402791 1.174966180392522 1.265967566319919 1.106721919856047 +1.889521227081777 1.671549247174755 1.333135533895199 1.373058673453847 +1.988564882386615 1.455714241512076 1.604726482781929 1.937206557931399 +1.258222932569549 1.471004948132898 1.299168707541797 1.880842280753743 +1.961949462277673 1.246739061564098 1.819229081597444 1.261165655065443 +1.111633679146902 1.812791025194775 1.096687344314987 1.885000959676556 +1.247333246913488 1.169821227270991 1.849225171866208 1.113413570769372 +1.389967423917044 1.632386426159756 1.408498389061703 1.354675012205829 +1.562636047043027 1.321106718404142 1.628135667088058 1.779663541802318 +1.025935414466402 1.591149724033184 1.408136837898361 1.270288428988493 +1.551038700053702 1.261444653239078 1.605852495833701 1.846964963777398 +1.817744951729428 1.745232273661993 1.454418461198427 1.185535287435345 +1.226158924026995 1.766275855877269 1.327823860742968 1.809577468533481 +1.445052182522017 1.478885697472404 1.964296026688025 1.554237538007431 +1.188458664220232 1.926983540398236 1.665097812667305 1.213549625458640 +1.919220067745916 1.857503634794774 1.204782093345032 1.425813741660940 +1.694871466846850 1.599453018593042 1.126419956930397 1.450058838743164 +1.305888624866852 1.681158162826295 1.792339512447519 1.025504803049825 +1.164136766899656 1.686241291591901 1.071399576376635 1.050802982300570 +1.685038374246392 1.305092284830372 1.925550366520729 1.783932106416705 +1.741526288596854 1.806553700321259 1.320390871234883 1.552944413682950 +1.800254618755874 1.837277677131775 1.917579900875649 1.613059672216938 +1.950649640146849 1.958390625112218 1.440020081961701 1.689051966393417 +1.277878700251033 1.792921273965598 1.768489080249233 1.460903904192038 +1.131434726587865 1.487930466843112 1.818934556989622 1.709401637450770 +1.318121159407544 1.458070023412089 1.488833453137848 1.685067026532331 +1.879541436907304 1.095643890896036 1.455764615768756 1.951189826002280 +1.447204498030315 1.184371062488290 1.641810164343287 1.293386429505757 +1.536775444853654 1.458549822123473 1.207293792892780 1.427020644547486 +1.882948532618749 1.487583148524958 1.757115391702089 1.469696324928626 +1.511011531903058 1.621202670121333 1.524869346669100 1.920820900515247 +1.558297562837110 1.481169803649815 1.527911832224936 1.941183091378551 +1.832088127304452 1.557683975947515 1.139039028075402 1.845425748765665 +1.789181940757703 1.579057255524415 1.499530138060869 1.588925887708503 +1.340973827989362 1.011329304493413 1.430431341595763 1.942578815962583 +1.171112409633544 1.385153513156095 1.370378777991999 1.499094688264806 +1.333049893257321 1.497880161926546 1.164953693546311 1.357943365920070 +1.897381915000422 1.220355636406894 1.791873854911006 1.299526612898697 +1.473808826820328 1.648331962477751 1.338786954013943 1.678041289281310 +1.686653707685249 1.879466992953234 1.657371306720632 1.450074648510047 +1.780026198297870 1.638868933266734 1.853865547506363 1.894544061014853 +1.692660370127090 1.770152400110612 1.630794665168205 1.196159135521979 +1.893239369034403 1.311164628682315 1.653104571231284 1.651749016261276 +1.286959906497472 1.435092127062680 1.159197457505396 1.878892311805622 +1.170378077885072 1.588573835033397 1.729636197490390 1.057379443408791 +1.778463357929770 1.356346132828050 1.884543087961178 1.443908223338705 +1.795187458648464 1.592950415581435 1.652268069195183 1.032003793713894 +1.267423455965636 1.713923029963618 1.738947708543298 1.913343365930577 +1.351334373250191 1.353943942229610 1.147067516846689 1.878590434006467 +1.730662627626962 1.555673652398430 1.294277335194981 1.571488116789550 +1.813648525802711 1.272873614141403 1.215916478547301 1.020998550077639 +1.148546248962162 1.937916349910062 1.417324519765533 1.967574048415521 +1.041768800838845 1.858070480779373 1.904005061133772 1.314501363690725 +1.927673248859630 1.314920926348881 1.211566875758629 1.318057020741276 +1.950960510571477 1.345276395808644 1.477349611649040 1.858401217132472 +1.841536558173058 1.205245985962324 1.858116629724572 1.555857298133076 +1.069626263663565 1.858164731038060 1.293350946549773 1.250361453202322 +1.507672805626459 1.469417139623382 1.130075812793387 1.997948767733579 +1.037597493546433 1.779758461725679 1.160212882055450 1.865237161915995 +1.590144639469837 1.631126092536176 1.607693148069419 1.957742103734990 +1.449651862420824 1.603682857569947 1.699610435143027 1.501997867036270 +1.162401175482744 1.277382995887290 1.126680374980864 1.397682908911994 +1.651520947697709 1.577231791778194 1.383471601580124 1.533458600497015 +1.449271097487807 1.874651901713856 1.872531688216214 1.446460817216834 +1.871317517975826 1.923923695645050 1.149120335491840 1.405149499595412 +1.219282921190178 1.707457965538656 1.760583398702569 1.534852987672505 +1.228125803410564 1.289588341885394 1.009433117440845 1.688959871311435 +1.481493960247733 1.450494979879816 1.468827993528415 1.863661104666817 +1.239273011660333 1.523479216437862 1.267240920911469 1.440226516659218 diff --git a/dSFMT/dSFMT.19937.out.txt b/dSFMT/dSFMT.19937.out.txt new file mode 100644 index 0000000..8c86710 --- /dev/null +++ b/dSFMT/dSFMT.19937.out.txt @@ -0,0 +1,252 @@ +dSFMT-19937:36-29-1-7-16:57fbfffdffff575f-ffff6febffffffee +generated randoms [1, 2) +1.461645975459199 1.293092195829083 1.861767585632313 1.035470268378056 +1.921268148324709 1.778537254127501 1.326609581820893 1.988842319423699 +1.178029049104584 1.779101238611064 1.259832534901200 1.761929645630467 +1.174586272197652 1.763627879646718 1.227512865339980 1.557549121772537 +1.666834223386833 1.942066596270937 1.022135028623186 1.537784573749008 +1.343367771796470 1.871060397625474 1.700425565951458 1.317291411433908 +1.672473008404334 1.626097447360594 1.576319500730201 1.442827996404315 +1.187282619760730 1.968058185223260 1.624224759673020 1.362604050137360 +1.487233900926817 1.873546807732945 1.549425649916611 1.357534717266534 +1.019006860427860 1.058159086386815 1.155289103467303 1.207779035746931 +1.739846678728063 1.156086792507656 1.247552389751787 1.013457808322751 +1.679098092478851 1.513054390827698 1.155361897354504 1.582880568892147 +1.281002085508147 1.071450680723612 1.623458963968192 1.536229505627883 +1.666997566252900 1.032109551192392 1.220270437250627 1.560699023387795 +1.769569255665220 1.109195155844026 1.234508913631170 1.947256084891672 +1.574552516444104 1.867950343763587 1.233076587123259 1.016433146107454 +1.159965265271466 1.642735731230112 1.894768549663919 1.100494129351333 +1.164642428251585 1.445607681010637 1.997072895548453 1.699189829358399 +1.823567631352674 1.138828332202240 1.077791581657024 1.467792412166709 +1.200050480511734 1.759233596837473 1.393452063967582 1.437095524568155 +1.453230334551388 1.464697479534591 1.061333906024167 1.659325738874257 +1.675232350556882 1.489415484687117 1.008047591026871 1.206630352152338 +1.886509292331734 1.434005111560690 1.915930383542960 1.575114439758533 +1.564949687008307 1.266486445928318 1.195721948020717 1.626358213759361 +1.115964220518277 1.325875277269182 1.962999686817999 1.353179236301370 +1.316862557233988 1.102971277530084 1.861390696843840 1.317701136380402 +1.989623231761386 1.058125345077865 1.959476251199599 1.150326353816751 +1.362533579251938 1.729871132835868 1.621011553910108 1.410783895164524 +1.690788682655114 1.835797745018170 1.524468145253475 1.405561229081683 +1.169118468870181 1.900432429125330 1.623671378592420 1.327554886717792 +1.297025892458058 1.864341093157065 1.118215790503504 1.741672987522912 +1.134656390317136 1.690201804163612 1.339377431729262 1.684431576517503 +1.758835245578502 1.811268286419902 1.054093912354715 1.044826536363527 +1.648328626294770 1.970049794967589 1.438199519496978 1.445325791030565 +1.191238125847483 1.469224069238622 1.119837803018132 1.449612447738487 +1.690760752192040 1.121699290240591 1.144494606980641 1.281268504155055 +1.238207027440006 1.933641341828349 1.801726404437355 1.485607037644484 +1.905706395319786 1.955224695216238 1.883550028299794 1.291232987442196 +1.947604732125672 1.947553170319427 1.886961491167449 1.725616282865014 +1.946799661996308 1.830849496548911 1.644565600451260 1.827037773113467 +1.703670909671473 1.962278690786332 1.664594110158099 1.190952500392817 +1.961954713053400 1.074185720882761 1.716982750712795 1.685929455807160 +1.308756005533184 1.884411350888070 1.246855873708694 1.368394116810352 +1.450124010976017 1.352175442442306 1.609962879606408 1.635613988106033 +1.587224419999609 1.740778001006770 1.256794354165693 1.933302372100371 +1.106437624521714 1.497373750884116 1.233550791943546 1.926751841613241 +1.439889147055655 1.765314707395150 1.205137872005751 1.890057559707178 +1.981497686768594 1.672481190611046 1.683474455116381 1.498221258554085 +1.971655601524031 1.946834034012983 1.507529452043149 1.867388383105710 +1.257982020558157 1.488696813349693 1.093402646330047 1.149410374025835 +1.598235343050995 1.408135807972060 1.117545267550041 1.452467150175323 +1.038505434713938 1.297561233876280 1.460620437742797 1.747774874905661 +1.400733396775832 1.479322890967470 1.836826080516685 1.073651340061952 +1.784538781223845 1.995806096060347 1.698111070155739 1.863237629521701 +1.976596372500207 1.032057587159371 1.562482084248705 1.711768375545868 +1.425378416549040 1.720174488874705 1.055707729832387 1.615129568335300 +1.006134355371326 1.431116864195253 1.965944874144387 1.412265098783190 +1.645775538994512 1.205387677796527 1.308369577757235 1.900560843826659 +1.671094234132174 1.453262647617775 1.556508118793971 1.632848295009304 +1.607617601206896 1.186172354084266 1.083592303863941 1.046045888776048 +1.103022680163375 1.604627709282955 1.043080720016631 1.260384050689742 +1.494782227774401 1.782145217586838 1.775420314919317 1.475493077304661 +1.983752380648123 1.834710762548905 1.905130806209811 1.673335771693299 +1.638311504011404 1.806604089705676 1.882104270268104 1.246402265571329 +1.995940683208365 1.839421258919695 1.450235221985302 1.724250398002380 +1.851278957491846 1.058215286536628 1.035707204154539 1.822662715221311 +1.760470376791854 1.796515926050756 1.316404206061000 1.492953096914690 +1.744977067401482 1.091883532999518 1.077174051197518 1.593018497832310 +1.332784448064518 1.987559718166531 1.236372693381684 1.889539025720299 +1.656942412869278 1.396947508582674 1.057908555880700 1.775769428799095 +1.627033919482772 1.450850065594345 1.357842646463271 1.496789735868411 +1.292089539210340 1.491014103175838 1.536794135970017 1.950423890948685 +1.190596156597643 1.472338116665209 1.822239628697147 1.503249053781067 +1.972642589092148 1.476781480678024 1.338724783824423 1.303186683539715 +1.386463831259129 1.610308741765240 1.173120470126358 1.173223669909328 +1.360836554305454 1.886857554522097 1.892823337732295 1.625159702262740 +1.211345270993961 1.369465033249006 1.817962986551623 1.750096276544238 +1.909030722128478 1.079808050041699 1.204288408624328 1.365455531975354 +1.792564813553754 1.259596644608812 1.007378573674613 1.168125488254650 +1.817179589710004 1.794529112244198 1.140933753996419 1.378167786674315 +1.441945151096744 1.218519151611324 1.564086427231469 1.336474484639979 +1.594825404555869 1.322029320430427 1.812471411375799 1.236828019588782 +1.768225158319796 1.155262680650822 1.038233906523940 1.114165201174565 +1.092966450492267 1.671454112534085 1.781431627254948 1.087086814226508 +1.191953763118871 1.971962788049907 1.090311288483792 1.244764791864942 +1.957213882423699 1.967457906021395 1.180618926699906 1.982364007635082 +1.097591447082864 1.704317905167519 1.318747253518637 1.920767304603644 +1.167798245563946 1.301559602679047 1.800042594060612 1.574871348252882 +1.750378937086014 1.312867818597558 1.057580628772755 1.216548184584439 +1.988585944487621 1.952308718795664 1.782827742304356 1.008518834981590 +1.825898095039846 1.467070214280480 1.727151792953293 1.326582465529260 +1.051526644292389 1.384857464703847 1.728799753457417 1.659546775134853 +1.400150861037221 1.287794960033525 1.151108564729041 1.398061133039025 +1.267621015970037 1.928177128063626 1.758904678878940 1.145844365081844 +1.875605936756503 1.130182588660574 1.687825970425290 1.455960781223439 +1.951699812059562 1.790026553817059 1.999227786541977 1.041079218832173 +1.930978490748630 1.458837564217311 1.530368786660934 1.178335812391685 +1.029604163120752 1.284076737284335 1.014598442284264 1.097785870456919 +1.414489772009496 1.083531611233961 1.788267531359584 1.192543448183987 +1.997647296408898 1.620565366497082 1.927740400883548 1.415237580857267 +1.783105705230298 1.530715080402083 1.400955743320806 1.783999781529727 +1.360566601430861 1.418723821680491 1.950841501820420 1.035679826211290 +1.440456319801417 1.885170677503913 1.450490490564963 1.646088619438789 +1.765979883037830 1.802707515528070 1.473464021184651 1.306243931351455 +1.375903406972251 1.761026237395950 1.405687848342360 1.043546154622085 +1.618814383794229 1.107849087314225 1.058491037191186 1.189887330736006 +1.406812301874665 1.182173251625204 1.678438077706320 1.190750909465489 +1.047585804086431 1.923362807085461 1.131074208690172 1.969236351523099 +1.538327549149119 1.914266905036262 1.734454355739143 1.495040609371216 +1.494223340718981 1.518660275440747 1.030114706459825 1.395465169665933 +1.822390667421008 1.333783238777146 1.484889884476759 1.470552931114435 +1.807292792868891 1.307683026190680 1.253476486878550 1.231757578491624 +1.069733949129297 1.572581530839340 1.090378196225265 1.384717265234042 +1.730781705195575 1.952313270039255 1.857295831937678 1.415767339784052 +1.880049787924730 1.525321272500951 1.507103086950263 1.017520961247379 +1.650663507689058 1.283218323671406 1.260858958037337 1.174586302994798 +1.827474535288804 1.501953011736799 1.257164459267245 1.508477519825633 +1.077596704495724 1.845067011587828 1.575674876949050 1.585843714254569 +1.214925377395064 1.770865160520612 1.245801848551775 1.810139663027968 +1.173328373054729 1.037708941798200 1.575818892583599 1.648993897060833 +1.264775155710929 1.647648291766685 1.545279463188180 1.968874619030496 +1.524275815707681 1.420369219153406 1.985694473438593 1.261140654063298 +1.973035301911086 1.027490990557324 1.130971954777931 1.964408182345485 +1.123668253783470 1.735241330384398 1.372436847206581 1.191028107443899 +1.181162762983186 1.181267153817025 1.745006910370296 1.734601359705735 +1.966687568813064 1.192199036265017 1.433420992826216 1.768051838674037 +1.689587106376746 1.642936722240673 1.081903055108203 1.048865656618512 +1.648182113712979 1.310961137100270 1.744106164451248 1.953228289228293 +1.731292160970572 1.902028243514299 1.563357223203154 1.780667020033746 +1.008702179126432 1.210493927414472 1.273279034756321 1.910259720924754 +1.610104837270218 1.931333764257997 1.359913797933309 1.764115725062530 +1.709968973155581 1.728815849010427 1.990205370450619 1.074379400010775 +1.533381427176709 1.962587647841405 1.726217090464810 1.118062776535084 +1.642888045339771 1.986914247714000 1.450097074151180 1.260722174799572 +1.246821567408243 1.839624169642348 1.844848176121485 1.521282294662449 +1.275430745870305 1.063391865219308 1.052325562929685 1.076839788270890 +1.043367872574163 1.155857632528215 1.925033359732715 1.456366286127186 +1.136490104883787 1.177819986534528 1.123903635186073 1.851337836068865 +1.018975047442747 1.448682092694324 1.662144806369477 1.127576094259173 +1.431046469866376 1.691093154030648 1.812524917208469 1.153856846084742 +1.994406341116101 1.298239300119237 1.473115802227145 1.837057505057027 +1.001583508891053 1.499385841005816 1.516885963992814 1.257795814625961 +1.627267945283996 1.160451173263047 1.743197166279378 1.595321249428930 +1.405886881624587 1.985854843048970 1.690066044811962 1.298274362708542 +1.282829869490421 1.201885530686968 1.466705686740432 1.089565218128709 +1.513257185317104 1.701452141977100 1.955171133733656 1.364005071992204 +1.594648527469602 1.829350303912339 1.478801892328230 1.460851615109165 +1.606557596052374 1.373547351215583 1.954704649481822 1.135471515349386 +1.834270159463282 1.191967534301285 1.569901020108962 1.966470243286015 +1.290576143286846 1.552568082767768 1.361817488264710 1.737032128619859 +1.513224160123759 1.769574685344214 1.747689626781295 1.122424704405371 +1.319410908096533 1.225970565825044 1.928125729703981 1.788963392681875 +1.455763834231657 1.124477072396960 1.515485863067600 1.375395804432647 +1.575351748316830 1.673449100108870 1.364294656791694 1.265351251892901 +1.965988046117740 1.839791849711709 1.139582631068216 1.632903179845047 +1.845466442496549 1.647121337668838 1.212578850388559 1.032047892842233 +1.240997784180761 1.285770448288500 1.768501957601145 1.156773332543286 +1.537541324743372 1.917562519176560 1.566556734466194 1.626499316657405 +1.712889518370203 1.269210978570801 1.198820496394099 1.653299460154541 +1.714787389897991 1.387855428204244 1.192779537402267 1.256384038951126 +1.634054732443132 1.209846468446090 1.918405840833983 1.601947117995432 +1.270418620785354 1.015497810063393 1.798312002118657 1.468473127115687 +1.293384854145774 1.718981940148839 1.752238910390551 1.775059897481489 +1.218504681087719 1.233348518829589 1.061227651617623 1.479039119019688 +1.934245810784659 1.666538331260557 1.126253120140497 1.602394261406719 +1.329442686362923 1.341751056393437 1.254408302511139 1.591932878101508 +1.171664117133066 1.828367746729327 1.806575699977193 1.816182855634706 +1.795937337816208 1.832546678268568 1.815357239934145 1.318760423424553 +1.652432113829942 1.049066707585871 1.981041131817232 1.737020783502983 +1.486875333443643 1.860760870734839 1.636128004745756 1.303654152742624 +1.352074431706743 1.496661494244576 1.421445090531876 1.061288487519219 +1.190723326791812 1.292889082689362 1.352134192460231 1.856409897767384 +1.453103716456505 1.625628598571664 1.296004049754397 1.977076526073909 +1.807590406107491 1.956141685854626 1.568592175444615 1.596109781522948 +1.831076330329410 1.946490238774006 1.534529838172963 1.079384982507887 +1.620714528472325 1.857447197709796 1.437399126889195 1.870988656099678 +1.759898346310766 1.131295171598961 1.835637044400430 1.080154512329575 +1.220526879621307 1.850814450685155 1.397207834183287 1.821558623972586 +1.822445164006511 1.660015030874423 1.082884272153004 1.160064297389843 +1.651367505319386 1.944511395789728 1.875469907540061 1.009063189369614 +1.912051168451770 1.575967412694925 1.641773956897378 1.174686129563673 +1.457755038044876 1.753170693029503 1.450162200556667 1.634236375363350 +1.425350766539153 1.934828538780286 1.305105278395515 1.809003767189605 +1.748273460023215 1.149435263756424 1.732781172045688 1.449471978337215 +1.419449557969815 1.389462572682173 1.797024928728581 1.068942145203134 +1.477390705821995 1.013895185207551 1.657884298420492 1.173523920927422 +1.438616326566658 1.767632158240049 1.123063338791320 1.908785384367792 +1.308626985665864 1.634496367704794 1.499733845174684 1.943626563059945 +1.393614988045361 1.006382993512742 1.528961312694862 1.391002169903245 +1.382256834147191 1.878802292871203 1.697368853182096 1.488606000184823 +1.697756956996247 1.923546676086268 1.273078297572089 1.784223010494826 +1.621557554248538 1.431175305587039 1.819764025950236 1.179029601325471 +1.226309912554562 1.662652178318211 1.355513523182470 1.948025739899618 +1.790163270034520 1.571676966859979 1.574026383940898 1.230789118339324 +1.966238825114873 1.270015139589798 1.342083541279205 1.770125121187392 +1.571296032118488 1.883973463327031 1.676751485280083 1.336417930371233 +1.351273454562022 1.731558084076180 1.763697099915506 1.081840646362508 +1.194895803073643 1.074033645583155 1.021507113356872 1.817654527214950 +1.255042175395447 1.030138545316803 1.468043812442300 1.763623470518107 +1.086975592740555 1.417755298358174 1.815257151152090 1.293042157099479 +1.964044524326188 1.510653185163820 1.528071387718479 1.767862344822456 +1.239017752413373 1.038368833688300 1.691957229425224 1.947392336429923 +1.401280357560018 1.219863844953827 1.168327010331288 1.423008080200488 +1.756415655330529 1.084643808969420 1.044019435860009 1.946154863493232 +1.064084882773389 1.267046004592725 1.809682614174746 1.680567045967001 +1.866896500780751 1.836094658384901 1.593851697382830 1.072864735149288 +1.171205543084170 1.683641862658266 1.936300504443408 1.525168130342951 +1.103400809059321 1.822371280423694 1.698988536954119 1.890632772555773 +1.305567417511340 1.777590591786529 1.255024299184527 1.348790190513010 +1.077924099010889 1.645444619035412 1.745239109686201 1.655970921856441 +1.504928601318423 1.783540740354359 1.969395728540267 1.209629137655262 +1.061425955063106 1.081701323809694 1.769668418739022 1.065532885800274 +1.135937798346636 1.564862631555244 1.783090469157588 1.593207338298664 +1.755287479556487 1.134053454855448 1.747018585235901 1.228314935619984 +1.744700609161494 1.597193243704014 1.567912146999813 1.955927056071961 +1.577500234544723 1.299317043876255 1.489879844503556 1.001203027408162 +1.567152271070049 1.865199041619334 1.004983853185075 1.657619992045508 +1.498705082038298 1.683197753862287 1.384547554229219 1.587110179591702 +1.632379548836475 1.318939922679558 1.847972135686709 1.778038764810094 +1.392110141575785 1.346839722199618 1.924509905780319 1.405481128899099 +1.784935222428136 1.941690394250855 1.299437024762629 1.225689274498299 +1.292120566788546 1.268742969158830 1.143892070808776 1.205975706114597 +1.596728673413704 1.433227637376320 1.040394587429608 1.332136830249792 +1.203709439075961 1.276815971288807 1.592112236196938 1.550284142715910 +1.165773334390775 1.445232113788910 1.698431152868019 1.900797795195132 +1.901425927455026 1.260364807398170 1.375654672036522 1.508635855941896 +1.704649214105317 1.479795557232074 1.676710466089019 1.005630371051859 +1.480756193296445 1.562123827636783 1.570359207820349 1.026731243200979 +1.152701966459368 1.764932619088912 1.421113876643347 1.654333340000737 +1.290861221709777 1.256993100949662 1.061059670026160 1.327908088899290 +1.204110503040770 1.301420603098590 1.453012217397547 1.053182534234696 +1.454060848409704 1.314163154453310 1.856570219120100 1.789187227597611 +1.323331185565472 1.817421688945484 1.689194307464493 1.705693009548987 +1.426913799424235 1.520065673493038 1.140372728769769 1.637316328901305 +1.281290244389320 1.442113703376734 1.772707594333041 1.450055316918586 +1.727016660062862 1.983857066062469 1.299166666770592 1.203453038941551 +1.095298824238259 1.215359694755110 1.727267189672813 1.199569272160582 +1.953789057535812 1.014270520559767 1.357625651457422 1.218346770235521 +1.185278760104187 1.378859703765719 1.450192235437711 1.159305331708470 +1.153165808334308 1.776034109962699 1.879183381084188 1.534546912421158 +1.880031754853872 1.203321428589795 1.443126389261567 1.641290572585060 +1.167279208084802 1.757962076180053 1.509754432799272 1.531444272040095 +1.476751342908965 1.101258623694829 1.184179931888211 1.706841756127841 +1.588005133603297 1.058372984398788 1.108183963461912 1.123959384494923 +1.250815831448841 1.112571523842469 1.052524642720376 1.362678937162619 +1.492378385147259 1.816884482418256 1.791522457879790 1.656698441748081 +1.181554793197482 1.667735211561324 1.457529140896900 1.473163211249193 +1.662586439489075 1.384161131023200 1.287524588909783 1.258852226017298 +1.936771338811397 1.825993300078044 1.835817841229327 1.471236620059124 +1.768190703239429 1.378181044025784 1.849030949137412 1.844895728727465 diff --git a/dSFMT/dSFMT.216091.out.txt b/dSFMT/dSFMT.216091.out.txt new file mode 100644 index 0000000..52d6719 --- /dev/null +++ b/dSFMT/dSFMT.216091.out.txt @@ -0,0 +1,252 @@ +dSFMT-216091:1009-15-3-1-16:ffffffffffebffbe-dfbbf7fb9ffdffab +generated randoms [1, 2) +1.834676538822007 1.648592693891527 1.667916316198339 1.622519392379919 +1.510287003825744 1.943370118897190 1.180765450545616 1.325257913161801 +1.330075188584433 1.148753330478597 1.104320749582750 1.477699416462458 +1.652784681875497 1.900548789188967 1.999752865906014 1.505814480030954 +1.794161582627759 1.755884705132946 1.815485473523901 1.460547036833574 +1.533410779523600 1.090871731379651 1.719886336837303 1.759315569323584 +1.546699813624354 1.254078858280359 1.987264932845554 1.247661572585040 +1.618982680665558 1.724689135401466 1.436777608395077 1.216091816434116 +1.531651986647788 1.301600904614889 1.889084876741018 1.745667608569421 +1.209611570021585 1.091122633116903 1.041445488913098 1.305956526040616 +1.215334208848199 1.418243100419705 1.449149895805233 1.316879710217704 +1.480056384042721 1.248795457726998 1.258721384695338 1.883114837076929 +1.469883299671812 1.768102436554394 1.115456416256641 1.856131032428229 +1.181051604142201 1.918158091148056 1.773284260493805 1.609598776391455 +1.719688793528549 1.361807009267917 1.388348214651461 1.913356680199041 +1.894426075093754 1.950693580343920 1.851284197841462 1.869260278575076 +1.845232948992766 1.190641497270589 1.394469633472642 1.266041509809288 +1.164561546934297 1.768126068703732 1.211499183823785 1.896298168015748 +1.068166649490492 1.347534687673034 1.661998636057310 1.548179632743412 +1.575644365645757 1.157425428589732 1.116042343110850 1.984241426365929 +1.842596112939697 1.503753894768882 1.894205741950767 1.810423816013925 +1.980906107076624 1.446784842475286 1.812694303645664 1.745858759587598 +1.601439707704258 1.551011488488146 1.804166535429862 1.690328369733125 +1.464877078526464 1.245182557997525 1.497933269947756 1.832185767027968 +1.405741815968595 1.948587528267763 1.753668981038545 1.681904116796520 +1.977277930702176 1.590723076019809 1.498360176266279 1.268832691474618 +1.682956757327727 1.118955649950304 1.873697630602873 1.549683523087838 +1.990884303649376 1.541723807377516 1.215850016076979 1.366969535157533 +1.557876913394585 1.270619893339579 1.173153509854941 1.444607898675745 +1.750558833519944 1.302929815145345 1.758971963266214 1.284153457213810 +1.270212340621344 1.919212138824321 1.673546958644218 1.410135001344043 +1.273866177132213 1.464115243107230 1.901231198904630 1.745883711923800 +1.539281238301325 1.897629293923835 1.617852474255564 1.579690658428116 +1.941941254890267 1.906221422949870 1.927339065613002 1.156588448221522 +1.580388347193839 1.818743080571525 1.970324535682918 1.499044414500665 +1.270141258377036 1.213554123607596 1.186989645389592 1.031747835250943 +1.910815032340552 1.448583620651456 1.164258734870477 1.282263516340520 +1.817265198157457 1.240798844510915 1.337286862526715 1.851905918948273 +1.601417693712273 1.694221599184246 1.111188622339040 1.403481832727335 +1.801453295159966 1.324921573713288 1.814250307541746 1.338394900487824 +1.011728239115576 1.363714517889786 1.517475011742451 1.901785400553588 +1.310659200043163 1.354887209960262 1.147599429096497 1.894692508751183 +1.068686205795393 1.262915042949374 1.044467207315759 1.895115280086113 +1.638732447640022 1.878999654400499 1.092184489636662 1.859510173451733 +1.272192700595262 1.081340923368466 1.138358487217124 1.804684685959887 +1.918188872224244 1.242443750846531 1.437683746351915 1.572849066113456 +1.344762746052011 1.322257440549518 1.893800741823158 1.131944051250820 +1.781031951656374 1.234727201509788 1.886289629035024 1.755255567332881 +1.414457595930258 1.504789778291481 1.638678905201106 1.083316440473274 +1.294655055308811 1.266546395650095 1.672415970312857 1.095876893507656 +1.518157445837853 1.097451943214746 1.336096139452460 1.195189179350563 +1.515037274404797 1.797783244845781 1.661287118205465 1.296978593350548 +1.061569877199184 1.570615466916619 1.135676089592371 1.974152691790034 +1.795388679407968 1.853205195738119 1.170224548711559 1.984218641464700 +1.284073799866511 1.110805411856193 1.036981709379846 1.679021570615516 +1.672130402729427 1.635310197924337 1.024416630472881 1.439527878578263 +1.356730498365461 1.560198807096957 1.521542917645436 1.763581959020245 +1.135766209018471 1.940920384274023 1.080001952420740 1.051382764719411 +1.862252123239001 1.540417391529068 1.413653647823269 1.383940111446322 +1.531695118574526 1.010762069896839 1.492517131893546 1.589309037197900 +1.525895117216377 1.287584385744160 1.863093656372741 1.331989737439031 +1.041433608387339 1.435935036587615 1.543405812193103 1.416785884717390 +1.532395032310387 1.918572296725248 1.450352236422827 1.374326255244856 +1.597637809293295 1.498648399187508 1.814140289822715 1.064083513291082 +1.648471262590663 1.990166630550519 1.960402396716634 1.231051188383349 +1.091045997950845 1.467882950654966 1.317077081574959 1.210818681771715 +1.228920364599664 1.849049049776323 1.757344514593701 1.228201879600524 +1.235341544462010 1.346632668575984 1.979756812441859 1.971690448719439 +1.070272570223568 1.028194332019784 1.350313331510100 1.310701224685206 +1.761540429568334 1.345288634508231 1.314043733698643 1.466675086330409 +1.807013972369724 1.335735014755118 1.312865770341233 1.086121668075439 +1.587025938396366 1.340096915880602 1.831628447477698 1.154374767020682 +1.578634998503820 1.351213550995178 1.179038927301846 1.402659442836541 +1.400405635491582 1.684643036715778 1.283304472589431 1.681647685124310 +1.995509630339995 1.090021735267272 1.841801913075231 1.582866836520239 +1.089692627693629 1.354117441245073 1.005746238546099 1.160401897231188 +1.525959916606964 1.703502584393878 1.565426108962821 1.406294655817023 +1.604578047780856 1.753273613662512 1.444336482945459 1.238751005904438 +1.969425667417008 1.413355670995793 1.079640532034935 1.392406312061058 +1.334793789564685 1.187513894280459 1.618192247148201 1.714128620373772 +1.816237291412210 1.915539824466035 1.616272758720501 1.076800619921264 +1.543192769138033 1.752090980440818 1.126280254786301 1.119262998348173 +1.698995278687078 1.873905730476844 1.049793497692485 1.467761756704821 +1.038542813748119 1.277199232753792 1.829016058218017 1.839637772327354 +1.603505073113286 1.306258537026298 1.969861758109984 1.949487744939036 +1.969979611577312 1.657537797216686 1.618529717511041 1.765106416796383 +1.372476575363413 1.186206967724790 1.294418393912206 1.580376254177434 +1.604224872711211 1.268078889366616 1.619428066539594 1.006354627153891 +1.215184100229088 1.303620839524917 1.269963694056732 1.581720550501320 +1.258920480919699 1.221082168887852 1.308015783081868 1.017116004279999 +1.580134757514804 1.359905545435585 1.237004854813647 1.202952892199381 +1.322028263098221 1.278373231951361 1.764293850197693 1.302753165475843 +1.784593290578948 1.225800230616550 1.213477560481706 1.946506413560286 +1.051516278672494 1.027030021682892 1.337517433653295 1.692358370062911 +1.211339734539782 1.098332676318121 1.152801535630473 1.250735126707100 +1.182951625972577 1.914491838971401 1.148585066608032 1.165577422415602 +1.119026156823857 1.606750205815600 1.253368166010575 1.439656343995058 +1.996896911595705 1.753787653844953 1.226600500288432 1.385640759119388 +1.626975104027683 1.221776365711468 1.335908176580780 1.021281018883484 +1.777706688701261 1.482739595984398 1.630538038599017 1.777457004162579 +1.678598723015856 1.653596791576777 1.910056895133044 1.074549171676185 +1.349394091864704 1.777649017244945 1.252684818330922 1.566408203943974 +1.487298764324522 1.227647923323228 1.891146271836690 1.500474514513506 +1.012940284288133 1.834048413656020 1.975296471565188 1.928449757879057 +1.951937878101417 1.638231731527430 1.732328287509039 1.388354832788434 +1.906606507991671 1.595842511161508 1.639864423863624 1.764544174633017 +1.866114639783270 1.543250075923620 1.793347422101487 1.705187694033789 +1.109689712148970 1.286265755141550 1.338584744601826 1.421399644910585 +1.617946081892394 1.386447740354013 1.967396170171542 1.658435817072295 +1.784695989996068 1.515602672125222 1.991790467194673 1.148462738044951 +1.199063271553521 1.043920803693772 1.124702382007254 1.489059443257809 +1.215218398712214 1.428538139807294 1.857364026524727 1.614263150226564 +1.271348584601327 1.445075531079044 1.895698705118472 1.081148380142715 +1.422090155359251 1.760263244378602 1.774382099041615 1.089651918023614 +1.893269263380535 1.393959050988476 1.756724343997441 1.787956120479723 +1.406918765564277 1.216461890668293 1.197324943744319 1.286562623708366 +1.780926329264875 1.462919178895570 1.372375838394823 1.974850729872069 +1.908488013795166 1.029616549518389 1.433253703064971 1.037978606566037 +1.956169130517694 1.803415114131818 1.153729433120930 1.570531789173191 +1.107522563849836 1.724062862488654 1.804807735455477 1.548562179905425 +1.645901376082295 1.198833132783257 1.314942084246735 1.965525254592032 +1.542834295437237 1.436873032086540 1.976430247879153 1.452483384784363 +1.310881145410691 1.174063195130890 1.721283285434451 1.057599294166425 +1.579888648049984 1.973786617010659 1.377403503751017 1.803520481898618 +1.641936810978453 1.847220172229861 1.390675737868918 1.377922047052643 +1.436840750506546 1.377267537244425 1.996672555161090 1.261138251067183 +1.339537582178316 1.224279912946685 1.653761100523668 1.019107205445251 +1.788496609196182 1.407127385330240 1.009714257992768 1.356177440844428 +1.427689870420758 1.178579218389599 1.837325816289039 1.319405853984857 +1.335312496197090 1.730513526630439 1.376045059186471 1.344552695952823 +1.529198493040680 1.965064756644934 1.346491795217835 1.151355173821254 +1.457826209596549 1.816726616204599 1.323438218641521 1.471361265995652 +1.229716901845910 1.277886280502523 1.612198143488674 1.079708693359230 +1.692658801183082 1.586068555624361 1.852051425547073 1.456048016510776 +1.172755769299475 1.369180630299031 1.934822483080060 1.394004874254149 +1.229003969065094 1.502168344607608 1.164064957898944 1.622260885724653 +1.485853688125122 1.885175558941806 1.538128519656074 1.459347297285977 +1.918595019796497 1.617436041256855 1.433776476954308 1.361779369297267 +1.789798068489081 1.856417094866915 1.058933745836406 1.076107607179176 +1.554502701002645 1.907203290454926 1.213758683788250 1.277302027868941 +1.350981432134164 1.177195034742647 1.503278091054953 1.574014351145534 +1.931987577266768 1.951694046414178 1.771581805041803 1.811617481835659 +1.388024026934433 1.743658766216115 1.725886503149654 1.765858042957241 +1.657885158214137 1.393972003986144 1.862554673078940 1.899458237971891 +1.616637813302349 1.167027665848608 1.024457131003930 1.834639422542892 +1.044142472217552 1.044269549857740 1.463347249679618 1.017707243210830 +1.998185173519618 1.391353578916704 1.541490852900736 1.601778271357430 +1.227011341727135 1.662789898855092 1.542758537407280 1.595956590069700 +1.568888361052846 1.451732317354268 1.221695406660214 1.468443353264065 +1.113053155012787 1.682289120745686 1.845532222675932 1.147566570097282 +1.983556871349328 1.007815889149646 1.175216472659608 1.944653972795039 +1.021771380644840 1.054696849057550 1.406494236572648 1.574303335220375 +1.949279028092364 1.783296776665288 1.998850329784297 1.823630483111380 +1.473738676455109 1.775550658087360 1.403660025322674 1.652511041692681 +1.531485460171421 1.922453632061389 1.082768276545455 1.480137252892633 +1.956220523701947 1.912492617906226 1.207777851963763 1.983580208476570 +1.625086773307936 1.727538512608826 1.524645946462936 1.948397036382501 +1.783026266731646 1.477905859244083 1.907256627733500 1.988748058298658 +1.935013037176277 1.075816752977104 1.112392388520609 1.860541477943864 +1.935380170589357 1.054249689923064 1.409253886507287 1.808776159741415 +1.873067073058074 1.657885182338444 1.691962538549119 1.714740454496583 +1.163415152688246 1.893941909929896 1.387223989820676 1.176783387924122 +1.311230870792892 1.768690920444702 1.650168137899702 1.090925889115905 +1.755020619879296 1.019615182940425 1.140356581578851 1.791256596701156 +1.824169867587465 1.701716476807797 1.509280853877115 1.789800577346901 +1.897587950337228 1.680553592084602 1.063711285902164 1.247663157767361 +1.963510449218559 1.944376327347469 1.304945619533943 1.068397169533390 +1.578260765264598 1.851848568140074 1.100508204433970 1.616905202012960 +1.968444411899545 1.968952518235452 1.984169353955317 1.354739482239636 +1.103940368619106 1.575169657146352 1.828432633749315 1.330828277557185 +1.634484381044880 1.218194133252801 1.448814092096647 1.795341456366456 +1.086215128953341 1.751242043459739 1.086848593177107 1.803605876747504 +1.240292453933110 1.448613667206231 1.426162767946358 1.895448761153143 +1.178557288459037 1.324973847983626 1.891776293215711 1.771772713246653 +1.819085818837352 1.084911943391566 1.845214509520866 1.314354152856394 +1.162640376809753 1.213382186158674 1.054957175973399 1.822102894962386 +1.436005018819239 1.493765470913001 1.220741059462912 1.307381359346798 +1.939053533864096 1.535372580994682 1.737002866185997 1.375522012195802 +1.328484831914440 1.666347962017203 1.800995794685618 1.337150972811204 +1.282988964055604 1.985033915016549 1.890677448257200 1.171580300533264 +1.360847733194368 1.665686686073705 1.024197364967744 1.057792116920457 +1.027364731450950 1.839937091991314 1.386796236853971 1.548201336994312 +1.346803258737460 1.663126999873671 1.842385013904011 1.958686365831407 +1.791213912463839 1.896725037291342 1.516308774762263 1.828500226637466 +1.481215407529246 1.999152534440232 1.405219241957640 1.516753224214114 +1.508535297311085 1.335652969068313 1.062228066699213 1.880287550958981 +1.141594811822833 1.704856371044927 1.833864555311104 1.107756226832534 +1.438125297282715 1.758798837507419 1.652178491339523 1.140368446537962 +1.057265759825600 1.167398634721689 1.881448555025020 1.202543497408369 +1.194570534378237 1.940076658309830 1.445123216250803 1.421139669001055 +1.526074473490942 1.437958392137509 1.859922928473226 1.357540490643344 +1.046029793622039 1.612131283748569 1.330953417238458 1.496301431859016 +1.416032458291280 1.033749718620026 1.186879544640607 1.233266126599043 +1.777183129029941 1.007803640278806 1.397728996710457 1.924375194865264 +1.354750092864917 1.131148327327059 1.744437282444517 1.059265901691179 +1.130714321002690 1.397397747449272 1.626737003068832 1.986861775471272 +1.824360234919884 1.415603319626350 1.952432852016714 1.334169018860728 +1.981557069438014 1.302840169902121 1.518832090202499 1.035849794541380 +1.922708715993415 1.053031764502241 1.524820873570625 1.130011820891282 +1.335534752582535 1.333215194457364 1.441204737786157 1.566845971110532 +1.452146185514123 1.039700424707556 1.893122053698040 1.112639771338949 +1.975604986855168 1.165512017326978 1.894873031008688 1.805038376693548 +1.238137015302528 1.697666423146183 1.107496720530937 1.848218544801283 +1.305995465408290 1.952686226838808 1.512689434096615 1.835566506701910 +1.612546220188057 1.549970079982244 1.081547304434321 1.660324800457832 +1.315861233694901 1.502154024179961 1.483950937523123 1.190436144894291 +1.360977823097415 1.483950601226408 1.871360529232619 1.046777477376136 +1.210490655577568 1.729370850284103 1.410736845213965 1.738424474735913 +1.804608050662977 1.996843817408316 1.681239134425714 1.607989851028557 +1.931350244518297 1.942016340553054 1.737565622543313 1.855743931614678 +1.215175129868611 1.214880208925102 1.841294996272965 1.653962721453888 +1.734651336615781 1.809307671449267 1.860987474186058 1.306534068275948 +1.923842828153532 1.124567407454402 1.427989160162683 1.700467906043515 +1.652998958138632 1.819917899543717 1.947318309193280 1.322277661930075 +1.015179676781824 1.289573599316772 1.686120573990759 1.454761318882477 +1.360840929188866 1.709803384775171 1.882636119541141 1.440345198541799 +1.071273252262601 1.616084698442593 1.005350700479873 1.171935626131122 +1.757188309076280 1.336289597700669 1.835204260911597 1.030570139194129 +1.731392031875582 1.267856671086894 1.757105473786206 1.633033164802974 +1.487874477704730 1.338188210924805 1.926036991128778 1.880296286240266 +1.921628052515309 1.850281432518900 1.610689245919709 1.033845149705223 +1.775971275102332 1.041057734826447 1.538850410724352 1.067908168855111 +1.036993048289406 1.017608381049408 1.615000243661211 1.259493611977569 +1.753562502576619 1.275980434591576 1.747314575666039 1.090956537722208 +1.685959029497160 1.129649344075683 1.932573126568610 1.232745204842537 +1.610178301159465 1.023577986885301 1.606746433918373 1.387597313256640 +1.236865325328657 1.428639181598002 1.069714632415013 1.272826658314111 +1.645742316911913 1.364720864760121 1.688778393307443 1.168751333103548 +1.075927799746436 1.981545933811228 1.389968020938528 1.600204676968701 +1.105592082082499 1.279379950082492 1.282156520895333 1.374445134825053 +1.467591645905149 1.539707768820700 1.375167039638739 1.140198862532471 +1.517081361899605 1.170865968223512 1.988748317326509 1.118350323259198 +1.431252494898879 1.485894125937507 1.208195103679212 1.999028342602241 +1.979548879366219 1.650488910185674 1.043190314071481 1.626234482922734 +1.658752894897648 1.114786055512911 1.077190034822991 1.847519139504674 +1.951074129728082 1.961453316395926 1.532109145327564 1.697482725822500 +1.478166647848892 1.329199895801655 1.444593533677047 1.798575520101213 +1.737195823362101 1.457401898686817 1.438729275399526 1.635805279114554 +1.336908967701857 1.340703827401406 1.460358544309077 1.878114702472815 +1.579786507503670 1.808084162845760 1.105219039247257 1.650267329686778 +1.504959444456030 1.660249302997130 1.792138111839796 1.152325207407063 +1.291674375585897 1.928112983734732 1.261742627436889 1.376951833028971 +1.309172895931567 1.575088452835187 1.889410738899384 1.256046991160902 +1.250852061761000 1.518473074332818 1.481165894678506 1.657121661994364 +1.047960622482264 1.141638132849894 1.680258799443001 1.049564952137395 +1.764631004007691 1.047336740104608 1.479585431567842 1.248452745372884 +1.357823711354496 1.492358735791215 1.684785089349916 1.043748821058250 +1.638246890800728 1.724973109894432 1.615124324125583 1.478425720322063 +1.297511975481138 1.427248937761809 1.641850450196334 1.915974820895664 +1.000792545192250 1.343931728340864 1.879862544249757 1.123322034179983 diff --git a/dSFMT/dSFMT.2281.out.txt b/dSFMT/dSFMT.2281.out.txt new file mode 100644 index 0000000..5189307 --- /dev/null +++ b/dSFMT/dSFMT.2281.out.txt @@ -0,0 +1,252 @@ +dSFMT-2281:14-31-1-3-8:fe9fe9ffe7bffdfd-f77fdfdff7ffffff +generated randoms [1, 2) +1.077427236496698 1.330805958033812 1.309707160767514 1.953669600777857 +1.863529318071155 1.321892076950329 1.946142188543320 1.302357587041251 +1.380611365595055 1.093925093692712 1.411057936483305 1.779691014798493 +1.183086936050396 1.794514975202003 1.323032219167823 1.609551465224919 +1.327587914085547 1.717539308202154 1.216582285067127 1.927186828884088 +1.793094935148884 1.181951248889713 1.175540079807404 1.633430934914930 +1.085794086927824 1.784554227170075 1.292078504332188 1.316245580421609 +1.268861750463818 1.729377627332138 1.868000566493375 1.684227100712803 +1.342785476310139 1.075392962541221 1.080089492260605 1.576871428817087 +1.422033395777587 1.978134184422441 1.163552662701510 1.352834444800846 +1.857228732693353 1.699695347676389 1.903982742401793 1.932456223827375 +1.695686594942114 1.718273995803726 1.483634408204670 1.073518510015549 +1.591670738637605 1.713521238530624 1.899302056237845 1.244879175261784 +1.842790240395573 1.139626824539296 1.858773264201693 1.001089845922076 +1.040840974782779 1.146356329712363 1.996478986873355 1.171077780342237 +1.393628133303862 1.448033732504982 1.769000997232526 1.584243112795612 +1.201249635869338 1.067094416880096 1.951848463608291 1.536555811318746 +1.865969964308901 1.872332542725194 1.989437403077432 1.704658838203047 +1.980831082524279 1.654981206938729 1.800939644212303 1.362661892448138 +1.336165617563600 1.503929038514571 1.486417110848022 1.354630193753014 +1.706477765702340 1.493757504664652 1.701666405440657 1.081044300473117 +1.041800755980823 1.009273777406132 1.843663675372501 1.336976447831458 +1.182563489227586 1.142351109476836 1.862986750230597 1.339158969943403 +1.912584023393991 1.894326930088055 1.971336288487062 1.283480894789759 +1.200022478758685 1.154699114631973 1.117453924937461 1.114459043271783 +1.931917563423575 1.484268062554988 1.263763871879671 1.902318597016103 +1.457751055727511 1.597865299732052 1.535186092126480 1.250033472119134 +1.373198127343330 1.027587811589155 1.904888565283696 1.594483380783784 +1.479585673629977 1.363132014620260 1.721071292205167 1.727554097925535 +1.873615657518144 1.693715049062060 1.824206256250350 1.030894874764912 +1.634308940048510 1.722912939190461 1.996345354551621 1.077730918087960 +1.655388268387637 1.069111688550187 1.827023267617367 1.864144945229129 +1.311553675886012 1.191142474270687 1.021746291636341 1.715298495295321 +1.819387977037318 1.549489589879556 1.667242454191710 1.804270780005735 +1.892228358182182 1.116119759897587 1.497620851214513 1.658971153139546 +1.282407739693299 1.418985251920655 1.680400665175474 1.450424025647558 +1.932124931538461 1.656327178049054 1.068633815635842 1.908549676447822 +1.738922137556573 1.185778757393642 1.559857357970440 1.968317499468793 +1.023394250358800 1.267184419362120 1.829696441041202 1.880163464850215 +1.374747883546505 1.645657717615771 1.316880909604093 1.633607306316154 +1.060721453520838 1.419440569196058 1.647399497388686 1.013401148478372 +1.336840114427257 1.451119101067781 1.367211410753199 1.544002172090063 +1.507399606715309 1.349701323970435 1.739357262401238 1.034881857181354 +1.792343420953876 1.750580086992221 1.586621829923668 1.133099915900793 +1.512017266071402 1.068433744515444 1.283990525196380 1.700289974334194 +1.027969143124127 1.717888670278380 1.222624462588672 1.655855756293969 +1.588171976108726 1.078392042243177 1.590261692967813 1.768206738262474 +1.999177609348027 1.961107585694315 1.163304139486714 1.374676477534269 +1.575555717665380 1.136372977466153 1.613597781744548 1.437337805135629 +1.202717600501650 1.432172411329767 1.783298436687305 1.290202914758629 +1.045786187619579 1.597673844452134 1.160222927843805 1.799312941272860 +1.775079351029574 1.368144837038492 1.330902631326902 1.319590229732537 +1.813329324136945 1.001066534533939 1.131878879873471 1.838096202011763 +1.476510881975987 1.967704362363967 1.344753158144889 1.585724155795875 +1.984247385602779 1.604315446634662 1.790228203300013 1.977811796828422 +1.644040578669086 1.197770204337504 1.761980546609855 1.473881615872589 +1.912939500466636 1.373324486075689 1.313057954064949 1.891553212037499 +1.869877560453698 1.758282148641391 1.361968699306936 1.401880110189458 +1.882227930227633 1.685369929804268 1.256755919002846 1.166318325221001 +1.275629995658875 1.876718938805251 1.982235106808242 1.795025672913610 +1.443685467559600 1.260622521703589 1.947916709910738 1.333902505356835 +1.416328182781463 1.590415700167540 1.880943926885037 1.195092505875978 +1.970359017127757 1.714855307825946 1.475973195734963 1.606078701195491 +1.699603663127308 1.937757380366085 1.164519931910198 1.321218669168311 +1.865787298609279 1.044182705281125 1.208765651614991 1.886460880945336 +1.244802123176895 1.189934118117610 1.433247975595487 1.590420078764920 +1.855336488644508 1.021985797114615 1.695755256207887 1.396929715460340 +1.746996735066588 1.279009711510007 1.882288774488875 1.716881798085833 +1.487793799208621 1.975663834134841 1.166209303137085 1.556670588409015 +1.663439432122493 1.513494947242096 1.269511376809303 1.458366197080786 +1.199033586077157 1.431019806913199 1.082366971029523 1.651236048720775 +1.933200323492724 1.659787251020624 1.605611790610596 1.961740593976369 +1.625498574441782 1.519264313481774 1.908695610857331 1.301098695252295 +1.677965935720974 1.994239497737718 1.846094000149006 1.897057940639756 +1.520122913184913 1.932909781870067 1.772065551639566 1.198156507105846 +1.575103569060036 1.836134602676737 1.688676883359676 1.922623031386239 +1.958008191816226 1.708858600639596 1.705474779033555 1.961632296789027 +1.314643042974061 1.243178817683744 1.987710932217753 1.529922894137190 +1.588826066457353 1.134201579925936 1.774592106394290 1.091419295319476 +1.555094582826839 1.272052737781332 1.966744078568711 1.197807289598586 +1.223506881959288 1.007184911477693 1.875553578130001 1.053017824178699 +1.975281183938539 1.252433567411885 1.938496521007733 1.702739919382893 +1.966161300618818 1.345958381916206 1.298609503191726 1.663478935485375 +1.462523862456423 1.410060226614991 1.245754442840191 1.865391187136921 +1.601191924329611 1.987152686367879 1.154418893257002 1.386938267927914 +1.488245362775108 1.787682675611167 1.561472393539011 1.389272397764318 +1.521767670113916 1.587341896746135 1.186165183667270 1.787638249615122 +1.163584111383861 1.443858134103862 1.223626363293417 1.416614676952241 +1.579747675056417 1.323930072625804 1.534857311629674 1.807439695989121 +1.394116115434611 1.704008105420855 1.229151758539077 1.805553555655951 +1.934267769271143 1.637547705963979 1.790151495158002 1.136822718984577 +1.211046753098519 1.444138833386221 1.716707665891591 1.563283309870244 +1.101150301054022 1.735766633812131 1.810197269626730 1.804537909873205 +1.224882429166322 1.791041322025685 1.699973036473779 1.284149526788239 +1.734593870717289 1.506202135775760 1.115129538645215 1.359651514337362 +1.385968989314934 1.343693198065965 1.581315796119057 1.953121527810771 +1.508663575358713 1.508701866375061 1.177712949946200 1.213564656749523 +1.991583879241652 1.235045564584823 1.786725872411714 1.190603050430415 +1.120037765998004 1.535326948161482 1.533514910160173 1.406987730996222 +1.452912035955741 1.949787016558076 1.862831038822695 1.121600126796583 +1.178158195857203 1.419070678879448 1.545541693472967 1.970448046394435 +1.432462668965574 1.125423132922904 1.096432938906842 1.413100343978223 +1.034691078856998 1.662168888610679 1.448285952488427 1.846135335030316 +1.932537188779699 1.072368618113893 1.476936181731815 1.497224220488335 +1.365618529609771 1.299027981148650 1.918049008199179 1.772418548721489 +1.387586518061222 1.483845528842104 1.255625766803869 1.468217484894315 +1.318723450550703 1.253951020461569 1.502056837878277 1.923965277706934 +1.402882629315108 1.642210750407006 1.503013843117871 1.412267214287446 +1.130568276370369 1.299428709339472 1.833616663275830 1.266181188993322 +1.293134905258529 1.509512413955561 1.938651905257919 1.920246672570139 +1.726411403966010 1.948125327914811 1.840330370372848 1.828557148453295 +1.489753333561266 1.882015876858864 1.356384686287256 1.362219639341870 +1.150219996421250 1.220921587533068 1.546192698315958 1.289843313330881 +1.182449997401340 1.787478496377461 1.744561149029823 1.957060385409155 +1.956842724462234 1.132074957847417 1.376507816864039 1.736998985207164 +1.503440764814400 1.415909063037233 1.448867714819878 1.525426665757644 +1.085989508431650 1.913665807895436 1.929508179685792 1.780920472753673 +1.218717125989422 1.599477785657630 1.950631087824247 1.719487447743142 +1.638875935087023 1.544911118982117 1.926772537640924 1.377584086893801 +1.126157239222995 1.886301711095860 1.549388713658025 1.868154601483125 +1.007359206798621 1.623308965507811 1.792741089823684 1.161262944922382 +1.256555244350031 1.305394969839692 1.634402275375915 1.248058568772628 +1.488233120905766 1.542231468777028 1.792909034417934 1.220854417667578 +1.630200032578530 1.117976625464409 1.254910190563315 1.123774445120332 +1.904913757301962 1.028027004406332 1.519228538642580 1.700859026395092 +1.776139917876465 1.830391738414795 1.092408979919822 1.063590184108050 +1.591596702598230 1.129936363365873 1.444829034778367 1.662788726585203 +1.585085355907744 1.042600251664272 1.438043776184867 1.934137879746903 +1.992399748932462 1.559663382202783 1.575292033557376 1.064143598576425 +1.895086190718328 1.116379428656138 1.825999004243090 1.135863302814014 +1.314567901638409 1.184255130522140 1.734607430547999 1.465102044970944 +1.212768033618684 1.352661452038422 1.396843609824388 1.812833037482305 +1.457369586044807 1.498886584933028 1.721400064224539 1.140947644547708 +1.644570717533451 1.840857019259742 1.837208084787783 1.150655082943780 +1.964148331853747 1.321281983680804 1.072534602976973 1.496954276537524 +1.413889730538819 1.491412540185252 1.686939525795224 1.291265759969973 +1.570895623746257 1.259948303511513 1.949105296003163 1.144545207969802 +1.490855783620259 1.197342395586840 1.232511381802271 1.737417933581104 +1.159254032337500 1.175154482185591 1.609920965585247 1.267151451135632 +1.619306847503418 1.914960498804687 1.341014586765746 1.741488874565693 +1.329527995206986 1.155013660329301 1.622341314298112 1.097928525056351 +1.280455278262752 1.035573609443097 1.250553477116104 1.515962676888031 +1.499456604276375 1.070726987259442 1.387053708946740 1.442121417795907 +1.194700433941751 1.352422839097547 1.127789820973185 1.874550438162486 +1.045150206106588 1.696062165314307 1.721909181937977 1.174760999990760 +1.933804206974579 1.403950677739639 1.953459568908369 1.679085408056186 +1.098961913863460 1.317705612129340 1.043292264794342 1.841995212128607 +1.062568355678756 1.442432480129407 1.699181606647795 1.186420843353378 +1.067445798427428 1.576399523183600 1.653615525852082 1.458990970994387 +1.394306244049708 1.105487873935126 1.461908259759805 1.055781807423227 +1.650493459253657 1.801494789669426 1.156789145156228 1.065153472322503 +1.397934717206145 1.101281626693691 1.410229134531897 1.209381175770797 +1.869199932398583 1.751252006413844 1.240828906925621 1.934751857183096 +1.221756711961549 1.955601505038800 1.084186463998781 1.779470779756325 +1.646059044236749 1.099085806450188 1.316864976021080 1.518244807106054 +1.634369519431701 1.188458483186628 1.456073318313393 1.009288785157894 +1.938926633973194 1.800185061737217 1.926877984733772 1.018704187931701 +1.464277797119769 1.492161191696601 1.556181688509071 1.598467222748736 +1.251648034868173 1.297673679632757 1.520449027862222 1.341929601086315 +1.454402973005311 1.330024211149805 1.514688767943053 1.174395467589010 +1.652844784702111 1.906256564799545 1.091624913595369 1.791700872024096 +1.555827203449151 1.578175609598918 1.518455824578077 1.772604062600885 +1.461972818612693 1.511122759610388 1.428433267996976 1.482385412522107 +1.299690889465301 1.137724483513445 1.817660613958291 1.685601863423417 +1.559100090538073 1.606628564004603 1.310829065261780 1.206663575745528 +1.040844170782065 1.035035714799822 1.689004572994419 1.030090981365909 +1.988811013947058 1.037869437193430 1.402302655055697 1.770308693793913 +1.597136924318206 1.624116223145835 1.858111650185651 1.191271012191618 +1.785266030781913 1.488341934570457 1.995607364335398 1.493199917070446 +1.819947348577005 1.140437605935523 1.575744472080136 1.318994181766390 +1.796063604495596 1.077094980660098 1.358410604722448 1.849384531045737 +1.919009818996195 1.117685342541885 1.112824387133374 1.945938949808752 +1.761144688758326 1.476563918528104 1.109670328956664 1.105664168818525 +1.242578315773068 1.641785765012614 1.772352944364632 1.638637372672846 +1.976393783492882 1.008205035670190 1.304692801458185 1.152937772933490 +1.752987216224478 1.091076002786933 1.355644367639243 1.850710693770377 +1.781255421251162 1.454302433108626 1.733823478410348 1.964164086614188 +1.486498749703087 1.640968088384328 1.645812650407825 1.176512751791410 +1.012044755974283 1.504182330634475 1.223417903240420 1.722160995983543 +1.865897538183923 1.398847965125172 1.471421544850921 1.497563025935946 +1.211518255049242 1.066228036984606 1.838117639846721 1.016680949408481 +1.004695273678646 1.643999438161449 1.362069816194825 1.960430168830702 +1.228330265020461 1.063982098310883 1.122315439358089 1.926436050163655 +1.390220703189353 1.850364163886724 1.269119701675199 1.149775537094183 +1.633315696772031 1.348666193248925 1.953253609083310 1.441877067311658 +1.989217428205331 1.444828690222065 1.286650405699264 1.772206094270125 +1.338876718371030 1.979902747406319 1.714919576132607 1.484285512096189 +1.383684370041659 1.322927613695283 1.445786296464061 1.499902912264944 +1.525687699163982 1.940197339496278 1.337060260611878 1.235387619329691 +1.531024028113910 1.561593500373482 1.407503041797055 1.519692564938037 +1.523098304918780 1.311120853666663 1.809605448755505 1.781810231657488 +1.851059721580937 1.219818735533266 1.548061100318614 1.555449464325949 +1.365620728035108 1.700955714551476 1.534851691064648 1.712423930272799 +1.367079549187304 1.771659054239117 1.510021980100075 1.333937826225444 +1.996400032665528 1.333591157936018 1.926179005996336 1.314717631140162 +1.698662582155702 1.536583722362771 1.768165054958239 1.821736316226453 +1.242501586733552 1.451996089051570 1.539932730657707 1.161932488091536 +1.595665335892720 1.382687186685921 1.523487652391954 1.458968778775165 +1.206906553873046 1.398340137225470 1.288793594571294 1.851889865668318 +1.442101966070889 1.779401736734464 1.869124586514614 1.127062143470258 +1.859354928913391 1.556533433499082 1.218517810809980 1.349299152959381 +1.642401266735966 1.331297823040838 1.164705430778300 1.776497510767275 +1.709411518614149 1.706587128918151 1.729290739055874 1.332790927962854 +1.455847212132540 1.858413856691108 1.652278552300875 1.339430702253961 +1.313940509005274 1.260794226481494 1.438971030781294 1.427691688943952 +1.083203734519018 1.280423017279197 1.028335669878616 1.055626253044076 +1.934635411195666 1.626078181259931 1.771479825044376 1.480638828626779 +1.331998261430858 1.524733719385873 1.028403703379520 1.903875463025997 +1.618182828597813 1.227625319926867 1.506852024952491 1.948122921253004 +1.484924925178571 1.934357309953324 1.665142296108408 1.141509368138646 +1.370632068350432 1.935167386526834 1.430340878841901 1.334030731139532 +1.523834740095283 1.296201385328563 1.198732743173415 1.947917207156926 +1.753426708683197 1.783144814238470 1.675651221477071 1.751877271430665 +1.323944006263588 1.388866098841147 1.436521908974882 1.375192327176295 +1.281225300651393 1.252668903007825 1.257452871840066 1.824461140904384 +1.499959526218611 1.027708247974448 1.438153977109079 1.075646769082163 +1.385309288013498 1.060651963198366 1.833474959287968 1.237636800769242 +1.525667246974311 1.623770673768071 1.198215929905355 1.419761968906623 +1.652023669796253 1.356456782736745 1.653558584479192 1.483747465569200 +1.568263600231511 1.868466477605388 1.218815719212333 1.709418570295990 +1.500589274593332 1.481924761312676 1.752865343676062 1.290025169503004 +1.355468556142082 1.691340703976341 1.129719736832059 1.344516895323387 +1.178547496518138 1.418591197791750 1.188226383813420 1.877455710372542 +1.789408398450170 1.470888008455055 1.373274936949086 1.075591504417488 +1.150555952306157 1.325985064569146 1.937012644043745 1.905130726667554 +1.706113747717803 1.324015457968492 1.103012226502342 1.324555908526717 +1.734598354798020 1.771603737621028 1.809255606814345 1.520156517698802 +1.481483162487288 1.285892555538763 1.212938107992314 1.818142168555765 +1.681599246034232 1.441632994866573 1.746369039551652 1.612646009061232 +1.019542364003674 1.037222737348532 1.949252454910567 1.557961414581715 +1.238349456454892 1.111245390470806 1.173252685958413 1.755272505564726 +1.086049701964404 1.147162244479408 1.050375898907192 1.990473358481685 +1.532368001374991 1.297152281462725 1.865270265849020 1.545365636879884 +1.401356696609187 1.300172928324285 1.033057540093298 1.786469826785013 +1.993839101154591 1.916933908055281 1.862727704365597 1.064719338668418 +1.843951554944893 1.013807340411398 1.547360730569460 1.501561320559171 +1.698155033939396 1.432045249374271 1.430558766289765 1.656007964312654 +1.656485838385197 1.366010461348391 1.225868492139428 1.789866378205960 +1.122643315187922 1.767796293797821 1.176630260423344 1.642640769177157 +1.103153389501114 1.099354361624420 1.614074225759220 1.440354512580303 +1.291149896957991 1.775616900444128 1.939322701240696 1.411833493630443 +1.052091879440032 1.885436102906715 1.852844653566895 1.929091856749292 +1.323100645587889 1.299864642079006 1.936203286644111 1.527260806158345 +1.675738617088771 1.135357602778306 1.821046438732699 1.960131920392691 +1.492417114488743 1.341523426103239 1.915747411831965 1.941529550565190 +1.327647123113957 1.785044902046872 1.945161174019794 1.376909567684245 +1.110794732168656 1.571051100617999 1.432682500860742 1.342581308329682 +1.665600358602268 1.511382388234146 1.628294549366540 1.627186100237808 +1.535624913306996 1.115710198180367 1.244690006527608 1.851209876656228 +1.510199339078838 1.772107877185999 1.058913161212264 1.565535571833292 diff --git a/dSFMT/dSFMT.4423.out.txt b/dSFMT/dSFMT.4423.out.txt new file mode 100644 index 0000000..f6bcce0 --- /dev/null +++ b/dSFMT/dSFMT.4423.out.txt @@ -0,0 +1,252 @@ +dSFMT-4423:5-31-1-5-16:fbff7fffffffffff-dabfdb9fffffb77f +generated randoms [1, 2) +1.369835972312664 1.009463956977914 1.654414077342967 1.319812008507507 +1.334320279694563 1.638715752946499 1.109482552119245 1.284282251702144 +1.602629664193398 1.620840757139996 1.617365182275066 1.496712218849132 +1.143087614302637 1.874253244021430 1.795947405651884 1.039776265389482 +1.790659953629966 1.916716183681330 1.569202352182976 1.916156398242174 +1.199364336129019 1.398087293911432 1.769351972192225 1.080232536565393 +1.202521077916053 1.508029288544248 1.984779522487115 1.631963493616026 +1.412007914339157 1.886090624575223 1.407417983018547 1.772882812735485 +1.265492758393380 1.634844195455101 1.332513851991502 1.718424634426483 +1.597983949130673 1.821953210984909 1.773113118206396 1.717036488481966 +1.848945539041144 1.593944485143462 1.110502904566099 1.706385998703595 +1.882359320808728 1.668021470574050 1.743200600828031 1.377781515741148 +1.984791067581563 1.330473132513443 1.165383544638731 1.308182429219147 +1.204307402933717 1.667575907885114 1.071627022627748 1.649662551796071 +1.841216831952146 1.336842333578314 1.093859862651051 1.640196076337971 +1.625009228315062 1.367201720864982 1.221894111161230 1.275741381239540 +1.094330244442789 1.241947105949669 1.283100589716726 1.363021108220176 +1.003240088191923 1.187852690791897 1.037191613826828 1.373505797023973 +1.448877821650205 1.273946530829861 1.227938386599945 1.331481601409055 +1.014527814024433 1.662337223702582 1.275222694934526 1.698035022226669 +1.920604940022041 1.311831534639139 1.821670906848403 1.182360750380173 +1.697271969812243 1.666136703010497 1.816969253908853 1.546672827595380 +1.434938841000648 1.925334614403683 1.026781475848693 1.393509453284307 +1.240345570437874 1.512909206241164 1.905834566959245 1.570219308162810 +1.332712896594784 1.447341158705248 1.069491010940270 1.496464266704264 +1.522022782598386 1.975399220538596 1.823250489471492 1.657619776697066 +1.738132192885481 1.980194885504219 1.362728362911751 1.135180356868206 +1.912325841209275 1.948192511881649 1.694229548878823 1.454920508360291 +1.720292968004826 1.134869020329169 1.052055866134190 1.628973429649328 +1.982154047030697 1.379746100187943 1.989597051267025 1.348924731443654 +1.018013120940369 1.903792213007434 1.365722897493009 1.829248123838045 +1.588462505120131 1.663422054955003 1.763057897999501 1.379477221884227 +1.686706762621882 1.119718184475857 1.583004535529197 1.520492869849475 +1.486992358435783 1.435154728973394 1.244899266387303 1.281091200217740 +1.938434062796057 1.371128525633624 1.994149114903640 1.119765295547578 +1.317241265638465 1.663088690806817 1.918679304277763 1.701257950328268 +1.234036233174574 1.707869931822521 1.633764156178920 1.137113365467133 +1.587958847465805 1.627729781071292 1.550774478770658 1.224957947280372 +1.087916236624243 1.327196426436929 1.462159808709223 1.589005122883749 +1.542599402139851 1.786564077164815 1.805758257103988 1.516127863529106 +1.308821561626213 1.028682219653166 1.149761173727624 1.921425747621512 +1.662443718239762 1.242197630851846 1.339481153362989 1.513213889565020 +1.436512820665915 1.418651849424868 1.895125691882605 1.288719232293981 +1.816665333795977 1.207534719709095 1.023261074440415 1.963764511469791 +1.372020643974217 1.968645174721427 1.295179575527137 1.530649806670486 +1.741403173610648 1.596418933887960 1.807950404909390 1.947902408187959 +1.831475633902394 1.560076779981855 1.106457089549852 1.224892455238773 +1.993417719331363 1.305000398621434 1.602567153522141 1.602676554624471 +1.031189158737817 1.299774616323039 1.262851235304021 1.704201515243607 +1.931212392351666 1.067402092561778 1.707947458455655 1.501181945014576 +1.198276961287060 1.794283301102088 1.289553952941501 1.797131772688381 +1.690803479301044 1.906847517634149 1.851814296283737 1.025417755112521 +1.694619706083871 1.124059886099452 1.050805539879473 1.161828292541335 +1.664051626772649 1.101706784622531 1.553885470976477 1.426584180099657 +1.740488300820989 1.808694865499941 1.410917400161952 1.415864842328863 +1.309097066613665 1.643776133202308 1.926246061600066 1.684804260541154 +1.152010626079423 1.034768370315405 1.079999334841660 1.372446469969838 +1.875796934328512 1.255350163806749 1.956189259580403 1.317130002026370 +1.057288834877801 1.387021824048084 1.263065672768217 1.996281349641091 +1.848084840370233 1.126886979167528 1.113762235378926 1.952096978939163 +1.318427966075769 1.362779933555014 1.886930833852268 1.552078197390246 +1.062383999537310 1.916512297543466 1.656622898805929 1.778117463406621 +1.830765698080140 1.582940075816505 1.145051788084539 1.915397920600983 +1.335492247925363 1.095918910224579 1.175765705091911 1.441278747962810 +1.744568539062825 1.627578182794105 1.800980738227400 1.328748826784818 +1.790741791534990 1.407037171758518 1.710061981352102 1.349017829830448 +1.360064722426861 1.562750363087301 1.021516428570636 1.425149298380399 +1.350796610357900 1.251032895957708 1.283362853996620 1.308760657204761 +1.112982415685257 1.630195190809811 1.586964225387506 1.022452365130858 +1.473794358930371 1.031194109885705 1.131348277238851 1.380491647954619 +1.023753819355360 1.177313356159667 1.093897729948363 1.456657733920547 +1.069869305998251 1.509511522948114 1.535618775242461 1.498980998531097 +1.691272911708408 1.099323817234088 1.366334707218052 1.731010866882693 +1.037024738538521 1.753076782665896 1.251807698975620 1.025120193930954 +1.443575523896779 1.830702776263354 1.461988653803470 1.027095090130766 +1.721252914216578 1.252043923202513 1.292520582212936 1.460246703772808 +1.327505195721886 1.546128967565491 1.190110335983353 1.742116906173137 +1.082886166801837 1.895012249626721 1.358026846286891 1.129268334685223 +1.930505337475461 1.264621706689285 1.184565510197266 1.237202140231359 +1.211180279430815 1.461850006585669 1.004589253685084 1.316261884725479 +1.436266849724348 1.936657115236916 1.532387143648436 1.727392875188085 +1.452956989763927 1.115091820096524 1.961135475712660 1.746523488879559 +1.044081152570542 1.257567871683420 1.774416331988364 1.462049793275181 +1.620002421023595 1.753495663652197 1.307814970928305 1.353218664731876 +1.830372414366103 1.095630475592279 1.605281016108226 1.885640918794814 +1.603130241341361 1.483687269862387 1.426762332796744 1.308500652560849 +1.879684772882795 1.027490684861755 1.350687033845973 1.296377466815062 +1.511513403905435 1.247487200614205 1.425861669868381 1.445291614307011 +1.785923776140685 1.609963486907379 1.557646928924956 1.255311963579973 +1.072167234445738 1.563375805633590 1.476697853504694 1.389483737697048 +1.434777927423330 1.774686374988736 1.803246326497017 1.082525540457146 +1.609923789107172 1.638374068634374 1.919158982742802 1.981412386698546 +1.034950575723336 1.719656161309071 1.334459763288008 1.426369611808651 +1.632545485894331 1.255940259235558 1.204443849380035 1.761286333955809 +1.994752174294963 1.412647051909570 1.706814687194308 1.192598362944335 +1.722952065500049 1.760065491652441 1.684290832129125 1.345612500503543 +1.315990843190353 1.019430536939961 1.215493767338438 1.056981256192918 +1.136398472075959 1.409177788608159 1.665275901362008 1.545619143226285 +1.401253675005651 1.660078077607299 1.308900982742749 1.040303333177778 +1.910514935157406 1.421571044417328 1.524203839260922 1.318172975638002 +1.439969004655524 1.164348534032979 1.369864685828891 1.715266391858906 +1.840272019217779 1.479518053552572 1.263656354465402 1.581353458471813 +1.341181222260102 1.119874946168022 1.101320238792377 1.955987908692048 +1.609926742510408 1.798869379535119 1.582391738132166 1.179816098179789 +1.275897659676564 1.677985917685979 1.721131049598292 1.292480302777965 +1.550744068319525 1.977153521682668 1.748863195643166 1.727028371051231 +1.367732193492927 1.904326122703231 1.032323827605058 1.135270060123440 +1.693817688056046 1.299970351106839 1.278251770699648 1.676207389490370 +1.342204681505867 1.415337393237604 1.445598844798466 1.142956676079406 +1.783492383357667 1.274643190568565 1.415779491040305 1.670073388335317 +1.373530207023681 1.852771773387464 1.168647035449031 1.256771970402280 +1.310150180382949 1.282233418549389 1.424241627837113 1.319949890168618 +1.707359916861693 1.825136587243077 1.344419753696402 1.263173414775010 +1.923517158348745 1.966839883463457 1.018523576818615 1.996156567324038 +1.122469715229199 1.646603921927228 1.086070935913183 1.377501779390322 +1.892238478323290 1.858584446072145 1.051915943172199 1.509653190856493 +1.236618764986079 1.478093841759352 1.992658075730135 1.828161940402350 +1.173546003772375 1.481729830599419 1.074190941406339 1.175166681131569 +1.812914326412127 1.878513119120154 1.333824995810923 1.478526268890230 +1.908738754104053 1.089815185825673 1.051435966546600 1.503884490603629 +1.504583645963502 1.743444030579002 1.654518873536735 1.298229669847378 +1.467857023646437 1.451371042653328 1.980901586748478 1.558239436207510 +1.470369964514080 1.799876682562239 1.873581943230923 1.594413523919459 +1.461462162439362 1.340602024380589 1.551630590892471 1.828996709069595 +1.651165373309899 1.454504105139263 1.067653507566448 1.997330866256270 +1.877326900705718 1.639440072692592 1.532045311552523 1.996902778626013 +1.624426738905598 1.495133666990076 1.232806934303323 1.299106440752744 +1.639515274662439 1.365585242207218 1.738639933420410 1.042183647051879 +1.934310894140538 1.381284851467312 1.293635194693870 1.248240769432191 +1.512326572363654 1.132408968495928 1.559457541246356 1.537824252641348 +1.221314623457288 1.035207613410918 1.079330466572273 1.003372579363130 +1.975104358133656 1.726813603696522 1.431436016178779 1.206215290022764 +1.729255359755584 1.966534009039847 1.248255264338600 1.062835324049165 +1.500535690957337 1.198462930638284 1.274945405943660 1.915308132882983 +1.586608968707600 1.738850997001854 1.369932739877430 1.754248306670516 +1.794777284788878 1.023958339249986 1.804333346741048 1.968351994784404 +1.877752452507359 1.394976480050488 1.139675686173294 1.385488969619214 +1.472713906929769 1.359437619745686 1.169744675659584 1.691077742450764 +1.240920757116163 1.910507586539615 1.450874362281912 1.086876582515813 +1.315998849078105 1.738104369144484 1.383920694180790 1.034546276906686 +1.792481606795109 1.988891183152403 1.314501146927079 1.095149662420978 +1.391069609106597 1.546541377535733 1.914687833440254 1.049112417416215 +1.898329255731657 1.432449808790050 1.740753617504739 1.700658423375699 +1.014253602016406 1.600803936498060 1.482485661982241 1.379216219873824 +1.938194957862472 1.731427668422074 1.501617193602716 1.348945443621894 +1.027322393784734 1.510843868902584 1.895896571380433 1.102180101829481 +1.442512817629789 1.696070780022809 1.689240794478859 1.245354303323682 +1.235913648439113 1.321572611439201 1.492194294459555 1.877047581895698 +1.538990280289853 1.593917183086191 1.054532002006540 1.292300536575006 +1.927567225078215 1.071286408107432 1.522639391415200 1.591477947580207 +1.288023038105237 1.286184191701617 1.360944614738309 1.554466751156140 +1.614627302069072 1.441028642398469 1.087909366276403 1.582881886925811 +1.861183605312886 1.790052939856820 1.585474921410352 1.766740398141545 +1.121082215313188 1.091375108806558 1.804478079334859 1.171717791452163 +1.055561573229279 1.824255573299304 1.154736951169580 1.776694194170272 +1.931747465982396 1.836810991678248 1.308157716438813 1.079440546358810 +1.269902649716684 1.998631692956224 1.991990646748109 1.220849226877537 +1.731277445260151 1.194892049470993 1.225444554769977 1.014067897074063 +1.616082596958783 1.104573446708352 1.533293030829094 1.749184735547697 +1.471402192471626 1.686051591213650 1.886710457862243 1.240696456514090 +1.259900966561106 1.087875834622529 1.768835480237662 1.330183899069912 +1.533661145100542 1.425394395385571 1.398387942711839 1.387281010552839 +1.539322539826843 1.485118880938352 1.529318753754906 1.485106827383291 +1.148247679164896 1.793810452883825 1.440229421629179 1.654795054807146 +1.904038903725222 1.725456253115639 1.712979315031098 1.390478733460721 +1.447570059003875 1.226117895439172 1.080259732371740 1.769460706644226 +1.079940934008381 1.161667366951190 1.203677759026798 1.967828040654809 +1.172829859060679 1.898799733735113 1.961472553300692 1.860854917241409 +1.738607641030522 1.788049855692750 1.017130759745932 1.927021685822602 +1.927113000182386 1.331304072324357 1.901478909016447 1.750476718540269 +1.869618340733497 1.003692348219111 1.589507530602177 1.148590315631536 +1.875490193574611 1.230564589404892 1.934601431870904 1.211692838143649 +1.846578504367314 1.948903679433601 1.785246477192594 1.286229162309588 +1.216784017741837 1.091337600264696 1.674931702555489 1.502003169290942 +1.259287718139795 1.600716657776998 1.069041933667372 1.564113228179486 +1.790664632257032 1.001361292096520 1.021052002592280 1.680945484195548 +1.984700014442713 1.684117971053788 1.947063343361583 1.654358697470010 +1.921293415363605 1.816619880199601 1.574473916244924 1.190066083421779 +1.938280008010190 1.687233291927588 1.495190824149668 1.904791787445940 +1.790115025117828 1.471179260043001 1.427593247138210 1.261786829829792 +1.698084960839567 1.248197907271991 1.166432662367080 1.153321451404659 +1.398799000753489 1.334420338484000 1.951774913775641 1.225322498267431 +1.830343954302749 1.432428967615852 1.802285302204255 1.097711668879704 +1.265008123924749 1.096836768789281 1.954233472927415 1.906217885020790 +1.044364118167593 1.635325277689490 1.574483718034401 1.201031315024649 +1.236365776643106 1.572032448625097 1.851002189185534 1.475416567989541 +1.551017407794900 1.865459856930837 1.610374291673705 1.781332610944880 +1.165186618823149 1.272700860418013 1.336957970513588 1.219228321615938 +1.107546284840550 1.989593462832618 1.516039036854494 1.935148770369106 +1.323019098228568 1.920518921818953 1.359208971258150 1.902221930417688 +1.923038036377916 1.696222378895753 1.637412485232724 1.489482606179789 +1.208286682854264 1.224330402976122 1.636435103776410 1.195685916847048 +1.948660102442965 1.204487006027974 1.446693060320136 1.758740737339499 +1.287697194190397 1.500230122128961 1.802642364839286 1.858628958586968 +1.133530414015627 1.670201405675298 1.587779528268589 1.198610872965175 +1.935323151857717 1.477085659681896 1.662409045923720 1.879475252454581 +1.037921871561973 1.274221375140677 1.956647690249790 1.570385220299421 +1.300455940512344 1.731185477399510 1.122893202674428 1.641395542449593 +1.049895469599601 1.339845755106752 1.805429184340443 1.740023875457504 +1.852311740765854 1.912160990653586 1.991474757674880 1.365519540842993 +1.350444242816092 1.221572685392883 1.548595886183912 1.519404249742368 +1.124597208669152 1.279842566301961 1.180832446741829 1.666610166330111 +1.073319188021879 1.758018374116349 1.788326241005010 1.040217597010264 +1.324091908958970 1.193793857251379 1.643146156567574 1.838340447530827 +1.243588076016671 1.746886333213799 1.235057088051736 1.713331602199656 +1.504104298967239 1.720736716779787 1.958758597778491 1.880391084582698 +1.858184461882615 1.509711457460724 1.126249915624069 1.588555270912620 +1.701473937255897 1.041159564549863 1.486333173897967 1.788573176538706 +1.654729874135648 1.969834258787145 1.812988142112237 1.187494371910644 +1.869536006717466 1.698945310544277 1.584093436178830 1.711643300552417 +1.528285596936025 1.991707285326334 1.783591890257055 1.853647011267118 +1.953503813441158 1.546081544953782 1.952365838213238 1.354808561558858 +1.585434067424276 1.577600057447529 1.583915277020247 1.081330798196292 +1.075330264422846 1.519907957334343 1.686679700651972 1.898490608420480 +1.064866353577565 1.615229985206838 1.874874590521738 1.594966981854844 +1.340792698805764 1.193939335935044 1.724664650829995 1.536697489694665 +1.724499440625734 1.092390478620209 1.250574171732865 1.174394880635999 +1.245672328483758 1.735248310911161 1.420965792730887 1.947745702571459 +1.259847172948353 1.770838452221863 1.927215951948444 1.359397389315340 +1.061316439381082 1.627706607804645 1.538847078373771 1.514636098692752 +1.399929751854988 1.213809895838832 1.465126814425835 1.440573427552814 +1.555768269961655 1.238949211726885 1.297496224581554 1.791465732720556 +1.966231306198192 1.055542733275248 1.988121517528274 1.567746134640734 +1.754641264559217 1.550444734532753 1.030132266682163 1.066977833040456 +1.949291754790056 1.284929213321389 1.451740387530094 1.087955933323713 +1.803128036186890 1.367113367438622 1.294667749333665 1.209747068740766 +1.353628433646662 1.708444066372773 1.064742488507383 1.047315166276106 +1.183190168200566 1.537731043388986 1.457675994568528 1.198076089584987 +1.813489502937032 1.233660352572606 1.238084944541705 1.352485182293133 +1.995691651464608 1.720270176722681 1.461254152269772 1.677532660140923 +1.226241230313166 1.341268754807133 1.202313008568381 1.534575003078599 +1.153403490695852 1.008036087940036 1.716746923782804 1.636305737357934 +1.931546711351043 1.415944991228247 1.227879373351669 1.467683029014259 +1.222548911341639 1.929371829490180 1.453885751593819 1.641474647992263 +1.022498642230868 1.095972758193638 1.951448619216548 1.583541925595531 +1.415097979571560 1.611374360186696 1.539686584033881 1.664978842011386 +1.315799163833700 1.324155618821219 1.449398602567202 1.841609510597384 +1.290357623286599 1.175307633768436 1.638192039843255 1.729137831590752 +1.432231791785074 1.553748941489924 1.285130277284400 1.527262564982606 +1.638528031466718 1.257389484598554 1.781446178233519 1.969427407989811 +1.912354916002346 1.727699149128445 1.336756818876493 1.518914212591109 +1.028632606763962 1.296685907791524 1.124909094660884 1.676668616175385 +1.562349306979528 1.827509742525022 1.504459323400258 1.899507700628002 +1.550325003339301 1.989617008285002 1.017435775516699 1.794495020320128 +1.238377513108931 1.940405220545163 1.191817904986608 1.545547186214818 +1.843261576131573 1.203187230105980 1.138779746120023 1.459055522557384 +1.108366698966229 1.446669882162353 1.434677951986436 1.512732798616069 +1.122156213139805 1.679098544602734 1.852860597523797 1.463012441741790 +1.925974358576779 1.006216172282184 1.799309170085876 1.429478466346849 +1.596534504512242 1.223228899457976 1.385428524918589 1.828280043487863 diff --git a/dSFMT/dSFMT.44497.out.txt b/dSFMT/dSFMT.44497.out.txt new file mode 100644 index 0000000..d955ac6 --- /dev/null +++ b/dSFMT/dSFMT.44497.out.txt @@ -0,0 +1,252 @@ +dSFMT-44497:244-9-3-7-16:fefffcfdeffef7ff-ffffffffd7eff6ff +generated randoms [1, 2) +1.080292736407188 1.101806459036082 1.167485336178011 1.475348098290558 +1.713773825599393 1.262851937960645 1.164696859882975 1.870915721166037 +1.566334725848145 1.562056994730939 1.310914577220440 1.466347393119220 +1.632057693953993 1.594018950236918 1.433099093947494 1.309679321900212 +1.448112170343385 1.542034570597118 1.355823378621664 1.805054205222278 +1.495256723398788 1.442374428489478 1.994905604765968 1.701193301049673 +1.925834929150923 1.974579744721607 1.352407539798122 1.797903861745279 +1.056442567807325 1.444100870940897 1.717637381897963 1.359873219928364 +1.007469732235945 1.553988138280017 1.367746598966449 1.236463697026841 +1.088817100563011 1.456096878301133 1.418204665226939 1.286669744563533 +1.669904382702268 1.013574453223502 1.121639922789029 1.866348972655656 +1.668631792749786 1.877578316399331 1.873287016545278 1.033754657113685 +1.536289664413120 1.914627239265278 1.570921068163219 1.848637979640752 +1.496845487956386 1.159942662872286 1.600764486507277 1.879576048717828 +1.478980787993997 1.529626368202721 1.688450697767828 1.276055225741007 +1.252744881984165 1.707049571696974 1.866890868617434 1.754242194471185 +1.065687640912440 1.654390911569949 1.304496471533044 1.051897112181568 +1.359002637819919 1.401764264565405 1.498274810660666 1.386122581711550 +1.324705604036742 1.577235247196122 1.612594813877769 1.833744324432035 +1.871068931765756 1.891877175436743 1.493872556297412 1.368977775440173 +1.526833676014719 1.002904926760118 1.297889425097984 1.099276465066519 +1.645888503101966 1.435234041578633 1.602022318519046 1.117057933429617 +1.778362300283964 1.201061820044311 1.202197814185497 1.551565701283726 +1.981266058491797 1.277208157960152 1.784243825803228 1.008211959564845 +1.788330287823341 1.396145333519048 1.622881434288570 1.204202351566622 +1.075617922547864 1.768287225756374 1.833633316122443 1.395540871858442 +1.040118956558720 1.650641464407033 1.908310914967297 1.916450494218966 +1.009906900516303 1.072386661633812 1.259799674236317 1.082542218482376 +1.071270451065313 1.753476958295593 1.254699734240678 1.598444729781062 +1.134019633188652 1.026475521247873 1.307973800538808 1.533966040362373 +1.521642570828450 1.165710277409030 1.944839830930980 1.277405185520327 +1.394415321717759 1.083385114977177 1.474529008896246 1.082892638119185 +1.274324339310823 1.189436736856673 1.868435381261497 1.566745688449656 +1.533300450639419 1.509265814110579 1.035152317684350 1.760697282790492 +1.647947298172004 1.130539210103731 1.103634271501196 1.606204299812000 +1.428330206817052 1.522932032130258 1.530446774011170 1.367568511763653 +1.472696716541858 1.800875488811593 1.287713734466387 1.068178994663110 +1.166909591783124 1.765482729230965 1.257956143956538 1.566361952080784 +1.970607185052558 1.946222930187610 1.685475879257600 1.962727723661361 +1.951533243243652 1.792476282849472 1.773440496329032 1.943111853499812 +1.625220959432840 1.019070978151042 1.012888704799068 1.613662686980520 +1.879846559884088 1.801440972188060 1.755598230380553 1.993927706089492 +1.152890151351624 1.628171510854849 1.250044905024838 1.199353445998703 +1.842116071521523 1.955371697629791 1.894527870941635 1.529244884731475 +1.216453422862179 1.094857780723433 1.873170632332692 1.998383824150210 +1.330085828537887 1.892455757419825 1.664605061142352 1.500831128929274 +1.879898572784318 1.312937858964442 1.693241836075065 1.255381631174131 +1.534278419692403 1.838695506043560 1.656719334262162 1.995669845182034 +1.741076684958224 1.923449085417231 1.387358956357675 1.253625045909477 +1.143121386187830 1.180953982053841 1.577045991738545 1.365753818591942 +1.273278826933853 1.084619559806599 1.322900743760617 1.171480301246286 +1.501324643972741 1.759733391902190 1.866320846204523 1.349724494896986 +1.513836144091217 1.744125351668379 1.689990933709508 1.022505131619990 +1.747312855885767 1.101318574940210 1.960057344261787 1.842354559973812 +1.121267797167518 1.361921042075129 1.873136456087206 1.647208578687593 +1.184185316098778 1.570641948063227 1.201346663430539 1.422089145667945 +1.082782013044719 1.046430845099805 1.123843539315665 1.215990514642711 +1.960202040964480 1.360132077754436 1.715677585091631 1.719916259753620 +1.096310032819481 1.891662878751172 1.064165832321586 1.200714723432354 +1.515202764866374 1.926313143207681 1.736289484361456 1.675339873783795 +1.447541116243409 1.955850707345086 1.143467042085597 1.301250079747657 +1.899700285443719 1.845549303740574 1.475714697168730 1.858665486071094 +1.331955571106913 1.400277470354723 1.793330600159426 1.625501745611970 +1.545490461192005 1.642563415304908 1.101693384651321 1.217139590792636 +1.725633311346236 1.631367136622095 1.610269624796117 1.094515866675608 +1.568533081508475 1.963918957207698 1.472341838541467 1.418549551491318 +1.158494398130212 1.952332115382995 1.742069701260428 1.405929991325213 +1.223580448233111 1.201215237232828 1.354737533653252 1.745869805803318 +1.422608556443056 1.175648185280361 1.597631172427821 1.508942837012489 +1.680827844137706 1.822939550652545 1.539165568832354 1.061680261979977 +1.264378895309297 1.390881553253771 1.218857012929149 1.495784910548046 +1.036575395334540 1.876561228647697 1.246834437483210 1.434593063070178 +1.942057557548797 1.401626267583316 1.282966020307986 1.149604285523474 +1.533798649138418 1.368305458654886 1.460150333281011 1.694550711044270 +1.172426203759282 1.461148266740392 1.311601844343884 1.370906167836041 +1.147227584992166 1.323156779335657 1.921182715728294 1.438762929838522 +1.757798232070234 1.374094575702154 1.745277368862120 1.561662676629093 +1.140467380833111 1.171761564085740 1.436208180066569 1.182793535129816 +1.854414556940231 1.022212471104863 1.496365913540525 1.357056336975796 +1.841244945884864 1.396234132421350 1.500068722256080 1.474127894914027 +1.656624330277119 1.893163475207789 1.047574690049222 1.062697551497190 +1.199807288739289 1.751368821072256 1.659145712496098 1.159201754918870 +1.890044578331870 1.761512315833309 1.505237145493306 1.310193295137136 +1.722428752889027 1.400984065398519 1.219491961387666 1.092966731082515 +1.932189199265069 1.577103002866536 1.991706386499694 1.592445848026462 +1.740225259964810 1.338201646489757 1.371342385397530 1.759887479745600 +1.917184501474155 1.912060973040647 1.058458674142275 1.559571324921715 +1.293422040790588 1.060808378249837 1.103715353514090 1.688190606672523 +1.038529781696641 1.338426348045695 1.638458854114860 1.561891882258379 +1.848631156018574 1.954913101455022 1.654988312452940 1.710836771095083 +1.529176358414707 1.666556723167430 1.971435652073104 1.899896596895069 +1.461044126681102 1.607173160981494 1.003004161696096 1.244437714117333 +1.618437369047217 1.428308871371266 1.507029619675988 1.089966267326521 +1.901528184519737 1.113354933830842 1.710086247790620 1.816959408557321 +1.350706028846367 1.421475107220105 1.954273173511738 1.930027481146045 +1.205556801686029 1.266036195659858 1.518756416557028 1.702880037069439 +1.564792601723235 1.880014913228692 1.501661542458913 1.658156948470137 +1.248642528154578 1.909820971672652 1.197330416548209 1.054579976096038 +1.817745260165492 1.937476548175780 1.789642241737685 1.192270967003277 +1.032586865101255 1.067780306350535 1.387905061371306 1.531684610724525 +1.885358350306610 1.362200534705715 1.977272813837770 1.471059289614051 +1.621408182784347 1.019996626757271 1.058790257699059 1.334226076999042 +1.919588814814585 1.508326294506293 1.049264462479311 1.269759484595001 +1.059148458184707 1.518428335621535 1.950709371794703 1.255246241272749 +1.012870283306355 1.749918061812352 1.557711081606498 1.113193149990843 +1.380581895093924 1.881217193200139 1.117439436754161 1.939461972766831 +1.374092832956977 1.221464786640565 1.679541514726448 1.432385320086981 +1.172071857936323 1.358048733752542 1.813821520976914 1.634444288819823 +1.684850980243530 1.540142574273978 1.089874614698686 1.316496612577732 +1.150786190992122 1.635003026854628 1.398401045910129 1.064059909404501 +1.075660696896510 1.901203949146140 1.594871561410505 1.751819847336483 +1.980995024246595 1.697325961592040 1.142051274789239 1.465080067556026 +1.671130846437611 1.179722443882374 1.781741617722116 1.639627985482844 +1.596243628632728 1.236000992749491 1.635242015752710 1.954773650168234 +1.956305900627460 1.223416968263151 1.042796026424192 1.948790531307992 +1.275992222827187 1.705135349216473 1.987825907535419 1.661793880452364 +1.079587506565711 1.558603893251253 1.946851342855469 1.940589615800614 +1.204126859656784 1.095300830230497 1.727704372183207 1.030618267003899 +1.609089067134289 1.350002973456589 1.953828313464093 1.795145912524510 +1.563254947762223 1.253720994951002 1.605825558106916 1.134133786147125 +1.866828166718872 1.758111859772491 1.222271229675914 1.923742074796687 +1.176062150744553 1.905169252035293 1.883607238131375 1.807856194690257 +1.904290388036930 1.775672975238356 1.466231508363087 1.687284501916262 +1.484540386341450 1.681309046200623 1.893928012556680 1.013435738024026 +1.295669500085543 1.283850019614303 1.708940217740575 1.939056528355327 +1.887357148168501 1.613654448759581 1.912718948122982 1.008990735576784 +1.664621750844656 1.261627085955475 1.314734514308725 1.184200832141993 +1.757274204516122 1.086048324728544 1.737240090765395 1.651180180341302 +1.860247192062612 1.887495814430373 1.020809071189982 1.523328727764905 +1.372197459833139 1.927548387025704 1.828830173136685 1.114383191298415 +1.113391414864987 1.404506042254665 1.640764020836087 1.899197313748113 +1.325235161248195 1.164576944495691 1.802925151163455 1.312345293713371 +1.022976671879879 1.712809623395457 1.554563264744282 1.525667118627678 +1.741971963600283 1.965060103913420 1.188104766097302 1.599099044074392 +1.996988989732166 1.481382155767037 1.885803905612385 1.803145994968894 +1.941263641829888 1.810148496433140 1.929199513032105 1.167262241336576 +1.032349067138306 1.855935518031264 1.921549838800809 1.879282363055108 +1.206506205680947 1.772366719492498 1.373942320445475 1.465013579023995 +1.437965910340010 1.305987388065856 1.981772877920913 1.426442116929788 +1.682914883106262 1.399945671572607 1.144463291336174 1.682647488234541 +1.220091732354229 1.081268598297354 1.067914345345757 1.243354572282443 +1.404836854173169 1.793795006375762 1.889682969745138 1.930380191957157 +1.914653523101109 1.721584741566160 1.340624694951961 1.478380035863119 +1.936443286899749 1.015278496199634 1.775121505078221 1.768141091160155 +1.792247697961403 1.272834254110167 1.934992561550551 1.295362878086444 +1.524936673683908 1.675675583411892 1.051270505554612 1.015013071768059 +1.778061174629774 1.988486309582598 1.309593067758043 1.426276486987460 +1.505467476498992 1.027759440411044 1.659515440665473 1.741632180328003 +1.053429029313215 1.793479065268929 1.822926794248696 1.583234429454626 +1.620801708360150 1.801188473816794 1.514837644845348 1.723782511695515 +1.823412420734439 1.049812156898717 1.283208198199521 1.725428297153781 +1.659002799760270 1.722065211877731 1.430058795257334 1.415888010515786 +1.168542178577511 1.893600962841784 1.785366327583120 1.647046370198847 +1.710563389511862 1.844618536368654 1.192875996975997 1.841753962886959 +1.888775037026278 1.075280384950725 1.830997033410663 1.080662003950395 +1.949619044808402 1.376274225770955 1.929076354172696 1.073041937468614 +1.497476981379110 1.242777114510023 1.398286946853266 1.676487564686165 +1.212520182991954 1.043660845780031 1.744775505681524 1.433657212763709 +1.389443536297164 1.871550992092969 1.313349321799397 1.648709794549621 +1.847598754435722 1.496908895536507 1.728901747877846 1.427600435662014 +1.806440079477714 1.030205143472200 1.064113291274178 1.908603506453850 +1.000528918341904 1.260776330275733 1.514766613066360 1.226774205891823 +1.065207683623117 1.793911836942367 1.644167610251269 1.538913151067533 +1.477656824917909 1.187473945907068 1.862912106373252 1.887235348822925 +1.650670961094219 1.862077425813299 1.095101835519388 1.847679059200582 +1.536953245368203 1.613966919831527 1.178471278546562 1.392292514887978 +1.553993243564742 1.082250209192058 1.844266064818228 1.257197182531095 +1.646718693689617 1.934109355483760 1.461869773810843 1.059943718111433 +1.070615893583282 1.158616355392315 1.243959911920739 1.763413608791752 +1.484564369875343 1.706972036741267 1.508353059464954 1.204877226639711 +1.225841539231569 1.536193659558956 1.385723427803855 1.794550704490973 +1.576504075447333 1.925424894768644 1.349766667132537 1.360017278862955 +1.291519582442414 1.038440858780707 1.284453085423299 1.697586705602502 +1.890338385421926 1.640564083594795 1.716774520799894 1.566877514531310 +1.886743778209040 1.243453581850503 1.212935709567896 1.935693204103231 +1.353514552693287 1.353134980552896 1.049262169369493 1.845678290889915 +1.350770244337445 1.964905316138967 1.797558864671098 1.159540096469977 +1.705262556687311 1.373964794844891 1.521374344632381 1.450196272905453 +1.055728639139181 1.354189954927561 1.525905427913685 1.894641173474004 +1.930019655275238 1.470244206704927 1.263223810519932 1.632770662235558 +1.548026493594596 1.261944575763065 1.797142543710814 1.535434729601078 +1.486564249821271 1.147619695750110 1.777229478063981 1.200395669354335 +1.609668237270492 1.930585834789070 1.399536986665419 1.634074642744905 +1.618302342896328 1.531202828155154 1.654591462722297 1.298256803565400 +1.319986170142130 1.716441874294115 1.938092430014906 1.918429754807900 +1.831203002239959 1.731392867659990 1.913205163472730 1.289818949273718 +1.899947817384428 1.028424974086619 1.433365428036821 1.429038294236561 +1.012609750386101 1.442514058840524 1.738603383395450 1.390572521087353 +1.677480370024114 1.850261901484036 1.922489323184179 1.171888264686806 +1.770732865712909 1.073389745013857 1.262684010430253 1.315614976087438 +1.299678610924221 1.781946695448529 1.289448647629100 1.153848954779555 +1.183418877825749 1.203956418367482 1.566441381196728 1.882478771638156 +1.071335162246664 1.473847159335497 1.535760299946596 1.478468230817129 +1.849573264915617 1.960765001491258 1.351909766253687 1.131289576248932 +1.081833788179085 1.446412616954058 1.616551289497021 1.222509143780320 +1.687002232028070 1.428416984841744 1.685922728729274 1.038025304000859 +1.339682503220813 1.053368016704535 1.534287440660381 1.580929355575518 +1.902131877320488 1.506770280296915 1.617675837076197 1.722994962974748 +1.051020376294605 1.164218533843211 1.394709737465532 1.760948061507390 +1.108433914124837 1.348737703641253 1.046389963332937 1.236736274725236 +1.487409762706712 1.788090447510802 1.642445137446948 1.889341866072817 +1.198208071599607 1.333974631081573 1.742156364743217 1.375394503559875 +1.899804193733932 1.664891425448680 1.939281010325486 1.068402106498434 +1.364333913066486 1.822926340188616 1.052308575168854 1.267971722555750 +1.945989341837088 1.695355926209424 1.543449813365729 1.487842294376450 +1.831278388172076 1.787038196339615 1.067150153134640 1.827419123228634 +1.241323868796661 1.161301194237144 1.570892838320697 1.085319308975585 +1.561221249651865 1.111012213241259 1.608757022158132 1.067135238734384 +1.347432302644696 1.558718163235318 1.100902212260137 1.076324437974497 +1.313607871395024 1.806744785274217 1.856810067094988 1.072054832984930 +1.064858928662761 1.626966462952659 1.797729158060414 1.763147871301204 +1.963889575871345 1.012254124686785 1.186221417693088 1.415464009982018 +1.367056833307247 1.930422038613520 1.221102945794807 1.404249673533402 +1.938623928571519 1.803989774173784 1.248985575760293 1.542772684308420 +1.374773347850752 1.846341298150783 1.556730525976078 1.051476560082881 +1.597536467570872 1.504064760726232 1.582074055454623 1.713724433296359 +1.046196969311784 1.793287867303404 1.988615227654344 1.646632869998635 +1.389509624889449 1.343363141773889 1.805810636405876 1.885294609493431 +1.971495217312049 1.719234857034948 1.222147349419265 1.598583159853816 +1.776390136288093 1.039329559326345 1.300039173656022 1.273842689854809 +1.365783699842563 1.642083525485036 1.215239849850114 1.616046659768509 +1.074019322237664 1.816834987935214 1.687727545885178 1.338512844986679 +1.063625032452713 1.071778871838774 1.453638569932580 1.528093079065415 +1.943764019862675 1.553790380096008 1.300771732138538 1.433231178691958 +1.601082822745245 1.961061569758302 1.644188662376282 1.698064588624297 +1.606246119031651 1.322495133619121 1.288233358696487 1.689910475398876 +1.535307268286246 1.619690849768480 1.498259091316000 1.746107602563227 +1.694139672406095 1.501984327681621 1.014721693001157 1.948180825175224 +1.975801213573786 1.621636623987319 1.967950926127917 1.877815516743919 +1.633510294661172 1.006794670517272 1.274532939445909 1.326516944371422 +1.197590121490764 1.299203669020823 1.077770767535602 1.871504544528797 +1.992898424357951 1.875976197610543 1.563135170850211 1.234876399143333 +1.877172141391248 1.151454338896629 1.837589801309275 1.650190203571607 +1.025116539734344 1.462373277766804 1.380258260872620 1.206137049045129 +1.660539830456984 1.362807708946077 1.288580883038875 1.985234536788397 +1.923521332876142 1.792782767756611 1.396293907618362 1.189000965833275 +1.523649844822964 1.708711244420415 1.989527019123548 1.179243739503169 +1.784519321719069 1.475554777179991 1.208884208875104 1.421679877936284 +1.556125830482605 1.708255508702206 1.613998878642199 1.766020150779546 +1.437508440063408 1.446302866128433 1.816278804955369 1.705733269390359 +1.396449391297955 1.480024446619134 1.745639662097894 1.227926735330457 +1.555788014455600 1.986071571962865 1.962793278034106 1.768576095814287 +1.715184432501524 1.900013160523571 1.801221462878506 1.460809621018240 +1.422571412954744 1.030816760466770 1.180961142533095 1.400636027648320 +1.222619943509987 1.420582100292091 1.489575636671478 1.832311281946002 +1.264639935172175 1.492257486536743 1.796206203594790 1.532552754409397 +1.273242918161672 1.599430718504718 1.904086213597133 1.784832112284775 +1.442696770678232 1.365829610005475 1.048472558699855 1.302660211827258 +1.812327407291664 1.743953690524552 1.839251719056112 1.677630626784960 +1.715901775398399 1.299325735521835 1.799580142340271 1.606587969087368 diff --git a/dSFMT/dSFMT.607.out.txt b/dSFMT/dSFMT.607.out.txt new file mode 100644 index 0000000..f774a33 --- /dev/null +++ b/dSFMT/dSFMT.607.out.txt @@ -0,0 +1,252 @@ +dSFMT-607:2-33-1-7-24:ffcfeef7fdffffff-fdffffb7ffffffff +generated randoms [1, 2) +1.830659940247840 1.888830585752139 1.918187133138310 1.911489621413502 +1.447433020423734 1.984815484782575 1.809912879053475 1.932384928305312 +1.647130138311336 1.975048011464401 1.496094539238827 1.287529766122775 +1.720872400271096 1.343651196575742 1.944201419319978 1.510041012339087 +1.198160231994670 1.977717938492802 1.432354210640864 1.865151119881484 +1.661835577332205 1.919916823715127 1.016161814116975 1.061236876642474 +1.657020201665803 1.515968295633018 1.170337817011869 1.498083632503927 +1.373944038128077 1.776024013049162 1.648247953819312 1.809384033452877 +1.658849427122489 1.624226361778129 1.793282193192899 1.418150074450881 +1.974184898466396 1.646454823689541 1.847320273559470 1.809118627906037 +1.667048221894751 1.286411663053243 1.155204088317981 1.682213297932226 +1.573801753269194 1.746274619982496 1.231756335627674 1.754257884998389 +1.373580598756647 1.245858683898861 1.263329696699342 1.643784926835209 +1.991739661221429 1.695775077436477 1.304036360929938 1.788286328246723 +1.282020763851929 1.389018437063189 1.316837732359095 1.186367893721377 +1.521600398228220 1.695670697446817 1.801474188593036 1.310483347571174 +1.767536558223755 1.013316499340810 1.035820214178957 1.913025313015818 +1.085882414530559 1.498538265674775 1.565692143289249 1.194713626826104 +1.220442929622968 1.418071078484181 1.628079572468167 1.414588651313576 +1.973414323595650 1.335952864903809 1.924560141645969 1.996504348978007 +1.227649329315791 1.986949303242618 1.464361184349696 1.399317071613945 +1.202854496208413 1.924807559160226 1.754751377747643 1.242532156011458 +1.472860525060183 1.543457855579803 1.725259380973327 1.167597852924346 +1.828828854281918 1.032180059069259 1.384947425809647 1.365169792981058 +1.229260523115725 1.026885322979499 1.724920507537188 1.942260917064626 +1.110194250827685 1.876236348029265 1.215242665595382 1.624462865351008 +1.385334045558038 1.439741130846680 1.766796734472626 1.807283255625431 +1.740648026230079 1.299475371900798 1.554377706160201 1.033128594949951 +1.680124690223050 1.261404912422728 1.251998018685758 1.308638863007773 +1.969104537874910 1.991564234882215 1.372648233467908 1.162132287688459 +1.255297056986600 1.976622425863316 1.203426795562164 1.129238781112693 +1.303151768530372 1.304052912642600 1.182222073999099 1.998283546489925 +1.979431449168406 1.840965503938770 1.404040681548679 1.081461420061518 +1.969068408143378 1.313134626934199 1.480781182077382 1.767489483988744 +1.854551669590947 1.052277575875096 1.278266906445821 1.867386466610187 +1.930865667545248 1.529171537940313 1.842869879630991 1.185507596863987 +1.769929561539592 1.521037708545490 1.734986440232703 1.685636641908288 +1.969592327355390 1.185059233313213 1.465220066517736 1.895386647046764 +1.525705262096454 1.313210976884883 1.287057427050020 1.237910351401619 +1.669627367696086 1.019619386456222 1.943804198901382 1.884269893032559 +1.007691230652672 1.213648290890974 1.253893512436150 1.209364055255585 +1.281151264053055 1.174956951258355 1.116078654343138 1.527860865366049 +1.782455068155995 1.709685401306951 1.119405204349748 1.449609210940638 +1.779463222316410 1.663351701990903 1.691810749533786 1.255233407208968 +1.986621908922649 1.732450917462396 1.297865260085410 1.735391660670361 +1.043947080830609 1.937813773502862 1.740378470813075 1.611153528200779 +1.518362287045881 1.472894693025012 1.052740520937893 1.780675232478344 +1.195685124531712 1.399637779755601 1.489344288321495 1.301048637465833 +1.701698933273778 1.490047898691271 1.445350655669662 1.195882919143622 +1.341354888539917 1.738636129464434 1.805254758621205 1.618979157764211 +1.023886634101610 1.277133588934684 1.581515694821423 1.138155398374229 +1.892765143552971 1.059542185649001 1.188003903433703 1.966370402930370 +1.697078628272752 1.403327759386760 1.956964092655897 1.119596555862791 +1.178915532987854 1.176753046231592 1.217270316961992 1.091342414194721 +1.995301834956658 1.980124470199629 1.233326696521802 1.816273578921853 +1.023736948991647 1.352507879843831 1.263769109973912 1.829052292649401 +1.560851583380125 1.755464622704122 1.790025823938821 1.518152998688147 +1.320876079213808 1.514375290107175 1.444868517404337 1.195574321021846 +1.553654205816182 1.489756439623482 1.162731659495959 1.675263559130558 +1.975084515896151 1.159449192478706 1.453393443459746 1.703783229303023 +1.871948839978101 1.267263455440381 1.002526090914521 1.113033504192730 +1.926055080221973 1.854475057626716 1.846425286719219 1.530917430455671 +1.000806436027515 1.898960955557811 1.188049243230016 1.041689865954368 +1.662630570753353 1.329311373925780 1.629270519232300 1.704294418193156 +1.068011542658274 1.733017401693955 1.903866208111812 1.565380254375742 +1.148800725216100 1.998398142585946 1.507691399294983 1.261081666871868 +1.479768231443800 1.179453059246337 1.186188538225076 1.408540128059412 +1.946767394060656 1.034849081002585 1.737282491724260 1.894907100567792 +1.486214388201086 1.035813536192290 1.304713150088987 1.568323526934016 +1.197486652375314 1.930307171144099 1.815806904619434 1.177133210714686 +1.510712449541573 1.400988030328737 1.382476431796445 1.584772372559738 +1.261548242928633 1.964675417391196 1.202201161534977 1.028324821003730 +1.918120055879787 1.625139772205611 1.878019273150725 1.146776152959377 +1.046929858400699 1.685991374738027 1.432131620216207 1.741739725692896 +1.304667967465921 1.778132977535264 1.616449284001236 1.497802791126780 +1.194479919615297 1.393460486033591 1.340872254123165 1.247641527515536 +1.496969735863336 1.043247813914904 1.413816294835491 1.525069352822182 +1.963969716166296 1.828021373595737 1.732791694363794 1.007599612973435 +1.976934719672330 1.589683032798320 1.719730086143242 1.801278914966914 +1.794043094408393 1.739365615399972 1.184185274856334 1.932713464426191 +1.200833373509346 1.733498514648872 1.799847512148623 1.305195725824752 +1.125315438036170 1.697085991764672 1.062984757236202 1.314820643752991 +1.180319453907117 1.863599911946375 1.910954525475493 1.926111468790687 +1.953764267763146 1.505370399184095 1.081829553240242 1.703199405082868 +1.843959232088893 1.862172452384736 1.999885263976432 1.799844025773477 +1.076063060607155 1.197143370114263 1.333413864132015 1.698628149148570 +1.321832954631338 1.367937063245437 1.123180843104143 1.774925083995332 +1.619339701930214 1.770264356677150 1.719648244551465 1.305525117149053 +1.672119244964970 1.222587047052255 1.114100500848951 1.136223341783982 +1.921199247249054 1.069216145755918 1.358780010729769 1.733057304124563 +1.457752530540124 1.200959965469643 1.766387974864911 1.616705995929219 +1.296690587645339 1.118256951113194 1.520298574311461 1.602780481531355 +1.936216979635293 1.036746752994587 1.404840082467683 1.710768111928357 +1.110068656896541 1.834011861556027 1.279705752346139 1.818764369844593 +1.435187356110545 1.581978061295934 1.882244129569301 1.956750337297039 +1.975392602039201 1.963911899654994 1.870505390563815 1.154025760470927 +1.941704030089585 1.465549748657835 1.810208983129830 1.007867525993580 +1.377158278384699 1.346459878750605 1.506904939427043 1.508035916896356 +1.387673903780950 1.753205836412996 1.798168641185234 1.172048122920089 +1.058172370825328 1.187143433509988 1.200455182851260 1.414866418636005 +1.824989712187725 1.567536239426612 1.782084412691711 1.123441703226602 +1.628062867682726 1.020110241979416 1.656405784506784 1.858301429278784 +1.300755775429386 1.411784308012111 1.020406992344303 1.812235369134950 +1.733618152944455 1.428840118541546 1.496776089618520 1.933071612080089 +1.630957879642284 1.044836664871599 1.392121075571293 1.202914869596870 +1.982686701533440 1.448549075919088 1.081829190805088 1.917133365801586 +1.977923374183636 1.479964551976714 1.461191072125482 1.340613002087024 +1.754407317736884 1.473004114856842 1.229464277931534 1.622391739728188 +1.621070787535370 1.628142423191604 1.205960155512683 1.785521686852414 +1.748169184405703 1.222381278413143 1.635393646740021 1.158570703686081 +1.561913029576681 1.986080482993522 1.281802779907468 1.341545328686003 +1.726113275420931 1.428412390340107 1.433335129320378 1.184516609847079 +1.022901043667016 1.940604626678712 1.871808871678271 1.458479302797172 +1.819069664483663 1.795953558591058 1.408055911532630 1.640095189641896 +1.830181608223436 1.141616074798818 1.279294044772639 1.776082398613945 +1.248470079742830 1.231271626653136 1.052610161341667 1.818154276155115 +1.495372015192189 1.074174266605582 1.848836877222804 1.674422836320409 +1.707802518076481 1.631479204491098 1.263948470309770 1.936613230565055 +1.720356103943030 1.273928598637331 1.395640879571307 1.063394191776670 +1.930574462403661 1.389854199194516 1.900675232645107 1.184710228168116 +1.598720637054212 1.895341691827803 1.374013260876037 1.039648141492794 +1.950726582589418 1.301300159753100 1.382392526612026 1.950347485127602 +1.447999878677102 1.405415337546160 1.639790631500895 1.328933586188818 +1.930078854685884 1.432733312148130 1.984497847020292 1.601566996106012 +1.545251874932641 1.826445651566748 1.093586668410310 1.753732325153305 +1.979508890847077 1.143934975074550 1.721169646591275 1.508874581799472 +1.396719996291360 1.365299476686752 1.365902724654254 1.916413100003672 +1.876982679683599 1.702167748046458 1.588090947191975 1.525634117552790 +1.281204501918946 1.391082025106935 1.109729713967798 1.882494015167560 +1.360952384894833 1.549458817763369 1.615551244781344 1.344579843438646 +1.122545061090302 1.963327841858650 1.674349645805511 1.446863304302276 +1.635172133792873 1.117867450298607 1.898742643904411 1.500411594481074 +1.543736090979674 1.063792295169576 1.184834811345120 1.806695060302524 +1.733733699537015 1.843094365568871 1.394996991231594 1.900978089694727 +1.005427992429085 1.472816108230923 1.425959799236822 1.331002418069425 +1.331695554377850 1.554115258002136 1.116221971649196 1.249017884639617 +1.225277103812475 1.503341482443934 1.929335309749066 1.387898834025463 +1.619614610021437 1.132273991372817 1.967173025547115 1.544169191383788 +1.813661755604868 1.253171046686611 1.935960306453763 1.115556491704424 +1.908691041489743 1.293594938878034 1.225183370703866 1.611240649961029 +1.991526030087894 1.249045677158234 1.016715743912830 1.620642846472658 +1.080802645859351 1.595248135896193 1.606734136438476 1.053935670125311 +1.041221300283760 1.770065419375412 1.982992116604268 1.642902223625746 +1.111145102299322 1.866374709966984 1.830306169051601 1.493862683412512 +1.360390154676771 1.648217128172366 1.553800429057190 1.278611268226710 +1.790130927154468 1.871732333174845 1.886835578929097 1.184757220445262 +1.489909840365794 1.480709896235235 1.150258000769705 1.146689106434610 +1.390961543450027 1.502864563154191 1.564751137675962 1.525372632082359 +1.138071545983603 1.630553755011265 1.089302512838130 1.867397760256057 +1.638212680814138 1.520952002547705 1.817443945545661 1.099879727678049 +1.620548633311054 1.677508819897305 1.852316911642593 1.722167443154997 +1.210802642591313 1.238639433280475 1.019498102190570 1.866645523368763 +1.360472637976484 1.332519072855279 1.804901946989013 1.096118292564498 +1.534052112388486 1.242848433045252 1.151323571798798 1.388124795783285 +1.650295294257837 1.506784404470386 1.087684672971615 1.525134538967106 +1.933418154036062 1.275932369000623 1.988098953677067 1.010023100036211 +1.997167214992843 1.921286900212297 1.755398243948225 1.895939589134010 +1.880140543127695 1.694997325913814 1.470625546670323 1.377324714454869 +1.038583872386198 1.272448044507650 1.873291159812583 1.973362376882401 +1.665976407285312 1.119509426006656 1.310834152014966 1.416135563521627 +1.216584405220582 1.055064340986449 1.418286664885700 1.345348221780714 +1.978054634461201 1.991904261386918 1.881036210869605 1.059465979186464 +1.021271897735500 1.977294959770930 1.847588887220036 1.167062591603064 +1.855039205261013 1.938567074875573 1.155765426479559 1.789624571285048 +1.949084029977115 1.231401678056955 1.139087010279660 1.352584010527830 +1.108385634320386 1.245082185327116 1.373424950825065 1.495030953700018 +1.759805367567364 1.660208515492021 1.248338347216088 1.904803090758900 +1.178004465113010 1.673143245820415 1.749227830548920 1.988964231222044 +1.677762479509288 1.652998977756701 1.513968804752140 1.939433369436654 +1.362835585484494 1.053715009152478 1.569087382934968 1.823911018337160 +1.939453742166479 1.452155340033394 1.239636334272859 1.707177489432905 +1.602961041335333 1.923242759223533 1.021257332254841 1.348930498788188 +1.936529019206883 1.324452378830388 1.149549685683144 1.841142893451452 +1.869806662188680 1.899944701677986 1.231073387279009 1.636827694904670 +1.384755175949928 1.407228465484254 1.669919318236826 1.268031201966942 +1.420557400308894 1.191974790790577 1.024985215848676 1.918492269602619 +1.725728553017931 1.864478148520626 1.457508326509352 1.803079749131511 +1.546670078298530 1.477067311885055 1.098669886377954 1.113610828360892 +1.464707644389821 1.358254635268466 1.656200818920398 1.855444239754690 +1.436857903717223 1.070149653368291 1.242925200717149 1.952903120205357 +1.915353943050994 1.598009950251336 1.093530591801106 1.511518394122729 +1.957256301937649 1.270216989651105 1.817304754150386 1.682525541203972 +1.274633201798457 1.086512273393378 1.235776118872294 1.282532846692407 +1.401038518852800 1.486672849683945 1.630195876335021 1.326518056373564 +1.931871825338454 1.668834990792613 1.701240060895850 1.522728305514506 +1.949702389623359 1.404942269682373 1.901669300789663 1.723630744915171 +1.721133875872934 1.999535288141516 1.393254745161021 1.049163991434170 +1.007438772264273 1.583417259175742 1.577784932873734 1.590379418564885 +1.300062984620161 1.533288414643524 1.171158326613474 1.777528222944972 +1.136046316890149 1.584744334711946 1.455441127605836 1.365661498311393 +1.501323607769048 1.169018540838756 1.750497087149929 1.999108196644218 +1.415195858027908 1.854954982204047 1.957512866119751 1.886347239108981 +1.651128901677464 1.460992145056435 1.297123862314796 1.695387916626944 +1.590029822500043 1.229507168591580 1.963608384794096 1.931186067952600 +1.903401590464437 1.193397428101548 1.878281622447791 1.693533451016565 +1.313558462508259 1.673808404971601 1.636994433618006 1.090149942536260 +1.997804288081746 1.150156446694937 1.127895149368814 1.563493584087365 +1.683075882438257 1.780758624775475 1.473794560043340 1.145209477635851 +1.679355982340221 1.488685914554436 1.762781775969967 1.561125145778626 +1.185907030088978 1.927631533604508 1.042560488761779 1.009944954590238 +1.285799279938504 1.282150991680981 1.764186015241164 1.530516028603597 +1.575217082979101 1.146567459256998 1.498453736094797 1.918075990246449 +1.061130094793465 1.433198497126476 1.237872659476884 1.511461158521524 +1.494565222133279 1.139278985156186 1.336333707895559 1.190159057097516 +1.139691732416841 1.160128437138019 1.186302499807506 1.689274189507813 +1.761971721328576 1.985176174415130 1.523219786300023 1.841724948661994 +1.359647582417355 1.928440209167267 1.702856224261024 1.857221628862172 +1.806988411450625 1.907638590100513 1.298034421391189 1.809944682054954 +1.073306726909299 1.222829652272232 1.708563019987155 1.081168439537202 +1.015587788504944 1.912299384156649 1.625405823383862 1.266627998767115 +1.350664945297045 1.205478566959833 1.131534080107679 1.223203988938636 +1.430902187938980 1.430017749957363 1.389374374952055 1.588337726031283 +1.877771745732611 1.500246644703071 1.412678668949076 1.546498211237112 +1.711005433859085 1.631869223956753 1.082940956371339 1.129339343330350 +1.523147910366461 1.349249556067105 1.514069575249380 1.752843694757484 +1.027217653337137 1.683855055380775 1.123302808920144 1.437846638829122 +1.722573946880225 1.810607383344694 1.027010333232664 1.111228457296915 +1.221099546297477 1.105363047341196 1.031689627695763 1.031148766011299 +1.326025236289614 1.427438203839050 1.766433295166013 1.645210252595155 +1.269772522085425 1.689360899109787 1.304038717105628 1.190324149041525 +1.973771813482728 1.282940500440523 1.523614554861170 1.949649207220886 +1.329709972801686 1.584872331638760 1.393845548576713 1.672858927840690 +1.217086823361779 1.188411682230649 1.774703389022992 1.850644115295248 +1.737353884339332 1.093850488601783 1.324237551679774 1.585318593367641 +1.814609528620120 1.011309677339996 1.184346011814378 1.176972548175905 +1.154159386871136 1.877429962172376 1.077748409438919 1.704923154005184 +1.795451144095245 1.682144723634363 1.200392182571640 1.779582670731540 +1.317269131853217 1.621309748182121 1.151361358893095 1.190889057699679 +1.720330927296528 1.067960717586870 1.514736219087969 1.477317329375735 +1.892579547442360 1.689935726806650 1.955597101628066 1.580392798639660 +1.457588007668262 1.091596790070496 1.602642542670113 1.534478605993255 +1.609042453202848 1.913580759422514 1.466974530704528 1.670552921422953 +1.800407995284538 1.498812489900975 1.239855654613864 1.271227319063774 +1.230158940909928 1.969073049773112 1.900017543507877 1.656666492643933 +1.561814186188946 1.747839191136447 1.742053517920293 1.364499853566081 +1.106699472857810 1.847360651712441 1.140571188592487 1.885363090187963 +1.810754259757593 1.465213042510783 1.384044970308723 1.649316335971845 +1.017488642034184 1.106151063680061 1.395265302038090 1.348825358987658 +1.484133086224215 1.071195795886565 1.465451886751892 1.102253331111851 +1.545019620841491 1.412257190064808 1.154451207422992 1.903096469869282 +1.884481412739794 1.182094518561708 1.248326807452991 1.511002468776751 +1.337711006340126 1.522842708994122 1.554334459677285 1.031697913198371 +1.909458262971147 1.533701130301241 1.911538949791128 1.875997583066253 +1.984829570499357 1.328681822040569 1.218921872825033 1.016988552056168 +1.950349816497554 1.393942829584944 1.627240362184135 1.302069001905831 +1.751667270263121 1.872234394261127 1.326418335914697 1.946645711002825 +1.816818270104890 1.357594801324263 1.887132653307322 1.954266655304030 +1.040719502465963 1.001502316453671 1.054963101812154 1.962277300175073 +1.818913077851984 1.021623200093366 1.122519973293939 1.023689437968211 +1.678522967609259 1.645166487635418 1.714425225324656 1.765373926254950 diff --git a/dSFMT/dSFMT.86243.out.txt b/dSFMT/dSFMT.86243.out.txt new file mode 100644 index 0000000..adde89e --- /dev/null +++ b/dSFMT/dSFMT.86243.out.txt @@ -0,0 +1,252 @@ +dSFMT-86243:147-43-3-4-16:fffffdfaff3ffeff-f3efffffffd6fbbe +generated randoms [1, 2) +1.542017911038864 1.798512737052249 1.905463538402402 1.508822085796373 +1.768172598337679 1.282133902671222 1.718276511872775 1.195697579765510 +1.699752349982979 1.250580821076403 1.905402504174309 1.579620975720837 +1.510044901764133 1.888829460630814 1.569294560799700 1.066876318452204 +1.531902097205899 1.493686110489999 1.173466491755214 1.717567536490016 +1.354584352093833 1.011534780892555 1.325254934062515 1.811366737434617 +1.483868447091936 1.672836166519776 1.992071688372804 1.439312499580921 +1.356523307289015 1.677801182759618 1.950076994056018 1.475918004096834 +1.958681852792527 1.678282484370852 1.515288100833718 1.021171599533666 +1.880876305121182 1.496217593257851 1.177764689251980 1.116872551166414 +1.286020998693812 1.933024015881142 1.202308395130377 1.986526713107212 +1.906082222300042 1.192739356362765 1.130916049544937 1.087747744454921 +1.491280211520727 1.072245038228393 1.020554781733138 1.373513820639605 +1.232676271770183 1.352787980483072 1.250227867254702 1.948417658253787 +1.256875915039180 1.039132731444329 1.868887009571989 1.073101816266074 +1.008160716319453 1.167811680690796 1.508729586543303 1.736241846784673 +1.006747905696921 1.834672862145622 1.146446643519320 1.058229814984741 +1.313296941414809 1.346028518569593 1.562727689317384 1.213250549258957 +1.218873173136288 1.431421846475551 1.429723729406423 1.475349028427577 +1.734922562783571 1.250114589909743 1.175845513909266 1.477392947213107 +1.994288132410222 1.221561262467890 1.281963113412173 1.177532250794140 +1.696969398506986 1.668830246343910 1.427273221406117 1.665696693970382 +1.377155303548094 1.863928306410882 1.251342486302561 1.654351124508002 +1.873565206285824 1.968907406159865 1.529631702911927 1.629689814531790 +1.062825724829340 1.664452498518469 1.602159363770797 1.707905846352007 +1.831645717240299 1.781749841305846 1.365132699585955 1.756351317711163 +1.172691450666051 1.198341741801692 1.321800117340680 1.446512013648692 +1.102248999898398 1.100532364459740 1.344257325058948 1.088025725289312 +1.099619795237548 1.903242458569753 1.841636530430153 1.265473807182695 +1.697717270608219 1.232843298711897 1.925487715305356 1.928180050829838 +1.138779250921960 1.586167421966369 1.085241166528855 1.930474071080081 +1.278358858776009 1.499166382898593 1.172358060928077 1.220629127568577 +1.523202235011681 1.379581877030801 1.904337408215768 1.445850515020132 +1.019613157382234 1.863157111327367 1.291175774001142 1.211271252137953 +1.810506158138679 1.295265852632767 1.101006791993114 1.639528222428486 +1.898637323204106 1.114347699320791 1.678301017958574 1.988860085956817 +1.616832315790252 1.179170292567745 1.125581894111344 1.960519535224242 +1.596040656858468 1.828773650755944 1.628757286801263 1.424393884264097 +1.513286409132368 1.932482412421786 1.274827587070718 1.780737401379487 +1.250345484427260 1.584608490554528 1.089353076514232 1.565028733562139 +1.438107642543830 1.115601349804423 1.715946281371593 1.189424998442026 +1.845257868604884 1.007916485325515 1.388516163308900 1.913845048961246 +1.600632382134694 1.852866403184231 1.300698845394578 1.687144827767934 +1.419833812555193 1.255286803017482 1.227405110951585 1.701229853466765 +1.086409837656133 1.027365510644203 1.328258294262510 1.959943090125975 +1.462826297125334 1.670733847652958 1.013549507301875 1.081376832614383 +1.495845262660888 1.799282857982950 1.254257476016261 1.570634293523431 +1.337966343650265 1.300538490510462 1.470654825691972 1.083265273635662 +1.632193040468677 1.563730489915101 1.005062673555594 1.826621782424867 +1.013458088772928 1.324460147589699 1.016266702382918 1.625047169825968 +1.410777103226157 1.769804672171945 1.915924786963390 1.049190072843433 +1.782792422256896 1.029527464981617 1.513566589765881 1.673973846562268 +1.955305800296765 1.625606683879939 1.653680053374525 1.603731755660222 +1.418002054035357 1.683783352960053 1.460077068003249 1.488669970173409 +1.410505640727826 1.853158193967333 1.948075758412993 1.121994039656292 +1.743001090914145 1.074419767014632 1.635372310995457 1.075419489948279 +1.239257392603474 1.932165892802194 1.985956587640373 1.039377331161287 +1.299827905206052 1.510175930306122 1.385294740736931 1.988053788550529 +1.857897617880768 1.872851031072022 1.736018806647146 1.000205752822357 +1.696744403108384 1.595181183041162 1.080249997818125 1.701789581019474 +1.932487590613352 1.728557653740520 1.714226443113802 1.645937040363023 +1.644334947308890 1.158614462811383 1.677153444475010 1.177109391462224 +1.953223286849840 1.098593607715120 1.705375938477762 1.003393223264835 +1.166963256738781 1.063846293366627 1.846788395727566 1.043525489867730 +1.999482862676385 1.197615070577148 1.067533321438064 1.836010225920312 +1.953040558435941 1.398583780770814 1.571348390126423 1.191424691415452 +1.037336125969539 1.191432498876930 1.616334783950454 1.665652206429963 +1.318139440758847 1.347872524660370 1.499998753595703 1.399510220006777 +1.611018217421217 1.671731206616386 1.273067017033922 1.365102507494192 +1.741865519783012 1.173416416951755 1.181383097753687 1.802056768205150 +1.060065393796621 1.416608869148050 1.140057024436776 1.625163742636510 +1.739603635847069 1.501415277076861 1.792420698019457 1.571372174616730 +1.097039270029136 1.401397871002683 1.793183756625853 1.203043066617413 +1.719876414269511 1.015925553565358 1.954383557803615 1.944591630845991 +1.458526558018801 1.212812159987416 1.853948442008843 1.096245513795097 +1.315464911662870 1.751490824094982 1.519008056716191 1.832160859795632 +1.974020047720600 1.559681327442249 1.852917143938408 1.372978035644975 +1.116260026496778 1.982674446495023 1.797047402795785 1.755551964934609 +1.133949786054417 1.011706589629034 1.128405718492538 1.490992538510773 +1.655028045293643 1.615565847052851 1.713871264444902 1.077177451891894 +1.162404835475641 1.571856083632701 1.464726988293421 1.729895824371499 +1.178793158196927 1.432128416348687 1.025466948486051 1.638522988277199 +1.404263298866445 1.830816937640226 1.143732889929718 1.672135836064513 +1.595096101523419 1.471190496302964 1.531834380978823 1.556894847039938 +1.223669812035557 1.752030729627940 1.971996697264545 1.211635007298391 +1.941555421667229 1.870937448272664 1.493832326903106 1.972990712681679 +1.222444770811906 1.540647251428279 1.434230101612702 1.452870926948137 +1.751249537616937 1.513498791283707 1.705492428495690 1.590154030913892 +1.482952617967432 1.913718815367156 1.132855414309320 1.965245039565797 +1.861830717461286 1.362609806256446 1.908436953424122 1.315312762979179 +1.399291692737848 1.813713449826332 1.119235868716286 1.712918106657813 +1.428132950305306 1.390163265974141 1.425366469126123 1.222790933678345 +1.136839695666780 1.697953217785565 1.882919774574381 1.408237412920576 +1.293809593474647 1.511149796950103 1.727642987348240 1.766563748975299 +1.148204156675778 1.834289038861755 1.332085828062441 1.889900453508774 +1.692576995462169 1.202144446398451 1.497592795489456 1.581381519664467 +1.739368970909368 1.101807369976977 1.128704677421881 1.645741476807360 +1.304507404984644 1.439892330491171 1.497027205414945 1.464634559875714 +1.308103231762041 1.712839699443377 1.558699975770398 1.231553842504486 +1.741912841848931 1.282284098195084 1.279912292040952 1.521412268083272 +1.730318061488147 1.074955655920372 1.787878343388379 1.945460676225230 +1.188220666035873 1.067222369236545 1.922462883351077 1.900638233282685 +1.733978048169510 1.747830652216654 1.278333662340653 1.768332477558894 +1.689188506784242 1.682148391363034 1.988115444760084 1.948537684602410 +1.754008503851643 1.583902657907749 1.957440924618846 1.201714844886970 +1.958425191934718 1.699056083673848 1.908013106953387 1.468457656112143 +1.575867287722890 1.089804498371899 1.842832226600795 1.982731645588383 +1.761138775670969 1.747538585232846 1.203866451854343 1.539201937945148 +1.791622889857040 1.473223957702636 1.383586034616102 1.096918985696576 +1.202850055466210 1.935098732032034 1.946046089061676 1.981193693459253 +1.911869961717181 1.631833079919632 1.431507128009269 1.967269293819822 +1.827185185381131 1.126116773916271 1.870486490384390 1.983580614982886 +1.575503438280657 1.013687740767137 1.720222781748174 1.249558308304624 +1.783693079178766 1.428325432246810 1.962684140235274 1.436134729695232 +1.531362395800577 1.372488313873645 1.436928226809114 1.432067538825175 +1.529740176797168 1.676766689749576 1.076350123163384 1.006443327793138 +1.206044663733162 1.077027034435277 1.404491498350255 1.101363315839138 +1.378151611521015 1.950951060746431 1.858938768687676 1.617926646139323 +1.363739871415599 1.287467463368327 1.409759787400731 1.045807826292953 +1.835707244814230 1.241534167255602 1.536760257693471 1.773952152974526 +1.375171817682352 1.747065079948206 1.791262306208618 1.074313159879401 +1.189003949036239 1.967291500876125 1.712919079551798 1.711177173040574 +1.428502610129091 1.338603110077165 1.079710879889960 1.420219837981030 +1.827536143447662 1.169586759458552 1.674116594962024 1.390687831839598 +1.242296490926863 1.714542981800035 1.738559769611864 1.907198581604144 +1.374442138767269 1.828605749578045 1.670907343641698 1.879908669814647 +1.635085344488476 1.394584387711360 1.012607566426648 1.536176865569129 +1.504622795310523 1.730417587269735 1.295631085343723 1.628497164037440 +1.648887263189014 1.114458280211439 1.745249726005567 1.944200634227968 +1.196005528761535 1.438698979692455 1.388481535681836 1.409528403181552 +1.202526442939184 1.481962688431876 1.594632580904479 1.356681261024191 +1.358867427248193 1.818899211846102 1.361475725222020 1.522701896260626 +1.676499879985632 1.573759052780164 1.010663032805346 1.672299734974735 +1.742191557918103 1.296696333908656 1.195174239060657 1.056277248302227 +1.902273767472114 1.618165877068231 1.870762623971083 1.293818639554814 +1.931218738905818 1.462451089267773 1.450875665829724 1.452371127439166 +1.084203646088856 1.783877288681875 1.142944635228035 1.537030542525947 +1.082027362078378 1.578401046141198 1.593662421825899 1.141212589332971 +1.454446165624787 1.447359470155183 1.198350863097849 1.893205388727947 +1.783079104121530 1.035414872923819 1.537296743543543 1.828599586712175 +1.570168724449081 1.490749442068353 1.132636004789635 1.396741697921338 +1.030456774538046 1.624234730251664 1.919872594032956 1.499620385874106 +1.014062509592110 1.500962357200428 1.023058313188265 1.092774205734373 +1.204945298256095 1.133612576857195 1.804931888146753 1.753259672929776 +1.945568916466023 1.317579436211476 1.469083275704659 1.329509194541083 +1.721029137891944 1.108561475444127 1.191799688205242 1.774714862631585 +1.504248439025725 1.436062550749658 1.233046361937399 1.766337164541637 +1.444133345093727 1.581278228330311 1.874177262826637 1.327302288780194 +1.407669579868476 1.321844368035038 1.002146738153286 1.253895525397384 +1.639838372911203 1.155122059886312 1.317612900157564 1.535228374475989 +1.415609154090908 1.199835381089654 1.246535069890833 1.159042872547376 +1.284441844584554 1.674051237274399 1.515666228119957 1.635947056311343 +1.234374926208214 1.439203110537843 1.933574226311307 1.333268649926028 +1.688521910875655 1.202582675879225 1.688727294399764 1.490195986518296 +1.619768898934834 1.216568184778578 1.503020627008870 1.848743968707680 +1.257582932438180 1.598793004318393 1.854221567216981 1.965706095381585 +1.748013910994240 1.412134393098462 1.782273808139743 1.943051986088915 +1.462226192221876 1.650531052884485 1.950346534114968 1.280276870989263 +1.188743700351858 1.773419576959011 1.630387033280011 1.094018728430637 +1.614266200793181 1.559109999409490 1.221991629090501 1.551019362413107 +1.965680359758027 1.002882802027917 1.570561326032162 1.034294786722826 +1.558833725459147 1.550487132629357 1.869108880413502 1.389609729071360 +1.342780223917929 1.804364807953555 1.370568237228297 1.671290210140921 +1.810507691745775 1.525845419872373 1.801207571910540 1.619819040850405 +1.908404983209690 1.544392810497885 1.856694381072747 1.654599130237385 +1.858938034999885 1.613552742513174 1.412933724845323 1.637392533271827 +1.292026491280577 1.421845731655388 1.087146286243307 1.792925445040770 +1.899269119029722 1.412363599805920 1.512304133065649 1.018816821699388 +1.933617261993428 1.364784384807124 1.636701407798786 1.703953129448621 +1.915297211393747 1.343829083407480 1.074373569600876 1.353790271173254 +1.617534764117431 1.999940759948664 1.621385358526041 1.613828603054648 +1.758700813017986 1.379715393378122 1.812084247777436 1.491092942222007 +1.892719684363071 1.906352890539400 1.775071051487002 1.187727460874805 +1.513116742778277 1.213413144797550 1.094404274024969 1.198192194623064 +1.446295521430867 1.763661891920939 1.694981317171755 1.938177302837266 +1.066521954568808 1.336210288763685 1.516460890752836 1.263090969454480 +1.505438768146797 1.384834494557060 1.049815206070533 1.657925812853558 +1.615427246928244 1.293730313105558 1.097394568877209 1.903576799203616 +1.111996423229376 1.578379782397358 1.772538292742446 1.562315333137961 +1.416419254943029 1.991265313333860 1.004862529951132 1.804486064349007 +1.283543734093714 1.284925563934133 1.741622215469302 1.774171685301665 +1.542993495324480 1.377356076313850 1.256935330015819 1.786594826074664 +1.185008416954979 1.818047943034634 1.549795070507982 1.035009709896877 +1.624932317150308 1.929039349995527 1.278583503835488 1.290848953056428 +1.525784956400680 1.481609614412837 1.461989390384497 1.700140859754543 +1.360816964865575 1.184721062036147 1.285936068776028 1.728604355298899 +1.571042157999498 1.281965176194968 1.515680821245230 1.511564188032003 +1.437695405921323 1.657819700563234 1.167191564354024 1.044410884783267 +1.443296696055841 1.313538427472045 1.584339809677571 1.115984958335848 +1.607091682123355 1.918699758768522 1.870531503731285 1.604799795356336 +1.762330531961225 1.873554917037944 1.005442103753386 1.189758328610532 +1.319472909866595 1.963859878884598 1.734956685069575 1.100898643080779 +1.705457694532355 1.073235764188484 1.666048720384948 1.543760829662560 +1.630599865636220 1.770457132744487 1.242924463763431 1.721332863297734 +1.086466128466853 1.955826080222210 1.359243089080533 1.586736653122513 +1.574142530705221 1.885091245895801 1.742674904860199 1.884184436115015 +1.905674462031246 1.564094419462088 1.727271962950137 1.330572883923734 +1.259183758201768 1.006199558761077 1.846084850369783 1.149504452148949 +1.772538247094849 1.873653401126947 1.269494079622732 1.656806545001652 +1.484299780411141 1.059117402612842 1.015569644705753 1.380075742930534 +1.657291625987902 1.052181210856667 1.506191014832776 1.214502464250243 +1.647771360658957 1.238777253431205 1.310676759013714 1.993533284891213 +1.856688444425837 1.791515530015451 1.040626784347696 1.760160320522078 +1.949495977774385 1.068557243784285 1.338146828462214 1.124972829437951 +1.314213923468367 1.685164464928283 1.167684389383076 1.810086916688192 +1.719856309671175 1.386182365620477 1.821439289602101 1.871216338931161 +1.551408530172617 1.272503879442674 1.496265115071629 1.314267774051079 +1.483091433543594 1.346029030589055 1.710146369431055 1.605839950525367 +1.568156403553353 1.392896792382241 1.851276120253882 1.143593083542620 +1.912880482041741 1.940125357475894 1.149644960601588 1.574856591027706 +1.366097113294375 1.667693496603099 1.001128001334995 1.323983128349126 +1.099699735504206 1.116694883662254 1.480593646973233 1.364380461430325 +1.873488673289103 1.681571656259372 1.992235860521417 1.529041578083266 +1.944058636802764 1.674858207318061 1.751390608376314 1.675090538634897 +1.470939560736366 1.876607914604499 1.762363604781819 1.635844715844349 +1.244418242726459 1.545175394644493 1.023054297271580 1.862304416561442 +1.515754136293284 1.794830077995873 1.808888198420536 1.574080944744193 +1.819043028546681 1.407397470693843 1.694092230438780 1.806025173997903 +1.861732947784820 1.457556126363979 1.740725862437242 1.064532512652063 +1.792967815903952 1.319779081792410 1.438185310281388 1.730343136402736 +1.889840715958254 1.565177080008027 1.773267937002671 1.972543758902188 +1.344939996174198 1.360768172511021 1.185364811771415 1.206694825128805 +1.604458422201999 1.988098647126951 1.313539698030386 1.560574313482815 +1.250959357586821 1.093106632467580 1.738053196785982 1.892988122986110 +1.514794784682638 1.091906904874654 1.347984283724412 1.049936682689935 +1.063320258172028 1.974977733380133 1.212499972497458 1.189238006833895 +1.067222707466298 1.761708790827158 1.856921918193964 1.945740702745400 +1.128781519605186 1.981340129061517 1.643658186599595 1.567989088577974 +1.890909751760681 1.501936523897477 1.660869759015138 1.842717087972823 +1.932843093101678 1.761013188997158 1.568559063388671 1.205576563743852 +1.763507514828010 1.576287201929463 1.130727983769990 1.101493456071184 +1.138116386359337 1.342242530148409 1.713862652979803 1.720220338221197 +1.114651159693651 1.602213497085056 1.215342310510181 1.021889136184321 +1.836891187003325 1.876206958984851 1.103285397980173 1.395379863026824 +1.665081658415829 1.885953490156885 1.979406079540099 1.172246322951647 +1.124328904664552 1.148869617774847 1.447219045204367 1.166885306251676 +1.938281064545317 1.584994332664611 1.927724903110376 1.699353672933118 +1.522931125149779 1.815943783099677 1.178280831134191 1.099177986421525 +1.398414833369097 1.743200408223990 1.784954980589849 1.246955335071063 +1.659441658008709 1.168287505161868 1.632571158326878 1.505187155406018 +1.073563651225670 1.252352302174901 1.698438511408874 1.743974133194087 +1.043149814087805 1.475670807426248 1.444787111227823 1.294846500019378 +1.124484580906167 1.892371784544103 1.632491643072590 1.659056198605459 +1.784043914770286 1.665150447619719 1.254411730050266 1.319796858072689 +1.011035213002791 1.465112638082643 1.719452408312650 1.661149669458870 +1.646006708071177 1.675391447286539 1.771252482873329 1.536120340150132 +1.623010978828805 1.395611306730900 1.785260524541024 1.166536431383908 +1.190262874461594 1.843905754040137 1.415063302590000 1.180196124533873 +1.720050326923759 1.762619969164988 1.276378275720331 1.280930628409774 +1.471654847369493 1.595585781304493 1.726046684814301 1.685826635181657 diff --git a/dSFMT/dSFMT.c b/dSFMT/dSFMT.c new file mode 100644 index 0000000..72733d4 --- /dev/null +++ b/dSFMT/dSFMT.c @@ -0,0 +1,564 @@ +/** + * @file dSFMT.c + * @brief double precision SIMD-oriented Fast Mersenne Twister (dSFMT) + * based on IEEE 754 format. + * + * @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 + */ +#include +#include +#include "dSFMT.h" +#include "dSFMT-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; + uint64_t u[2]; + uint32_t u32[4]; + double d[2]; +}; + +#elif defined(HAVE_SSE2) +#include + +/** 128-bit data structure */ +union W128_T { + __m128i si; + __m128d sd; + uint64_t u[2]; + uint32_t u32[4]; + double d[2]; +}; +#else +/** 128-bit data structure */ +union W128_T { + uint64_t u[2]; + uint32_t u32[4]; + double d[2]; +}; +#endif + +/** 128-bit data type */ +typedef union W128_T w128_t; + +/** the 128-bit internal state array */ +static w128_t sfmt[SFMT_N + 1]; + +/*-------------------------------------- + FILE GLOBAL VARIABLES + internal state, index counter and flag + --------------------------------------*/ +/** the double pointer to the 128-bit internal state array */ +static double *psfmt64 = &sfmt[0].d[0]; +/** index counter to the internal state array as double */ +static int sfmt_idx; +/** a flag: it is 0 if and only if the internal state is not yet + * initialized. */ +static int is_sfmt_initialized = 0; + +/*---------------- + STATIC FUNCTIONS + ----------------*/ +inline static void lshift128(w128_t *out, const w128_t *in, int shift); +inline static void gen_rand_all(void); +inline static void gen_rand_array(w128_t array[], int size); +inline static uint32_t ini_func1(uint32_t x); +inline static uint32_t ini_func2(uint32_t x); +inline static void convert_co(w128_t array[], int size); +inline static void convert_oc(w128_t array[], int size); +inline static void convert_oo(w128_t array[], int size); +inline static int sfmt_idxof(int i); +static void initial_mask(void); +static void period_certification(void); + +#if defined(HAVE_ALTIVEC) +#include "dSFMT-alti.h" +#elif defined(HAVE_SSE2) +#include "dSFMT-sse2.h" +#endif + +/** + * This function simulate a 32-bit array index overlapped to 64-bit + * array of LITTLE ENDIAN in BIG ENDIAN machine. + */ +#if (defined(__BIG_ENDIAN__) || defined(BIG_ENDIAN)) && !defined(__amd64) +inline static int sfmt_idxof(int i) { + return i ^ 1; +} +#else +inline static int sfmt_idxof(int i) { + return i; +} +#endif + +/** + * This function simulates SIMD 128-bit left shift by the standard C. + * The 128-bit integer given in \b 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 + */ +inline static void lshift128(w128_t *out, const w128_t *in, int shift) { + out->u[0] = in->u[0] << (shift * 8); + out->u[1] = in->u[1] << (shift * 8); + out->u[1] |= in->u[0] >> (64 - shift * 8); +} + +#if !defined(HAVE_ALTIVEC) && !defined(HAVE_SSE2) +/** + * 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 lung a 128-bit part of the internal state array + */ +inline static void do_recursion(w128_t *r, w128_t *a, w128_t *b, w128_t *c, + w128_t *lung) { + w128_t x; + + lshift128(&x, a, SFMT_SL2); + r->u[0] = a->u[0] ^ x.u[0] ^ ((b->u[0] >> SFMT_SR1) & SFMT_MSK1) + ^ (c->u[0] >> SFMT_SR2) ^ (c->u[0] << SFMT_SL1) ^ lung->u[1]; + r->u[1] = a->u[1] ^ x.u[1] ^ ((b->u[1] >> SFMT_SR1) & SFMT_MSK2) + ^ (c->u[1] >> SFMT_SR2) ^ (c->u[1] << SFMT_SL1) ^ lung->u[0]; + r->u[0] &= SFMT_LOW_MASK; + r->u[1] &= SFMT_LOW_MASK; + lung->u[0] ^= r->u[0]; + lung->u[1] ^= r->u[1]; + r->u[0] |= SFMT_HIGH_CONST; + r->u[1] |= SFMT_HIGH_CONST; +} +#endif + +#if !defined(HAVE_SSE2) +/** + * This function converts the double precision floating point numbers which + * distribute uniformly in the range [1, 2) to those which distribute uniformly + * in the range [0, 1). + * @param array array of double precision floating point numbers + * @param size size of the array + */ +inline static void convert_co(w128_t array[], int size) { + int i; + + for (i = 0; i < size; i++) { + array[i].d[0] = array[i].d[0] - 1.0; + array[i].d[1] = array[i].d[1] - 1.0; + } +} + +/** + * This function converts the double precision floating point numbers which + * distribute uniformly in the range [1, 2) to those which distribute uniformly + * in the range (0, 1]. + * @param array array of double precision floating point numbers + * @param size size of the array + */ +inline static void convert_oc(w128_t array[], int size) { + int i; + + for (i = 0; i < size; i++) { + array[i].d[0] = 2.0 - array[i].d[0]; + array[i].d[1] = 2.0 - array[i].d[1]; + } +} + +/** + * This function converts the double precision floating point numbers which + * distribute uniformly in the range [1, 2) to those which distribute uniformly + * in the range (0, 1). + * @param array array of double precision floating point numbers + * @param size size of the array + */ +inline static void convert_oo(w128_t array[], int size) { + int i; + + for (i = 0; i < size; i++) { + array[i].u[0] |= 1; + array[i].u[1] |= 1; + array[i].d[0] -= 1.0; + array[i].d[1] -= 1.0; + } +} +#endif + +#if !defined(HAVE_ALTIVEC) && !defined(HAVE_SSE2) +/** + * This function fills the internal state array with double precision + * floating point pseudorandom numbers of the IEEE 754 format. + */ +inline static void gen_rand_all(void) { + int i; + w128_t lung; + + lung = sfmt[SFMT_N]; + do_recursion(&sfmt[0], &sfmt[0], &sfmt[SFMT_POS1], &sfmt[SFMT_N -1], &lung); + for (i = 1; i < SFMT_N - SFMT_POS1; i++) { + do_recursion(&sfmt[i], &sfmt[i], &sfmt[i + SFMT_POS1], &sfmt[i - 1], + &lung); + } + for (; i < SFMT_N; i++) { + do_recursion(&sfmt[i], &sfmt[i], &sfmt[i + SFMT_POS1 - SFMT_N], + &sfmt[i - 1], &lung); + } + sfmt[SFMT_N] = lung; +} + +/** + * This function fills the user-specified array with double precision + * floating point pseudorandom numbers of the IEEE 754 format. + * @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(w128_t array[], int size) { + int i, j; + w128_t lung; + + lung = sfmt[SFMT_N]; + do_recursion(&array[0], &sfmt[0], &sfmt[SFMT_POS1], &sfmt[SFMT_N - 1], + &lung); + for (i = 1; i < SFMT_N - SFMT_POS1; i++) { + do_recursion(&array[i], &sfmt[i], &sfmt[i + SFMT_POS1], &array[i - 1], + &lung); + } + for (; i < SFMT_N; i++) { + do_recursion(&array[i], &sfmt[i], &array[i + SFMT_POS1 - SFMT_N], + &array[i - 1], &lung); + } + for (; i < size - SFMT_N; i++) { + do_recursion(&array[i], &array[i - SFMT_N], + &array[i + SFMT_POS1 - SFMT_N], &array[i - 1], &lung); + } + for (j = 0; j < 2 * SFMT_N - size; j++) { + sfmt[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], &array[i - 1], &lung); + sfmt[j] = array[i]; + } + sfmt[SFMT_N] = lung; +} +#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 ini_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 ini_func2(uint32_t x) { + return (x ^ (x >> 27)) * (uint32_t)1566083941UL; +} + +/** + * This function initializes the internal state array to fit the IEEE + * 754 format. + */ +void initial_mask(void) { + int i; + uint64_t *psfmt; + + psfmt = &sfmt[0].u[0]; + for (i = 0; i < (SFMT_N + 1) * 2; i++) { + psfmt[i] = (psfmt[i] & SFMT_LOW_MASK) | SFMT_HIGH_CONST; + } +} + +/** + * This function certificate the period of 2^{SFMT_MEXP}-1. + */ +static void period_certification() { + int i, j; + uint64_t pcv[2] = {SFMT_PCV1, SFMT_PCV2}; + uint64_t inner; + uint64_t new_lung[2]; + uint64_t work; + uint64_t fix[2]; + + fix[0] = (((SFMT_HIGH_CONST >> SFMT_SR1) & SFMT_MSK2) + ^ (SFMT_HIGH_CONST >> SFMT_SR2)) | SFMT_HIGH_CONST; + fix[1] = (((SFMT_HIGH_CONST >> SFMT_SR1) & SFMT_MSK1) + ^ (SFMT_HIGH_CONST >> SFMT_SR2)) | SFMT_HIGH_CONST; + fix[0] = fix[0] ^ (SFMT_HIGH_CONST >> (64 - 8 * SFMT_SL2)); + new_lung[0] = sfmt[SFMT_N].u[0] ^ fix[0]; + new_lung[1] = sfmt[SFMT_N].u[1] ^ fix[1]; + inner = new_lung[0] & pcv[0]; + inner ^= new_lung[1] & pcv[1]; + for (i = 32; i > 0; i >>= 1) { + inner ^= inner >> i; + } + inner &= 1; + /* check OK */ + if (inner == 1) { + return; + } + /* check NG, and modification */ + for (i = 0; i < 2; i++) { + work = 1; + for (j = 0; j < 52; j++) { + if ((work & pcv[i]) != 0) { + sfmt[SFMT_N].u[i] ^= work; + return; + } + work = work << 1; + } + } +} + +/*---------------- + PUBLIC FUNCTIONS + ----------------*/ +/** + * This function returns the identification string. The string shows + * the Mersenne exponent, and all parameters of this generator. + * @return id string. + */ +const char *get_idstring(void) { + return SFMT_IDSTR; +} + +/** + * This function returns the minimum size of array used for \b + * fill_array functions. + * @return minimum size of array used for fill_array functions. + */ +int get_min_array_size(void) { + return SFMT_N64; +} + +/** + * This function generates and returns double precision pseudorandom + * number which distributes uniformly in the range [1, 2). This is + * the primitive and faster than generating numbers in other ranges. + * init_gen_rand() or init_by_array() must be called before this + * function. + * @return double precision floating point pseudorandom number + */ +inline double genrand_close1_open2(void) { + double r; + + assert(is_sfmt_initialized); + + if (sfmt_idx >= SFMT_N * 2) { + gen_rand_all(); + sfmt_idx = 0; + } + r = psfmt64[sfmt_idx++]; + return r; +} + +/** + * This function generates double precision floating point + * pseudorandom numbers which distribute in the range [1, 2) to the + * specified array[] by one call. The number of pseudorandom numbers + * is specified by the argument \b size, which must be at least (SFMT_MEXP + * / 128) * 2 and a multiple of two. The function + * get_min_array_size() returns this minimum size. The generation by + * this function is much faster than the following fill_array_xxx functions. + * + * 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 genrand_xxx functions, without initialization. + * + * @param array an array where pseudorandom numbers 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 (SFMT_MEXP / 128) * 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 fill_array_close1_open2(double array[], int size) { + assert(size % 2 == 0); + assert(size >= SFMT_N64); + gen_rand_array((w128_t *)array, size / 2); +} + +/** + * This function generates double precision floating point + * pseudorandom numbers which distribute in the range (0, 1] to the + * specified array[] by one call. This function is the same as + * fill_array_close1_open2() except the distribution range. + * + * @param array an array where pseudorandom numbers are filled + * by this function. + * @param size the number of pseudorandom numbers to be generated. + * see also \sa fill_array_close1_open2() + */ +void fill_array_open_close(double array[], int size) { + assert(size % 2 == 0); + assert(size >= SFMT_N64); + gen_rand_array((w128_t *)array, size / 2); + convert_oc((w128_t *)array, size / 2); +} + +/** + * This function generates double precision floating point + * pseudorandom numbers which distribute in the range [0, 1) to the + * specified array[] by one call. This function is the same as + * fill_array_close1_open2() except the distribution range. + * + * @param array an array where pseudorandom numbers are filled + * by this function. + * @param size the number of pseudorandom numbers to be generated. + * see also \sa fill_array_close1_open2() + */ +void fill_array_close_open(double array[], int size) { + assert(size % 2 == 0); + assert(size >= SFMT_N64); + gen_rand_array((w128_t *)array, size / 2); + convert_co((w128_t *)array, size / 2); +} + +/** + * This function generates double precision floating point + * pseudorandom numbers which distribute in the range (0, 1) to the + * specified array[] by one call. This function is the same as + * fill_array_close1_open2() except the distribution range. + * + * @param array an array where pseudorandom numbers are filled + * by this function. + * @param size the number of pseudorandom numbers to be generated. + * see also \sa fill_array_close1_open2() + */ +void fill_array_open_open(double array[], int size) { + assert(size % 2 == 0); + assert(size >= SFMT_N64); + gen_rand_array((w128_t *)array, size / 2); + convert_oo((w128_t *)array, size / 2); +} + +/** + * This function initializes the internal state array with a 32-bit + * integer seed. + * @param seed a 32-bit integer used as the seed. + */ +void init_gen_rand(uint32_t seed) { + int i; + uint32_t *psfmt; + + psfmt = &sfmt[0].u32[0]; + psfmt[sfmt_idxof(0)] = seed; + for (i = 1; i < (SFMT_N + 1) * 4; i++) { + psfmt[sfmt_idxof(i)] = 1812433253UL + * (psfmt[sfmt_idxof(i - 1)] + ^ (psfmt[sfmt_idxof(i - 1)] >> 30)) + i; + } + initial_mask(); + period_certification(); + sfmt_idx = SFMT_N64; + is_sfmt_initialized = 1; +#if defined(HAVE_SSE2) + setup_const(); +#endif +} + +/** + * This function initializes the internal state array, + * with an array of 32-bit integers used as the seeds + * @param init_key the array of 32-bit integers, used as a seed. + * @param key_length the length of init_key. + */ +void init_by_array(uint32_t init_key[], int key_length) { + int i, j, count; + uint32_t r; + uint32_t *psfmt32; + int lag; + int mid; + int size = (SFMT_N + 1) * 4; /* pulmonary */ + + + if (size >= 623) { + lag = 11; + } else if (size >= 68) { + lag = 7; + } else if (size >= 39) { + lag = 5; + } else { + lag = 3; + } + mid = (size - lag) / 2; + + psfmt32 = &sfmt[0].u32[0]; + memset(sfmt, 0x8b, sizeof(sfmt)); + if (key_length + 1 > size) { + count = key_length + 1; + } else { + count = size; + } + r = ini_func1(psfmt32[sfmt_idxof(0)] ^ psfmt32[sfmt_idxof(mid % size)] + ^ psfmt32[sfmt_idxof((size - 1) % size)]); + psfmt32[sfmt_idxof(mid % size)] += r; + r += key_length; + psfmt32[sfmt_idxof((mid + lag) % size)] += r; + psfmt32[sfmt_idxof(0)] = r; + i = 1; + count--; + for (i = 1, j = 0; (j < count) && (j < key_length); j++) { + r = ini_func1(psfmt32[sfmt_idxof(i)] + ^ psfmt32[sfmt_idxof((i + mid) % size)] + ^ psfmt32[sfmt_idxof((i + size - 1) % size)]); + psfmt32[sfmt_idxof((i + mid) % size)] += r; + r += init_key[j] + i; + psfmt32[sfmt_idxof((i + mid + lag) % size)] += r; + psfmt32[sfmt_idxof(i)] = r; + i = (i + 1) % size; + } + for (; j < count; j++) { + r = ini_func1(psfmt32[sfmt_idxof(i)] + ^ psfmt32[sfmt_idxof((i + mid) % size)] + ^ psfmt32[sfmt_idxof((i + size - 1) % size)]); + psfmt32[sfmt_idxof((i + mid) % size)] += r; + r += i; + psfmt32[sfmt_idxof((i + mid + lag) % size)] += r; + psfmt32[sfmt_idxof(i)] = r; + i = (i + 1) % size; + } + for (j = 0; j < size; j++) { + r = ini_func2(psfmt32[sfmt_idxof(i)] + + psfmt32[sfmt_idxof((i + mid) % size)] + + psfmt32[sfmt_idxof((i + size - 1) % size)]); + psfmt32[sfmt_idxof((i + mid) % size)] ^= r; + r -= i; + psfmt32[sfmt_idxof((i + mid + lag) % size)] ^= r; + psfmt32[sfmt_idxof(i)] = r; + i = (i + 1) % size; + } + initial_mask(); + period_certification(); + sfmt_idx = SFMT_N64; + is_sfmt_initialized = 1; +#if defined(HAVE_SSE2) + setup_const(); +#endif +} diff --git a/dSFMT/dSFMT.h b/dSFMT/dSFMT.h new file mode 100644 index 0000000..0916123 --- /dev/null +++ b/dSFMT/dSFMT.h @@ -0,0 +1,129 @@ +/** + * @file dSFMT.h + * + * @brief double precision SIMD oriented Fast Mersenne Twister(dSFMT) + * pseudorandom number generator based on IEEE 754 format. + * + * @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 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 DSFMT_H +#define DSFMT_H + +#include + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) + #include +#elif defined(_MSC_VER) || defined(__BORLANDC__) + typedef unsigned int uint32_t; + typedef unsigned long long uint64_t; + #define inline __inline +#else + #include + #if defined(__GNUC__) + #define inline __inline__ + #else + #define 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 + +#ifndef UINT64_C + #define UINT64_C(v) (v ## ULL) +#endif + +inline double genrand_close1_open2(void); +#if defined(__GNUC__) +inline static double genrand_close_open(void) __attribute__((always_inline)); +inline static double genrand_open_close(void) __attribute__((always_inline)); +inline static double genrand_open_open(void) __attribute__((always_inline)); +#elif defined(_MSC_VER) && _MSC_VER >= 1200 +__forceinline static double genrand_close_open(void); +__forceinline static double genrand_open_close(void); +__forceinline static double genrand_open_open(void); +#else +inline static double genrand_close_open(void); +inline static double genrand_open_close(void); +inline static double genrand_open_open(void); +#endif + +void fill_array_open_close(double array[], int size); +void fill_array_close_open(double array[], int size); +void fill_array_open_open(double array[], int size); +void fill_array_close1_open2(double array[], int size); +const char *get_idstring(void); +int get_min_array_size(void); +void init_gen_rand(uint32_t seed); +void init_by_array(uint32_t init_key[], int key_length); + +/** + * This function generates and returns double precision pseudorandom + * number which distributes uniformly in the range [0, 1). + * init_gen_rand() or init_by_array() must be called before this + * function. + * @return double precision floating point pseudorandom number + */ +inline static double genrand_close_open(void) { + return genrand_close1_open2() - 1.0; +} + +/** + * This function generates and returns double precision pseudorandom + * number which distributes uniformly in the range (0, 1]. + * init_gen_rand() or init_by_array() must be called before this + * function. + * @return double precision floating point pseudorandom number + */ +inline static double genrand_open_close(void) { + return 2.0 - genrand_close1_open2(); +} + +/** + * This function generates and returns double precision pseudorandom + * number which distributes uniformly in the range (0, 1). + * init_gen_rand() or init_by_array() must be called before this + * function. + * @return double precision floating point pseudorandom number + */ +inline static double genrand_open_open(void) { + union { + uint64_t u; + double d; + } conv; + + conv.d = genrand_close1_open2(); + conv.u |= 1; + return conv.d - 1.0; +} + +#endif /* DSFMT_H */ diff --git a/dSFMT/html/annotated.html b/dSFMT/html/annotated.html new file mode 100644 index 0000000..9687ffd --- /dev/null +++ b/dSFMT/html/annotated.html @@ -0,0 +1,26 @@ + + +dSFMT: Data Structures + + + + + + +

dSFMT Data Structures

Here are the data structures with brief descriptions: + +
W128_T128-bit data structure
+
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/d_s_f_m_t_8c.html b/dSFMT/html/d_s_f_m_t_8c.html new file mode 100644 index 0000000..c6b4e7b --- /dev/null +++ b/dSFMT/html/d_s_f_m_t_8c.html @@ -0,0 +1,895 @@ + + +dSFMT: dSFMT.c File Reference + + + + + + +

dSFMT.c File Reference

double precision SIMD-oriented Fast Mersenne Twister (dSFMT) based on IEEE 754 format. More... +

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

Data Structures

union  W128_T
 128-bit data structure More...

Typedefs

typedef W128_T w128_t
 128-bit data type

Functions

static void lshift128 (w128_t *out, const w128_t *in, int shift)
 This function simulates SIMD 128-bit left shift by the standard C.
static void gen_rand_all (void)
 This function fills the internal state array with double precision floating point pseudorandom numbers of the IEEE 754 format.
static void gen_rand_array (w128_t array[], int size)
 This function fills the user-specified array with double precision floating point pseudorandom numbers of the IEEE 754 format.
static uint32_t ini_func1 (uint32_t x)
 This function represents a function used in the initialization by init_by_array.
static uint32_t ini_func2 (uint32_t x)
 This function represents a function used in the initialization by init_by_array.
static void convert_co (w128_t array[], int size)
 This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range [0, 1).
static void convert_oc (w128_t array[], int size)
 This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range (0, 1].
static void convert_oo (w128_t array[], int size)
 This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range (0, 1).
static int sfmt_idxof (int i)
 This function simulate a 32-bit array index overlapped to 64-bit array of LITTLE ENDIAN in BIG ENDIAN machine.
static void initial_mask (void)
 This function initializes the internal state array to fit the IEEE 754 format.
static void period_certification ()
 This function certificate the period of 2^{SFMT_MEXP}-1.
static void do_recursion (w128_t *r, w128_t *a, w128_t *b, w128_t *c, w128_t *lung)
 This function represents the recursion formula.
const char * get_idstring (void)
 This function returns the identification string.
int get_min_array_size (void)
 This function returns the minimum size of array used for fill_array functions.
double genrand_close1_open2 (void)
 This function generates and returns double precision pseudorandom number which distributes uniformly in the range [1, 2).
void fill_array_close1_open2 (double array[], int size)
 This function generates double precision floating point pseudorandom numbers which distribute in the range [1, 2) to the specified array[] by one call.
void fill_array_open_close (double array[], int size)
 This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1] to the specified array[] by one call.
void fill_array_close_open (double array[], int size)
 This function generates double precision floating point pseudorandom numbers which distribute in the range [0, 1) to the specified array[] by one call.
void fill_array_open_open (double array[], int size)
 This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1) to the specified array[] by one call.
void init_gen_rand (uint32_t seed)
 This function initializes the internal state array with a 32-bit integer seed.
void init_by_array (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 w128_t sfmt [SFMT_N+1]
 the 128-bit internal state array
static double * psfmt64 = &sfmt[0].d[0]
 the double pointer to the 128-bit internal state array
static int sfmt_idx
 index counter to the internal state array as double
static int is_sfmt_initialized = 0
 a flag: it is 0 if and only if the internal state is not yet initialized.
+


Detailed Description

+double precision SIMD-oriented Fast Mersenne Twister (dSFMT) based on IEEE 754 format. +

+

Author:
Mutsuo Saito (Hiroshima University)

+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


Typedef Documentation

+ +
+
+ + + + +
typedef union W128_T w128_t
+
+
+ +

+128-bit data type +

+ +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
static void convert_co (w128_t  array[],
int  size 
) [inline, static]
+
+
+ +

+This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range [0, 1). +

+

Parameters:
+ + + +
array array of double precision floating point numbers
size size of the array
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
static void convert_oc (w128_t  array[],
int  size 
) [inline, static]
+
+
+ +

+This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range (0, 1]. +

+

Parameters:
+ + + +
array array of double precision floating point numbers
size size of the array
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
static void convert_oo (w128_t  array[],
int  size 
) [inline, static]
+
+
+ +

+This function converts the double precision floating point numbers which distribute uniformly in the range [1, 2) to those which distribute uniformly in the range (0, 1). +

+

Parameters:
+ + + +
array array of double precision floating point numbers
size size of the array
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void do_recursion (w128_t r,
w128_t a,
w128_t b,
w128_t c,
w128_t lung 
) [inline, static]
+
+
+ +

+This function represents the recursion formula. +

+

Parameters:
+ + + + + + +
r output
a a 128-bit part of the internal state array
b a 128-bit part of the internal state array
c a 128-bit part of the internal state array
lung a 128-bit part of the internal state array
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void fill_array_close1_open2 (double  array[],
int  size 
)
+
+
+ +

+This function generates double precision floating point pseudorandom numbers which distribute in the range [1, 2) to the specified array[] by one call. +

+The number of pseudorandom numbers is specified by the argument size, which must be at least (SFMT_MEXP / 128) * 2 and a multiple of two. The function get_min_array_size() returns this minimum size. The generation by this function is much faster than the following fill_array_xxx functions.

+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 genrand_xxx functions, without initialization.

+

Parameters:
+ + + +
array an array where pseudorandom numbers 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.
size the number of 64-bit pseudorandom integers to be generated. size must be a multiple of 2, and greater than or equal to (SFMT_MEXP / 128) * 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.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void fill_array_close_open (double  array[],
int  size 
)
+
+
+ +

+This function generates double precision floating point pseudorandom numbers which distribute in the range [0, 1) to the specified array[] by one call. +

+This function is the same as fill_array_close1_open2() except the distribution range.

+

Parameters:
+ + + +
array an array where pseudorandom numbers are filled by this function.
size the number of pseudorandom numbers to be generated. see also
+
+
See also:
fill_array_close1_open2()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void fill_array_open_close (double  array[],
int  size 
)
+
+
+ +

+This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1] to the specified array[] by one call. +

+This function is the same as fill_array_close1_open2() except the distribution range.

+

Parameters:
+ + + +
array an array where pseudorandom numbers are filled by this function.
size the number of pseudorandom numbers to be generated. see also
+
+
See also:
fill_array_close1_open2()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void fill_array_open_open (double  array[],
int  size 
)
+
+
+ +

+This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1) to the specified array[] by one call. +

+This function is the same as fill_array_close1_open2() except the distribution range.

+

Parameters:
+ + + +
array an array where pseudorandom numbers are filled by this function.
size the number of pseudorandom numbers to be generated. see also
+
+
See also:
fill_array_close1_open2()
+ +
+

+ +

+
+ + + + + + + + + +
static void gen_rand_all (void   )  [inline, static]
+
+
+ +

+This function fills the internal state array with double precision floating point pseudorandom numbers of the IEEE 754 format. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
static void gen_rand_array (w128_t  array[],
int  size 
) [inline, static]
+
+
+ +

+This function fills the user-specified array with double precision floating point pseudorandom numbers of the IEEE 754 format. +

+

Parameters:
+ + + +
array an 128-bit array to be filled by pseudorandom numbers.
size number of 128-bit pseudorandom numbers to be generated.
+
+ +
+

+ +

+
+ + + + + + + + + +
double genrand_close1_open2 (void   )  [inline]
+
+
+ +

+This function generates and returns double precision pseudorandom number which distributes uniformly in the range [1, 2). +

+This is the primitive and faster than generating numbers in other ranges. init_gen_rand() or init_by_array() must be called before this function.

Returns:
double precision floating point pseudorandom number
+ +
+

+ +

+
+ + + + + + + + + +
const char* get_idstring (void   ) 
+
+
+ +

+This function returns the identification string. +

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

Returns:
id string.
+ +
+

+ +

+
+ + + + + + + + + +
int get_min_array_size (void   ) 
+
+
+ +

+This function returns the minimum size of array used for fill_array functions. +

+

Returns:
minimum size of array used for fill_array functions.
+ +
+

+ +

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

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

+

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

+ +

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

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

+

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

+ +

+
+ + + + + + + + + + + + + + + + + + +
void init_by_array (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:
+ + + +
init_key the array of 32-bit integers, used as a seed.
key_length the length of init_key.
+
+ +
+

+ +

+
+ + + + + + + + + +
void init_gen_rand (uint32_t  seed  ) 
+
+
+ +

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

+

Parameters:
+ + +
seed a 32-bit integer used as the seed.
+
+ +
+

+ +

+
+ + + + + + + + + +
void initial_mask (void   )  [static]
+
+
+ +

+This function initializes the internal state array to fit the IEEE 754 format. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void lshift128 (w128_t out,
const w128_t in,
int  shift 
) [inline, static]
+
+
+ +

+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.

Parameters:
+ + + + +
out the output of this function
in the 128-bit data to be shifted
shift the shift value
+
+ +
+

+ +

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

+This function certificate the period of 2^{SFMT_MEXP}-1. +

+ +

+

+ +

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

+This function simulate a 32-bit array index overlapped to 64-bit array of LITTLE ENDIAN in BIG ENDIAN machine. +

+ +

+

+


Variable Documentation

+ +
+
+ + + + +
int is_sfmt_initialized = 0 [static]
+
+
+ +

+a flag: it is 0 if and only if the internal state is not yet initialized. +

+ +

+

+ +

+
+ + + + +
double* psfmt64 = &sfmt[0].d[0] [static]
+
+
+ +

+the double pointer to the 128-bit internal state array +

+ +

+

+ +

+
+ + + + +
w128_t sfmt[SFMT_N+1] [static]
+
+
+ +

+the 128-bit internal state array +

+ +

+

+ +

+
+ + + + +
int sfmt_idx [static]
+
+
+ +

+index counter to the internal state array as double +

+ +

+

+


Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/d_s_f_m_t_8h-source.html b/dSFMT/html/d_s_f_m_t_8h-source.html new file mode 100644 index 0000000..27a45ac --- /dev/null +++ b/dSFMT/html/d_s_f_m_t_8h-source.html @@ -0,0 +1,102 @@ + + +dSFMT: dSFMT.h Source File + + + + + + +

dSFMT.h

Go to the documentation of this file.
00001 
+00031 #ifndef DSFMT_H
+00032 #define DSFMT_H
+00033 
+00034 #include <stdio.h>
+00035 
+00036 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
+00037   #include <inttypes.h>
+00038 #elif defined(_MSC_VER) || defined(__BORLANDC__)
+00039   typedef unsigned int uint32_t;
+00040   typedef unsigned long long uint64_t;
+00041   #define inline __inline
+00042 #else
+00043   #include <inttypes.h>
+00044   #if defined(__GNUC__)
+00045     #define inline __inline__
+00046   #else
+00047     #define inline
+00048   #endif
+00049 #endif
+00050 
+00051 #ifndef PRIu64
+00052   #if defined(_MSC_VER) || defined(__BORLANDC__)
+00053     #define PRIu64 "I64u"
+00054     #define PRIx64 "I64x"
+00055   #else
+00056     #define PRIu64 "llu"
+00057     #define PRIx64 "llx"
+00058   #endif
+00059 #endif
+00060 
+00061 #ifndef UINT64_C
+00062   #define UINT64_C(v) (v ## ULL) 
+00063 #endif
+00064 
+00065 inline double genrand_close1_open2(void);
+00066 #if defined(__GNUC__)
+00067 inline static double genrand_close_open(void) __attribute__((always_inline));
+00068 inline static double genrand_open_close(void) __attribute__((always_inline));
+00069 inline static double genrand_open_open(void) __attribute__((always_inline));
+00070 #elif defined(_MSC_VER) && _MSC_VER >= 1200
+00071 __forceinline static double genrand_close_open(void);
+00072 __forceinline static double genrand_open_close(void);
+00073 __forceinline static double genrand_open_open(void);
+00074 #else
+00075 inline static double genrand_close_open(void);
+00076 inline static double genrand_open_close(void);
+00077 inline static double genrand_open_open(void);
+00078 #endif
+00079 
+00080 void fill_array_open_close(double array[], int size);
+00081 void fill_array_close_open(double array[], int size);
+00082 void fill_array_open_open(double array[], int size);
+00083 void fill_array_close1_open2(double array[], int size);
+00084 const char *get_idstring(void);
+00085 int get_min_array_size(void);
+00086 void init_gen_rand(uint32_t seed);
+00087 void init_by_array(uint32_t init_key[], int key_length);
+00088 
+00096 inline static double genrand_close_open(void) {
+00097     return genrand_close1_open2() - 1.0;
+00098 }
+00099 
+00107 inline static double genrand_open_close(void) {
+00108     return 2.0 - genrand_close1_open2();
+00109 }
+00110 
+00118 inline static double genrand_open_open(void) {
+00119     union {
+00120         uint64_t u;
+00121         double d;
+00122     } conv;
+00123 
+00124     conv.d = genrand_close1_open2();
+00125     conv.u |= 1;
+00126     return conv.d - 1.0;
+00127 }
+00128 
+00129 #endif /* DSFMT_H */
+

Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/d_s_f_m_t_8h.html b/dSFMT/html/d_s_f_m_t_8h.html new file mode 100644 index 0000000..1c3786e --- /dev/null +++ b/dSFMT/html/d_s_f_m_t_8h.html @@ -0,0 +1,516 @@ + + +dSFMT: dSFMT.h File Reference + + + + + + +

dSFMT.h File Reference

double precision SIMD oriented Fast Mersenne Twister(dSFMT) pseudorandom number generator based on IEEE 754 format. More... +

+#include <stdio.h>
+#include <inttypes.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define inline
#define PRIu64   "llu"
#define PRIx64   "llx"
#define UINT64_C(v)   (v ## ULL)

Functions

double genrand_close1_open2 (void)
 This function generates and returns double precision pseudorandom number which distributes uniformly in the range [1, 2).
static double genrand_close_open (void)
 This function generates and returns double precision pseudorandom number which distributes uniformly in the range [0, 1).
static double genrand_open_close (void)
 This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1].
static double genrand_open_open (void)
 This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1).
void fill_array_open_close (double array[], int size)
 This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1] to the specified array[] by one call.
void fill_array_close_open (double array[], int size)
 This function generates double precision floating point pseudorandom numbers which distribute in the range [0, 1) to the specified array[] by one call.
void fill_array_open_open (double array[], int size)
 This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1) to the specified array[] by one call.
void fill_array_close1_open2 (double array[], int size)
 This function generates double precision floating point pseudorandom numbers which distribute in the range [1, 2) to the specified array[] by one call.
const char * get_idstring (void)
 This function returns the identification string.
int get_min_array_size (void)
 This function returns the minimum size of array used for fill_array functions.
void init_gen_rand (uint32_t seed)
 This function initializes the internal state array with a 32-bit integer seed.
void init_by_array (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.
+


Detailed Description

+double precision SIMD oriented Fast Mersenne Twister(dSFMT) pseudorandom number generator based on IEEE 754 format. +

+

Author:
Mutsuo Saito (Hiroshima University)

+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 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 inline
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define PRIu64   "llu"
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define PRIx64   "llx"
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
#define UINT64_C (  )    (v ## ULL)
+
+
+ +

+ +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void fill_array_close1_open2 (double  array[],
int  size 
)
+
+
+ +

+This function generates double precision floating point pseudorandom numbers which distribute in the range [1, 2) to the specified array[] by one call. +

+The number of pseudorandom numbers is specified by the argument size, which must be at least (SFMT_MEXP / 128) * 2 and a multiple of two. The function get_min_array_size() returns this minimum size. The generation by this function is much faster than the following fill_array_xxx functions.

+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 genrand_xxx functions, without initialization.

+

Parameters:
+ + + +
array an array where pseudorandom numbers 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.
size the number of 64-bit pseudorandom integers to be generated. size must be a multiple of 2, and greater than or equal to (SFMT_MEXP / 128) * 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.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void fill_array_close_open (double  array[],
int  size 
)
+
+
+ +

+This function generates double precision floating point pseudorandom numbers which distribute in the range [0, 1) to the specified array[] by one call. +

+This function is the same as fill_array_close1_open2() except the distribution range.

+

Parameters:
+ + + +
array an array where pseudorandom numbers are filled by this function.
size the number of pseudorandom numbers to be generated. see also
+
+
See also:
fill_array_close1_open2()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void fill_array_open_close (double  array[],
int  size 
)
+
+
+ +

+This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1] to the specified array[] by one call. +

+This function is the same as fill_array_close1_open2() except the distribution range.

+

Parameters:
+ + + +
array an array where pseudorandom numbers are filled by this function.
size the number of pseudorandom numbers to be generated. see also
+
+
See also:
fill_array_close1_open2()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void fill_array_open_open (double  array[],
int  size 
)
+
+
+ +

+This function generates double precision floating point pseudorandom numbers which distribute in the range (0, 1) to the specified array[] by one call. +

+This function is the same as fill_array_close1_open2() except the distribution range.

+

Parameters:
+ + + +
array an array where pseudorandom numbers are filled by this function.
size the number of pseudorandom numbers to be generated. see also
+
+
See also:
fill_array_close1_open2()
+ +
+

+ +

+
+ + + + + + + + + +
double genrand_close1_open2 (void   )  [inline]
+
+
+ +

+This function generates and returns double precision pseudorandom number which distributes uniformly in the range [1, 2). +

+This is the primitive and faster than generating numbers in other ranges. init_gen_rand() or init_by_array() must be called before this function.

Returns:
double precision floating point pseudorandom number
+ +
+

+ +

+
+ + + + + + + + + +
static double genrand_close_open (void   )  [inline, static]
+
+
+ +

+This function generates and returns double precision pseudorandom number which distributes uniformly in the range [0, 1). +

+init_gen_rand() or init_by_array() must be called before this function.

Returns:
double precision floating point pseudorandom number
+ +
+

+ +

+
+ + + + + + + + + +
static double genrand_open_close (void   )  [inline, static]
+
+
+ +

+This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1]. +

+init_gen_rand() or init_by_array() must be called before this function.

Returns:
double precision floating point pseudorandom number
+ +
+

+ +

+
+ + + + + + + + + +
static double genrand_open_open (void   )  [inline, static]
+
+
+ +

+This function generates and returns double precision pseudorandom number which distributes uniformly in the range (0, 1). +

+init_gen_rand() or init_by_array() must be called before this function.

Returns:
double precision floating point pseudorandom number
+ +
+

+ +

+
+ + + + + + + + + +
const char* get_idstring (void   ) 
+
+
+ +

+This function returns the identification string. +

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

Returns:
id string.
+ +
+

+ +

+
+ + + + + + + + + +
int get_min_array_size (void   ) 
+
+
+ +

+This function returns the minimum size of array used for fill_array functions. +

+

Returns:
minimum size of array used for fill_array functions.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void init_by_array (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:
+ + + +
init_key the array of 32-bit integers, used as a seed.
key_length the length of init_key.
+
+ +
+

+ +

+
+ + + + + + + + + +
void init_gen_rand (uint32_t  seed  ) 
+
+
+ +

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

+

Parameters:
+ + +
seed a 32-bit integer used as the seed.
+
+ +
+

+


Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/doxygen.css b/dSFMT/html/doxygen.css new file mode 100644 index 0000000..5d58369 --- /dev/null +++ b/dSFMT/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +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 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.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%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } + diff --git a/dSFMT/html/doxygen.png b/dSFMT/html/doxygen.png new file mode 100644 index 0000000..f0a274b Binary files /dev/null and b/dSFMT/html/doxygen.png differ diff --git a/dSFMT/html/files.html b/dSFMT/html/files.html new file mode 100644 index 0000000..8a8d4cc --- /dev/null +++ b/dSFMT/html/files.html @@ -0,0 +1,27 @@ + + +dSFMT: File Index + + + + + + +

dSFMT File List

Here is a list of all files with brief descriptions: + + +
dSFMT.cDouble precision SIMD-oriented Fast Mersenne Twister (dSFMT) based on IEEE 754 format
dSFMT.h [code]Double precision SIMD oriented Fast Mersenne Twister(dSFMT) pseudorandom number generator based on IEEE 754 format
+
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/functions.html b/dSFMT/html/functions.html new file mode 100644 index 0000000..5c5042a --- /dev/null +++ b/dSFMT/html/functions.html @@ -0,0 +1,36 @@ + + +dSFMT: Data Fields + + + + + + +
+ +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: +

+

+
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/functions_vars.html b/dSFMT/html/functions_vars.html new file mode 100644 index 0000000..d183f4d --- /dev/null +++ b/dSFMT/html/functions_vars.html @@ -0,0 +1,36 @@ + + +dSFMT: Data Fields - Variables + + + + + + +
+ +
+  +

+

+
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/globals.html b/dSFMT/html/globals.html new file mode 100644 index 0000000..f8ce9ee --- /dev/null +++ b/dSFMT/html/globals.html @@ -0,0 +1,103 @@ + + +dSFMT: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- c -

+

- d -

+

- f -

+

- g -

+

- i -

+

- l -

+

- p -

+

- s -

+

- u -

+

- w -

+
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/globals_defs.html b/dSFMT/html/globals_defs.html new file mode 100644 index 0000000..eaf5cfd --- /dev/null +++ b/dSFMT/html/globals_defs.html @@ -0,0 +1,40 @@ + + +dSFMT: Data Fields + + + + + + + +  +

+

+
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/globals_func.html b/dSFMT/html/globals_func.html new file mode 100644 index 0000000..099b0c6 --- /dev/null +++ b/dSFMT/html/globals_func.html @@ -0,0 +1,60 @@ + + +dSFMT: Data Fields + + + + + + + +  +

+

+
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/globals_type.html b/dSFMT/html/globals_type.html new file mode 100644 index 0000000..8d5537e --- /dev/null +++ b/dSFMT/html/globals_type.html @@ -0,0 +1,37 @@ + + +dSFMT: Data Fields + + + + + + + +  +

+

+
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/globals_vars.html b/dSFMT/html/globals_vars.html new file mode 100644 index 0000000..b868bc9 --- /dev/null +++ b/dSFMT/html/globals_vars.html @@ -0,0 +1,40 @@ + + +dSFMT: Data Fields + + + + + + + +  +

+

+
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/howto-compile.html b/dSFMT/html/howto-compile.html new file mode 100644 index 0000000..831bc15 --- /dev/null +++ b/dSFMT/html/howto-compile.html @@ -0,0 +1,414 @@ + + + + + + How to compile dSFMT + + + +

How to compile dSFMT

+ +

+ This document explains how to compile dSFMT 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 dSFMT.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
+
+

+ or try to type +

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

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

+
+
./test-std-M19937 -v
+
+

+ 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 + dSFMT.19937.out.txt, like this:

+
+
./test-std-M19937 -v > foo.txt
+diff -w foo.txt dSFMT.19937.out.txt
+
+

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

+

+ If you want to know the generation speed of dSFMT, 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
+./test-std-M19937 -s
+
+

+ If you are using gcc 4.0, you will get more performance of dSFMT + by giving additional options + --param max-inline-insns-single=1800, + --param inline-unit-growth=500 and + --param large-function-growth=900. +

+ +

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-M19937. 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
+
+

If everything works well,

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

shows much shorter time than test-std-M19937 -s.

+ +

1-3. Compile AltiVec test program.

+

+ If you are using Macintosh computer with PowerPC G4 or G5, and + your gcc version is later 3.3, you can make test-alti-M19937. To + do this, type +

+
+
make osx-alti
+
+

or type

+
+
gcc -O3 -faltivec -fno-strict-aliasing -DHAVE_ALTIVEC=1 -DSFMT_MEXP=19937 -o test-alti-M19937 test.c
+
+

If everything works well,

+
+
./test-alti-M19937 -s
+
+

shows much shorter time than test-std-M19937 -s.

+ +

1-4. Compile and check output automatically.

+

+ To make test program and check output + automatically for all supported SFMT_MEXPs of dSFMT, type +

+
+
make std-check
+
+

+ To check test program optimized for SSE2, type +

+
+
make sse2-check
+
+

+ To check test program optimized for OSX PowerPC AltiVec, type +

+
+
make osx-alti-check
+
+

+ These commands may take some time. +

+ +

2. Second Step: Use dSFMT 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 "dSFMT.h"
+
+int main(int argc, char* argv[]) {
+    int i, cnt, seed;
+    double x, y, pi;
+    const int NUM = 10000;
+
+    if (argc >= 2) {
+	seed = strtol(argv[1], NULL, 10);
+    } else {
+	seed = 12345;
+    }
+    cnt = 0;
+    init_gen_rand(seed);
+    for (i = 0; i < NUM; i++) {
+	x = genrand_close_open();
+	y = genrand_close_open();
+	if (x * x + y * y < 1.0) {
+	    cnt++;
+	}
+    }
+    pi = (double)cnt / NUM * 4;
+    printf("%f\n", pi);
+    return 0;
+}
+      
+
+

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

+
+
gcc -DSFMT_MEXP=607 -o sample1 dSFMT.c sample1.c
+
+

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

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

If your Computer is Apple PowerPC G4 or G5 and you want to use + optimized dSFMT for AltiVec, type

+
+
gcc -faltivec -DSFMT_MEXP=607 -DHAVE_ALTIVEC -o sample1 dSFMT.c sample1.c
+
+ +

2-2. Use block call and static link.

+

+ Here is sample2.c which modifies sample1.c. + The block call fill_array_close_open 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 "dSFMT.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;
+    double *array;
+
+    if (argc >= 2) {
+	seed = strtol(argv[1], NULL, 10);
+    } else {
+	seed = 12345;
+    }
+    size = get_min_array_size();
+    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;
+    init_gen_rand(seed);
+    fill_array_close_open(array, size);
+    for (i = 0; i < NUM; i++) {
+	x = array[j++];
+	y = array[j++];
+	if (x * x + y * y < 1.0) {
+	    cnt++;
+	}
+    }
+    free(array);
+    pi = (double)cnt / NUM * 4;
+    printf("%f\n", pi);
+    return 0;
+}
+      
+
+

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

+
+
gcc -DSFMT_MEXP=2281 -o sample2 dSFMT.c sample2.c
+
+

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

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

If your computer is Apple PowerPC G4 or G5 and you want to use + optimized dSFMT for AltiVec, type

+
+
gcc -faltivec -DSFMT_MEXP=2281 -DHAVE_ALTIVEC -o sample2 dSFMT.c sample2.c
+
+

2-3. Use sequential call and inline functions.

+

+ Here is sample3.c which modifies sample1.c. + This is very similar to sample1.c. The difference is only one line. + It include "dSFMT.c" instead of "dSFMT.h" + . +

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

To compile sample3.c, type

+
+
gcc -DSFMT_MEXP=19937 -o sample3 sample3.c
+
+

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

+
+
gcc -msse2 -DSFMT_MEXP=19937 -DHAVE_SSE2 -o sample3 sample3.c
+
+

If your computer is Apple PowerPC G4 or G5, and you want to use + optimized dSFMT for AltiVec, type

+
+
gcc -faltivec -DSFMT_MEXP=19937 -DHAVE_ALTIVEC -o sample3 sample3.c
+
+

+ Inline sequential call is little bit faster than static link, + but it's not a good manner. And fill_array_xxx is faster than + inline sequential call. +

+

2-4. Initialize dSFMT using 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, dSFMT + provides init_by_array function. This sample + uses 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 "dSFMT.h"
+
+int main(int argc, char* argv[]) {
+    int i, cnt, seed_cnt;
+    double x, y, pi;
+    const int NUM = 10000;
+    uint32_t seeds[100];
+
+    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;
+    init_by_array(seeds, seed_cnt);
+    for (i = 0; i < NUM; i++) {
+	x = genrand_close_open();
+	y = genrand_close_open();
+	if (x * x + y * y < 1.0) {
+	    cnt++;
+	}
+    }
+    pi = (double)cnt / NUM * 4;
+    printf("%f\n", pi);
+    return 0;
+}
+      
+
+

To compile sample4.c, type

+
+
gcc -DSFMT_MEXP=1279 -o sample4 dSFMT.c sample4.c
+
+

Now, seed can be a string. Like this:

+
+
./sample4 your-full-name
+
+ + diff --git a/dSFMT/html/index.html b/dSFMT/html/index.html new file mode 100644 index 0000000..c5a81de --- /dev/null +++ b/dSFMT/html/index.html @@ -0,0 +1,62 @@ + + +dSFMT: Main Page + + + + + +

dSFMT Documentation

+

+

1.2

This is double precision SIMD oriented Fast Mersenne Twister pseudorandom number generator (dSFMT). This program is based on the IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985) format.

+This Project provides pseudorandom number generators of various Mersenne Prime Period: from 2607-1 to 2216091-1.

+To get dSFMT which has the period of 2607-1, you have to specify -DMEXP=607 as a compile option. For example,

 gcc -DSFMT_MEXP=607 -msse2 -DHAVE_SSE2 -c dSFMT.c 
+
will make dSFMT which has the period of 2607-1 and is optimized for SSE2.

+See How to compile to compile your program with SFMT optimized for SIMD.

+

    +
  • void init_gen_rand() initializes the generator with a 32-bit integer seed.
  • void init_by_array() initializes the generator with an array of 32-bit integers as the seeds.
  • const char * get_idstring() returns the IDSTRING which identify the generator.
  • int get_min_array_size() returns the minimum size of array used for fill_array functions.
  • inline double genrand_close1_open2() generates and returns a double precision pseudorandom number which distributes uniformly in the range [1, 2). This is the primitive and faster than generating numbers in other ranges.
  • inline double genrand_close_open() generates and returns a double precision pseudorandom number which distributes uniformly in the range [0, 1).
  • inline double genrand_open_close() generates and returns a double precision pseudorandom number which distributes uniformly in the range (0, 1].
  • inline double genrand_open_open() generates and returns a double precision pseudorandom number which distributes uniformly in the range (0, 1).
  • void fill_array_close1_open2() fills the user-specified array with double precision pseudorandom numbers which distribute uniformly in the range [1, 2).
  • void fill_array_close_open() fills the user-specified array with double precision pseudorandom numbers which distribute uniformly in the range [0, 1).
  • void fill_array_open_close() fills the user-specified array with double precision pseudorandom numbers which distribute uniformly in the range (0, 1].
  • void fill_array_open_open() fills the user-specified array with double precision pseudorandom numbers which distribute uniformly in the range (0, 1).
+

+

Author:
Mutsuo Saito (saito@our-domain) Hiroshima University

+Makoto Matsumoto (m-mat@our-domain) Hiroshima University

+Please change our-domain to math.sci.hiroshima-u.ac.jp

+

Date:
2007-08-22
+Copyright (C) 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. All rights reserved.

+The new BSD License is applied to this software.

Copyright (c) 2007, Mutsuo Saito, Makoto Matsumoto and Hiroshima University.
+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 name of the Hiroshima University 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.
+

Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/mainpage_8txt.html b/dSFMT/html/mainpage_8txt.html new file mode 100644 index 0000000..bbfe618 --- /dev/null +++ b/dSFMT/html/mainpage_8txt.html @@ -0,0 +1,26 @@ + + +dSFMT: mainpage.txt File Reference + + + + + + +

mainpage.txt File Reference

+ +
+
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/html/tab_b.gif b/dSFMT/html/tab_b.gif new file mode 100644 index 0000000..0d62348 Binary files /dev/null and b/dSFMT/html/tab_b.gif differ diff --git a/dSFMT/html/tab_l.gif b/dSFMT/html/tab_l.gif new file mode 100644 index 0000000..9b1e633 Binary files /dev/null and b/dSFMT/html/tab_l.gif differ diff --git a/dSFMT/html/tab_r.gif b/dSFMT/html/tab_r.gif new file mode 100644 index 0000000..ce9dd9f Binary files /dev/null and b/dSFMT/html/tab_r.gif differ diff --git a/dSFMT/html/tabs.css b/dSFMT/html/tabs.css new file mode 100644 index 0000000..a61552a --- /dev/null +++ b/dSFMT/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/dSFMT/html/union_w128___t.html b/dSFMT/html/union_w128___t.html new file mode 100644 index 0000000..06afb9a --- /dev/null +++ b/dSFMT/html/union_w128___t.html @@ -0,0 +1,87 @@ + + +dSFMT: W128_T Union Reference + + + + + + +

W128_T Union Reference

128-bit data structure +More... +

+ + + + + + + + + +

Data Fields

uint64_t u [2]
uint32_t u32 [4]
double d [2]
+


Detailed Description

+128-bit data structure +

+


Field Documentation

+ +
+
+ + + + +
double W128_T::d[2]
+
+
+ +

+ +

+

+ +

+
+ + + + +
uint64_t W128_T::u[2]
+
+
+ +

+ +

+

+ +

+
+ + + + +
uint32_t W128_T::u32[4]
+
+
+ +

+ +

+

+


The documentation for this union was generated from the following file: +
Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  + +doxygen 1.4.7
+ + diff --git a/dSFMT/test.c b/dSFMT/test.c new file mode 100644 index 0000000..d962dd5 --- /dev/null +++ b/dSFMT/test.c @@ -0,0 +1,606 @@ +#include +#include +#include +#include +#include +#include "dSFMT.c" + +#define NUM_RANDS 50000 +#define TIC_MAG 1 +#define TIC_COUNT 2000 + +w128_t dummy[NUM_RANDS / 2 + 1]; + +#ifdef __GNUC__ +void check_co(void) __attribute__((noinline)); +void check_oc(void) __attribute__((noinline)); +void check_oo(void) __attribute__((noinline)); +void check_12(void) __attribute__((noinline)); +void test_co(void) __attribute__((noinline)); +void test_oc(void) __attribute__((noinline)); +void test_oo(void) __attribute__((noinline)); +void test_12(void) __attribute__((noinline)); +void test_seq_co(void) __attribute__((noinline)); +void test_seq_oc(void) __attribute__((noinline)); +void test_seq_oo(void) __attribute__((noinline)); +void test_seq_12(void) __attribute__((noinline)); +#else +void check_co(void); +void check_oc(void); +void check_oo(void); +void check_12(void); +void test_co(void); +void test_oc(void); +void test_oo(void); +void test_12(void); +void test_seq_co(void); +void test_seq_oc(void); +void test_seq_oo(void); +void test_seq_12(void); +#endif + +void check_co(void) { + int i; + union W64_T { + uint64_t u; + double d; + }; + w128_t little[SFMT_N+1]; + union W64_T *array = (union W64_T *)dummy; + union W64_T *plittle = (union W64_T *)little; + union W64_T r; + int lsize = SFMT_N * 2 + 2; + + printf("generated randoms [0,1)\n"); + init_gen_rand(1234); + fill_array_close_open(&plittle[0].d, lsize); + fill_array_close_open(&array[0].d, 5000); + init_gen_rand(1234); + for (i = 0; i < lsize; i++) { + r.d = genrand_close_open(); + if (r.d != plittle[i].d) { + printf("\n[0,1) mismatch i = %d: r = %1.15f(%016"PRIx64"), " + "plittle = %1.15f(%016"PRIx64")\n", i, r.d, r.u, + plittle[i].d, plittle[i].u); + exit(1); + } + if (i < 1000) { + printf("%1.15f ", plittle[i].d); + if (i % 4 == 3) { + printf("\n"); + } + } + } + for (i = 0; i < 5000; i++) { + r.d = genrand_close_open(); + if (r.d != array[i].d) { + printf("\n[0,1) mismatch i = %d: r = %1.15f(%016"PRIx64"), " + "array = %1.15f(%016"PRIx64")\n", i + lsize, r.d, r.u, + array[i].d, array[i].u); + exit(1); + } + if (i + lsize < 1000) { + printf("%1.15f ", array[i].d); + if ((i + lsize) % 4 == 3) { + printf("\n"); + } + } + } +} + +void check_oc(void) { + int i; + union W64_T { + uint64_t u; + double d; + }; + union W64_T *array = (union W64_T *)dummy; + union W64_T r; + + printf("generated randoms (0, 1]\n"); + init_gen_rand(1234); + fill_array_open_close(&array[0].d, 5000); + init_gen_rand(1234); + for (i = 0; i < 5000; i++) { + r.d = genrand_open_close(); + if (r.d != array[i].d) { + printf("\n(0,1] mismatch i = %d: r = %1.15f(%016"PRIx64"), " + "array = %1.15f(%016"PRIx64")\n", i, r.d, r.u, + array[i].d, array[i].u); + exit(1); + } + if (i < 1000) { + printf("%1.15f ", array[i].d); + if (i % 4 == 3) { + printf("\n"); + } + } + } +} + +void check_oo(void) { + int i; + union W64_T { + uint64_t u; + double d; + }; + union W64_T *array = (union W64_T *)dummy; + union W64_T r; + + printf("generated randoms (0,1)\n"); + init_gen_rand(1234); + fill_array_open_open(&array[0].d, 5000); + init_gen_rand(1234); + for (i = 0; i < 5000; i++) { + r.d = genrand_open_open(); + if (r.d != array[i].d) { + printf("\n(0,1) mismatch i = %d: r = %1.15f(%016"PRIx64"), " + "array = %1.15f(%016"PRIx64")\n", i, r.d, r.u, + array[i].d, array[i].u); + exit(1); + } + if (i < 1000) { + printf("%1.15f ", array[i].d); + if (i % 4 == 3) { + printf("\n"); + } + } + } +} + +void check_12(void) { + int i; + union W64_T { + uint64_t u; + double d; + }; + w128_t little[SFMT_N+1]; + union W64_T *array = (union W64_T *)dummy; + union W64_T *plittle = (union W64_T *)little; + union W64_T r; + int lsize = SFMT_N * 2 + 2; + + printf("generated randoms [1, 2)\n"); + init_gen_rand(1234); + fill_array_close1_open2(&plittle[0].d, lsize); + fill_array_close1_open2(&array[0].d, 5000); + init_gen_rand(1234); + for (i = 0; i < lsize; i++) { + r.d = genrand_close1_open2(); + if (r.d != plittle[i].d) { + printf("\n[1, 2) mismatch i = %d: r = %1.15f(%016"PRIx64"), " + "plittle = %1.15f(%016"PRIx64")\n", i, r.d, r.u, + plittle[i].d, plittle[i].u); + exit(1); + } + if (i < 1000) { + printf("%1.15f ", plittle[i].d); + if (i % 4 == 3) { + printf("\n"); + } + } + } + for (i = 0; i < 5000; i++) { + r.d = genrand_close1_open2(); + if (r.d != array[i].d) { + printf("\n[1, 2) mismatch i = %d: r = %1.15f(%016"PRIx64"), " + "array = %1.15f(%016"PRIx64")\n", i + lsize, r.d, r.u, + array[i].d, array[i].u); + exit(1); + } + if (i + lsize < 1000) { + printf("%1.15f ", array[i].d); + if ((i + lsize) % 4 == 3) { + printf("\n"); + } + } + } +} + +void test_co(void) { + uint32_t i, j; + uint64_t clo; + uint64_t sum; + uint64_t min; + double *array = (double *)dummy; + + init_gen_rand(1234); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + fill_array_close_open(array, NUM_RANDS); + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + printf("BLOCK [0, 1) AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); +} + +void test_oc(void) { + uint32_t i, j; + uint64_t clo; + uint64_t sum; + uint64_t min; + double *array = (double *)dummy; + + init_gen_rand(1234); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + fill_array_open_close(array, NUM_RANDS); + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + printf("BLOCK (0, 1] AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); +} + +void test_oo(void) { + uint32_t i, j; + uint64_t clo; + uint64_t sum; + uint64_t min; + double *array = (double *)dummy; + + init_gen_rand(1234); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + fill_array_open_open(array, NUM_RANDS); + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + printf("BLOCK (0, 1) AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); +} + +void test_12(void) { + uint32_t i, j; + uint64_t clo; + uint64_t sum; + uint64_t min; + double *array = (double *)dummy; + + init_gen_rand(1234); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + fill_array_close1_open2(array, NUM_RANDS); + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + printf("BLOCK [1, 2) AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); +} + +void test_seq_co(void) { + uint32_t i, j, k; + uint64_t clo; + uint64_t sum; + uint64_t min; + double *array = (double *)dummy; + double r; + double total = 0; + + min = LONG_MAX; + sum = 0; + r = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + r += genrand_close_open(); + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = r; + printf("SEQ [0, 1) 1 AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + array[k] = genrand_close_open(); + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = 0; + for (k = 0; k < NUM_RANDS; k++) { + total += array[k]; + } + printf("SEQ [0, 1) 2 AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + array[k] = 1.0; + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = 0; + for (k = 0; k < NUM_RANDS; k++) { + total += array[k]; + } + printf("ADD AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); +} + +void test_seq_oc(void) { + uint32_t i, j, k; + uint64_t clo; + uint64_t sum; + uint64_t min; + double *array = (double *)dummy; + double r; + double total = 0; + + min = LONG_MAX; + sum = 0; + r = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + r += genrand_open_close(); + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = r; + printf("SEQ (0, 1] 1 AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + array[k] = genrand_open_close(); + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = 0; + for (k = 0; k < NUM_RANDS; k++) { + total += array[k]; + } + printf("SEQ (0, 1] 2 AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + array[k] = 1.0; + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = 0; + for (k = 0; k < NUM_RANDS; k++) { + total += array[k]; + } + printf("ADD AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); +} + +void test_seq_oo(void) { + uint32_t i, j, k; + uint64_t clo; + uint64_t sum; + uint64_t min; + double *array = (double *)dummy; + double r; + double total = 0; + + min = LONG_MAX; + sum = 0; + r = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + r += genrand_open_open(); + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = r; + printf("SEQ (0, 1) 1 AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + array[k] = genrand_open_open(); + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = 0; + for (k = 0; k < NUM_RANDS; k++) { + total += array[k]; + } + printf("SEQ (0, 1) 2 AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + array[k] = 1.0; + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = 0; + for (k = 0; k < NUM_RANDS; k++) { + total += array[k]; + } + printf("ADD AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); +} + +void test_seq_12(void) { + uint32_t i, j, k; + uint64_t clo; + uint64_t sum; + uint64_t min; + double *array = (double *)dummy; + double r; + double total = 0; + + min = LONG_MAX; + sum = 0; + r = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + r += genrand_close1_open2(); + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = r; + printf("SEQ [1, 2) 1 AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + array[k] = genrand_close1_open2(); + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = 0; + for (k = 0; k < NUM_RANDS; k++) { + total += array[k]; + } + printf("SEQ [1, 2) 2 AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); + min = LONG_MAX; + sum = 0; + for (i = 0; i < 10; i++) { + clo = clock(); + for (j = 0; j < TIC_COUNT; j++) { + for (k = 0; k < NUM_RANDS; k++) { + array[k] = 1.0; + } + } + clo = clock() - clo; + sum += clo; + if (clo < min) { + min = clo; + } + } + total = 0; + for (k = 0; k < NUM_RANDS; k++) { + total += array[k]; + } + printf("ADD AVE:%4"PRIu64"ms.\n", (sum * 100) / CLOCKS_PER_SEC); + printf("total = %f\n", total); +} + +int main(int argc, char *argv[]) { + if ((argc >= 2) && (strncmp(argv[1],"-v",2) == 0)) { + printf("%s\n", get_idstring()); + check_12(); + } else if ((argc >= 2) && (strncmp(argv[1],"-s",2) == 0)) { + printf("consumed time for generating %u randoms.\n", + NUM_RANDS * TIC_COUNT); + test_co(); + test_oc(); + test_oo(); + test_12(); + test_seq_co(); + test_seq_oc(); + test_seq_oo(); + test_seq_12(); + } else { + check_co(); + check_oc(); + check_oo(); + check_12(); + } + return 0; +}