xref: /aosp_15_r20/external/eigen/bench/benchmarkX.cpp (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
1*bf2c3715SXin Li // g++ -fopenmp -I .. -O3 -DNDEBUG -finline-limit=1000 benchmarkX.cpp -o b && time ./b
2*bf2c3715SXin Li 
3*bf2c3715SXin Li #include <iostream>
4*bf2c3715SXin Li 
5*bf2c3715SXin Li #include <Eigen/Core>
6*bf2c3715SXin Li 
7*bf2c3715SXin Li using namespace std;
8*bf2c3715SXin Li using namespace Eigen;
9*bf2c3715SXin Li 
10*bf2c3715SXin Li #ifndef MATTYPE
11*bf2c3715SXin Li #define MATTYPE MatrixXLd
12*bf2c3715SXin Li #endif
13*bf2c3715SXin Li 
14*bf2c3715SXin Li #ifndef MATSIZE
15*bf2c3715SXin Li #define MATSIZE 400
16*bf2c3715SXin Li #endif
17*bf2c3715SXin Li 
18*bf2c3715SXin Li #ifndef REPEAT
19*bf2c3715SXin Li #define REPEAT 100
20*bf2c3715SXin Li #endif
21*bf2c3715SXin Li 
main(int argc,char * argv[])22*bf2c3715SXin Li int main(int argc, char *argv[])
23*bf2c3715SXin Li {
24*bf2c3715SXin Li 	MATTYPE I = MATTYPE::Ones(MATSIZE,MATSIZE);
25*bf2c3715SXin Li 	MATTYPE m(MATSIZE,MATSIZE);
26*bf2c3715SXin Li 	for(int i = 0; i < MATSIZE; i++) for(int j = 0; j < MATSIZE; j++)
27*bf2c3715SXin Li 	{
28*bf2c3715SXin Li 		m(i,j) = (i+j+1)/(MATSIZE*MATSIZE);
29*bf2c3715SXin Li 	}
30*bf2c3715SXin Li 	for(int a = 0; a < REPEAT; a++)
31*bf2c3715SXin Li 	{
32*bf2c3715SXin Li 		m = I + 0.0001 * (m + m*m);
33*bf2c3715SXin Li 	}
34*bf2c3715SXin Li 	cout << m(0,0) << endl;
35*bf2c3715SXin Li 	return 0;
36*bf2c3715SXin Li }
37