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 } |