]> www.ginac.de Git - cln.git/blob - tests/timeeuler.cc
Update to recently found large Mersenne prime.
[cln.git] / tests / timeeuler.cc
1 #include <cln/number.h>
2 #include <cln/io.h>
3 #include <cln/float.h>
4 #include <cln/real.h>
5 #include <cln/random.h>
6 #include <cstdlib>
7 #include <cstring>
8 #include <cln/timing.h>
9 #include "float/lfloat/cl_LF.h"
10 namespace cln
11 {
12 // FIXME: don't use internal functions.
13 extern cl_LF compute_eulerconst (uintC len);
14 extern cl_LF compute_eulerconst_expintegral (uintC len);
15 extern cl_LF compute_eulerconst_expintegral1 (uintC len);
16 extern cl_LF compute_eulerconst_expintegral2 (uintC len);
17 extern cl_LF compute_eulerconst_besselintegral1 (uintC len);
18 extern cl_LF compute_eulerconst_besselintegral2 (uintC len);
19 extern cl_LF compute_eulerconst_besselintegral3 (uintC len);
20 extern cl_LF compute_eulerconst_besselintegral4 (uintC len);
21 }
22
23 using namespace cln;
24
25 int main (int argc, char * argv[])
26 {
27         int repetitions = 1;
28         if ((argc >= 3) && !strcmp(argv[1],"-r")) {
29                 repetitions = atoi(argv[2]);
30                 argc -= 2; argv += 2;
31         }
32         if (argc < 2)
33                 exit(1);
34         uintL len = atoi(argv[1]);
35
36
37         cl_LF p;
38         ln(cl_I_to_LF(1000,len+10)); // fill cache
39 #if 0
40         { CL_TIMING;
41           for (int rep = repetitions; rep > 0; rep--)
42             { p = compute_eulerconst(len); }
43         }
44 #else
45 #if 0
46         { CL_TIMING;
47           for (int rep = repetitions; rep > 0; rep--)
48             { p = compute_eulerconst_expintegral(len); }
49         }
50 //      cout << p << endl;
51         { CL_TIMING;
52           for (int rep = repetitions; rep > 0; rep--)
53             { p = compute_eulerconst_expintegral1(len); }
54         }
55 //      cout << p << endl;
56         { CL_TIMING;
57           for (int rep = repetitions; rep > 0; rep--)
58             { p = compute_eulerconst_expintegral2(len); }
59         }
60 //      cout << p << endl;
61 #endif
62         { CL_TIMING;
63           for (int rep = repetitions; rep > 0; rep--)
64             { p = compute_eulerconst_besselintegral1(len); }
65         }
66 //      cout << p << endl;
67 #if 0
68         { CL_TIMING;
69           for (int rep = repetitions; rep > 0; rep--)
70             { p = compute_eulerconst_besselintegral2(len); }
71         }
72 //      cout << p << endl;
73         { CL_TIMING;
74           for (int rep = repetitions; rep > 0; rep--)
75             { p = compute_eulerconst_besselintegral3(len); }
76         }
77 //      cout << p << endl;
78 #endif
79         { CL_TIMING;
80           for (int rep = repetitions; rep > 0; rep--)
81             { p = compute_eulerconst_besselintegral4(len); }
82         }
83 //      cout << p << endl;
84 #endif
85 }