276 stat |= fileNotThere <E, RandBinomial>();
277 stat |= fileNotThere <E, RandBit>();
278 stat |= fileNotThere <E, RandBreitWigner>();
279 stat |= fileNotThere <E, RandChiSquare>();
280 stat |= fileNotThere <E, RandExponential>();
281 stat |= fileNotThere <E, RandFlat>();
282 stat |= fileNotThere <E, RandGamma>();
283 stat |= fileNotThere <E, RandGauss>();
284 stat |= fileNotThere <E, RandGaussQ>();
285 stat |= fileNotThere <E, RandGaussT>();
286 stat |= fileNotThere <E, RandLandau>();
287 stat |= fileNotThere <E, RandPoisson>();
288 stat |= fileNotThere <E, RandPoissonQ>();
289 stat |= fileNotThere <E, RandPoissonT>();
290 stat |= fileNotThere <E, RandSkewNormal>();
291 stat |= fileNotThere <E, RandStudentT>();
538 stat |= checkSaveDistribution<E,RandGauss> (d,33); }
540 stat |= checkSaveDistribution<E,RandGauss> (d,34); }
542 stat |= checkSaveDistribution<E,RandGaussQ> (d,33); }
544 stat |= checkSaveDistribution<E,RandGaussT> (d,33); }
546 stat |= checkSaveDistribution<E,RandBinomial> (d,33); }
547 {
RandFlat d(
new E(12576),12.5,35.0);
548 stat |= checkSaveDistribution<E,RandFlat> (d,33); }
550 stat |= checkSaveDistribution<E,RandBit> (d,31); }
552 stat |= checkSaveDistribution<E,RandBit> (d,32); }
554 stat |= checkSaveDistribution<E,RandBit> (d,33); }
556 stat |= checkSaveDistribution<E,RandBreitWigner> (d,33); }
558 stat |= checkSaveDistribution<E,RandChiSquare> (d,33); }
560 stat |= checkSaveDistribution<E,RandExponential> (d,33); }
562 stat |= checkSaveDistribution<E,RandGamma> (d,33); }
564 stat |= checkSaveDistribution<E,RandLandau> (d,33); }
566 stat |= checkSaveDistribution<E,RandSkewNormal> (d,33); }
568 stat |= checkSaveDistribution<E,RandStudentT> (d,33); }
575 stat |= checkSaveDistribution<E,RandPoisson> (d,33); }
577 stat |= checkSaveDistribution<E,RandPoisson> (d,34); }
579 stat |= checkSaveDistribution<E,RandPoisson> (d,35); }
581 stat |= checkSaveDistribution<E,RandPoisson> (d,36); }
583 stat |= checkSaveDistribution<E,RandPoisson> (d,37); }
585 stat |= checkSaveDistribution<E,RandPoisson> (d,38); }
587 stat |= checkSaveDistribution<E,RandPoisson> (d,39); }
589 stat |= checkSaveDistribution<E,RandPoissonQ> (d,33); }
591 stat |= checkSaveDistribution<E,RandPoissonQ> (d,32); }
593 stat |= checkSaveDistribution<E,RandPoissonQ> (d,31); }
595 stat |= checkSaveDistribution<E,RandPoissonQ> (d,30); }
597 stat |= checkSaveDistribution<E,RandPoissonQ> (d,33); }
599 stat |= checkSaveDistribution<E,RandPoissonQ> (d,34); }
601 stat |= checkSaveDistribution<E,RandPoissonQ> (d,34); }
603 stat |= checkSaveDistribution<E,RandPoissonT> (d,33); }
605 stat |= checkSaveDistribution<E,RandPoissonT> (d,33); }
607 stat |= checkSaveDistribution<E,RandPoissonT> (d,34); }
609 stat |= checkSaveDistribution<E,RandPoissonT> (d,34); }
611 stat |= checkSaveDistribution<E,RandPoissonT> (d,10); }
613 stat |= checkSaveDistribution<E,RandPoissonT> (d,11); }
615 stat |= checkSaveDistribution<E,RandPoissonT> (d,12); }
617 {std::vector<double> pdf;
619 for (
int i = 0; i < nbins; ++i)
620 pdf.push_back( 5*i + (10.5-i) * (10.5-i) );
622 stat |= checkRandGeneralDistribution<E> (d,33); }
711 stat |= checkSharingDistributions<E, RandGauss, RandPoissonQ>(g1,p1,5,4);
712 stat |= checkSharingDistributions<E, RandGauss, RandPoissonQ>(g1,p2,6,6);
713 stat |= checkSharingDistributions<E, RandGauss, RandPoissonQ>(g2,p1,8,9);
714 stat |= checkSharingDistributions<E, RandGauss, RandPoissonQ>(g1,p1,7,5);
715 stat |= checkSharingDistributions<E, RandPoissonQ, RandGauss>(p1,g2,5,4);
716 stat |= checkSharingDistributions<E, RandPoissonQ, RandGauss>(p2,g1,6,6);
717 stat |= checkSharingDistributions<E, RandPoissonQ, RandGauss>(p1,g1,8,9);
718 stat |= checkSharingDistributions<E, RandPoissonQ, RandGauss>(p2,g1,7,5);
1245#ifdef TEST_ORIGINAL_SAVE
1246 output <<
"=====================================\n";
1248 output <<
"Original tests of static save/restore\n";
1249 output <<
"=====================================\n\n";
1251 output <<
"Using old method or HepRandom::saveEngineStatus:\n";
1252 output <<
"All these tests should have a chance of failure.\n";
1254 output << RandGauss:: getTheEngine()->name();
1255 output << RandGaussQ::getTheEngine()->name();
1262 output <<
"Using the class-specific RandGauss::saveEngineStatus:\n";
1263 output <<
"All these tests should work properly.\n";
1271#ifdef TEST_MISSING_FILES
1272 output <<
"\n=======================================\n";
1274 output <<
"Test of behavior when a file is missing \n";
1275 output <<
"=======================================\n\n";
1277 output <<
"Testing restoreEngineStatus with missing file:\n";
1278 output <<
"Expect a number of <Failure to find or open> messages!\n";
1282#ifdef CREATE_OLD_SAVES
1283 stat |= saveEngine<DRand48Engine, RandPoisson>(
"DRand48Engine.oldsav");
1284 stat |= saveEngine<DualRand, RandPoisson>(
"DualRand.oldsav");
1285 stat |= saveEngine<Hurd160Engine, RandPoisson>(
"Hurd160Engine.oldsav");
1286 stat |= saveEngine<Hurd288Engine, RandPoisson>(
"Hurd288Engine.oldsav");
1287 stat |= saveEngine<HepJamesRandom,RandPoisson>(
"HepJamesRandom.oldsav");
1288 stat |= saveEngine<MTwistEngine, RandPoisson>(
"MTwistEngine.oldsav");
1289 stat |= saveEngine<RanecuEngine, RandPoisson>(
"RanecuEngine.oldsav");
1290 stat |= saveEngine<Ranlux64Engine,RandPoisson>(
"Ranlux64Engine.oldsav");
1291 stat |= saveEngine<RanluxEngine, RandPoisson>(
"RanluxEngine.oldsav");
1292 stat |= saveEngine<RanshiEngine, RandPoisson>(
"RanshiEngine.oldsav");
1293 stat |= saveEngine<TripleRand, RandPoisson>(
"TripleRand.oldsav");
1296#ifdef VERIFY_OLD_SAVES
1297 output <<
"\n==============================================\n";
1299 output <<
" Verification that changes wont invalidate \n";
1300 output <<
"invalidate engine saves from previous versions \n";
1301 output <<
"==============================================\n\n";
1303 stat |= checkSaveEngine<DRand48Engine, RandPoisson>(
"DRand48Engine.oldsav");
1304 stat |= checkSaveEngine<DualRand, RandPoisson>(
"DualRand.oldsav");
1305 stat |= checkSaveEngine<Hurd160Engine, RandPoisson>(
"Hurd160Engine.oldsav");
1306 stat |= checkSaveEngine<Hurd288Engine, RandPoisson>(
"Hurd288Engine.oldsav");
1307 stat |= checkSaveEngine<HepJamesRandom,RandPoisson>(
"HepJamesRandom.oldsav");
1308 stat |= checkSaveEngine<MTwistEngine, RandPoisson>(
"MTwistEngine.oldsav");
1309 stat |= checkSaveEngine<Ranlux64Engine,RandPoisson>(
"Ranlux64Engine.oldsav");
1310 stat |= checkSaveEngine<RanluxEngine, RandPoisson>(
"RanluxEngine.oldsav");
1311 stat |= checkSaveEngine<RanshiEngine, RandPoisson>(
"RanshiEngine.oldsav");
1312 stat |= checkSaveEngine<TripleRand, RandPoisson>(
"TripleRand.oldsav");
1313 stat |= checkSaveEngine<RanecuEngine, RandPoisson>(
"RanecuEngine.oldsav");
1316#ifdef TEST_ENGINE_NAMES
1317 output <<
"\n=============================================\n";
1319 output <<
"Check all engine names were entered correctly \n";
1320 output <<
"=============================================\n\n";
1322 stat |= checkEngineName<DRand48Engine >(
"DRand48Engine");
1323 stat |= checkEngineName<DualRand >(
"DualRand");
1324 stat |= checkEngineName<Hurd160Engine >(
"Hurd160Engine");
1325 stat |= checkEngineName<Hurd288Engine >(
"Hurd288Engine");
1326 stat |= checkEngineName<HepJamesRandom>(
"HepJamesRandom");
1327 stat |= checkEngineName<MTwistEngine >(
"MTwistEngine");
1328 stat |= checkEngineName<RandEngine >(
"RandEngine");
1329 stat |= checkEngineName<RanecuEngine >(
"RanecuEngine");
1330 stat |= checkEngineName<Ranlux64Engine>(
"Ranlux64Engine");
1331 stat |= checkEngineName<RanluxEngine >(
"RanluxEngine");
1332 stat |= checkEngineName<RanshiEngine >(
"RanshiEngine");
1333 stat |= checkEngineName<TripleRand >(
"TripleRand");
1336#ifdef TEST_INSTANCE_METHODS
1337 output <<
"===========================================\n\n";
1339 output <<
"Check instance methods for specific engines \n";
1340 output <<
" specific engines and distributions\n";
1341 output <<
"===========================================\n\n";
1355 {std::vector<double> nonRand =
aSequence(500);
1360 stat |= checkDistributions<DualRand>();
1361 stat |= checkDistributions<Hurd160Engine>();
1362 stat |= checkDistributions<Hurd288Engine>();
1363 stat |= checkDistributions<HepJamesRandom>();
1364 stat |= checkDistributions<MTwistEngine>();
1365 stat |= checkDistributions<Ranlux64Engine>();
1366 stat |= checkDistributions<RanluxEngine>();
1367 stat |= checkDistributions<RanshiEngine>();
1368 stat |= checkDistributions<TripleRand>();
1373#ifdef TEST_SHARED_ENGINES
1374 output <<
"\n=============================================\n";
1376 output <<
"Check behavior when engines are shared \n";
1377 output <<
"=============================================\n\n";
1379 stat |= checkSharing<DualRand>();
1380 stat |= checkSharing<Hurd160Engine>();
1381 stat |= checkSharing<Hurd288Engine>();
1382 stat |= checkSharing<HepJamesRandom>();
1383 stat |= checkSharing<MTwistEngine>();
1384 stat |= checkSharing<Ranlux64Engine>();
1385 stat |= checkSharing<RanluxEngine>();
1386 stat |= checkSharing<RanshiEngine>();
1387 stat |= checkSharing<TripleRand>();
1390#ifdef TEST_STATIC_SAVE
1391 output <<
"\n=========================================\n";
1393 output <<
"Static Save/restore to/from streams \n";
1394 output <<
"=========================================\n\n";
1396 stat |= staticSave <RandGauss>(7);
1397 stat |= staticSave <RandFlat>(7);
1398 stat |= staticSaveShootBit<RandFlat> (19);
1399 stat |= staticSaveShootBit<RandBit> (23);
1400 for (
int ibinom=0; ibinom<15; ibinom++) {
1401 stat |= staticSave <RandBinomial>(7+3*ibinom);
1403 stat |= staticSave <RandBreitWigner>(7);
1404 stat |= staticSave <RandChiSquare>(7);
1405 stat |= staticSave <RandExponential>(7);
1406 stat |= staticSave <RandGamma>(7);
1407 stat |= staticSave <RandGaussQ>(7);
1408 stat |= staticSave <RandGaussT>(7);
1409 stat |= staticSave <RandLandau>(7);
1410 stat |= staticSave <RandPoisson>(7);
1411 stat |= staticSave <RandPoissonQ>(7);
1412 stat |= staticSave <RandPoissonT>(7);
1413 stat |= staticSave <RandSkewNormal>(7);
1414 stat |= staticSave <RandStudentT>(7);
1417#ifdef TEST_SAVE_STATIC_STATES
1418 output <<
"\n==============================================\n";
1420 output <<
"Save/restore all static states to/from streams \n";
1421 output <<
"==============================================\n\n";
1425 output <<
"Saved all static distributions\n";
1427 output <<
"Captured output of all static distributions\n";
1429 output <<
"Randomized all static distributions\n";
1431 output <<
"Restored all static distributions to saved state\n";
1433 output <<
"Captured output of all static distributions\n";
1434 for (
unsigned int iv=0; iv<c.size(); iv++) {
1435 if (c[iv] != d[iv]) {
1436 std::cout <<
"???? restoreStaticRandomStates failed at random "
1441 if (stat & 131072 == 0) {
1442 output <<
"All captured output agrees with earlier values\n";
1446#ifdef TEST_ANONYMOUS_ENGINE_RESTORE
1447 output <<
"\n=================================\n";
1448 output <<
" Part VII \n";
1449 output <<
"Anonymous restore of engines \n";
1450 output <<
"=================================\n\n";
1452 stat |= anonymousRestore<DualRand>(13);
1453 stat |= anonymousRestore<DRand48Engine>(14);
1454 stat |= anonymousRestore<Hurd160Engine>(15);
1455 stat |= anonymousRestore<Hurd288Engine>(16);
1456 stat |= anonymousRestore<HepJamesRandom>(17);
1457 stat |= anonymousRestore<MTwistEngine>(18);
1458 stat |= anonymousRestore<RandEngine>(29);
1459 stat |= anonymousRestore<RanecuEngine>(39);
1460 stat |= anonymousRestore<Ranlux64Engine>(19);
1461 stat |= anonymousRestore<RanluxEngine>(20);
1462 stat |= anonymousRestore<RanshiEngine>(21);
1463 stat |= anonymousRestore<TripleRand>(22);
1464 stat |= anonymousRestore<NonRandomEngine>(22);
1467#ifdef TEST_ANONYMOUS_RESTORE_STATICS
1468 output <<
"\n======================================\n";
1469 output <<
" Part VIII \n";
1470 output <<
"Anonymous restore static Distributions \n";
1471 output <<
"======================================\n\n";
1473 stat |= anonymousRestoreStatics<DualRand, Ranlux64Engine> ( );
1474 stat |= anonymousRestoreStatics<DRand48Engine, TripleRand> ( );
1475 stat |= anonymousRestoreStatics<RandEngine, Ranlux64Engine> ( );
1476 stat |= anonymousRestoreStatics<MTwistEngine, Hurd288Engine> ( );
1477 stat |= anonymousRestoreStatics<RanecuEngine, MTwistEngine> ( );
1478 stat |= anonymousRestoreStatics<HepJamesRandom, RanshiEngine> ( );
1479 stat |= anonymousRestoreStatics<RanecuEngine, RandEngine> ( );
1480 stat |= anonymousRestoreStatics<RanshiEngine, Hurd160Engine> ( );
1481 stat |= anonymousRestoreStatics<TripleRand, DualRand> ( );
1482 stat |= anonymousRestoreStatics<Hurd160Engine, HepJamesRandom> ( );
1483 stat |= anonymousRestoreStatics<Hurd288Engine, RanecuEngine> ( );
1484 stat |= anonymousRestoreStatics<HepJamesRandom, Ranlux64Engine> ( );
1485 stat |= anonymousRestoreStatics<TripleRand, TripleRand> ( );
1486 stat |= anonymousRestoreStatics<HepJamesRandom, HepJamesRandom> ( );
1489#ifdef TEST_VECTOR_ENGINE_RESTORE
1490 output <<
"\n=================================\n";
1492 output <<
"Save/restore of engines to vectors\n";
1493 output <<
"=================================\n\n";
1495 stat |= vectorRestore<DualRand>(113);
1496 stat |= vectorRestore<DRand48Engine>(114);
1497 stat |= vectorRestore<Hurd160Engine>(115);
1498 stat |= vectorRestore<Hurd288Engine>(116);
1499 stat |= vectorRestore<HepJamesRandom>(117);
1500 stat |= vectorRestore<MTwistEngine>(118);
1501 stat |= vectorRestore<RanecuEngine>(139);
1502 stat |= vectorRestore<Ranlux64Engine>(119);
1503 stat |= vectorRestore<RanluxEngine>(120);
1504 stat |= vectorRestore<RanshiEngine>(121);
1505 stat |= vectorRestore<TripleRand>(122);
1506 stat |= vectorRestore<NonRandomEngine>(123);
1507 stat |= vectorRestore<RandEngine>(129);
1513 output <<
"\n=============================================\n\n";
1516 std::cout <<
"One or more problems detected: stat = " << stat <<
"\n";
1518 output <<
"ranRestoreTest passed with no problems detected.\n";