test/cpv_local/geo2d/femwebp.cpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // competitive-verifier: STANDALONE | ||
| 2 | |||
| 3 | #include "../../../src/geo2d/femwebp/lib.hpp" | ||
| 4 | #include "../../../src/util/rand/lib.hpp" | ||
| 5 | #include "../base.hpp" | ||
| 6 | |||
| 7 | using namespace tifa_libs; | ||
| 8 | |||
| 9 | template <class T> | ||
| 10 | void single_test(vec<point<T>> CR v) { | ||
| 11 | check_bool(v.size() >= 3, check_param(v)); | ||
| 12 | |||
| 13 | point<T> fw = femwebp(v); | ||
| 14 | |||
| 15 | point<T> sum; | ||
| 16 | for (auto CR i : v) | ||
| 17 | if (i != fw) sum += (i - fw).do_unit(); | ||
| 18 | check_bool(is_lt(sum.norm(), (T)1), check_param(v), check_param(fw), check_param(sum)); | ||
| 19 | } | ||
| 20 | |||
| 21 | template <arithm_c T> | ||
| 22 | 12 | void test(T lim, u32 n) { | |
| 23 | 12 | rand_gen<T> g(std::is_signed_v<T> ? -lim : 0, lim); | |
| 24 | |||
| 25 | 12 | vec<point<T>> v; | |
| 26 |
6/8void test<double>(double, unsigned int):
✓ Branch 3 taken 126 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 126 times.
✓ Branch 7 taken 6 times.
void test<long double>(long double, unsigned int):
✓ Branch 3 taken 126 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 126 times.
✓ Branch 7 taken 6 times.
|
264 | while (v.size() < n) v.emplace_back(g(), g()); |
| 27 | 12 | } | |
| 28 | |||
| 29 | 1 | int main() { | |
| 30 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f64>(1e5, 3)); |
| 31 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f128>(1e5, 3)); |
| 32 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f64>(1e9, 3)); |
| 33 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f128>(1e9, 3)); |
| 34 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f64>(1e5, 10)); |
| 35 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f128>(1e5, 10)); |
| 36 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f64>(1e9, 10)); |
| 37 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f128>(1e9, 10)); |
| 38 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f64>(1e5, 50)); |
| 39 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f128>(1e5, 50)); |
| 40 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f64>(1e9, 50)); |
| 41 |
3/6✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
|
1 | timer_(test<f128>(1e9, 50)); |
| 42 | 1 | } | |
| 43 |