diff options
Diffstat (limited to 'test/std/numerics/rand/rand.eng/rand.eng.mers')
12 files changed, 1150 insertions, 0 deletions
diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/assign.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/assign.pass.cpp new file mode 100644 index 0000000000000..fda5b88de26e8 --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/assign.pass.cpp @@ -0,0 +1,58 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine; + +// mersenne_twister_engine& operator=(const mersenne_twister_engine&); + +#include <random> +#include <cassert> + +void +test1() +{ + typedef std::mt19937 E; + E e1(2); + e1(); + E e2(5); + e2 = e1; + assert(e1 == e2); + assert(e1() == e2()); + E::result_type k = e1(); + assert(e1 != e2); + assert(e2() == k); + assert(e1 == e2); +} + +void +test2() +{ + typedef std::mt19937_64 E; + E e1(3); + e1(); + E e2(5); + e2 = e1; + assert(e1 == e2); + assert(e1() == e2()); + E::result_type k = e1(); + assert(e1 != e2); + assert(e2() == k); + assert(e1 == e2); +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/copy.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/copy.pass.cpp new file mode 100644 index 0000000000000..57c015ccce1de --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/copy.pass.cpp @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine; + +// mersenne_twister_engine(const mersenne_twister_engine&); + +#include <random> +#include <cassert> + +void +test1() +{ + typedef std::mt19937 E; + E e1; + e1(); + E e2 = e1; + assert(e1 == e2); + assert(e1() == e2()); + E::result_type k = e1(); + assert(e1 != e2); + assert(e2() == k); + assert(e1 == e2); +} + +void +test2() +{ + typedef std::mt19937_64 E; + E e1; + e1(); + E e2(e1); + assert(e1 == e2); + assert(e1() == e2()); + E::result_type k = e1(); + assert(e1 != e2); + assert(e2() == k); + assert(e1 == e2); +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp new file mode 100644 index 0000000000000..6920aaca558c9 --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp @@ -0,0 +1,245 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine; + +// explicit mersenne_twister_engine(result_type s = default_seed); + +#include <random> +#include <sstream> +#include <cassert> + +void +test1() +{ + const char* a = "0 1 1812433255 1900727105 1208447044 2481403966 4042607538 337614300 " + "3232553940 1018809052 3202401494 1775180719 3192392114 594215549 184016991 " + "829906058 610491522 3879932251 3139825610 297902587 4075895579 2943625357 " + "3530655617 1423771745 2135928312 2891506774 1066338622 135451537 933040465 " + "2759011858 2273819758 3545703099 2516396728 1272276355 3172048492 " + "3267256201 2332199830 1975469449 392443598 1132453229 2900699076 " + "1998300999 3847713992 512669506 1227792182 1629110240 112303347 2142631694 " + "3647635483 1715036585 2508091258 1355887243 1884998310 3906360088 " + "952450269 3647883368 3962623343 3077504981 2023096077 3791588343 " + "3937487744 3455116780 1218485897 1374508007 2815569918 1367263917 " + "472908318 2263147545 1461547499 4126813079 2383504810 64750479 2963140275 " + "1709368606 4143643781 835933993 1881494649 674663333 2076403047 858036109 " + "1667579889 1706666497 607785554 1995775149 1941986352 3448871082 " + "2109910019 1474883361 1623095288 1831376534 2612738285 81681830 2204289242 " + "1365038485 251164610 4268495337 1805601714 1262528768 1442526919 " + "1675006593 965627108 646339161 499795587 840887574 380522518 3023789847 " + "1457635507 1947093157 2600365344 2729853143 1550618999 1390905853 " + "3021294812 882647559 838872117 1663880796 4222103589 2754172275 3844026123 " + "3199260319 4176064873 3591027019 2690294242 2978135515 3172796441 " + "3263669796 1451257057 1427035359 4174826006 2171992010 1537002090 " + "3122405306 4162452508 3271954368 3794310005 3240514581 1270412086 " + "3030475836 2281945856 2644171349 3109139423 4253563838 1289926431 " + "1396919653 733220100 2753316645 1196225013 3699575255 3569440056 " + "2675979228 2624079148 3463113149 863430286 623703199 2113837653 2656425919 " + "175981357 4271478366 4238022735 1665483419 86880610 2963435083 1830392943 " + "847801865 3237296945 332143967 3973606945 2671879697 2236330279 2360127810 " + "3283955434 203240344 4048139172 13189264 2263058814 247241371 1566765783 " + "3084408095 3719371299 1958375251 1985924622 1712739232 1861691451 " + "2644502937 2337807839 784993770 2962208780 2190810177 1523122731 " + "714888527 578678761 3698481324 1801168075 534650483 3390213921 3923356461 " + "3586009066 2059432114 52511333 1969897376 3630122061 524661135 3513619765 " + "563070233 501359785 477489274 658768624 938973567 1548584683 1345287459 " + "2488691004 3441144905 3849305094 2430000078 855172178 614463281 2092744749 " + "176381493 1655802051 2273888101 2474494847 3471978030 2138918303 575352373 " + "1658230985 1675972553 2946663114 915579339 284981499 53939948 3022598146 " + "1861218535 3403620774 4203516930 2360471119 3134536268 1383448498 " + "1307602316 3847663247 3027225131 3597251613 3186237127 725127595 " + "1928526954 1843386923 3560410503 54688266 1791983849 2519860352 4256389699 " + "2328812602 486464275 3578698363 301279829 1303654791 4181868765 971794070 " + "1933885487 3996807464 2144053754 4079903755 3775774765 3481760044 " + "1212862354 1067356423 3764189132 1609862325 2209601551 2565747501 " + "161962392 4045451782 2605574664 2520953090 3490240017 1082791980 44474324 " + "101811128 4268650669 4171338684 772375154 3920460306 2319139534 599033750 " + "2950874441 3373922995 1496848525 4095253594 1271943484 1498723121 " + "3097453329 3698082465 281869581 3148270661 3591477288 747441437 2809508504 " + "3896107498 303747862 2368081624 1844217645 886825352 287949781 1444561207 " + "2512101757 2062331723 741720931 1383797313 3876746355 2041045348 " + "2627599118 1124169970 200524822 3484820454 55883666 1135054804 669498692 " + "2677215504 3097911127 1509628615 617580381 2229022193 85601568 3243896546 " + "3715672328 912168347 2359163500 1180347564 4243175048 2092067103 880183327 " + "4000664709 2045044777 3500474644 1515175520 1862207123 186628841 " + "3337252925 708933575 4015964629 3136815297 3314919747 2891909013 " + "3316567785 3944275369 3608506218 2884839110 3054055598 2707439927 " + "1381111877 3275487281 4292456216 2639563270 3327301876 3576924628 " + "721056309 2002808140 748967365 52380958 2200261692 763456477 1708381337 " + "2038446433 2682979402 1526413779 2211263302 3879771969 75966584 3645059271 " + "2985763524 4085690255 82390958 1883631385 1647521260 1598026998 3038041577 " + "2501913134 3279302868 1738888524 805035483 756399074 3863810982 1097797270 " + "1505792529 898904527 583561003 717152376 3333867738 1099456544 1663473545 " + "1242141229 3828627682 1966201676 1713552361 3852160017 1584965284 21695908 " + "1013262144 145341901 3995441263 3462066219 2239637848 1214086163 " + "2428868268 1650037305 1545513388 1621198806 4232947817 1823092073 " + "256414624 1745018809 1357102386 2055139770 3280958307 2482431613 " + "1664870585 859130423 4097751123 3079768369 2470211009 2984880786 " + "2808568948 2877071923 1984903163 302768457 1866396789 869566317 3746415787 " + "4169433075 3025005404 3980733379 3539207278 3953071536 876960847 " + "2548872156 800507464 1865466907 1273317878 3754712872 1757188269 " + "3229950355 3731640200 2283390608 2204990292 411873449 447423849 1852437802 " + "472825525 3044219944 2913114194 1859709265 4053786194 574820536 2104496732 " + "865469814 2438352724 4208743605 4215067542 1364015250 4139974345 " + "3838747005 1818502786 2914274940 1402365828 1751123528 2302578077 " + "2463168652 1968705496 1730700144 3023943273 1139096844 2658667767 " + "2063547264 705791165 1444775274 2415454225 1575664730 921044163 648101324 " + "1212387162 4191962054 1787702169 1888718041 1518218010 3398792842 " + "4079359729 149721439 750400353 2661036076 3802767886 520152586 951852508 " + "2939585975 1375969109 385733137 3523607459 1902438415 4250996086 " + "2712727066 484493674 3932107461 1428488210 1764242548 3424801055 " + "4004904451 2226862072 2393366939 3609584727 3614444319 317349896 " + "3826527525 204023804 981902443 3356042039 3051207045 1869902661 561831895 " + "3706675415 1527687593 1227610446 2596341042 3191717368 3269246891 " + "557877074 4062070629 3052520266 3772487029 400039836 3195205275 4085394797 " + "1655557239 1345770144 2864727192 449281238 73189507 528365765 2727400656 " + "247880434 2408277395 777039183 2210179398 1088433648 2124356402 1555630141 " + "604790219 195012151 3312518356 923728373 3999251660 3313059535 3478133921 " + "3395026960 383464614 3425869222 2446885186 4032184426 157195416 3158909476 " + "1663750443 2046427584 1658453076 1784483001 3146546889 1238739785 " + "2297306523 3472330897 2953326031 2421672215 1221694592 1588568605 " + "2546987845 3375168573 2137961649 3056565164 330165219 235900365 1000384800 " + "2697255904 579122283 3050664825 73426122 1232986102 2940571064 3076486824 " + "1708182873 2796363264 292154131 4280019913 1102652157 1185393592 " + "1494991690 4270076389 2384840717 425785147 2385321880 317514772 3926962743 " + "392176856 3465421709 1878853468 122662664 2958252160 1858961315 2244939588 " + "2361884409 2860936803 683833250 3291277128 1686857206 1112632275 " + "1200680507 3342928196 2677058150 939442136 3407104669 2906783932 " + "3668048733 2030009470 1910839172 1234925283 3575831445 123595418 " + "2362440495 3048484911 1796872496"; + std::mt19937 e1(0); + std::ostringstream os; + os << e1; + assert(os.str() == a); +} + +void +test2() +{ + const char* a = "0 1 6364136223846793007 13885033948157127961 " + "15324573939901584278 12737837167382305846 15195339788985155882 " + "6554113247712070460 17235932740818599105 13007415075556305955 " + "6585479514541334743 8274505865835507625 1718218088692873364 " + "10390651247454232081 12911994993614796389 3986900029987203370 " + "6673827651897561714 4426752746717694792 7419158062930293690 " + "5800047417539173618 15710773105226458059 16164512590413496893 " + "3438015953120274172 3483801391287623267 293704481016263807 " + "11580856846363212652 3489109114147636336 3391036861618673611 " + "8265793309278544843 7557898467821912223 11008748280761875940 " + "15929443707841919885 8545695347411085846 10810459396490399532 " + "12233244910455127352 15556950738631379285 16711543556686614082 " + "12362193084052127890 16520645558585805174 5163125267185202360 " + "405552980610370477 17567412011316060306 18195950784827697319 " + "7893142112162906367 11294475722810961618 7284845498332539581 " + "8406882439401998138 4375387785957411470 9627875716250684710 " + "8860968026642934661 9743109216691708518 152611520104818631 " + "5897430410700879663 5351672954305365323 16325991383734641720 " + "9695181037355459478 15420132328343498044 17772146581546890572 " + "12095930435311226909 3066005052193896110 11579395203346116306 " + "9168946227698330317 18318927644793076250 16096433325093805476 " + "14945900876820434843 16826760579960858105 17664119339058295604 " + "17844797344364136942 1071414400549507565 16688779616725465582 " + "3684635020921274863 12774052823168116810 17270284502989966576 " + "1081012692742984704 4377021575203177546 18341292555997099853 " + "13297939683513494274 15065725504474304333 10796297883750572804 " + "15233335271871291997 8767977593699151062 3360856014170688284 " + "7828232912764786750 15167717223619970150 9622174963375022357 " + "18262792478991268448 1196631425707106493 5368342740538672272 " + "10381091599850241237 12108437846306626340 6150860188928778248 " + "3342980288459577584 12715439159457051276 17996971042887275859 " + "9749679821487730542 17763727344608586331 16024467606290078168 " + "7763401887585513696 4448278918811662063 16947956613780322662 " + "15144807360840708645 3878082612940188435 10709780449699561405 " + "1649555943517500922 3206645931693769562 12562913950237146427 " + "237213339742767727 12987800257476421358 1653669854585203688 " + "3485900643226898485 13961759114404652223 5243794832751327611 " + "10337687908642742498 16946139522050041809 16716562961992396380 " + "4275124606042261542 4055100795824867618 6424268654905981295 " + "3424516503413156556 2670380025813203539 10750762735193959951 " + "8790031149370411970 4021216986392972993 12076090355041998696 " + "14407920322903159838 10653597737935867030 15483225617438352002 " + "2497775263858626604 12295882369431088188 14256043521530136935 " + "2687322778627883798 3419797801078863201 8786888481486602641 " + "445698423634900693 9597067954623467255 7101345576557603992 " + "1498579197046783597 10403325187679734962 2464586980321053562 " + "2022012026329844477 10802281218030350853 6628929099856200904 " + "6828177972863192803 8589868113309334601 5245595233272009016 " + "5335692004673212054 4515133017699498525 15966447436053813932 " + "15199779177078162007 4190689609934804313 13003438276435994683 " + "8406046831313066396 10564320513686955057 12668913223662201488 " + "13130110932487580228 1030848205404711145 17684061609212954769 " + "12942207438298787911 10731611242140874687 5165052527778107352 " + "16323046249518133445 17119162873327029615 5754858052433703070 " + "3864761150247579030 9945988334920003074 11409854727071782565 " + "5000838138362434817 15526574143469400487 18094554078711846524 " + "5576294272011007484 3478525338408894755 11392694223389544658 " + "4692963068671452476 4459301637730340710 9699395817392066460 " + "14644636990626292085 18065377773424192622 5217202490849387226 " + "16175595974171756081 2109372019589047677 1624752883142646445 " + "13462209973053735966 12082930933973802402 1568864426788967895 " + "17047994306870001795 10556833209957537593 955604103878351641 " + "9062985603395234592 9757612676622840969 1767246562613391916 " + "9752598821733361274 7499745701633625047 7824811626141302622 " + "15819064077972391284 5660565551854829485 17645390577243129343 " + "7343780801046581776 2233358068547689666 8716657172695403744 " + "9129027798969787220 334709674395230649 2063182499026924878 " + "13089071159640936832 1765917316143960741 17552378408917656269 " + "3917018959478722819 15626740210483166037 1645962609209923821 " + "12277169606472643961 14545894350924442736 11485249378718653961 " + "9205208816702766530 10967561305613932827 3105992977398681914 " + "2125140299311648264 11619505070220308543 5030167448920096401 " + "4248170446421798953 16184577688118775567 9240607582885304823 " + "11838996733938359277 415426114101983968 14340734742548675134 " + "4124085748228276376 17686494750190224280 9472996569628985376 " + "1207013222233148636 3031046462562068367 45068538181330439 " + "8678647417835301152 10693327126492781235 3058899219097846020 " + "18377730418355022492 10269941972656742364 15986476992758938864 " + "14575856764093007010 14749682846448398393 1042926396621439263 " + "12184905641567868001 3518848236485931862 6718580865438347534 " + "6319395993260741012 2855168874111910691 2482146419106261786 " + "17290238774162848390 8071397865265268054 15873003794708011585 " + "14422764926380465297 14140979091525022882 3573480287238168646 " + "1525896111244666696 7537826952717918371 10482908122538761078 " + "17003233041653857 9473838740924911883 8438240966750123668 " + "10697754962581554225 15048771265786776312 9067877678399943713 " + "3399555692325948067 6150260207049997483 7165140289246675175 " + "14816202987105583988 4753550992948864498 10549400354582510015 " + "13212062554023586370 1585477630313819722 476999696494664205 " + "3208739183359199317 16011681780347380478 8149150693959772807 " + "803412833228911773 2360961455092949929 1517204230639934662 " + "13863717544358808032 16792122738584967930 12742474971940259289 " + "1859755681395355028 1540431035241590810 3883807554140904361 " + "16189061625447625933 12376367376041900879 8006563585771266211 " + "2682617767291542421 8593924529704142157 9070391845133329273 " + "3557484410564396342 9301398051805853085 12632514768298643219 " + "227653509634201118 7247795074312488552 4939136716843120792 " + "6533591052147596041 1308401457054431629 17488144120120152559 " + "14075631579093810083 4015705597302725704 6833920126528811473 " + "5095302940809114298 8312250184258072842 15770605014574863643 " + "14091690436120485477 15763282477731738396 16394237160547425954 " + "5066318118328746621 13140493775100916989 6371148952471982853 " + "15150289760867914983 4931341382074091848 12635920082410445322 " + "8498109357807439006 14836776625250834986"; + std::mt19937_64 e1(0); + std::ostringstream os; + os << e1; + assert(os.str() == a); +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_sseq.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_sseq.pass.cpp new file mode 100644 index 0000000000000..45bc493afb585 --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_sseq.pass.cpp @@ -0,0 +1,309 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine; + +// template<class Sseq> explicit mersenne_twister_engine(Sseq& q); + +#include <random> +#include <sstream> +#include <cassert> + +void +test1() +{ + const char* a = "358595400 4166558815 2016177162 3414480257 " + "4027494649 3722317195 1190532340 3212207148 " + "3537847251 389019999 1098708832 3277907415 " + "1946784350 3608286140 2091419822 2227407035 " + "2229110723 1825348377 1276269279 314337202 " + "3182935337 1313150029 3118776508 3707918501 " + "1900972958 4054820954 3973178248 906260237 " + "1403942218 3139931556 2807126524 3940936448 " + "1316345796 631296613 2268418920 2914000794 " + "3760588399 3226216036 880155129 4183611084 " + "211541083 3755352858 1331383234 3036493096 " + "937478630 2092170412 777784402 93392729 " + "3644029210 1681392086 2427001226 3143870332 " + "3703581502 2017505388 1706274541 1049329728 " + "2452031492 3437261233 2581204087 1700889875 " + "1652573881 2127047692 3778506964 1960741508 " + "2739602360 3395905609 2123355622 3041272975 " + "784200748 3558951522 1002787860 4063320888 " + "1587315560 4042698976 659183308 3082256417 " + "2808969567 2361418535 3468698782 750700970 " + "2991209851 3581521382 962022878 2518967363 " + "1476525873 3865977235 2128790058 2380326689 " + "1396773405 312559410 1370621899 1154499924 " + "2963101919 2182689761 2071851902 1661288848 " + "2411351341 1362764020 1289894483 1951662807 " + "701821506 552267185 2356648449 3949188503 " + "1748307081 87795201 3718396254 4112205936 " + "2819888864 73923733 2800033151 839258139 " + "3801779069 3105962436 2111266436 1772784466 " + "3692264298 4148810953 3147390749 3537518553 " + "1695044978 1430225842 1252346204 3465285434 " + "3970017763 2920658411 2805151132 290569815 " + "3802301355 1493420394 1943029276 1667143611 " + "1049665988 1710824905 220168517 3997946231 " + "1014582791 4244598752 1147604069 2533886627 " + "598679964 761521020 431779255 3745982038 " + "768658283 3598262505 1765664789 279538641 " + "715144305 2371628432 2655860083 1759010423 " + "3568452003 1910107098 2801429529 3924547532 " + "3862672436 3933725740 1764550618 130893617 " + "1460692387 4135312761 2075529299 2880227367 " + "944557368 4166665482 2627749235 3732013815 " + "1595900818 1553312393 3529311831 3531462424 " + "2431328342 4075369692 1609967709 3704537555 " + "2067297464 397140475 920618678 2840795964 " + "4202512837 1286017648 7035910 1057207826 " + "2325188262 191593698 3697383848 3029712831 " + "2073681914 163454681 1329637200 290077398 " + "287239431 4205081522 1233889024 167173087 " + "3267660257 3406068803 2382354609 1680046927 " + "125183503 3559536309 3208900974 2912148541 " + "2882879316 1937001086 2919729069 892928802 " + "4141691387 2507406586 855548593 3418647837 " + "4035646154 2410275591 248715645 3180757482 " + "1880770722 362912336 2964920095 2319904154 " + "1493655850 4240733030 1834485846 1696040454 " + "3329457927 1865824694 847759208 1587231623 " + "3757294772 1161601118 3630323833 3007722125 " + "3726418007 2124238171 1205345 172659797 " + "3040354211 885213338 1857049013 447922412 " + "719906299 1370059380 1922204800 3960090489 " + "1658822644 1529626863 1565927273 3537718771 " + "2733237258 2180221377 921910745 2144937687 " + "1727603895 1315635304 4023867791 2401834107 " + "808854185 2408824497 343935326 185237544 " + "746732759 2641236122 4283215329 743609415 " + "1134726665 3892851319 1302851263 3473445597 " + "1326817414 2702766508 1943179285 4025685468 " + "932896770 199392138 2787362875 3450501893 " + "3351567147 2461286528 2227605848 2993751114 " + "3988215720 1320573368 2866560199 4153194990 " + "3007120042 3260751955 3171763740 2111121243 " + "3962825228 102681859 3368179132 802089147 " + "4029273561 424939445 4178414761 2592125109 " + "1960801088 2967746406 310701990 2364200202 " + "1320507009 3474372480 784693947 2952246664 " + "1891935330 2048385105 3530082191 3238151038 " + "3293189141 1316053288 2087004409 740799958 " + "1187748554 3607767334 1190185990 1408429481 " + "657134359 221834425 3907725865 1068016389 " + "1402423875 2598612116 2046886300 2345022518 " + "1196081924 357783981 4013683598 463491626 " + "3269206482 3332444286 886491955 2257342866 " + "475911113 833576299 2893727564 2866985145 " + "1413365115 2995166393 1486060436 161205225 " + "3181728373 3056027137 2040371876 2182305146 " + "3028448628 2214316977 1266227021 876938740 " + "276477469 752158077 2182179045 1381698878 " + "3424557652 666674427 968327842 2534296575 " + "265105940 961112540 2641188117 2319139814 " + "1750453329 3450138343 678025317 1477566458 " + "3773796420 2933993832 3326042905 4084805260 " + "444182455 255333481 785163068 2321290820 " + "2893603234 3005520266 541104079 1383277090 " + "2770755666 3764627833 583371929 2864949033 " + "1487681116 1811788361 240329486 3094213377 " + "958509875 2564379085 1636995945 2070894127 " + "2139004232 1747850055 3841512327 3325011872 " + "1161622604 639182193 3533652535 4022667522 " + "761048999 3337743670 254221568 2784956233 " + "2990252814 4207922787 275707208 261819597 " + "2071467265 4034945770 1999813410 3038921100 " + "2200194573 1328217451 2440612380 3862293692 " + "2733976812 2750523058 2920082515 3809044908 " + "4285231753 3131963297 3481602724 1396460739 " + "2011767965 2481047764 2958452120 3044188618 " + "2217236658 3448605566 757716104 1818279145 " + "2641228144 1312649639 1194087684 3845229729 " + "1747658356 874418803 1956637337 268670179 " + "2083040240 2577671381 3375334655 2587828868 " + "1383012799 3583445685 2594576715 3282337104 " + "4257972751 3440488071 3129180313 1830891395 " + "1594931092 2680778339 3984026324 1102770400 " + "2315820258 1263467048 1133254110 2400676748 " + "2251795328 1036154092 3313541051 2277356560 " + "1477696003 1417117088 3968537402 1404882202 " + "2011058180 4114080985 1727459502 4100235708 " + "2334509310 2829432554 377936301 1519324520 " + "3252826644 1193335837 1929125820 2165344238 " + "4160556243 223340988 670907625 1485396519 " + "936389509 3813712964 2706450987 3132506320 " + "875886515 557088991 2854916639 2955496008 " + "2881696287 265169077 3239923698 3649366121 " + "4072165960 1233904959 225406526 1767368993 " + "1894882500 2296582180 339255168 83200939 " + "2958376148 4100205346 1991250823 3806183082 " + "2691709980 2642354997 3024056146 1681065839 " + "3438299684 1638853652 362567001 2307868899 " + "988801086 1342833399 2303298376 1500039911 " + "765489391 4080464497 4155444368 980472018 " + "2026981853 3460406995 391970367 667377014 " + "4177754853 2657468948 3560690175 3030464357 " + "2948380657 1208800977 2316451404 4001932203 " + "1977856863 4265848271 3116200050 3037586215 " + "1335232764 930230766 1026089249 2482219415 " + "2613853154 1854543497 2909555107 3862874043 " + "2609355500 907364682 383900687 358164223 " + "232347546 2536276737 3118482806 1254103998 " + "2357334077 1204777304 1996643329 4046232717 " + "2570520290 3173323380 1201411457 2361883023 " + "806087062 2984143714 2355127569 864220085 " + "1787696713 1182652984 4200065581 100722519 " + "2380458669 2429592313 2618338302 1236529564 " + "1747130196 3711661325 1114068102 510380433 " + "93703089 2277774664 3220741441 1577998569 " + "2816701900 4206763045 2495239107 4080390459 " + "1307072677 20360728 1468385549 96049834 " + "3630657447 2809517346 3396111678 3043831060 " + "673178359 4256729562 1755211210 1969834535 " + "498315110 3717726302 1544859987 2239930949 " + "1595372585 294525219 3961637067 3591840665 " + "3324896933 2300077772 721255886 4197934760 " + "1468866696 2184812884 628246683 3385113037 " + "3041166140 3948531843 1176600829 228286131 " + "2447397608 712235937 3332826819 2676980703 " + "4019468871 1952389952 1202638254 3625447051"; + unsigned as[] = {3, 5, 7}; + std::seed_seq sseq(as, as+3); + std::mt19937 e1(sseq); + std::ostringstream os; + os << e1; + assert(os.str() == a); +} + +void +test2() +{ + const char* a = "17895233847644109640 14665081038668852234 15987230621890949369 " + "13796324649827964148 1670828176732799955 14078505147839608672 " + "15497470967856861790 9566640372296747182 7839811585250789315 " + "1350068003782415071 5639936432479386921 15925388701147119804 " + "17415323390466493342 3892358083553387400 13485903346102334794 " + "16926193162581531132 2711398308226914244 12515538113016451944 " + "13856492368211347055 17968472785843263993 16129117710261673051 " + "13041638543181171650 8985803498136324582 401118717516975186 " + "7221524024767248666 13502820261231663498 8665119664667372350 " + "4506836866186850029 14762924585995667460 7305266389803732087 " + "9135600275824854713 8421320656548229332 14585303533697565624 " + "13062167967956981222 15285580395823625260 17451830328116466708 " + "17363259891080004456 13238190509560321740 10142215382802200927 " + "3224236118694175902 15382517208605932923 10818882444738383326 " + "16604245792882032433 10223425285179753002 1342432445403828765 " + "4958539418185107403 9374581143772158175 7135181273441366910 " + "5853026900476841261 8382327930174454355 2371969498930803266 " + "16961635468480846337 377077518789053577 17661790013255465310 " + "317500018453124832 3604586262706855295 13340007089026272125 " + "7614051306438090372 17819007364113857386 15193526497275633437 " + "6142773218979108210 14883287611587512668 12544132362002344419 " + "1247987855434921372 6414191755211735979 7160327288923375132 " + "7347937017206972868 17171048313531629893 18230412825496997383 " + "10882960195884354661 3270707876715241884 16088870345045208503 " + "15454419782166694763 1200609322828949525 10186066554418904177 " + "7554892242763986291 8203847521335919011 16855803304338943001 " + "16895223408596071476 562183806034700250 17761033068687156643 " + "12370482348384718931 17895691979506634040 16028877286272943475 " + "6671425930002400146 15167515621662197335 17503579548680921174 " + "15910867647138768989 1705705354110203064 12201125760909412022 " + "5523403744441352645 4540673037752294406 822888669354888870 " + "13012517529113958824 702032511346794490 1245872939048413008 " + "18060687614291143943 718002942670251776 14628954120078526945 " + "7215746609592654001 15288092036204733967 12507582747898016110 " + "8319356319569362772 3835100005166188461 10769229288786702843 " + "14682980657311687345 10352054841727718090 13661249361946024317 " + "1558696616315734178 9963912474249467679 18213809676410642730 " + "7284438284457478230 8013656044128665351 6817107912809760616 " + "4989038816564331700 12918068165960947833 9123533477086273623 " + "741568181450204257 3801962339733348259 1923812112542486965 " + "5884360231397942779 17008459141377852544 6569697353326895092 " + "15194386425456240489 9363979514988323850 9212437218544795097 " + "5650610605870621879 10315798944006232463 10345822437227504297 " + "795589193815296350 11344022765750598871 3193778122705907169 " + "16719669104430190089 14918335244853046975 11608293761910939782 " + "17290187430985633813 856382712722415618 14819792788008454203 " + "10571145147196955435 12858063129221173592 5671819431516788648 " + "17837836658827607239 14004823010100183722 9067196699747632668 " + "441015230260308492 3444946658209715644 1825101023084664281 " + "11133092574473850025 12746373758552339264 10154162549097295782 " + "14922316177042921089 12679802872389794491 8797747037480461410 " + "13907752811248535439 5652405835046458389 3181711594575177977 " + "15495242712294857418 6049158560807439366 952771601159099159 " + "4587095466254740009 11160954054611782211 10071795025240457628 " + "1536670498623767300 1990681379653546894 14312739227381277138 " + "9695213786215402291 3580182943401628617 12313607438786545484 " + "12864141705426648443 692371170805382036 13125536612285239925 " + "9372929234002877092 9510419002221032820 3766423210161674061 " + "3230494342413727261 5934351496112072933 2863344864469097044 " + "10884720908958139042 4127946927340597780 9960629658622711061 " + "14818231351611083857 6346099615454582885 12601407558879514692 " + "17544105005554819865 1096648950913019831 9969868157190185788 " + "12908611252828823970 5941129863397152719 16168953427117105234 " + "12304862402025196697 7781571759256122972 13289545261301048078 " + "11013924305579914035 8894422550580466537 7506958826675805512 " + "14280817252893250439 2745266616282182732 17277225453205013047 " + "14335499905842065319 11961295941780577536 18072890757248426766 " + "1124506606842606920 17329960125355005185 13052066741624159010 " + "5704650516221677069 16588425097127709212 11813406583737887980 " + "16359723311775411283 13451679937172566665 5997753207634594468 " + "10656019008205694109 13074690560123889048 14811648124990806194 " + "7809449463531558024 5637787273252434288 16515135932856030468 " + "3755600163640125044 1153929634172103321 11071014283313196016 " + "11114640359080035583 15390782025450330559 14097530518721927499 " + "14776783751481098767 7863618667181998233 11513855295425132436 " + "4736362806980864724 5426549653049482466 10310828122060887518 " + "4450247941008370560 9781171949844602811 6086471549040450051 " + "6033923116291003194 17669843285681524740 17610378273478865070 " + "12152320288002263294 6525449125788834221 5125338396312613396 " + "9300082688721166268 959242243476884691 6379729471368150249 " + "16379772457647614853 13454012201619761707 2392678998182524851 " + "12693758700673471007 1138892516507202079 15673908144065302514 " + "5299581449349386824 7590792025124859454 9863745357571267780 " + "357345312340746112 17610247870912740564 16347431861769737095 " + "11348828299228888092 7220122803951857490 7038822841708464676 " + "9912221445023094105 5767425533670320190 6442622362743049032 " + "17525461567869579503 4211095256108567696 14862334876401617373 " + "2866362449624104511 11413742225973279461 13015745308569358847 " + "5191760666536228849 17188167935010684492 18321678815621002079 " + "13046333455321624690 3995310719038261500 10661051209947341089 " + "7965203671238327266 16590917686161852835 3897101637344795372 " + "1538303624766151695 10893225639252940698 5386335660311332214 " + "5174479122000384061 17378437193516866561 13629320139302700770 " + "10144210341964027265 12816799659000064406 3711797003976467729 " + "5079455890584507977 432599929275804205 10435019529328454317 " + "5310854040535477246 15941464006450157396 2192067269367387270 " + "9782967689631091633 6777452250210540865 18067909703113078220 " + "17525143578810667971 87448662189824165 412530897284614413 " + "12066785122245373863 13073154860645125438 18282514257379582711 " + "8460374908111578570 15967512883067334502 9620430172798103891 " + "1264976185047610409 15426838192579528907 9878758812321441445 " + "18029992505662864846 9383699886128308360 14538949787806484635 " + "16958815135940772668 980481467951972605 3059030058898313960 " + "11497544574740915907 8385450996898478663 15571176518627282350"; + unsigned as[] = {3, 5, 7}; + std::seed_seq sseq(as, as+3); + std::mt19937_64 e1(sseq); + std::ostringstream os; + os << e1; + assert(os.str() == a); +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/default.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/default.pass.cpp new file mode 100644 index 0000000000000..d92ffd807da03 --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/default.pass.cpp @@ -0,0 +1,45 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine; + +// explicit mersenne_twister_engine(); + +#include <random> +#include <sstream> +#include <cassert> + +void +test1() +{ + std::mt19937 e1; + std::mt19937 e2(std::mt19937::default_seed); + assert(e1 == e2); + assert(e1() == 3499211612u); +} + +void +test2() +{ + std::mt19937_64 e1; + std::mt19937_64 e2(std::mt19937_64::default_seed); + assert(e1 == e2); + assert(e1() == 14514284786278117030ull); +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/discard.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/discard.pass.cpp new file mode 100644 index 0000000000000..d20d661d58916 --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/discard.pass.cpp @@ -0,0 +1,55 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine; + +// void discard(unsigned long long z); + +#include <random> +#include <sstream> +#include <cassert> + +void +test1() +{ + std::mt19937 e1; + std::mt19937 e2 = e1; + assert(e1 == e2); + e1.discard(3); + assert(e1 != e2); + e2(); + e2(); + e2(); + assert(e1 == e2); +} + +void +test2() +{ + std::mt19937_64 e1; + std::mt19937_64 e2 = e1; + assert(e1 == e2); + e1.discard(3); + assert(e1 != e2); + e2(); + e2(); + e2(); + assert(e1 == e2); +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/eval.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/eval.pass.cpp new file mode 100644 index 0000000000000..0b17a85770676 --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/eval.pass.cpp @@ -0,0 +1,45 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine; + +// result_type operator()(); + +#include <random> +#include <sstream> +#include <cassert> + +void +test1() +{ + std::mt19937 e; + assert(e() == 3499211612u); + assert(e() == 581869302u); + assert(e() == 3890346734u); +} + +void +test2() +{ + std::mt19937_64 e; + assert(e() == 14514284786278117030ull); + assert(e() == 4620546740167642908ull); + assert(e() == 13109570281517897720ull); +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/io.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/io.pass.cpp new file mode 100644 index 0000000000000..28e00ec1eb88a --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/io.pass.cpp @@ -0,0 +1,69 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine; + +// template <class charT, class traits, +// class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// basic_ostream<charT, traits>& +// operator<<(basic_ostream<charT, traits>& os, +// const mersenne_twister_engine<UIntType, w, n, m, r, a, u, d, s, b, t, c, l, f>& x); +// +// template <class charT, class traits, +// class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// basic_ostream<charT, traits>& +// operator>>(basic_istream<charT, traits>& is, +// mersenne_twister_engine<UIntType, w, n, m, r, a, u, d, s, b, t, c, l, f>& x); + +#include <random> +#include <sstream> +#include <cassert> + +void +test1() +{ + typedef std::mt19937 E; + E e1; + e1.discard(100); + std::ostringstream os; + os << e1; + std::istringstream is(os.str()); + E e2; + is >> e2; + assert(e1 == e2); +} + +void +test2() +{ + typedef std::mt19937_64 E; + E e1; + e1.discard(100); + std::ostringstream os; + os << e1; + std::istringstream is(os.str()); + E e2; + is >> e2; + assert(e1 == e2); +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/result_type.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/result_type.pass.cpp new file mode 100644 index 0000000000000..26f3e1563295c --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/result_type.pass.cpp @@ -0,0 +1,44 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine +// { +// public: +// // types +// typedef UIntType result_type; + +#include <random> +#include <type_traits> + +void +test1() +{ + static_assert((std::is_same< + std::mt19937::result_type, + std::uint_fast32_t>::value), ""); +} + +void +test2() +{ + static_assert((std::is_same< + std::mt19937_64::result_type, + std::uint_fast64_t>::value), ""); +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/seed_result_type.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/seed_result_type.pass.cpp new file mode 100644 index 0000000000000..6f93e5beb9b5b --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/seed_result_type.pass.cpp @@ -0,0 +1,52 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine; + +// void seed(result_type s = default_seed); + +#include <random> +#include <cassert> + +void +test1() +{ + for (int s = 0; s < 20; ++s) + { + typedef std::mt19937 E; + E e1(s); + E e2; + e2.seed(s); + assert(e1 == e2); + } +} + +void +test2() +{ + for (int s = 0; s < 20; ++s) + { + typedef std::mt19937_64 E; + E e1(s); + E e2; + e2.seed(s); + assert(e1 == e2); + } +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/seed_sseq.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/seed_sseq.pass.cpp new file mode 100644 index 0000000000000..33292a041af4f --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/seed_sseq.pass.cpp @@ -0,0 +1,50 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine; + +// template<class Sseq> void seed(Sseq& q); + +#include <random> +#include <cassert> + +void +test1() +{ + unsigned a[] = {3, 5, 7}; + std::seed_seq sseq(a, a+3); + std::mt19937 e1; + std::mt19937 e2(sseq); + assert(e1 != e2); + e1.seed(sseq); + assert(e1 == e2); +} + +void +test2() +{ + unsigned a[] = {3, 5, 7}; + std::seed_seq sseq(a, a+3); + std::mt19937_64 e1; + std::mt19937_64 e2(sseq); + assert(e1 != e2); + e1.seed(sseq); + assert(e1 == e2); +} + +int main() +{ + test1(); + test2(); +} diff --git a/test/std/numerics/rand/rand.eng/rand.eng.mers/values.pass.cpp b/test/std/numerics/rand/rand.eng/rand.eng.mers/values.pass.cpp new file mode 100644 index 0000000000000..331d3c51119ff --- /dev/null +++ b/test/std/numerics/rand/rand.eng/rand.eng.mers/values.pass.cpp @@ -0,0 +1,122 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template <class UIntType, size_t w, size_t n, size_t m, size_t r, +// UIntType a, size_t u, UIntType d, size_t s, +// UIntType b, size_t t, UIntType c, size_t l, UIntType f> +// class mersenne_twister_engine +// { +// public: +// // types +// typedef UIntType result_type; +// +// // engine characteristics +// static constexpr size_t word_size = w; +// static constexpr size_t state_size = n; +// static constexpr size_t shift_size = m; +// static constexpr size_t mask_bits = r; +// static constexpr result_type xor_mask = a; +// static constexpr size_t tempering_u = u; +// static constexpr result_type tempering_d = d; +// static constexpr size_t tempering_s = s; +// static constexpr result_type tempering_b = b; +// static constexpr size_t tempering_t = t; +// static constexpr result_type tempering_c = c; +// static constexpr size_t tempering_l = l; +// static constexpr result_type initialization_multiplier = f; +// static constexpr result_type min () { return 0; } +// static constexpr result_type max() { return 2^w - 1; } +// static constexpr result_type default_seed = 5489u; + +#include <random> +#include <type_traits> +#include <cassert> + +template <class _Tp> +void where(const _Tp &) {} + +void +test1() +{ + typedef std::mt19937 E; + static_assert((E::word_size == 32), ""); + static_assert((E::state_size == 624), ""); + static_assert((E::shift_size == 397), ""); + static_assert((E::mask_bits == 31), ""); + static_assert((E::xor_mask == 0x9908b0df), ""); + static_assert((E::tempering_u == 11), ""); + static_assert((E::tempering_d == 0xffffffff), ""); + static_assert((E::tempering_s == 7), ""); + static_assert((E::tempering_b == 0x9d2c5680), ""); + static_assert((E::tempering_t == 15), ""); + static_assert((E::tempering_c == 0xefc60000), ""); + static_assert((E::tempering_l == 18), ""); + static_assert((E::initialization_multiplier == 1812433253), ""); + /*static_*/assert((E::min() == 0)/*, ""*/); + /*static_*/assert((E::max() == 0xFFFFFFFF)/*, ""*/); + static_assert((E::default_seed == 5489u), ""); + where(E::word_size); + where(E::state_size); + where(E::shift_size); + where(E::mask_bits); + where(E::xor_mask); + where(E::tempering_u); + where(E::tempering_d); + where(E::tempering_s); + where(E::tempering_b); + where(E::tempering_t); + where(E::tempering_c); + where(E::tempering_l); + where(E::initialization_multiplier); + where(E::default_seed); +} + +void +test2() +{ + typedef std::mt19937_64 E; + static_assert((E::word_size == 64), ""); + static_assert((E::state_size == 312), ""); + static_assert((E::shift_size == 156), ""); + static_assert((E::mask_bits == 31), ""); + static_assert((E::xor_mask == 0xb5026f5aa96619e9ull), ""); + static_assert((E::tempering_u == 29), ""); + static_assert((E::tempering_d == 0x5555555555555555ull), ""); + static_assert((E::tempering_s == 17), ""); + static_assert((E::tempering_b == 0x71d67fffeda60000ull), ""); + static_assert((E::tempering_t == 37), ""); + static_assert((E::tempering_c == 0xfff7eee000000000ull), ""); + static_assert((E::tempering_l == 43), ""); + static_assert((E::initialization_multiplier == 6364136223846793005ull), ""); + /*static_*/assert((E::min() == 0)/*, ""*/); + /*static_*/assert((E::max() == 0xFFFFFFFFFFFFFFFFull)/*, ""*/); + static_assert((E::default_seed == 5489u), ""); + where(E::word_size); + where(E::state_size); + where(E::shift_size); + where(E::mask_bits); + where(E::xor_mask); + where(E::tempering_u); + where(E::tempering_d); + where(E::tempering_s); + where(E::tempering_b); + where(E::tempering_t); + where(E::tempering_c); + where(E::tempering_l); + where(E::initialization_multiplier); + where(E::default_seed); +} + +int main() +{ + test1(); + test2(); +} |