1// { dg-options "-std=gnu++11" } 2// Use smaller statistics when running on simulators, so it takes less time. 3// For powerpc-eabi, SAMPLES=30000 fails. 4// { dg-options "-std=gnu++11 -DSAMPLES=35000" { target simulator } } 5 6// Copyright (C) 2010-2015 Free Software Foundation, Inc. 7// 8// This file is part of the GNU ISO C++ Library. This library is free 9// software; you can redistribute it and/or modify it under the 10// terms of the GNU General Public License as published by the 11// Free Software Foundation; either version 3, or (at your option) 12// any later version. 13// 14// This library is distributed in the hope that it will be useful, 15// but WITHOUT ANY WARRANTY; without even the implied warranty of 16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17// GNU General Public License for more details. 18// 19// You should have received a copy of the GNU General Public License 20// along with this library; see the file COPYING3. If not see 21// <http://www.gnu.org/licenses/>. 22 23#include "chi2_quality.h" 24 25// Tests chi^2 for a distribution of uniformly generated random strings. 26void 27test_uniform_random() 28{ 29 bool test __attribute__((unused)) = true; 30 std::srand(137); 31 std::unordered_set<std::string> set; 32 std::string s; 33 const unsigned long N = SAMPLES; 34 const unsigned long k = N/100; 35 const unsigned int len = 25; 36 while (set.size() < N) 37 { 38 s.clear(); 39 for (unsigned int i = 0; i < len; ++i) 40 s.push_back(rand() % 128); 41 set.insert(s); 42 } 43 44 double chi2 = chi2_hash(set, k); 45 VERIFY( chi2 < k*1.1 ); 46} 47 48int 49main() 50{ 51 test_uniform_random(); 52 return 0; 53} 54