Last change
on this file since 293 was
293,
checked in by sam, 10 years ago

Add pseudorandom functions for floats.

File size:
1.2 KB

Line  

1  // 

2  // Lol Engine 

3  // 

4  // Copyright: (c) 20102011 Sam Hocevar <sam@hocevar.net> 

5  // This program is free software; you can redistribute it and/or 

6  // modify it under the terms of the Do What The Fuck You Want To 

7  // Public License, Version 2, as published by Sam Hocevar. See 

8  // http://sam.zoy.org/projects/COPYING.WTFPL for more details. 

9  // 

10  

11  // 

12  // The Matrix classes 

13  //  

14  // 

15  

16  #if !defined __DH_NUMERIC_H__ 

17  #define __DH_NUMERIC_H__ 

18  

19  #include <cmath> 

20  #include <cstdlib> 

21  

22  /* Random float value */ 

23  static inline float RandF() 

24  { 

25  return (float)rand() / RAND_MAX; 

26  } 

27  

28  static inline float RandF(float val) 

29  { 

30  return RandF() * val; 

31  } 

32  

33  static inline float RandF(float min, float max) 

34  { 

35  return min + RandF() * (max  min); 

36  } 

37  

38  /* Next power of two. */ 

39  template <typename T> static inline T PotUp(T val) 

40  { 

41  val = val  1; 

42  if (sizeof(val) > 4) val = val  ((uint64_t)val >> 32); 

43  if (sizeof(val) > 2) val = val  ((uint64_t)val >> 16); 

44  if (sizeof(val) > 1) val = val  ((uint64_t)val >> 8); 

45  val = val  ((uint64_t)val >> 4); 

46  val = val  ((uint64_t)val >> 2); 

47  val = val  ((uint64_t)val >> 1); 

48  return val + 1; 

49  } 

50  

51  #endif // __DH_NUMERIC_H__ 

52  

Note: See
TracBrowser
for help on using the repository browser.