| 281 | } |
| 282 | |
| 283 | int 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); |
nothing calls this directly
no test coverage detected