ViennaCL - The Vienna Computing Library  1.6.0
Free open-source GPU-accelerated linear algebra and solver library.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Random.hpp
Go to the documentation of this file.
1 
2 /* =========================================================================
3  Copyright (c) 2010-2014, Institute for Microelectronics,
4  Institute for Analysis and Scientific Computing,
5  TU Wien.
6  Portions of this software are copyright by UChicago Argonne, LLC.
7 
8  -----------------
9  ViennaCL - The Vienna Computing Library
10  -----------------
11 
12  Project Head: Karl Rupp rupp@iue.tuwien.ac.at
13 
14  (A list of authors and contributors can be found in the PDF manual)
15 
16  License: MIT (X11), see file LICENSE in the base directory
17 ============================================================================= */
18 
19 #ifndef _RANDOM_HPP_
20 #define _RANDOM_HPP_
21 
22 #include <time.h>
23 #include <stdlib.h>
24 
25 inline void init()
26 {
27  static bool init = false;
28  if (!init)
29  {
30  srand( (unsigned int)time(NULL) );
31  init = true;
32  }
33 }
34 
35 template<class TYPE>
36 TYPE random();
37 
38 template<>
40 {
41  init();
42  return static_cast<double>(rand()) / static_cast<double>(RAND_MAX);
43 }
44 
45 template<>
47 {
48  init();
49  return static_cast<float>(random<double>());
50 }
51 
52 #endif
53 
float random< float >()
Definition: Random.hpp:46
double random< double >()
Definition: Random.hpp:39
void init()
Definition: Random.hpp:25
TYPE random()