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

test: make namespace usage less intrusive in math examples.


Property svn:keywords set to
Id

File size:
1.3 KB

Line  

1  // 

2  // Lol Engine  Sample math program: compute Pi 

3  // 

4  // Copyright: (c) 20052011 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  #if defined HAVE_CONFIG_H 

12  # include "config.h" 

13  #endif 

14  

15  #include <cstdio> 

16  

17  #if USE_SDL && defined __APPLE__ 

18  # include <SDL_main.h> 

19  #endif 

20  

21  #include "core.h" 

22  

23  using std::printf; 

24  using std::sqrt; 

25  

26  using lol::real; 

27  

28  int main(int argc, char **argv) 

29  { 

30  printf("Pi: "); real::R_PI.print(); 

31  printf("e: "); real::R_E.print(); 

32  printf("ln(2): "); real::R_LN2.print(); 

33  printf("sqrt(2): "); real::R_SQRT2.print(); 

34  printf("sqrt(1/2): "); real::R_SQRT1_2.print(); 

35  

36  /* GaussLegendre computation of Pi  doesn't work well at all, 

37  * probably because we use finite precision. */ 

38  real a = 1.0, b = sqrt((real)0.5), t = 0.25, p = 1.0; 

39  

40  for (int i = 0; i < 3; i++) 

41  { 

42  real a2 = (a + b) * (real)0.5; 

43  real b2 = sqrt(a * b); 

44  real tmp = a  a2; 

45  real t2 = t  p * tmp * tmp; 

46  real p2 = p + p; 

47  a = a2; b = b2; t = t2; p = p2; 

48  } 

49  

50  real sum = a + b; 

51  sum = sum * sum / ((real)4 * t); 

52  sum.print(); 

53  

54  return EXIT_SUCCESS; 

55  } 

56  

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