Introduction
Introduction Statistics Contact Development Disclaimer Help
tmain.cpp - numeric - C++ library with numerical algorithms
git clone git://src.adamsgaard.dk/numeric
Log
Files
Refs
LICENSE
---
tmain.cpp (1622B)
---
1 #include <iostream>
2 #include <fstream>
3 #include <vector>
4 #include <cmath>
5 #include <cstdlib>
6 #include <ctime>
7 #include "header.h"
8 #include "functions.h"
9 #include "montecarlo.h"
10
11 int main(int argc, char* argv[])
12 {
13 // Namespace declarations
14 using std::cout;
15
16 // Number of sample points as input argument
17 Lengthtype N;
18 if (argc == 1) // If no args are given..
19 N = 100; // 100 points are sampled
20 else
21 N = atol(argv[1]); // Else the specified number
22
23 cout << "Sampling function at " << N << " points.\n";
24
25 // Calculate machine precision
26 Floattype eps_machine = 1.0f;
27 while (1.0f + eps_machine != 1.0f)
28 eps_machine /= 2.0f;
29
30 // Evaluate 3D function A at 10 points in interval [a;b]
31 Lengthtype d = 3; // No of dimensions
32 std::vector<Floattype> a(d); // Lower limits
33 std::vector<Floattype> b(d); // Upper limits
34 for (Lengthtype i=0; i<d; ++i) { // Assign equidimensional limits
35 a[i] = 0.0f;
36 b[i] = M_PI;
37 }
38 Floattype tic = clock();
39 MC mc(functionA, a, b, N);
40 mc.plain(); // Plain Monte-Carlo integration
41 mc.show(); // Display results
42 Floattype t_elapsed = (clock() - tic)/(CLOCKS_PER_SEC);
43 cout << "Elapsed time: " << t_elapsed << " s.\n";
44
45 // Append results to performance.dat
46 std::ofstream file;
47 file.open("performance.dat", std::fstream::app); // Append to file
48 file << N << '\t' << t_elapsed << '\t' << mc.error() << '\n';
49 file.close();
50
51 // Return successfully
52 return 0;
53 }
54
55 void check(const bool statement)
56 {
57 using std::cout;
58 if (statement == true)
59 cout << "\t\033[0;32mPassed\033[0m\n";
60 else
61 cout << "\t\033[1;31mFail!!\033[0m\n";
62 }
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.