# source:lemon-0.x/src/benchmark/bench_tools.h@711:b6c56353832c

Last change on this file since 711:b6c56353832c was 711:b6c56353832c, checked in by Alpar Juttner, 17 years ago

Some tools of common usage was put to bench_tool.h

File size: 1.4 KB
Line
1// -*- mode:C++ -*-
2#ifndef HUGO_BENCH_TEST_H
3#define HUGO_BENCH_TEST_H
4
5#include<vector>
6
7///An experimental typedef factory
8#define GRAPH_TYPEDEF_FACTORY(Graph) \
9   typedef typename Graph::   Node      Node;\
10   typedef typename Graph::   NodeIt    NodeIn;\
11   typedef typename Graph::   Edge      Edge;\
12   typedef typename Graph::   EdgeIt    EdgeIt;\
13   typedef typename Graph:: InEdgeIt  InEdgeIt;\
14   typedef typename Graph::OutEdgeIt OutEdgeIt;
15
16#define GRAPH_TYPEDEF_FACTORY_NOTYPENAME(Graph) \
17   typedef Graph::   Node      Node;\
18   typedef Graph::   NodeIt    NodeIn;\
19   typedef Graph::   Edge      Edge;\
20   typedef Graph::   EdgeIt    EdgeIt;\
21   typedef Graph:: InEdgeIt  InEdgeIt;\
22   typedef Graph::OutEdgeIt OutEdgeIt;
23
24
25///A primitive primtest
26bool isPrim(int n)
27{
28  if(n%2) {
29    for(int k=3;n/k>=k;k+=2)
30      if(!(n%k)) return false;
31    return true;
32  }
33  return false;
34}
35
36///Finds the smallest prime not less then \c n.
37int nextPrim(int n)
38{
39  for(n+=!(n%2);!isPrim(n);n+=2) ;
40  return n;
41}
42
43
44/// Class to generate consecutive primes
45class Primes
46{
47  std::vector<int> primes;
48  int n;
49
50  bool isPrime(int m)
51  {
52    for(int i=0;m<primes[i]*primes[i];i++) if(!(m%primes[i])) return false;
53    return true;
54  }
55public:
56  Primes() : n(1) {}
57
58  int operator() ()
59    {
60      if(primes.size()==0) {
61        primes.push_back(2);
62        return 2;
63      }
64      else {
65        do n+=2; while(!isPrime(n));
66        primes.push_back(n);
67        return n;
68      }
69    }
70};
71
72
73#endif
Note: See TracBrowser for help on using the repository browser.