MCPcopy Create free account
hub / github.com/PX4/eigen / main

Function main

bench/bench_norm.cpp:283–360  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

281}
282
283int main(int argc, char** argv)
284{
285 int tries = 10;
286 int iters = 100000;
287 double y = 1.1345743233455785456788e12 * internal::random<double>();
288 VectorXf v = VectorXf::Ones(1024) * y;
289
290// return 0;
291 int s = 10000;
292 double basef_ok = 1.1345743233455785456788e15;
293 double based_ok = 1.1345743233455785456788e95;
294
295 double basef_under = 1.1345743233455785456788e-27;
296 double based_under = 1.1345743233455785456788e-303;
297
298 double basef_over = 1.1345743233455785456788e+27;
299 double based_over = 1.1345743233455785456788e+302;
300
301 std::cout.precision(20);
302
303 std::cerr << "\nNo under/overflow:\n";
304 check_accuracy(basef_ok, based_ok, s);
305
306 std::cerr << "\nUnderflow:\n";
307 check_accuracy(basef_under, based_under, s);
308
309 std::cerr << "\nOverflow:\n";
310 check_accuracy(basef_over, based_over, s);
311
312 std::cerr << "\nVarying (over):\n";
313 for (int k=0; k<1; ++k)
314 {
315 check_accuracy_var(20,27,190,302,s);
316 std::cout << "\n";
317 }
318
319 std::cerr << "\nVarying (under):\n";
320 for (int k=0; k<1; ++k)
321 {
322 check_accuracy_var(-27,20,-302,-190,s);
323 std::cout << "\n";
324 }
325
326 y = 1;
327 std::cout.precision(4);
328 int s1 = 1024*1024*32;
329 std::cerr << "Performance (out of cache, " << s1 << "):\n";
330 {
331 int iters = 1;
332 VectorXf vf = VectorXf::Random(s1) * y;
333 VectorXd vd = VectorXd::Random(s1) * y;
334 VectorXcf vcf = VectorXcf::Random(s1) * y;
335 BENCH_PERF(sqsumNorm);
336 BENCH_PERF(stableNorm);
337 BENCH_PERF(blueNorm);
338 BENCH_PERF(pblueNorm);
339 BENCH_PERF(lapackNorm);
340 BENCH_PERF(hypotNorm);

Callers

nothing calls this directly

Calls 3

check_accuracyFunction · 0.85
check_accuracy_varFunction · 0.85
precisionMethod · 0.80

Tested by

no test coverage detected