86 std::uniform_real_distribution<> uniform(-.999, .999);
91 auto tmpTime = std::chrono::high_resolution_clock::now();
92 auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(tmpTime - tmpTime);
93 auto durationMult = duration;
95 for (
int iter = 0; iter < nTries; iter++) {
100 for (
int i = 0;
i <
n;
i++) {
101 for (
int j = 0;
j < d;
j++) {
102 x[
i][
j] = 1. * uniform(
gen);
105 for (
int i = 0;
i <
n;
i++) {
106 A[
i][
i] = fabs(2. + uniform(
gen));
108 for (
int i = 0;
i <
n;
i++) {
109 for (
int j =
i + 1;
j <
n;
j++) {
114 for (
int i = 0;
i <
n;
i++) {
117 if (prn && iter == nTries - 1) {
118 for (
int i = 0;
i <
n;
i++) {
120 for (
int j = 0;
j <
n;
j++) {
121 LOG(info) << std::fixed << std::setw(5) << std::setprecision(2) <<
A[
i][
j] <<
" ";
128 auto startMult = std::chrono::high_resolution_clock::now();
129 for (
int i = 0;
i <
n;
i++) {
130 for (
int k = 0; k < d; k++) {
133 for (
int j = 0;
j <
n;
j++) {
134 for (
int k = 0; k < d; k++) {
139 auto stopMult = std::chrono::high_resolution_clock::now();
140 durationMult += std::chrono::duration_cast<std::chrono::nanoseconds>(stopMult - startMult);
144 for (
int i = 0;
i <
n;
i++) {
145 for (
int k = 0; k < d; k++) {
146 sym.
B(
i, k) =
b[
i][k];
148 for (
int j =
i;
j <
n;
j++) {
153 auto start = std::chrono::high_resolution_clock::now();
155 auto stop = std::chrono::high_resolution_clock::now();
156 duration += std::chrono::duration_cast<std::chrono::nanoseconds>(stop -
start);
159 for (
int i = 0;
i <
n;
i++) {
160 for (
int k = 0; k < d; k++) {
161 double t = std::fabs(
x[
i][k] - sym.
B(
i, k));
167 if (maxDiff < diff) {
174 int ok = (maxDiff < 1.e-7);
177 LOG(info) << std::defaultfloat;
178 LOG(info) <<
"\n\n Overall max diff " << maxDiff <<
"\n";
179 LOG(info) <<
" time " << duration.count() / nTries;
180 LOG(info) <<
" time multiplication " << durationMult.count() / nTries;